{"version":3,"file":"static/js/vendors-7cc34100.8625c1a7.js","mappings":"mGAMAA,EAAOC,QAAU,SAASC,EAAMC,EAAGC,GACjC,GAAID,IAAMC,EAAG,OAAO,EAEpB,GAAID,GAAKC,GAAiB,iBAALD,GAA6B,iBAALC,EAAe,CAC1D,GAAID,EAAEE,cAAgBD,EAAEC,YAAa,OAAO,EAE5C,IAAIC,EAAQC,EAAGC,EACf,GAAIC,MAAMC,QAAQP,GAAI,CAEpB,IADAG,EAASH,EAAEG,SACGF,EAAEE,OAAQ,OAAO,EAC/B,IAAKC,EAAID,EAAgB,GAARC,KACf,IAAKL,EAAMC,EAAEI,GAAIH,EAAEG,IAAK,OAAO,EACjC,OAAO,CACT,CAIA,GAAIJ,EAAEE,cAAgBM,OAAQ,OAAOR,EAAES,SAAWR,EAAEQ,QAAUT,EAAEU,QAAUT,EAAES,MAC5E,GAAIV,EAAEW,UAAYC,OAAOC,UAAUF,QAAS,OAAOX,EAAEW,YAAcV,EAAEU,UACrE,GAAIX,EAAEc,WAAaF,OAAOC,UAAUC,SAAU,OAAOd,EAAEc,aAAeb,EAAEa,WAIxE,IADAX,GADAE,EAAOO,OAAOP,KAAKL,IACLG,UACCS,OAAOP,KAAKJ,GAAGE,OAAQ,OAAO,EAE7C,IAAKC,EAAID,EAAgB,GAARC,KACf,IAAKQ,OAAOC,UAAUE,eAAeC,KAAKf,EAAGI,EAAKD,IAAK,OAAO,EAEhE,IAAKA,EAAID,EAAgB,GAARC,KAAY,CAC3B,IAAIa,EAAMZ,EAAKD,GAEf,IAAKL,EAAMC,EAAEiB,GAAMhB,EAAEgB,IAAO,OAAO,CACrC,CAEA,OAAO,CACT,CAGA,OAAOjB,GAAIA,GAAKC,GAAIA,CACtB,C,gCC3CA,MAAMiB,EAAYC,EAAQ,QACpBC,EAAYD,EAAQ,QACpBE,EAAaF,EAAQ,QAE3BtB,EAAOC,QAAU,CACfsB,UAAWA,EACXE,aAAcJ,EACdG,WAAYA,E,8BCPd,MAAME,EAAgB,gLAEhBC,EAAa,IAAMD,EAAgB,MADxBA,EAAgB,gDAC0B,KACrDE,EAAY,IAAIjB,OAAO,IAAMgB,EAAa,KAuBhD1B,EAAQ4B,QAAU,SAASC,GACzB,YAAoB,IAANA,CAChB,EAEA7B,EAAQ8B,cAAgB,SAASC,GAC/B,OAAmC,IAA5BjB,OAAOP,KAAKwB,GAAK1B,MAC1B,EAOAL,EAAQgC,MAAQ,SAASC,EAAQ/B,EAAGgC,GAClC,GAAIhC,EAAG,CACL,MAAMK,EAAOO,OAAOP,KAAKL,GACnBiC,EAAM5B,EAAKF,OACjB,IAAK,IAAIC,EAAI,EAAGA,EAAI6B,EAAK7B,IAErB2B,EAAO1B,EAAKD,IADI,WAAd4B,EACgB,CAAEhC,EAAEK,EAAKD,KAETJ,EAAEK,EAAKD,GAG/B,CACF,EAKAN,EAAQoC,SAAW,SAASP,GAC1B,OAAI7B,EAAQ4B,QAAQC,GACXA,EAEA,EAEX,EAKA7B,EAAQqC,OA9CO,SAASC,GACtB,MAAMC,EAAQZ,EAAUa,KAAKF,GAC7B,QAAQ,MAACC,EACX,EA4CAvC,EAAQyC,cA/Dc,SAASH,EAAQI,GACrC,MAAMC,EAAU,GAChB,IAAIJ,EAAQG,EAAMF,KAAKF,GACvB,KAAOC,GAAO,CACZ,MAAMK,EAAa,GACnBA,EAAWC,WAAaH,EAAMI,UAAYP,EAAM,GAAGlC,OACnD,MAAM8B,EAAMI,EAAMlC,OAClB,IAAK,IAAI0C,EAAQ,EAAGA,EAAQZ,EAAKY,IAC/BH,EAAWI,KAAKT,EAAMQ,IAExBJ,EAAQK,KAAKJ,GACbL,EAAQG,EAAMF,KAAKF,EACrB,CACA,OAAOK,CACT,EAkDA3C,EAAQ0B,WAAaA,C,gCCrErB,MAAMuB,EAAO5B,EAAQ,QAEf6B,EAAiB,CACrBC,wBAAwB,EACxBC,aAAc,IA0LhB,SAASC,EAAaC,GACpB,MAAgB,MAATA,GAAyB,OAATA,GAA0B,OAATA,GAA2B,OAATA,CAC5D,CAMA,SAASC,EAAOC,EAASlD,GACvB,MAAMmD,EAAQnD,EACd,KAAOA,EAAIkD,EAAQnD,OAAQC,IACzB,GAAkB,KAAdkD,EAAQlD,IAA2B,KAAdkD,EAAQlD,QAAjC,CAEE,MAAMoD,EAAUF,EAAQG,OAAOF,EAAOnD,EAAImD,GAC1C,GAAInD,EAAI,GAAiB,QAAZoD,EACX,OAAOE,EAAe,aAAc,6DAA8DC,EAAyBL,EAASlD,IAC/H,GAAkB,KAAdkD,EAAQlD,IAA+B,KAAlBkD,EAAQlD,EAAI,GAAW,CAErDA,IACA,KACF,CAGF,CAEF,OAAOA,CACT,CAEA,SAASwD,EAAoBN,EAASlD,GACpC,GAAIkD,EAAQnD,OAASC,EAAI,GAAwB,MAAnBkD,EAAQlD,EAAI,IAAiC,MAAnBkD,EAAQlD,EAAI,IAElE,IAAKA,GAAK,EAAGA,EAAIkD,EAAQnD,OAAQC,IAC/B,GAAmB,MAAfkD,EAAQlD,IAAiC,MAAnBkD,EAAQlD,EAAI,IAAiC,MAAnBkD,EAAQlD,EAAI,GAAY,CAC1EA,GAAK,EACL,KACF,OAEG,GACLkD,EAAQnD,OAASC,EAAI,GACF,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,GACZ,CACA,IAAIyD,EAAqB,EACzB,IAAKzD,GAAK,EAAGA,EAAIkD,EAAQnD,OAAQC,IAC/B,GAAmB,MAAfkD,EAAQlD,GACVyD,SACK,GAAmB,MAAfP,EAAQlD,KACjByD,IAC2B,IAAvBA,GACF,KAIR,MAAO,GACLP,EAAQnD,OAASC,EAAI,GACF,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,GAEZ,IAAKA,GAAK,EAAGA,EAAIkD,EAAQnD,OAAQC,IAC/B,GAAmB,MAAfkD,EAAQlD,IAAiC,MAAnBkD,EAAQlD,EAAI,IAAiC,MAAnBkD,EAAQlD,EAAI,GAAY,CAC1EA,GAAK,EACL,KACF,CAIJ,OAAOA,CACT,CAnQAN,EAAQgE,SAAW,SAAUR,EAASS,GACpCA,EAAUnD,OAAOoD,OAAO,CAAC,EAAGhB,EAAgBe,GAK5C,MAAME,EAAO,GACb,IAAIC,GAAW,EAGXC,GAAc,EAEC,WAAfb,EAAQ,KAEVA,EAAUA,EAAQG,OAAO,IAG3B,IAAK,IAAIrD,EAAI,EAAGA,EAAIkD,EAAQnD,OAAQC,IAElC,GAAmB,MAAfkD,EAAQlD,IAA+B,MAAjBkD,EAAQlD,EAAE,IAGlC,GAFAA,GAAG,EACHA,EAAIiD,EAAOC,EAAQlD,GACfA,EAAEgE,IAAK,OAAOhE,MACd,IAAmB,MAAfkD,EAAQlD,GA0IX,CACL,GAAK+C,EAAaG,EAAQlD,IACxB,SAEF,OAAOsD,EAAe,cAAe,SAASJ,EAAQlD,GAAG,qBAAsBuD,EAAyBL,EAASlD,GACnH,CA/I8B,CAG5B,IAAIiE,EAAcjE,EAGlB,GAFAA,IAEmB,MAAfkD,EAAQlD,GAAY,CACtBA,EAAIwD,EAAoBN,EAASlD,GACjC,QACF,CAAO,CACL,IAAIkE,GAAa,EACE,MAAfhB,EAAQlD,KAEVkE,GAAa,EACblE,KAGF,IAAImE,EAAU,GACd,KAAOnE,EAAIkD,EAAQnD,QACF,MAAfmD,EAAQlD,IACO,MAAfkD,EAAQlD,IACO,OAAfkD,EAAQlD,IACO,OAAfkD,EAAQlD,IACO,OAAfkD,EAAQlD,GAAaA,IAErBmE,GAAWjB,EAAQlD,GAWrB,GATAmE,EAAUA,EAAQC,OAGkB,MAAhCD,EAAQA,EAAQpE,OAAS,KAE3BoE,EAAUA,EAAQE,UAAU,EAAGF,EAAQpE,OAAS,GAEhDC,KAmVeoD,EAjVIe,GAkVpBxB,EAAKZ,OAAOqB,GAlVkB,CAC7B,IAAIkB,EAMJ,OAJEA,EAD4B,IAA1BH,EAAQC,OAAOrE,OACX,2BAEA,QAAQoE,EAAQ,wBAEjBb,EAAe,aAAcgB,EAAKf,EAAyBL,EAASlD,GAC7E,CAEA,MAAMuE,EAASC,EAAiBtB,EAASlD,GACzC,IAAe,IAAXuE,EACF,OAAOjB,EAAe,cAAe,mBAAmBa,EAAQ,qBAAsBZ,EAAyBL,EAASlD,IAE1H,IAAIyE,EAAUF,EAAOG,MAGrB,GAFA1E,EAAIuE,EAAO9B,MAEyB,MAAhCgC,EAAQA,EAAQ1E,OAAS,GAAY,CAEvC,MAAM4E,EAAe3E,EAAIyE,EAAQ1E,OACjC0E,EAAUA,EAAQJ,UAAU,EAAGI,EAAQ1E,OAAS,GAChD,MAAM6E,EAAUC,EAAwBJ,EAASd,GACjD,IAAgB,IAAZiB,EAOF,OAAOtB,EAAesB,EAAQZ,IAAIc,KAAMF,EAAQZ,IAAIM,IAAKf,EAAyBL,EAASyB,EAAeC,EAAQZ,IAAIe,OANtHjB,GAAW,CAQf,MAAO,GAAII,EAAY,CACrB,IAAKK,EAAOS,UACV,OAAO1B,EAAe,aAAc,gBAAgBa,EAAQ,iCAAkCZ,EAAyBL,EAASlD,IAC3H,GAAIyE,EAAQL,OAAOrE,OAAS,EACjC,OAAOuD,EAAe,aAAc,gBAAgBa,EAAQ,+CAAgDZ,EAAyBL,EAASe,IACzI,GAAoB,IAAhBJ,EAAK9D,OACd,OAAOuD,EAAe,aAAc,gBAAgBa,EAAQ,yBAA0BZ,EAAyBL,EAASe,IACnH,CACL,MAAMgB,EAAMpB,EAAKqB,MACjB,GAAIf,IAAYc,EAAId,QAAS,CAC3B,IAAIgB,EAAU5B,EAAyBL,EAAS+B,EAAIhB,aACpD,OAAOX,EAAe,aACpB,yBAAyB2B,EAAId,QAAQ,qBAAqBgB,EAAQJ,KAAK,SAASI,EAAQC,IAAI,6BAA6BjB,EAAQ,KACjIZ,EAAyBL,EAASe,GACtC,CAGmB,GAAfJ,EAAK9D,SACPgE,GAAc,EAElB,CACF,KAAO,CACL,MAAMa,EAAUC,EAAwBJ,EAASd,GACjD,IAAgB,IAAZiB,EAIF,OAAOtB,EAAesB,EAAQZ,IAAIc,KAAMF,EAAQZ,IAAIM,IAAKf,EAAyBL,EAASlD,EAAIyE,EAAQ1E,OAAS6E,EAAQZ,IAAIe,OAI9H,IAAoB,IAAhBhB,EACF,OAAOT,EAAe,aAAc,sCAAuCC,EAAyBL,EAASlD,KAC1D,IAA3C2D,EAAQb,aAAauC,QAAQlB,IAGrCN,EAAKnB,KAAK,CAACyB,UAASF,gBAEtBH,GAAW,CACb,CAIA,IAAK9D,IAAKA,EAAIkD,EAAQnD,OAAQC,IAC5B,GAAmB,MAAfkD,EAAQlD,GAAY,CACtB,GAAuB,MAAnBkD,EAAQlD,EAAI,GAAY,CAE1BA,IACAA,EAAIwD,EAAoBN,EAASlD,GACjC,QACF,CAAO,GAAqB,MAAjBkD,EAAQlD,EAAE,GAInB,MAFA,GADAA,EAAIiD,EAAOC,IAAWlD,GAClBA,EAAEgE,IAAK,OAAOhE,CAItB,MAAO,GAAmB,MAAfkD,EAAQlD,GAAY,CAC7B,MAAMsF,EAAWC,EAAkBrC,EAASlD,GAC5C,IAAiB,GAAbsF,EACF,OAAOhC,EAAe,cAAe,4BAA6BC,EAAyBL,EAASlD,IACtGA,EAAIsF,CACN,MACE,IAAoB,IAAhBvB,IAAyBhB,EAAaG,EAAQlD,IAChD,OAAOsD,EAAe,aAAc,wBAAyBC,EAAyBL,EAASlD,IAIlF,MAAfkD,EAAQlD,IACVA,GAEJ,CACF,CAKA,CAsOJ,IAAyBoD,EAnOvB,OAAKU,EAEoB,GAAfD,EAAK9D,OACJuD,EAAe,aAAc,iBAAiBO,EAAK,GAAGM,QAAQ,KAAMZ,EAAyBL,EAASW,EAAK,GAAGI,gBAC/GJ,EAAK9D,OAAS,IACbuD,EAAe,aAAc,YAChCkC,KAAKC,UAAU5B,EAAK6B,KAAIC,GAAKA,EAAExB,UAAU,KAAM,GAAGyB,QAAQ,SAAU,IACpE,WAAY,CAACb,KAAM,EAAGK,IAAK,IAN1B9B,EAAe,aAAc,sBAAuB,EAU/D,EAiFA,MAAMuC,EAAc,IACdC,EAAc,IAOpB,SAAStB,EAAiBtB,EAASlD,GACjC,IAAIyE,EAAU,GACVsB,EAAY,GACZf,GAAY,EAChB,KAAOhF,EAAIkD,EAAQnD,OAAQC,IAAK,CAC9B,GAAIkD,EAAQlD,KAAO6F,GAAe3C,EAAQlD,KAAO8F,EAC7B,KAAdC,EACFA,EAAY7C,EAAQlD,GACX+F,IAAc7C,EAAQlD,KAG/B+F,EAAY,SAET,GAAmB,MAAf7C,EAAQlD,IACC,KAAd+F,EAAkB,CACpBf,GAAY,EACZ,KACF,CAEFP,GAAWvB,EAAQlD,EACrB,CACA,MAAkB,KAAd+F,GAIG,CACLrB,MAAOD,EACPhC,MAAOzC,EACPgF,UAAWA,EAEf,CAKA,MAAMgB,EAAoB,IAAI5F,OAAO,0DAA2D,KAIhG,SAASyE,EAAwBJ,EAASd,GAKxC,MAAMtB,EAAUM,EAAKR,cAAcsC,EAASuB,GACtCC,EAAY,CAAC,EAEnB,IAAK,IAAIjG,EAAI,EAAGA,EAAIqC,EAAQtC,OAAQC,IAAK,CACvC,GAA6B,IAAzBqC,EAAQrC,GAAG,GAAGD,OAEhB,OAAOuD,EAAe,cAAe,cAAcjB,EAAQrC,GAAG,GAAG,8BAA+BkG,EAAqB7D,EAAQrC,KACxH,QAAsBmG,IAAlB9D,EAAQrC,GAAG,SAAsCmG,IAAlB9D,EAAQrC,GAAG,GACnD,OAAOsD,EAAe,cAAe,cAAcjB,EAAQrC,GAAG,GAAG,sBAAuBkG,EAAqB7D,EAAQrC,KAChH,QAAsBmG,IAAlB9D,EAAQrC,GAAG,KAAqB2D,EAAQd,uBAEjD,OAAOS,EAAe,cAAe,sBAAsBjB,EAAQrC,GAAG,GAAG,oBAAqBkG,EAAqB7D,EAAQrC,KAK7H,MAAMoG,EAAW/D,EAAQrC,GAAG,GAC5B,IAAKqG,EAAiBD,GACpB,OAAO9C,EAAe,cAAe,cAAc8C,EAAS,wBAAyBF,EAAqB7D,EAAQrC,KAEpH,GAAKiG,EAAUtF,eAAeyF,GAI5B,OAAO9C,EAAe,cAAe,cAAc8C,EAAS,iBAAkBF,EAAqB7D,EAAQrC,KAF3GiG,EAAUG,GAAY,CAI1B,CAEA,OAAO,CACT,CAiBA,SAASb,EAAkBrC,EAASlD,GAGlC,GAAmB,MAAfkD,IADJlD,GAEE,OAAQ,EACV,GAAmB,MAAfkD,EAAQlD,GAEV,OAtBJ,SAAiCkD,EAASlD,GACxC,IAAIsG,EAAK,KAKT,IAJmB,MAAfpD,EAAQlD,KACVA,IACAsG,EAAK,cAEAtG,EAAIkD,EAAQnD,OAAQC,IAAK,CAC9B,GAAmB,MAAfkD,EAAQlD,GACV,OAAOA,EACT,IAAKkD,EAAQlD,GAAGiC,MAAMqE,GACpB,KACJ,CACA,OAAQ,CACV,CASWC,CAAwBrD,IAD/BlD,GAGF,IAAIwG,EAAQ,EACZ,KAAOxG,EAAIkD,EAAQnD,OAAQC,IAAKwG,IAC9B,KAAItD,EAAQlD,GAAGiC,MAAM,OAASuE,EAAQ,IAAtC,CAEA,GAAmB,MAAftD,EAAQlD,GACV,MACF,OAAQ,CAHE,CAKZ,OAAOA,CACT,CAEA,SAASsD,EAAewB,EAAM2B,EAASC,GACrC,MAAO,CACL1C,IAAK,CACHc,KAAMA,EACNR,IAAKmC,EACL1B,KAAM2B,EAAW3B,MAAQ2B,EACzBtB,IAAKsB,EAAWtB,KAGtB,CAEA,SAASiB,EAAiBD,GACxB,OAAOzD,EAAKZ,OAAOqE,EACrB,CASA,SAAS7C,EAAyBL,EAAST,GACzC,MAAMkE,EAAQzD,EAAQmB,UAAU,EAAG5B,GAAOmE,MAAM,SAChD,MAAO,CACL7B,KAAM4B,EAAM5G,OAGZqF,IAAKuB,EAAMA,EAAM5G,OAAS,GAAGA,OAAS,EAE1C,CAGA,SAASmG,EAAqBjE,GAC5B,OAAOA,EAAMM,WAAaN,EAAM,GAAGlC,MACrC,C,gCCtaA,MAAM8G,EAAqB9F,EAAQ,QAE7B6B,EAAiB,CACrBkE,oBAAqB,KACrBC,qBAAqB,EACrBC,aAAc,QACdC,kBAAkB,EAClBC,eAAe,EACfC,QAAQ,EACRC,SAAU,KACVC,mBAAmB,EACnBC,sBAAsB,EACtBC,2BAA2B,EAC3BC,kBAAmB,SAAS3G,EAAKjB,GAC/B,OAAOA,CACT,EACA6H,wBAAyB,SAASrB,EAAUxG,GAC1C,OAAOA,CACT,EACA8H,eAAe,EACfC,iBAAiB,EACjB7E,aAAc,GACd8E,SAAU,CACR,CAAExF,MAAO,IAAIhC,OAAO,IAAK,KAAMyH,IAAK,SACpC,CAAEzF,MAAO,IAAIhC,OAAO,IAAK,KAAMyH,IAAK,QACpC,CAAEzF,MAAO,IAAIhC,OAAO,IAAK,KAAMyH,IAAK,QACpC,CAAEzF,MAAO,IAAIhC,OAAO,IAAM,KAAMyH,IAAK,UACrC,CAAEzF,MAAO,IAAIhC,OAAO,IAAM,KAAMyH,IAAK,WAEvCC,iBAAiB,EACjBC,UAAW,GAGXC,cAAc,GAGhB,SAASC,EAAQtE,GACfuE,KAAKvE,QAAUnD,OAAOoD,OAAO,CAAC,EAAGhB,EAAgBe,GAC7CuE,KAAKvE,QAAQsD,kBAAoBiB,KAAKvE,QAAQoD,oBAChDmB,KAAKC,YAAc,WACjB,OAAO,CACT,GAEAD,KAAKE,cAAgBF,KAAKvE,QAAQmD,oBAAoB/G,OACtDmI,KAAKC,YAAcA,GAGrBD,KAAKG,qBAAuBA,EAExBH,KAAKvE,QAAQwD,QACfe,KAAKI,UAAYA,EACjBJ,KAAKK,WAAa,MAClBL,KAAKM,QAAU,OAEfN,KAAKI,UAAY,WACf,MAAO,EACT,EACAJ,KAAKK,WAAa,IAClBL,KAAKM,QAAU,GAEnB,CAgHA,SAASH,EAAsBI,EAAQ5H,EAAK6H,GAC1C,MAAMnE,EAAS2D,KAAKS,IAAIF,EAAQC,EAAQ,GACxC,YAA0CvC,IAAtCsC,EAAOP,KAAKvE,QAAQqD,eAA8D,IAA/BxG,OAAOP,KAAKwI,GAAQ1I,OAClEmI,KAAKU,iBAAiBH,EAAOP,KAAKvE,QAAQqD,cAAenG,EAAK0D,EAAOE,QAASiE,GAE9ER,KAAKW,gBAAgBtE,EAAOsD,IAAKhH,EAAK0D,EAAOE,QAASiE,EAEjE,CAuFA,SAASJ,EAAUI,GACjB,OAAOR,KAAKvE,QAAQyD,SAAS0B,OAAOJ,EACtC,CAEA,SAASP,EAAYY,GACnB,SAAIA,EAAKC,WAAWd,KAAKvE,QAAQmD,sBAAwBiC,IAASb,KAAKvE,QAAQqD,eACtE+B,EAAK1F,OAAO6E,KAAKE,cAI5B,CAtNAH,EAAQxH,UAAUwI,MAAQ,SAASC,GACjC,OAAGhB,KAAKvE,QAAQ+D,cACPb,EAAmBqC,EAAMhB,KAAKvE,UAElCzD,MAAMC,QAAQ+I,IAAShB,KAAKvE,QAAQwF,eAAiBjB,KAAKvE,QAAQwF,cAAcpJ,OAAS,IAC1FmJ,EAAO,CACL,CAAChB,KAAKvE,QAAQwF,eAAiBD,IAG5BhB,KAAKS,IAAIO,EAAM,GAAGrB,IAE7B,EAEAI,EAAQxH,UAAUkI,IAAM,SAASO,EAAMR,GACrC,IAAIjE,EAAU,GACVoD,EAAM,GACV,IAAK,IAAIhH,KAAOqI,EACd,GAAI1I,OAAOC,UAAUE,eAAeC,KAAKsI,EAAMrI,GAC/C,QAAyB,IAAdqI,EAAKrI,GAEVqH,KAAKC,YAAYtH,KACnBgH,GAAO,SAEJ,GAAkB,OAAdqB,EAAKrI,GAEVqH,KAAKC,YAAYtH,GACnBgH,GAAO,GACa,MAAXhH,EAAI,GACbgH,GAAOK,KAAKI,UAAUI,GAAS,IAAM7H,EAAM,IAAMqH,KAAKK,WAEtDV,GAAOK,KAAKI,UAAUI,GAAS,IAAM7H,EAAM,IAAMqH,KAAKK,gBAGnD,GAAIW,EAAKrI,aAAgBuI,KAC9BvB,GAAOK,KAAKU,iBAAiBM,EAAKrI,GAAMA,EAAK,GAAI6H,QAC5C,GAAyB,iBAAdQ,EAAKrI,GAAmB,CAExC,MAAMwI,EAAOnB,KAAKC,YAAYtH,GAC9B,GAAIwI,EACF5E,GAAWyD,KAAKoB,iBAAiBD,EAAM,GAAKH,EAAKrI,SAGjD,GAAIA,IAAQqH,KAAKvE,QAAQqD,aAAc,CACrC,IAAIuC,EAASrB,KAAKvE,QAAQ6D,kBAAkB3G,EAAK,GAAKqI,EAAKrI,IAC3DgH,GAAOK,KAAKsB,qBAAqBD,EACnC,MACE1B,GAAOK,KAAKU,iBAAiBM,EAAKrI,GAAMA,EAAK,GAAI6H,EAGvD,MAAO,GAAIxI,MAAMC,QAAQ+I,EAAKrI,IAAO,CAEnC,MAAM4I,EAASP,EAAKrI,GAAKd,OACzB,IAAI2J,EAAa,GACbC,EAAc,GAClB,IAAK,IAAIC,EAAI,EAAGA,EAAIH,EAAQG,IAAK,CAC/B,MAAMC,EAAOX,EAAKrI,GAAK+I,GACvB,QAAoB,IAATC,QAEJ,GAAa,OAATA,EACK,MAAXhJ,EAAI,GAAYgH,GAAOK,KAAKI,UAAUI,GAAS,IAAM7H,EAAM,IAAMqH,KAAKK,WACpEV,GAAOK,KAAKI,UAAUI,GAAS,IAAM7H,EAAM,IAAMqH,KAAKK,gBAEtD,GAAoB,iBAATsB,EAChB,GAAG3B,KAAKvE,QAAQqE,aAAa,CAC3B,MAAMzD,EAAS2D,KAAKS,IAAIkB,EAAMnB,EAAQ,GACtCgB,GAAcnF,EAAOsD,IACjBK,KAAKvE,QAAQoD,qBAAuB8C,EAAKlJ,eAAeuH,KAAKvE,QAAQoD,uBACvE4C,GAAepF,EAAOE,QAE1B,MACEiF,GAAcxB,KAAKG,qBAAqBwB,EAAMhJ,EAAK6H,QAGrD,GAAIR,KAAKvE,QAAQqE,aAAc,CAC7B,IAAI8B,EAAY5B,KAAKvE,QAAQ6D,kBAAkB3G,EAAKgJ,GACpDC,EAAY5B,KAAKsB,qBAAqBM,GACtCJ,GAAcI,CAChB,MACEJ,GAAcxB,KAAKU,iBAAiBiB,EAAMhJ,EAAK,GAAI6H,EAGzD,CACGR,KAAKvE,QAAQqE,eACd0B,EAAaxB,KAAKW,gBAAgBa,EAAY7I,EAAK8I,EAAajB,IAElEb,GAAO6B,CACT,MAEE,GAAIxB,KAAKvE,QAAQoD,qBAAuBlG,IAAQqH,KAAKvE,QAAQoD,oBAAqB,CAChF,MAAMgD,EAAKvJ,OAAOP,KAAKiJ,EAAKrI,IACtBmJ,EAAID,EAAGhK,OACb,IAAK,IAAI6J,EAAI,EAAGA,EAAII,EAAGJ,IACrBnF,GAAWyD,KAAKoB,iBAAiBS,EAAGH,GAAI,GAAKV,EAAKrI,GAAKkJ,EAAGH,IAE9D,MACE/B,GAAOK,KAAKG,qBAAqBa,EAAKrI,GAAMA,EAAK6H,GAIvD,MAAO,CAACjE,QAASA,EAASoD,IAAKA,EACjC,EAEAI,EAAQxH,UAAU6I,iBAAmB,SAASlD,EAAUyB,GAGtD,OAFAA,EAAMK,KAAKvE,QAAQ8D,wBAAwBrB,EAAU,GAAKyB,GAC1DA,EAAMK,KAAKsB,qBAAqB3B,GAC5BK,KAAKvE,QAAQ4D,2BAAqC,SAARM,EACrC,IAAMzB,EACD,IAAMA,EAAW,KAAOyB,EAAM,GAC9C,EAWAI,EAAQxH,UAAUoI,gBAAkB,SAAShB,EAAKhH,EAAK4D,EAASiE,GAC9D,GAAW,KAARb,EACD,MAAc,MAAXhH,EAAI,GAAoBqH,KAAKI,UAAUI,GAAS,IAAM7H,EAAM4D,EAAS,IAAMyD,KAAKK,WAE1EL,KAAKI,UAAUI,GAAS,IAAM7H,EAAM4D,EAAUyD,KAAK+B,SAASpJ,GAAOqH,KAAKK,WAE9E,CAEH,IAAI2B,EAAY,KAAOrJ,EAAMqH,KAAKK,WAC9B4B,EAAgB,GAQpB,MANc,MAAXtJ,EAAI,KACLsJ,EAAgB,IAChBD,EAAY,KAITzF,GAAuB,KAAZA,IAAyC,IAAtBoD,EAAIxC,QAAQ,MAEH,IAAjC6C,KAAKvE,QAAQgE,iBAA6B9G,IAAQqH,KAAKvE,QAAQgE,iBAA4C,IAAzBwC,EAAcpK,OAClGmI,KAAKI,UAAUI,GAAS,UAAH0B,OAAUvC,EAAG,UAAQK,KAAKM,QAGpDN,KAAKI,UAAUI,GAAS,IAAM7H,EAAM4D,EAAU0F,EAAgBjC,KAAKK,WACnEV,EACAK,KAAKI,UAAUI,GAASwB,EAPjBhC,KAAKI,UAAUI,GAAS,IAAO7H,EAAM4D,EAAU0F,EAAgB,IAAMtC,EAAMqC,CASxF,CACF,EAEAjC,EAAQxH,UAAUwJ,SAAW,SAASpJ,GACpC,IAAIoJ,EAAW,GAQf,OAP+C,IAA5C/B,KAAKvE,QAAQb,aAAauC,QAAQxE,GAC/BqH,KAAKvE,QAAQ2D,uBAAsB2C,EAAW,KAElDA,EADO/B,KAAKvE,QAAQ0D,kBACT,IAEA,MAAH+C,OAASvJ,GAEZoJ,CACT,EAcAhC,EAAQxH,UAAUmI,iBAAmB,SAASf,EAAKhH,EAAK4D,EAASiE,GAC/D,IAAmC,IAA/BR,KAAKvE,QAAQuD,eAA2BrG,IAAQqH,KAAKvE,QAAQuD,cAC/D,OAAOgB,KAAKI,UAAUI,GAAS,YAAH0B,OAAevC,EAAG,OAASK,KAAKM,QACxD,IAAqC,IAAjCN,KAAKvE,QAAQgE,iBAA6B9G,IAAQqH,KAAKvE,QAAQgE,gBACvE,OAAOO,KAAKI,UAAUI,GAAS,UAAH0B,OAAUvC,EAAG,UAASK,KAAKM,QACnD,GAAc,MAAX3H,EAAI,GACX,OAAQqH,KAAKI,UAAUI,GAAS,IAAM7H,EAAM4D,EAAS,IAAMyD,KAAKK,WAC7D,CACH,IAAIuB,EAAY5B,KAAKvE,QAAQ6D,kBAAkB3G,EAAKgH,GAGpD,OAFAiC,EAAY5B,KAAKsB,qBAAqBM,GAEpB,KAAdA,EACK5B,KAAKI,UAAUI,GAAS,IAAM7H,EAAM4D,EAAUyD,KAAK+B,SAASpJ,GAAOqH,KAAKK,WAExEL,KAAKI,UAAUI,GAAS,IAAM7H,EAAM4D,EAAU,IAClDqF,EACD,KAAOjJ,EAAMqH,KAAKK,UAExB,CACF,EAEAN,EAAQxH,UAAU+I,qBAAuB,SAASM,GAChD,GAAGA,GAAaA,EAAU/J,OAAS,GAAKmI,KAAKvE,QAAQmE,gBACnD,IAAK,IAAI9H,EAAE,EAAGA,EAAEkI,KAAKvE,QAAQiE,SAAS7H,OAAQC,IAAK,CACjD,MAAMqK,EAASnC,KAAKvE,QAAQiE,SAAS5H,GACrC8J,EAAYA,EAAUlE,QAAQyE,EAAOjI,MAAOiI,EAAOxC,IACrD,CAEF,OAAOiC,CACT,EAcArK,EAAOC,QAAUuI,C,aCxQjB,SAASqC,EAASC,EAAK5G,EAAS6G,EAAOC,GACnC,IAAIC,EAAS,GACTC,GAAuB,EAE3B,IAAK,IAAI3K,EAAI,EAAGA,EAAIuK,EAAIxK,OAAQC,IAAK,CACjC,MAAM4K,EAASL,EAAIvK,GACbmE,EAAU0G,EAASD,GACzB,QAAezE,IAAZhC,EAAuB,SAE1B,IAAI2G,EAAW,GAIf,GAHwBA,EAAH,IAAjBN,EAAMzK,OAAyBoE,EACnB,GAAHiG,OAAMI,EAAK,KAAAJ,OAAIjG,GAExBA,IAAYR,EAAQqD,aAAc,CAClC,IAAI+D,EAAUH,EAAOzG,GAChB6G,EAAWF,EAAUnH,KACtBoH,EAAUpH,EAAQ6D,kBAAkBrD,EAAS4G,GAC7CA,EAAUvB,EAAqBuB,EAASpH,IAExCgH,IACAD,GAAUD,GAEdC,GAAUK,EACVJ,GAAuB,EACvB,QACJ,CAAO,GAAIxG,IAAYR,EAAQuD,cAAe,CACtCyD,IACAD,GAAUD,GAEdC,GAAU,YAAJN,OAAgBQ,EAAOzG,GAAS,GAAGR,EAAQqD,cAAa,OAC9D2D,GAAuB,EACvB,QACJ,CAAO,GAAIxG,IAAYR,EAAQgE,gBAAiB,CAC5C+C,GAAUD,EAAc,UAAHL,OAAUQ,EAAOzG,GAAS,GAAGR,EAAQqD,cAAa,UACvE2D,GAAuB,EACvB,QACJ,CAAO,GAAmB,MAAfxG,EAAQ,GAAY,CAC3B,MAAM8G,EAASC,EAAYN,EAAO,MAAOjH,GACnCwH,EAAsB,SAAZhH,EAAqB,GAAKsG,EAC1C,IAAIW,EAAiBR,EAAOzG,GAAS,GAAGR,EAAQqD,cAChDoE,EAA2C,IAA1BA,EAAerL,OAAe,IAAMqL,EAAiB,GACtEV,GAAUS,EAAU,IAAHf,OAAOjG,GAAOiG,OAAGgB,GAAchB,OAAGa,EAAM,MACzDN,GAAuB,EACvB,QACJ,CACA,IAAIU,EAAgBZ,EACE,KAAlBY,IACAA,GAAiB1H,EAAQyD,UAE7B,MAAM6D,EAASC,EAAYN,EAAO,MAAOjH,GACnC2H,EAAWb,EAAc,IAAHL,OAAOjG,GAAOiG,OAAGa,GACvCM,EAAWjB,EAASM,EAAOzG,GAAUR,EAASmH,EAAUO,IACf,IAA3C1H,EAAQb,aAAauC,QAAQlB,GACzBR,EAAQ2D,qBAAsBoD,GAAUY,EAAW,IAClDZ,GAAUY,EAAW,KACjBC,GAAgC,IAApBA,EAASxL,SAAiB4D,EAAQ0D,kBAEhDkE,GAAYA,EAASC,SAAS,KACrCd,GAAUY,EAAW,IAAHlB,OAAOmB,GAAQnB,OAAGK,EAAW,MAAAL,OAAKjG,EAAO,MAE3DuG,GAAUY,EAAW,IACjBC,GAA4B,KAAhBd,IAAuBc,EAASE,SAAS,OAASF,EAASE,SAAS,OAChFf,GAAUD,EAAc9G,EAAQyD,SAAWmE,EAAWd,EAEtDC,GAAUa,EAEdb,GAAU,KAAJN,OAASjG,EAAO,MAVtBuG,GAAUY,EAAW,KAYzBX,GAAuB,CAC3B,CAEA,OAAOD,CACX,CAEA,SAASG,EAASpJ,GACd,MAAMxB,EAAOO,OAAOP,KAAKwB,GACzB,IAAK,IAAIzB,EAAI,EAAGA,EAAIC,EAAKF,OAAQC,IAAK,CAClC,MAAMa,EAAMZ,EAAKD,GACjB,GAAIyB,EAAId,eAAeE,IACX,OAARA,EAAc,OAAOA,CAC7B,CACJ,CAEA,SAASqK,EAAYQ,EAAS/H,GAC1B,IAAIc,EAAU,GACd,GAAIiH,IAAY/H,EAAQsD,iBACpB,IAAK,IAAIoC,KAAQqC,EAAS,CACtB,IAAIA,EAAQ/K,eAAe0I,GAAO,SAClC,IAAIsC,EAAUhI,EAAQ8D,wBAAwB4B,EAAMqC,EAAQrC,IAC5DsC,EAAUnC,EAAqBmC,EAAShI,IACxB,IAAZgI,GAAoBhI,EAAQ4D,0BAC5B9C,GAAW,IAAJ2F,OAAQf,EAAKhG,OAAOM,EAAQmD,oBAAoB/G,SAEvD0E,GAAW,IAAJ2F,OAAQf,EAAKhG,OAAOM,EAAQmD,oBAAoB/G,QAAO,MAAAqK,OAAKuB,EAAO,IAElF,CAEJ,OAAOlH,CACX,CAEA,SAASuG,EAAWR,EAAO7G,GAEvB,IAAIQ,GADJqG,EAAQA,EAAMnH,OAAO,EAAGmH,EAAMzK,OAAS4D,EAAQqD,aAAajH,OAAS,IACjDsD,OAAOmH,EAAMoB,YAAY,KAAO,GACpD,IAAK,IAAInJ,KAASkB,EAAQoE,UACtB,GAAIpE,EAAQoE,UAAUtF,KAAW+H,GAAS7G,EAAQoE,UAAUtF,KAAW,KAAO0B,EAAS,OAAO,EAElG,OAAO,CACX,CAEA,SAASqF,EAAqBM,EAAWnG,GACrC,GAAImG,GAAaA,EAAU/J,OAAS,GAAK4D,EAAQmE,gBAC7C,IAAK,IAAI9H,EAAI,EAAGA,EAAI2D,EAAQiE,SAAS7H,OAAQC,IAAK,CAC9C,MAAMqK,EAAS1G,EAAQiE,SAAS5H,GAChC8J,EAAYA,EAAUlE,QAAQyE,EAAOjI,MAAOiI,EAAOxC,IACvD,CAEJ,OAAOiC,CACX,CACArK,EAAOC,QA9HP,SAAemM,EAAQlI,GACnB,IAAI8G,EAAc,GAIlB,OAHI9G,EAAQwD,QAAUxD,EAAQyD,SAASrH,OAAS,IAC5C0K,EAXI,MAaDH,EAASuB,EAAQlI,EAAS,GAAI8G,EACzC,C,mBCdA,MAAM9H,EAAO5B,EAAQ,QA+DrB,SAAS+K,EAAc5I,EAAQlD,GAW3B,IAAI+L,EAAa,GACjB,KAAO/L,EAAIkD,EAAQnD,QAA0B,MAAfmD,EAAQlD,IAA6B,MAAfkD,EAAQlD,GAAcA,IAGtE+L,GAAc7I,EAAQlD,GAG1B,GADA+L,EAAaA,EAAW3H,QACQ,IAA7B2H,EAAW1G,QAAQ,KAAa,MAAM,IAAI2G,MAAM,sCAGnD,MAAMjG,EAAY7C,EAAQlD,KAC1B,IAAI6H,EAAM,GACV,KAAO7H,EAAIkD,EAAQnD,QAAUmD,EAAQlD,KAAO+F,EAAY/F,IACpD6H,GAAO3E,EAAQlD,GAEnB,MAAO,CAAC+L,EAAYlE,EAAK7H,EAC7B,CAEA,SAASiM,EAAU/I,EAASlD,GACxB,MAAoB,MAAjBkD,EAAQlD,EAAE,IACI,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,EAEd,CACA,SAASkM,EAAShJ,EAASlD,GACvB,MAAoB,MAAjBkD,EAAQlD,EAAE,IACI,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,EAEd,CACA,SAASmM,EAAUjJ,EAASlD,GACxB,MAAoB,MAAjBkD,EAAQlD,EAAE,IACI,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,EAEd,CAEA,SAASoM,EAAUlJ,EAASlD,GACxB,MAAoB,MAAjBkD,EAAQlD,EAAE,IACI,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,EAEd,CACA,SAASqM,EAAWnJ,EAASlD,GACzB,MAAoB,MAAjBkD,EAAQlD,EAAE,IACI,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,IACO,MAAjBkD,EAAQlD,EAAE,EAEd,CAEA,SAASsM,EAAmBvD,GACxB,GAAIpG,EAAKZ,OAAOgH,GACnB,OAAOA,EAEA,MAAM,IAAIiD,MAAM,uBAAD5B,OAAwBrB,GAC/C,CAEAtJ,EAAOC,QApJP,SAAqBwD,EAASlD,GAE1B,MAAM4H,EAAW,CAAC,EAClB,GAAuB,MAAnB1E,EAAQlD,EAAI,IACQ,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,IACO,MAAnBkD,EAAQlD,EAAI,GA+Cb,MAAM,IAAIgM,MAAM,kCA9CpB,CACIhM,GAAM,EACN,IAAIyD,EAAqB,EACrB8I,GAAU,EAAOC,GAAU,EAC3BC,EAAM,GACV,KAAKzM,EAAEkD,EAAQnD,OAAOC,IAClB,GAAmB,MAAfkD,EAAQlD,IAAewM,EAkBpB,GAAmB,MAAftJ,EAAQlD,IASf,GARGwM,EACwB,MAAnBtJ,EAAQlD,EAAI,IAAiC,MAAnBkD,EAAQlD,EAAI,KACtCwM,GAAU,EACV/I,KAGJA,IAEuB,IAAvBA,EACF,UAEmB,MAAfP,EAAQlD,GACduM,GAAU,EAEVE,GAAOvJ,EAAQlD,OAjCiB,CAChC,GAAIuM,GAAWL,EAAShJ,EAASlD,GAC7BA,GAAK,GACJ+L,WAAYlE,IAAI7H,GAAK8L,EAAc5I,EAAQlD,EAAE,IACrB,IAAtB6H,IAAIxC,QAAQ,OACXuC,EAAU0E,EAAmBP,aAAgB,CACzCW,KAAOtM,OAAO,IAADgK,OAAM2B,WAAU,KAAI,KACjClE,WAGP,GAAI0E,GAAWJ,EAAUjJ,EAASlD,GAAKA,GAAK,OAC5C,GAAIuM,GAAWH,EAAUlJ,EAASlD,GAAKA,GAAK,OAC5C,GAAIuM,GAAWF,EAAWnJ,EAASlD,GAAIA,GAAK,MAC5C,KAAIiM,EACmC,MAAM,IAAID,MAAM,mBADhBQ,GAAU,CACwB,CAE9E/I,IACAgJ,EAAM,EACV,CAkBJ,GAA0B,IAAvBhJ,EACC,MAAM,IAAIuI,MAAM,mBAExB,CAGA,MAAO,CAACpE,WAAU5H,IACtB,C,iBC5DA,MAAM4C,EAAiB,CACnB8E,eAAe,EACfZ,oBAAqB,KACrBC,qBAAqB,EACrBC,aAAc,QACdC,kBAAkB,EAClB0F,gBAAgB,EAChB9J,wBAAwB,EAExB+J,eAAe,EACfC,qBAAqB,EACrBC,YAAY,EACZ5F,eAAe,EACf6F,mBAAoB,CAClBC,KAAK,EACLC,cAAc,EACdC,WAAW,GAEb1F,kBAAmB,SAASrD,EAAS0D,GACnC,OAAOA,CACT,EACAJ,wBAAyB,SAASrB,EAAUyB,GAC1C,OAAOA,CACT,EACAE,UAAW,GACXoF,sBAAsB,EACtBhN,QAASA,KAAM,EACfwH,iBAAiB,EACjB7E,aAAc,GACdgF,iBAAiB,EACjBsF,cAAc,EACdC,mBAAmB,EACnBC,cAAc,EACdC,kBAAkB,EAClBC,wBAAwB,EACxBC,UAAW,SAAStJ,EAASqG,EAAOkD,GAClC,OAAOvJ,CACT,GAQJzE,EAAQiO,aAJa,SAAShK,GAC1B,OAAOnD,OAAOoD,OAAO,CAAC,EAAGhB,EAAgBe,EAC7C,EAGAjE,EAAQkD,eAAiBA,C,gCC5CzB,MAAMD,EAAO5B,EAAQ,QACf6M,EAAU7M,EAAQ,OAClB8M,EAAc9M,EAAQ,QACtB+M,EAAW/M,EAAQ,OAqDzB,SAASgN,EAAoBC,GAC3B,MAAMC,EAAUzN,OAAOP,KAAK+N,GAC5B,IAAK,IAAIhO,EAAI,EAAGA,EAAIiO,EAAQlO,OAAQC,IAAK,CACvC,MAAMkO,EAAMD,EAAQjO,GACpBkI,KAAKiG,aAAaD,GAAO,CACtB9L,MAAO,IAAIhC,OAAO,IAAI8N,EAAI,IAAI,KAC9BrG,IAAMmG,EAAiBE,GAE5B,CACF,CAWA,SAASE,EAAcvG,EAAK1D,EAASqG,EAAO6D,EAAUC,EAAeC,EAAYC,GAC/E,QAAYrI,IAAR0B,IACEK,KAAKvE,QAAQmJ,aAAeuB,IAC9BxG,EAAMA,EAAIzD,QAETyD,EAAI9H,OAAS,GAAE,CACZyO,IAAgB3G,EAAMK,KAAKsB,qBAAqB3B,IAEpD,MAAM0B,EAASrB,KAAKvE,QAAQ6D,kBAAkBrD,EAAS0D,EAAK2C,EAAO8D,EAAeC,GAClF,GAAGhF,QAED,OAAO1B,EACH,UAAU0B,UAAkB1B,GAAO0B,IAAW1B,EAElD,OAAO0B,EACH,GAAGrB,KAAKvE,QAAQmJ,WACpB,OAAO2B,EAAW5G,EAAKK,KAAKvE,QAAQiJ,cAAe1E,KAAKvE,QAAQoJ,oBAGhE,OADmBlF,EAAIzD,SACLyD,EACT4G,EAAW5G,EAAKK,KAAKvE,QAAQiJ,cAAe1E,KAAKvE,QAAQoJ,oBAEzDlF,CAGb,CAEJ,CAEA,SAAS6G,EAAiBtL,GACxB,GAAI8E,KAAKvE,QAAQgJ,eAAgB,CAC/B,MAAM9I,EAAOT,EAAQwD,MAAM,KACrB+H,EAA+B,MAAtBvL,EAAQwL,OAAO,GAAa,IAAM,GACjD,GAAgB,UAAZ/K,EAAK,GACP,MAAO,GAEW,IAAhBA,EAAK9D,SACPqD,EAAUuL,EAAS9K,EAAK,GAE5B,CACA,OAAOT,CACT,CAIA,MAAMyL,EAAY,IAAIzO,OAAO,+CAAgD,MAE7E,SAAS0O,EAAmBrK,EAAS+F,EAAOrG,GAC1C,IAAK+D,KAAKvE,QAAQsD,kBAAuC,iBAAZxC,EAAsB,CAIjE,MAAMpC,EAAUM,EAAKR,cAAcsC,EAASoK,GACtChN,EAAMQ,EAAQtC,OACd2N,EAAQ,CAAC,EACf,IAAK,IAAI1N,EAAI,EAAGA,EAAI6B,EAAK7B,IAAK,CAC5B,MAAMoG,EAAW8B,KAAKwG,iBAAiBrM,EAAQrC,GAAG,IAClD,IAAI+O,EAAS1M,EAAQrC,GAAG,GACpBgP,EAAQ9G,KAAKvE,QAAQmD,oBAAsBV,EAC/C,GAAIA,EAASrG,OAKX,GAJImI,KAAKvE,QAAQ6J,yBACfwB,EAAQ9G,KAAKvE,QAAQ6J,uBAAuBwB,IAEjC,cAAVA,IAAuBA,EAAS,mBACpB7I,IAAX4I,EAAsB,CACpB7G,KAAKvE,QAAQmJ,aACfiC,EAASA,EAAO3K,QAElB2K,EAAS7G,KAAKsB,qBAAqBuF,GACnC,MAAME,EAAS/G,KAAKvE,QAAQ8D,wBAAwBrB,EAAU2I,EAAQvE,GAGpEkD,EAAMsB,GAFLC,QAEcF,SACDE,UAAkBF,GAAUE,IAAWF,EAEtCE,EAGAR,EACbM,EACA7G,KAAKvE,QAAQkJ,oBACb3E,KAAKvE,QAAQoJ,mBAGnB,MAAW7E,KAAKvE,QAAQd,yBACtB6K,EAAMsB,IAAS,EAGrB,CACA,IAAKxO,OAAOP,KAAKyN,GAAO3N,OACtB,OAEF,GAAImI,KAAKvE,QAAQoD,oBAAqB,CACpC,MAAMmI,EAAiB,CAAC,EAExB,OADAA,EAAehH,KAAKvE,QAAQoD,qBAAuB2G,EAC5CwB,CACT,CACA,OAAOxB,CACT,CACF,CAEA,MAAMyB,EAAW,SAASjM,GACxBA,EAAUA,EAAQ0C,QAAQ,SAAU,MACpC,MAAMwJ,EAAS,IAAIxB,EAAQ,QAC3B,IAAIyB,EAAcD,EACdE,EAAW,GACX9E,EAAQ,GACZ,IAAI,IAAIxK,EAAE,EAAGA,EAAGkD,EAAQnD,OAAQC,IAAI,CAElC,GAAU,MADCkD,EAAQlD,GAIjB,GAAqB,MAAjBkD,EAAQlD,EAAE,GAAY,CACxB,MAAMuP,EAAaC,EAAiBtM,EAAS,IAAKlD,EAAG,8BACrD,IAAImE,EAAUjB,EAAQmB,UAAUrE,EAAE,EAAEuP,GAAYnL,OAEhD,GAAG8D,KAAKvE,QAAQgJ,eAAe,CAC7B,MAAM8C,EAAatL,EAAQkB,QAAQ,MAChB,IAAhBoK,IACDtL,EAAUA,EAAQd,OAAOoM,EAAW,GAExC,CAEGvH,KAAKvE,QAAQ4J,mBACdpJ,EAAU+D,KAAKvE,QAAQ4J,iBAAiBpJ,IAGvCkL,IACDC,EAAWpH,KAAKwH,oBAAoBJ,EAAUD,EAAa7E,IAI7D,MAAMmF,EAAcnF,EAAMnG,UAAUmG,EAAMoB,YAAY,KAAK,GAC3D,GAAGzH,IAA2D,IAAhD+D,KAAKvE,QAAQb,aAAauC,QAAQlB,GAC9C,MAAM,IAAI6H,MAAM,kDAAD5B,OAAmDjG,EAAO,MAE3E,IAAIyL,EAAY,EACbD,IAAmE,IAApDzH,KAAKvE,QAAQb,aAAauC,QAAQsK,IAClDC,EAAYpF,EAAMoB,YAAY,IAAKpB,EAAMoB,YAAY,KAAK,GAC1D1D,KAAK2H,cAAc3K,OAEnB0K,EAAYpF,EAAMoB,YAAY,KAEhCpB,EAAQA,EAAMnG,UAAU,EAAGuL,GAE3BP,EAAcnH,KAAK2H,cAAc3K,MACjCoK,EAAW,GACXtP,EAAIuP,CACN,MAAO,GAAqB,MAAjBrM,EAAQlD,EAAE,GAAY,CAE/B,IAAI8P,EAAUC,EAAW7M,EAAQlD,GAAG,EAAO,MAC3C,IAAI8P,EAAS,MAAM,IAAI9D,MAAM,yBAG7B,GADAsD,EAAWpH,KAAKwH,oBAAoBJ,EAAUD,EAAa7E,GACtDtC,KAAKvE,QAAQ0J,mBAAyC,SAApByC,EAAQ3L,SAAuB+D,KAAKvE,QAAQ2J,kBAE9E,CAEH,MAAM0C,EAAY,IAAIpC,EAAQkC,EAAQ3L,SACtC6L,EAAUC,IAAI/H,KAAKvE,QAAQqD,aAAc,IAEtC8I,EAAQ3L,UAAY2L,EAAQI,QAAUJ,EAAQK,iBAC/CH,EAAU,MAAQ9H,KAAK4G,mBAAmBgB,EAAQI,OAAQ1F,EAAOsF,EAAQ3L,UAE3E+D,KAAKkI,SAASf,EAAaW,EAAWxF,EAExC,CAGAxK,EAAI8P,EAAQP,WAAa,CAC3B,MAAO,GAAgC,QAA7BrM,EAAQG,OAAOrD,EAAI,EAAG,GAAc,CAC5C,MAAMqQ,EAAWb,EAAiBtM,EAAS,SAAOlD,EAAE,EAAG,0BACvD,GAAGkI,KAAKvE,QAAQgE,gBAAgB,CAC9B,MAAM6E,EAAUtJ,EAAQmB,UAAUrE,EAAI,EAAGqQ,EAAW,GAEpDf,EAAWpH,KAAKwH,oBAAoBJ,EAAUD,EAAa7E,GAE3D6E,EAAYY,IAAI/H,KAAKvE,QAAQgE,gBAAiB,CAAE,CAAE,CAACO,KAAKvE,QAAQqD,cAAgBwF,IAClF,CACAxM,EAAIqQ,CACN,MAAO,GAAiC,OAA7BnN,EAAQG,OAAOrD,EAAI,EAAG,GAAa,CAC5C,MAAMuE,EAASsJ,EAAY3K,EAASlD,GACpCkI,KAAKoI,gBAAkB/L,EAAOqD,SAC9B5H,EAAIuE,EAAOvE,CACb,MAAM,GAAgC,OAA7BkD,EAAQG,OAAOrD,EAAI,EAAG,GAAa,CAC1C,MAAMuP,EAAaC,EAAiBtM,EAAS,MAAOlD,EAAG,wBAA0B,EAC3EkQ,EAAShN,EAAQmB,UAAUrE,EAAI,EAAEuP,GAEvCD,EAAWpH,KAAKwH,oBAAoBJ,EAAUD,EAAa7E,GAE3D,IAAI3C,EAAMK,KAAKkG,cAAc8B,EAAQb,EAAYjM,QAASoH,GAAO,GAAM,GAAO,GAAM,GAC1ErE,MAAP0B,IAAkBA,EAAM,IAGxBK,KAAKvE,QAAQuD,cACdmI,EAAYY,IAAI/H,KAAKvE,QAAQuD,cAAe,CAAE,CAAE,CAACgB,KAAKvE,QAAQqD,cAAgBkJ,KAE9Eb,EAAYY,IAAI/H,KAAKvE,QAAQqD,aAAca,GAG7C7H,EAAIuP,EAAa,CACnB,KAAM,CACJ,IAAIhL,EAASwL,EAAW7M,EAAQlD,EAAGkI,KAAKvE,QAAQgJ,gBAC5CxI,EAASI,EAAOJ,QACpB,MAAMoM,EAAahM,EAAOgM,WAC1B,IAAIL,EAAS3L,EAAO2L,OAChBC,EAAiB5L,EAAO4L,eACxBZ,EAAahL,EAAOgL,WAEpBrH,KAAKvE,QAAQ4J,mBACfpJ,EAAU+D,KAAKvE,QAAQ4J,iBAAiBpJ,IAItCkL,GAAeC,GACU,SAAxBD,EAAYjM,UAEbkM,EAAWpH,KAAKwH,oBAAoBJ,EAAUD,EAAa7E,GAAO,IAKtE,MAAMgG,EAAUnB,EAQhB,GAPGmB,IAAmE,IAAxDtI,KAAKvE,QAAQb,aAAauC,QAAQmL,EAAQpN,WACtDiM,EAAcnH,KAAK2H,cAAc3K,MACjCsF,EAAQA,EAAMnG,UAAU,EAAGmG,EAAMoB,YAAY,OAE5CzH,IAAYiL,EAAOhM,UACpBoH,GAASA,EAAQ,IAAMrG,EAAUA,GAE/B+D,KAAKuI,aAAavI,KAAKvE,QAAQoE,UAAWyC,EAAOrG,GAAU,CAC7D,IAAIuM,EAAa,GAEjB,GAAGR,EAAOnQ,OAAS,GAAKmQ,EAAOtE,YAAY,OAASsE,EAAOnQ,OAAS,EAC/B,MAAhCoE,EAAQA,EAAQpE,OAAS,IAC1BoE,EAAUA,EAAQd,OAAO,EAAGc,EAAQpE,OAAS,GAC7CyK,EAAQA,EAAMnH,OAAO,EAAGmH,EAAMzK,OAAS,GACvCmQ,EAAS/L,GAET+L,EAASA,EAAO7M,OAAO,EAAG6M,EAAOnQ,OAAS,GAE5CC,EAAIuE,EAAOgL,gBAGR,IAAmD,IAAhDrH,KAAKvE,QAAQb,aAAauC,QAAQlB,GAExCnE,EAAIuE,EAAOgL,eAGT,CAEF,MAAMhL,EAAS2D,KAAKyI,iBAAiBzN,EAASqN,EAAYhB,EAAa,GACvE,IAAIhL,EAAQ,MAAM,IAAIyH,MAAM,qBAAD5B,OAAsBmG,IACjDvQ,EAAIuE,EAAOvE,EACX0Q,EAAanM,EAAOmM,UACtB,CAEA,MAAMV,EAAY,IAAIpC,EAAQzJ,GAC3BA,IAAY+L,GAAUC,IACvBH,EAAU,MAAQ9H,KAAK4G,mBAAmBoB,EAAQ1F,EAAOrG,IAExDuM,IACDA,EAAaxI,KAAKkG,cAAcsC,EAAYvM,EAASqG,GAAO,EAAM2F,GAAgB,GAAM,IAG1F3F,EAAQA,EAAMnH,OAAO,EAAGmH,EAAMoB,YAAY,MAC1CoE,EAAUC,IAAI/H,KAAKvE,QAAQqD,aAAc0J,GAEzCxI,KAAKkI,SAASf,EAAaW,EAAWxF,EACxC,KAAK,CAEH,GAAG0F,EAAOnQ,OAAS,GAAKmQ,EAAOtE,YAAY,OAASsE,EAAOnQ,OAAS,EAAE,CACjC,MAAhCoE,EAAQA,EAAQpE,OAAS,IAC1BoE,EAAUA,EAAQd,OAAO,EAAGc,EAAQpE,OAAS,GAC7CyK,EAAQA,EAAMnH,OAAO,EAAGmH,EAAMzK,OAAS,GACvCmQ,EAAS/L,GAET+L,EAASA,EAAO7M,OAAO,EAAG6M,EAAOnQ,OAAS,GAGzCmI,KAAKvE,QAAQ4J,mBACdpJ,EAAU+D,KAAKvE,QAAQ4J,iBAAiBpJ,IAG1C,MAAM6L,EAAY,IAAIpC,EAAQzJ,GAC3BA,IAAY+L,GAAUC,IACvBH,EAAU,MAAQ9H,KAAK4G,mBAAmBoB,EAAQ1F,EAAOrG,IAE3D+D,KAAKkI,SAASf,EAAaW,EAAWxF,GACtCA,EAAQA,EAAMnH,OAAO,EAAGmH,EAAMoB,YAAY,KAC5C,KAEI,CACF,MAAMoE,EAAY,IAAIpC,EAASzJ,GAC/B+D,KAAK2H,cAAcnN,KAAK2M,GAErBlL,IAAY+L,GAAUC,IACvBH,EAAU,MAAQ9H,KAAK4G,mBAAmBoB,EAAQ1F,EAAOrG,IAE3D+D,KAAKkI,SAASf,EAAaW,EAAWxF,GACtC6E,EAAcW,CAChB,CACAV,EAAW,GACXtP,EAAIuP,CACN,CACF,MAEAD,GAAYpM,EAAQlD,EAExB,CACA,OAAOoP,EAAOwB,KAChB,EAEA,SAASR,EAASf,EAAaW,EAAWxF,GACxC,MAAMjG,EAAS2D,KAAKvE,QAAQ8J,UAAUuC,EAAU5M,QAASoH,EAAOwF,EAAU,QAC5D,IAAXzL,IACwB,iBAAXA,GACdyL,EAAU5M,QAAUmB,EACpB8K,EAAYe,SAASJ,IAErBX,EAAYe,SAASJ,GAEzB,CAEA,MAAMxG,EAAuB,SAAS3B,GAEpC,GAAGK,KAAKvE,QAAQmE,gBAAgB,CAC9B,IAAI,IAAIiE,KAAc7D,KAAKoI,gBAAgB,CACzC,MAAMjG,EAASnC,KAAKoI,gBAAgBvE,GACpClE,EAAMA,EAAIjC,QAASyE,EAAOqC,KAAMrC,EAAOxC,IACzC,CACA,IAAI,IAAIkE,KAAc7D,KAAKiG,aAAa,CACtC,MAAM9D,EAASnC,KAAKiG,aAAapC,GACjClE,EAAMA,EAAIjC,QAASyE,EAAOjI,MAAOiI,EAAOxC,IAC1C,CACA,GAAGK,KAAKvE,QAAQyJ,aACd,IAAI,IAAIrB,KAAc7D,KAAKkF,aAAa,CACtC,MAAM/C,EAASnC,KAAKkF,aAAarB,GACjClE,EAAMA,EAAIjC,QAASyE,EAAOjI,MAAOiI,EAAOxC,IAC1C,CAEFA,EAAMA,EAAIjC,QAASsC,KAAK2I,UAAUzO,MAAO8F,KAAK2I,UAAUhJ,IAC1D,CACA,OAAOA,CACT,EACA,SAAS6H,EAAoBJ,EAAUD,EAAa7E,EAAO+D,GAezD,OAdIe,SACgBnJ,IAAfoI,IAA0BA,EAAuD,IAA1C/N,OAAOP,KAAKoP,EAAYuB,OAAO7Q,aASxDoG,KAPjBmJ,EAAWpH,KAAKkG,cAAckB,EAC5BD,EAAYjM,QACZoH,GACA,IACA6E,EAAY,OAAkD,IAA1C7O,OAAOP,KAAKoP,EAAY,OAAOtP,OACnDwO,KAEyC,KAAbe,GAC5BD,EAAYY,IAAI/H,KAAKvE,QAAQqD,aAAcsI,GAC7CA,EAAW,IAENA,CACT,CASA,SAASmB,EAAa1I,EAAWyC,EAAOsG,GACtC,MAAMC,EAAc,KAAOD,EAC3B,IAAK,MAAME,KAAgBjJ,EAAW,CACpC,MAAMkJ,EAAclJ,EAAUiJ,GAC9B,GAAID,IAAgBE,GAAezG,IAAUyG,EAAe,OAAO,CACrE,CACA,OAAO,CACT,CAsCA,SAASzB,EAAiBtM,EAASgO,EAAKlR,EAAGmR,GACzC,MAAMC,EAAelO,EAAQmC,QAAQ6L,EAAKlR,GAC1C,IAAqB,IAAlBoR,EACD,MAAM,IAAIpF,MAAMmF,GAEhB,OAAOC,EAAeF,EAAInR,OAAS,CAEvC,CAEA,SAASgQ,EAAW7M,EAAQlD,EAAG2M,GAC7B,MAAMpI,EAxCR,SAAgCrB,EAASlD,GAAqB,IACxDqR,EADsCC,EAAWC,UAAAxR,OAAA,QAAAoG,IAAAoL,UAAA,GAAAA,UAAA,GAAG,IAEpDrB,EAAS,GACb,IAAK,IAAIzN,EAAQzC,EAAGyC,EAAQS,EAAQnD,OAAQ0C,IAAS,CACnD,IAAI+O,EAAKtO,EAAQT,GACjB,GAAI4O,EACIG,IAAOH,IAAcA,EAAe,SACrC,GAAW,MAAPG,GAAqB,MAAPA,EACrBH,EAAeG,OACZ,GAAIA,IAAOF,EAAY,GAAI,CAChC,IAAGA,EAAY,GAQb,MAAO,CACLG,KAAMvB,EACNzN,MAAOA,GATT,GAAGS,EAAQT,EAAQ,KAAO6O,EAAY,GACpC,MAAO,CACLG,KAAMvB,EACNzN,MAAOA,EASf,KAAkB,OAAP+O,IACTA,EAAK,KAEPtB,GAAUsB,CACZ,CACF,CAYiBE,CAAuBxO,EAASlD,EAAE,EADOuR,UAAAxR,OAAA,QAAAoG,IAAAoL,UAAA,GAAAA,UAAA,GAAG,KAE3D,IAAIhN,EAAQ,OACZ,IAAI2L,EAAS3L,EAAOkN,KACpB,MAAMlC,EAAahL,EAAO9B,MACpBkP,EAAiBzB,EAAO0B,OAAO,MACrC,IAAIzN,EAAU+L,EACVC,GAAiB,GACE,IAApBwB,IACDxN,EAAU+L,EAAO7L,UAAU,EAAGsN,GAC9BzB,EAASA,EAAO7L,UAAUsN,EAAiB,GAAGE,aAGhD,MAAMtB,EAAapM,EACnB,GAAGwI,EAAe,CAChB,MAAM8C,EAAatL,EAAQkB,QAAQ,MAChB,IAAhBoK,IACDtL,EAAUA,EAAQd,OAAOoM,EAAW,GACpCU,EAAiBhM,IAAYI,EAAOkN,KAAKpO,OAAOoM,EAAa,GAEjE,CAEA,MAAO,CACLtL,QAASA,EACT+L,OAAQA,EACRX,WAAYA,EACZY,eAAgBA,EAChBI,WAAYA,EAEhB,CAOA,SAASI,EAAiBzN,EAASiB,EAASnE,GAC1C,MAAMuC,EAAavC,EAEnB,IAAI8R,EAAe,EAEnB,KAAO9R,EAAIkD,EAAQnD,OAAQC,IACzB,GAAmB,MAAfkD,EAAQlD,GACV,GAAqB,MAAjBkD,EAAQlD,EAAE,GAAY,CACtB,MAAMuP,EAAaC,EAAiBtM,EAAS,IAAKlD,EAAG,GAAFoK,OAAKjG,EAAO,mBAE/D,GADmBjB,EAAQmB,UAAUrE,EAAE,EAAEuP,GAAYnL,SACjCD,IAClB2N,IACqB,IAAjBA,GACF,MAAO,CACLpB,WAAYxN,EAAQmB,UAAU9B,EAAYvC,GAC1CA,EAAIuP,GAIVvP,EAAEuP,CACJ,MAAO,GAAoB,MAAjBrM,EAAQlD,EAAE,GAAY,CAE9BA,EADmBwP,EAAiBtM,EAAS,KAAMlD,EAAE,EAAG,0BAE1D,MAAO,GAAgC,QAA7BkD,EAAQG,OAAOrD,EAAI,EAAG,GAAc,CAE5CA,EADmBwP,EAAiBtM,EAAS,SAAOlD,EAAE,EAAG,0BAE3D,MAAO,GAAgC,OAA7BkD,EAAQG,OAAOrD,EAAI,EAAG,GAAa,CAE3CA,EADmBwP,EAAiBtM,EAAS,MAAOlD,EAAG,2BAA6B,CAEtF,KAAO,CACL,MAAM8P,EAAUC,EAAW7M,EAASlD,EAAG,KAEvC,GAAI8P,EAAS,EACSA,GAAWA,EAAQ3L,WACnBA,GAAuD,MAA5C2L,EAAQI,OAAOJ,EAAQI,OAAOnQ,OAAO,IAClE+R,IAEF9R,EAAE8P,EAAQP,UACZ,CACF,CAGR,CAEA,SAASd,EAAW5G,EAAKkK,EAAapO,GACpC,GAAIoO,GAA8B,iBAARlK,EAAkB,CAE1C,MAAM0B,EAAS1B,EAAIzD,OACnB,MAAc,SAAXmF,GACgB,UAAXA,GACIuE,EAASjG,EAAKlE,EAC5B,CACE,OAAIhB,EAAKrB,QAAQuG,GACRA,EAEA,EAGb,CAGApI,EAAOC,QAzkBP,MACEI,WAAAA,CAAY6D,GACVuE,KAAKvE,QAAUA,EACfuE,KAAKmH,YAAc,KACnBnH,KAAK2H,cAAgB,GACrB3H,KAAKoI,gBAAkB,CAAC,EACxBpI,KAAKiG,aAAe,CAClB,KAAS,CAAE/L,MAAO,qBAAsByF,IAAM,KAC9C,GAAO,CAAEzF,MAAO,mBAAoByF,IAAM,KAC1C,GAAO,CAAEzF,MAAO,mBAAoByF,IAAM,KAC1C,KAAS,CAAEzF,MAAO,qBAAsByF,IAAM,MAEhDK,KAAK2I,UAAY,CAAEzO,MAAO,oBAAqByF,IAAM,KACrDK,KAAKkF,aAAe,CAClB,MAAS,CAAEhL,MAAO,iBAAkByF,IAAK,KAMzC,KAAS,CAAEzF,MAAO,iBAAkByF,IAAK,KACzC,MAAU,CAAEzF,MAAO,kBAAmByF,IAAK,KAC3C,IAAQ,CAAEzF,MAAO,gBAAiByF,IAAK,KACvC,KAAS,CAAEzF,MAAO,kBAAmByF,IAAK,KAC1C,UAAc,CAAEzF,MAAO,iBAAkByF,IAAK,KAC9C,IAAQ,CAAEzF,MAAO,gBAAiByF,IAAK,KACvC,IAAQ,CAAEzF,MAAO,iBAAkByF,IAAK,KACxC,QAAW,CAAEzF,MAAO,mBAAoByF,IAAMA,CAACmK,EAAGd,IAAQe,OAAOC,aAAaC,OAAOC,SAASlB,EAAK,MACnG,QAAW,CAAE9O,MAAO,0BAA2ByF,IAAMA,CAACmK,EAAGd,IAAQe,OAAOC,aAAaC,OAAOC,SAASlB,EAAK,OAE5GhJ,KAAK6F,oBAAsBA,EAC3B7F,KAAKiH,SAAWA,EAChBjH,KAAKkG,cAAgBA,EACrBlG,KAAKwG,iBAAmBA,EACxBxG,KAAK4G,mBAAqBA,EAC1B5G,KAAKuI,aAAeA,EACpBvI,KAAKsB,qBAAuBA,EAC5BtB,KAAKyI,iBAAmBA,EACxBzI,KAAKwH,oBAAsBA,EAC3BxH,KAAKkI,SAAWA,CAClB,E,mBCvDF,MAAM,aAAEzC,GAAgB5M,EAAQ,QAC1BsR,EAAmBtR,EAAQ,SAC3B,SAAEuR,GAAYvR,EAAQ,QACtBD,EAAYC,EAAQ,QAsD1BtB,EAAOC,QApDP,MAEII,WAAAA,CAAY6D,GACRuE,KAAK8F,iBAAmB,CAAC,EACzB9F,KAAKvE,QAAUgK,EAAahK,EAEhC,CAMA4O,KAAAA,CAAMrP,EAAQsP,GACV,GAAsB,iBAAZtP,OACJ,KAAIA,EAAQxC,SAGd,MAAM,IAAIsL,MAAM,mDAFhB9I,EAAUA,EAAQxC,UAGtB,CACA,GAAI8R,EAAiB,EACO,IAArBA,IAA2BA,EAAmB,CAAC,GAElD,MAAMjO,EAASzD,EAAU4C,SAASR,EAASsP,GAC3C,IAAe,IAAXjO,EACF,MAAMyH,MAAM,GAAD5B,OAAK7F,EAAOP,IAAIM,IAAG,KAAA8F,OAAI7F,EAAOP,IAAIe,KAAI,KAAAqF,OAAI7F,EAAOP,IAAIoB,KAEpE,CACF,MAAMqN,EAAmB,IAAIJ,EAAiBnK,KAAKvE,SACnD8O,EAAiB1E,oBAAoB7F,KAAK8F,kBAC1C,MAAM0E,EAAgBD,EAAiBtD,SAASjM,GAChD,OAAGgF,KAAKvE,QAAQ+D,oBAAmCvB,IAAlBuM,EAAoCA,EACzDJ,EAASI,EAAexK,KAAKvE,QAC7C,CAOAgP,SAAAA,CAAU9R,EAAK6D,GACX,IAA2B,IAAxBA,EAAMW,QAAQ,KACb,MAAM,IAAI2G,MAAM,+BACd,IAAyB,IAAtBnL,EAAIwE,QAAQ,OAAqC,IAAtBxE,EAAIwE,QAAQ,KAC5C,MAAM,IAAI2G,MAAM,wEACd,GAAa,MAAVtH,EACL,MAAM,IAAIsH,MAAM,6CAEhB9D,KAAK8F,iBAAiBnN,GAAO6D,CAErC,E,8BCnCJ,SAASkO,EAASrI,EAAK5G,EAAS6G,GAC9B,IAAIqI,EACJ,MAAMC,EAAgB,CAAC,EACvB,IAAK,IAAI9S,EAAI,EAAGA,EAAIuK,EAAIxK,OAAQC,IAAK,CACnC,MAAM4K,EAASL,EAAIvK,GACb+S,EAAWlI,EAASD,GAC1B,IAAIoI,EAAW,GAIf,GAHwBA,OAAX7M,IAAVqE,EAAgCuI,EACnBvI,EAAQ,IAAMuI,EAE3BA,IAAapP,EAAQqD,kBACVb,IAAT0M,EAAoBA,EAAOjI,EAAOmI,GAChCF,GAAQ,GAAKjI,EAAOmI,OACrB,SAAgB5M,IAAb4M,EACP,SACI,GAAGnI,EAAOmI,GAAU,CAExB,IAAIlL,EAAM+K,EAAShI,EAAOmI,GAAWpP,EAASqP,GAC9C,MAAMC,EAASC,EAAUrL,EAAKlE,GAE3BiH,EAAO,MACRuI,EAAkBtL,EAAK+C,EAAO,MAAOoI,EAAUrP,GACZ,IAA5BnD,OAAOP,KAAK4H,GAAK9H,aAA8CoG,IAA9B0B,EAAIlE,EAAQqD,eAAgCrD,EAAQwJ,qBAEzD,IAA5B3M,OAAOP,KAAK4H,GAAK9H,SACrB4D,EAAQwJ,qBAAsBtF,EAAIlE,EAAQqD,cAAgB,GACxDa,EAAM,IAHXA,EAAMA,EAAIlE,EAAQqD,mBAMWb,IAA5B2M,EAAcC,IAA2BD,EAAcnS,eAAeoS,IACnE7S,MAAMC,QAAQ2S,EAAcC,MAC5BD,EAAcC,GAAY,CAAED,EAAcC,KAE9CD,EAAcC,GAAUrQ,KAAKmF,IAIzBlE,EAAQxD,QAAQ4S,EAAUC,EAAUC,GACtCH,EAAcC,GAAY,CAAClL,GAE3BiL,EAAcC,GAAYlL,CAGhC,EAEF,CAKA,MAHmB,iBAATgL,EACLA,EAAK9S,OAAS,IAAG+S,EAAcnP,EAAQqD,cAAgB6L,QAC1C1M,IAAT0M,IAAoBC,EAAcnP,EAAQqD,cAAgB6L,GAC5DC,CACT,CAEA,SAASjI,EAASpJ,GAChB,MAAMxB,EAAOO,OAAOP,KAAKwB,GACzB,IAAK,IAAIzB,EAAI,EAAGA,EAAIC,EAAKF,OAAQC,IAAK,CACpC,MAAMa,EAAMZ,EAAKD,GACjB,GAAW,OAARa,EAAc,OAAOA,CAC1B,CACF,CAEA,SAASsS,EAAiB1R,EAAKiK,EAAS0H,EAAOzP,GAC7C,GAAI+H,EAAS,CACX,MAAMzL,EAAOO,OAAOP,KAAKyL,GACnB7J,EAAM5B,EAAKF,OACjB,IAAK,IAAIC,EAAI,EAAGA,EAAI6B,EAAK7B,IAAK,CAC5B,MAAMqT,EAAWpT,EAAKD,GAClB2D,EAAQxD,QAAQkT,EAAUD,EAAQ,IAAMC,GAAU,GAAM,GAC1D5R,EAAI4R,GAAY,CAAE3H,EAAQ2H,IAE1B5R,EAAI4R,GAAY3H,EAAQ2H,EAE5B,CACF,CACF,CAEA,SAASH,EAAUzR,EAAKkC,GACtB,MAAM,aAAEqD,GAAiBrD,EACnB2P,EAAY9S,OAAOP,KAAKwB,GAAK1B,OAEnC,OAAkB,IAAduT,KAKY,IAAdA,IACC7R,EAAIuF,IAA8C,kBAAtBvF,EAAIuF,IAAqD,IAAtBvF,EAAIuF,GAMxE,CACAtH,EAAQ4S,SAxGR,SAAkBiB,EAAM5P,GACtB,OAAOiP,EAAUW,EAAM5P,EACzB,C,yBCcAlE,EAAOC,QAtBP,MACEI,WAAAA,CAAYsD,GACV8E,KAAK9E,QAAUA,EACf8E,KAAK0I,MAAQ,GACb1I,KAAK,MAAQ,CAAC,CAChB,CACA+H,GAAAA,CAAIpP,EAAIgH,GAEK,cAARhH,IAAqBA,EAAM,cAC9BqH,KAAK0I,MAAMlO,KAAM,CAAC,CAAC7B,GAAMgH,GAC3B,CACAuI,QAAAA,CAASmD,GACa,cAAjBA,EAAKnQ,UAAyBmQ,EAAKnQ,QAAU,cAC7CmQ,EAAK,OAAS/S,OAAOP,KAAKsT,EAAK,OAAOxT,OAAS,EAChDmI,KAAK0I,MAAMlO,KAAM,CAAE,CAAC6Q,EAAKnQ,SAAUmQ,EAAK3C,MAAO,KAAQ2C,EAAK,QAE5DrL,KAAK0I,MAAMlO,KAAM,CAAE,CAAC6Q,EAAKnQ,SAAUmQ,EAAK3C,OAE5C,E,gCCVF,IAAI4C,EAAiBzS,EAAQ,QAEzB0S,EAAuB1S,EAAQ,QAE/B2S,EAAgB3S,EAAQ,QAExB4S,EAAc,IAAIvT,OAAO,OAAQ,KAEjCwT,EAAkB,CACpB,WAAY,EACZ,YAAa,GASf,SAASC,EAAwBhK,GAC/B,GAAiB,QAAbA,EAAKiK,KACP,OAAOjK,EAAKkK,WAEhB,CAEA,IAAIC,EAEJ,WAIE,SAASA,EAAavC,GACpBvJ,KAAKuJ,KAAOA,EAEZvJ,KAAK+L,MAAQxC,EAAKwC,MAAQR,EAAqBhC,EAAKwC,OAAS,EAC/D,CAQA,IAAIC,EAASF,EAAavT,UA8J1B,OA5JAyT,EAAOC,WAAa,WAKlB,SAAIjM,KAAKkM,YAAalM,KAAKmM,aAMvBnM,KAAKoM,WAIFpM,KAAK+L,MAAMM,MAAK,SAAUC,GAC/B,OAAOZ,EAAgBY,EACzB,GACF,EAQAN,EAAOG,QAAU,WACf,IAAIxB,EAUJ,OARI3K,KAAKuJ,KAAKgD,UACPvM,KAAK+L,MAAMlU,QAEgC,GAArCmI,KAAK+L,MAAM5O,QAAQ,gBAC5BwN,EAAO3K,KAAKuJ,KAAKgD,QAAQ,eAFzB5B,EAAO3K,KAAKuJ,KAAKgD,QAAQ,SAMtB5B,EAAOA,EAAKjN,QAAQ+N,EA3EjB,MA2EyC,IACrD,EAQAO,EAAOE,QAAU,WACf,GAAIlM,KAAKuJ,KAAKgD,QAAS,CACrB,IAAKvM,KAAK+L,MAAMlU,OACd,OAAOmI,KAAKuJ,KAAKgD,QAAQ,QACpB,IAAwC,GAApCvM,KAAK+L,MAAM5O,QAAQ,aAC5B,OAAO6C,KAAKuJ,KAAKgD,QAAQ,YAE7B,CACF,EAQAP,EAAOQ,OAAS,WACd,OAAOxM,KAAK+L,MAAMM,MAAK,SAAUC,GAC/B,OAA+B,GAAxBA,EAAKnP,QAAQ,SAAkD,GAAlCmP,EAAKnP,QAAQ,kBAA0BmP,EAAKnP,QAAQ,iBAC1F,GACF,EAQA6O,EAAOS,QAAU,WACf,OAAIzM,KAAKuJ,KAAKgD,SACiC,GAAzCvM,KAAK+L,MAAM5O,QAAQ,kBACX6C,KAAKuJ,KAAKgD,QAAQ,kBAAkB7N,MAAM,MACzC,IAGkC,GAAxCsB,KAAK+L,MAAM5O,QAAQ,iBAAyB6C,KAAKuJ,KAAKgD,QAAQ,iBAAmBvM,KAAKuJ,KAAKgD,QAAQ,OAGrG,IACT,EAQAP,EAAOI,QAAU,WACf,IAAIA,EAAUpM,KAAK+L,MAAMM,MAAK,SAAUC,GAGtC,OAAkD,GAA3CA,EAAKnP,QAAQ,yBACtB,IAEA,GAAIiP,EACF,OAAO,EAKT,IAFA,IAAIM,EAAQ1M,KAAK2M,WAER7U,EAAI,EAAGA,EAAI4U,EAAM7U,OAAQC,IAAK,CACrC,IAAIwU,EAAOI,EAAM5U,GAAGwU,KAEpB,IAAKhB,EAAec,QAAQE,GAC1B,OAAO,CAEX,CAEA,OAAO,CACT,EAEAN,EAAOY,SAAW,WAChB,OAAI5M,KAAKuJ,KAAK9Q,eAAe,SACpBuH,KAAKuJ,KAAKmD,MAAM7U,OACdmI,KAAKuJ,KAAK9Q,eAAe,gBAC3BuH,KAAKuJ,KAAKsD,aACR7M,KAAKuJ,KAAKuD,MACZ9M,KAAKuJ,KAAKuD,MAAMjV,OAGlB,IACT,EAQAmU,EAAOW,SAAW,WAChB,OAAI3M,KAAKuJ,KAAKmD,MAEL1U,MAAMO,UAAUwU,MAAMrU,KAAKsH,KAAKuJ,KAAKmD,OAAOlP,IAAImO,GAAyBqB,OAAOxB,EAAcyB,qBAC5FjN,KAAKuJ,KAAKuD,MACZ9U,MAAMO,UAAUwU,MAAMrU,KAAKsH,KAAKuJ,KAAKuD,OAErC,EAEX,EAQAd,EAAOkB,SAAW,WAChB,OAAOlN,KAAK2M,WAAW9U,OAAS,CAClC,EAEOiU,CACT,CA/KA,GAiLAvU,EAAOC,QAAUsU,C,0BC7MjBvU,EAAOC,QAAU,CACf2V,UAAW,EACXC,IAAK,EACLC,OAAQ,GACRC,IAAK,GACLC,IAAK,GACLC,MAAO,GACPC,QAAS,GACTC,UAAW,GACXC,IAAK,GACLC,KAAM,GACNC,KAAM,GACNC,GAAI,GACJC,MAAO,GACPC,KAAM,GACNC,OAAQ,GACRC,MAAO,IACPC,OAAQ,IACRC,EAAG,GACHC,EAAG,GACHC,KAAM,GACNC,SAAU,GACVC,SAAU,I,0BCtBZ,IAAIlD,EAAiB,CACnBc,QAAS,SAAiBqC,GACxB,MAAmC,UAA5BC,EAASD,GAAY,EAC9B,EACAE,OAAQ,SAAgBF,GACtB,IAAIG,EAAQF,EAASD,GACrB,OAAOnD,EAAec,QAAQqC,KACjB,SAAbG,EAAM,IAA8B,UAAbA,EAAM,GAC/B,GAGF,SAASF,EAASD,GAChB,OAAOA,EAAW/P,MAAM,IAC1B,CAEAnH,EAAOC,QAAU8T,C,0BCTjB,SAASuD,EAAyBC,EAASC,GACzC,QAASA,IAAQD,IAAYC,EAAIC,iBAAmBF,IAAYC,EAAIE,KACtE,CAeA,IAAIC,EAAS,CAKXC,OAAQ,SAAgBL,GACtB,IAAIC,EAAMD,EAAQM,cAClB,OAAOP,EAAyBC,EAASC,GAGzCA,EAAIE,KAAKI,WAAaN,EAAIC,gBAAgBK,UAAYP,EAAQO,SAChE,EAMAC,OAAQ,SAAgBR,EAASS,GAC/B,IAAIR,EAAMD,EAAQM,cAEdP,EAAyBC,EAASC,GACpCA,EAAIE,KAAKI,UAAYN,EAAIC,gBAAgBK,UAAYE,EAErDT,EAAQO,UAAYE,CAExB,EAMAC,QAAS,SAAiBV,GACxB,IAAIC,EAAMD,EAAQM,cAClB,OAAOP,EAAyBC,EAASC,GAAOA,EAAIE,KAAKQ,YAAcV,EAAIC,gBAAgBS,WAAaX,EAAQW,UAClH,EAMAC,QAAS,SAAiBZ,EAASa,GACjC,IAAIZ,EAAMD,EAAQM,cAEdP,EAAyBC,EAASC,GACpCA,EAAIE,KAAKQ,WAAaV,EAAIC,gBAAgBS,WAAaE,EAEvDb,EAAQW,WAAaE,CAEzB,GAEFpY,EAAOC,QAAU0X,C,gCChEjB,SAASU,EAAkBd,EAASjO,GAClC,IAAIgP,EAAWC,EAAMC,IAAIjB,EAASjO,GAClC,MAAoB,SAAbgP,GAAoC,WAAbA,CAChC,CAMA,IAAIC,EAAQ,CASVC,IA1BqBlX,EAAQ,QAoC7BmX,gBAAiB,SAAyB3E,GACxC,IAAKA,EACH,OAAO,KAKT,IAFA,IAAI+D,EAAgB/D,EAAK+D,cAElB/D,GAAQA,IAAS+D,EAAcH,MAAM,CAC1C,GAAIW,EAAkBvE,EAAM,aAAeuE,EAAkBvE,EAAM,cAAgBuE,EAAkBvE,EAAM,aACzG,OAAOA,EAGTA,EAAOA,EAAK4E,UACd,CAEA,OAAOb,EAAcc,aAAed,EAAce,YACpD,GAEF5Y,EAAOC,QAAUsY,C,0BCtCjBvY,EAAOC,QAAU,CACf4Y,eAAgB,WACd,MAHc,kGAIhB,E,0BCjBF,IAAIC,EAEJ,WACE,SAASA,EAAIC,GALf,IAAyB/W,EAAKZ,EAAK6D,SAMD,GANJ7D,EAMJ,UANDY,EAMLyG,MAN0C1H,OAAOiY,eAAehX,EAAKZ,EAAK,CAAE6D,MAAOA,EAAOgU,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBnX,EAAIZ,GAAO6D,EAQvLwD,KAAK2Q,KAAOL,CACd,CAQA,OANaD,EAAI9X,UAEVC,SAAW,WAChB,OAAOwH,KAAK2Q,IACd,EAEON,CACT,CAdA,GAgBA9Y,EAAOC,QAAU6Y,C,gCCXjB,IAAIO,EAAuB/X,EAAQ,QAE/BgY,EAAYhY,EAAQ,QAUpBiY,EAEC,wFAFDA,EAGE,8GAEFC,EAAe,IAAI7Y,OAAO,IAJzB,0iDAIsD4Y,EAAuBA,EAAwB,KACtGE,EAAY,IAAI9Y,OAAO,IAAM4Y,EAAuBA,EAAwB,KAQhF,SAASG,EAAgBjI,GACvB,IAAIjP,EAAQgX,EAAa/W,KAAKgP,GAC9B,OAAgB,MAATjP,EAAgB,KAAOA,EAAM,EACtC,CAUA,SAASmX,EAAmBlI,GAC1B,IAAImI,EAAaF,EAAgBjI,GAEjC,OAAkB,MAAdmI,EACKP,EAAqBQ,QAGvBJ,EAAUhX,KAAKmX,GAAcP,EAAqBS,IAAMT,EAAqBU,GACtF,CAgBA,SAASC,EAAgBvI,EAAKwI,GAG5B,GAFAA,EAAWA,GAAYZ,EAAqBQ,SAEvCpI,EAAInR,OACP,OAAO2Z,EAGT,IAAIC,EAAWP,EAAmBlI,GAClC,OAAOyI,IAAab,EAAqBQ,QAAUI,EAAWC,CAChE,CAqBA,SAASC,EAAa1I,EAAK2I,GAMzB,OALKA,IACHA,EAAiBf,EAAqBgB,gBAGvChB,EAAqBiB,SAASF,IAA8Hd,GAAU,GAChKU,EAAgBvI,EAAK2I,EAC9B,CA4BA,IAAIG,EAAc,CAChBb,gBAAiBA,EACjBC,mBAAoBA,EACpBK,gBAAiBA,EACjBG,aAAcA,EACdK,eAtBF,SAAwB/I,EAAK2I,GAC3B,OAAOD,EAAa1I,EAAK2I,KAAoBf,EAAqBU,GACpE,EAqBEU,eAVF,SAAwBhJ,EAAK2I,GAC3B,OAAOD,EAAa1I,EAAK2I,KAAoBf,EAAqBS,GACpE,GAUA9Z,EAAOC,QAAUsa,C,gCClIjB,IAAIjB,EAAYhY,EAAQ,QAIpByY,EAAM,MAINW,EAAY,KAMhB,SAASJ,EAASK,GAChB,OAAOA,IAAQZ,GATP,QAScY,CACxB,CAOA,SAASC,EAAWD,GAElB,OADCL,EAASK,IAAwIrB,GAAU,GACrJqB,IAAQZ,EAAM,MAAQ,KAC/B,CAmBA,SAASc,EAAaF,GACpBD,EAAYC,CACd,CAuBA,IAAItB,EAAuB,CAEzBQ,QAtEY,UAuEZE,IAAKA,EACLD,IApEQ,MAsERQ,SAAUA,EACVM,WAAYA,EACZE,sBA5CF,SAA+BH,EAAKI,GAGlC,OAFCT,EAASK,IAAwIrB,GAAU,GAC3JgB,EAASS,IAAkJzB,GAAU,GAC/JqB,IAAQI,EAAW,KAAOH,EAAWD,EAC9C,EA0CEE,aAAcA,EACdG,cA5BF,WACEH,EAAad,EACf,EA2BEM,aArBF,WAME,OALKK,GACHjS,KAAKuS,gBAGNN,GAAoGpB,GAAU,GACxGoB,CACT,GAgBA1a,EAAOC,QAAUoZ,C,+BCpEjB,SAAS4B,EAAgBjZ,EAAKZ,EAAK6D,GAAiK,OAApJ7D,KAAOY,EAAOjB,OAAOiY,eAAehX,EAAKZ,EAAK,CAAE6D,MAAOA,EAAOgU,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBnX,EAAIZ,GAAO6D,EAAgBjD,CAAK,CAEhN,IAAIuY,EAAcjZ,EAAQ,QAEtB+X,EAAuB/X,EAAQ,QAE/BgY,EAAYhY,EAAQ,QAEpB4Z,EAEJ,WAME,SAASA,EAAmBC,GAC1BF,EAAgBxS,KAAM,mBAAe,GAErCwS,EAAgBxS,KAAM,gBAAY,GAE7B0S,EAGF9B,EAAqBiB,SAASa,IAAsI7B,GAAU,GAF/K6B,EAAa9B,EAAqBgB,eAKpC5R,KAAK2S,YAAcD,EACnB1S,KAAK4S,OACP,CASA,IAAI5G,EAASyG,EAAmBla,UAmBhC,OAjBAyT,EAAO4G,MAAQ,WACb5S,KAAK6S,SAAW7S,KAAK2S,WACvB,EAUA3G,EAAO0F,aAAe,SAAsB1I,GAE1C,OADAhJ,KAAK6S,SAAWf,EAAYJ,aAAa1I,EAAKhJ,KAAK6S,UAC5C7S,KAAK6S,QACd,EAEOJ,CACT,CAhDA,GAkDAlb,EAAOC,QAAUib,C,gCChFjB,IAAI5B,EAAYhY,EAAQ,QAQpBia,EAAwB,kBAM5B,SAASC,EAA2BC,GAClC,OAXyB,OAWMA,GAAYA,GARrB,KASxB,CA6BA,SAASC,EAAiBjK,GACxB,OAAO8J,EAAsBI,KAAKlK,EACpC,CAqBA,SAASmK,EAAenK,EAAKoK,GAC3B,OAAO,EAAIL,EAA2B/J,EAAIqK,WAAWD,GACvD,CAkCA,SAASjY,EAAO6N,EAAK/N,EAAOpD,GAI1B,GAHAoD,EAAQA,GAAS,EACjBpD,OAAoBoG,IAAXpG,EAAuByb,IAAWzb,GAAU,GAEhDob,EAAiBjK,GACpB,OAAOA,EAAI7N,OAAOF,EAAOpD,GAI3B,IAAI0b,EAAOvK,EAAInR,OAEf,GAAI0b,GAAQ,GAAKtY,EAAQsY,GAAQ1b,GAAU,EACzC,MAAO,GAIT,IAAI2b,EAAO,EAEX,GAAIvY,EAAQ,EAAG,CACb,KAAOA,EAAQ,GAAKuY,EAAOD,EAAMtY,IAC/BuY,GAAQL,EAAenK,EAAKwK,GAG9B,GAAIA,GAAQD,EACV,MAAO,EAEX,MAAO,GAAItY,EAAQ,EAAG,CACpB,IAAKuY,EAAOD,EAAMtY,EAAQ,GAAK,EAAIuY,EAAMvY,IACvCuY,GAAQL,EAAenK,EAAKwK,EAAO,GAGjCA,EAAO,IACTA,EAAO,EAEX,CAGA,IAAIC,EAAOF,EAEX,GAAI1b,EAAS0b,EACX,IAAKE,EAAOD,EAAM3b,EAAS,GAAK4b,EAAOF,EAAM1b,IAC3C4b,GAAQN,EAAenK,EAAKyK,GAIhC,OAAOzK,EAAI7M,UAAUqX,EAAMC,EAC7B,CA8CA,IAAIC,EAAe,CACjBC,cAXF,SAAuB3K,GAGrB,IAFA,IAAI4K,EAAa,GAERR,EAAM,EAAGA,EAAMpK,EAAInR,OAAQub,GAAOD,EAAenK,EAAKoK,GAC7DQ,EAAWpZ,KAAKwO,EAAI6K,YAAYT,IAGlC,OAAOQ,CACT,EAIET,eAAgBA,EAChBF,iBAAkBA,EAClBF,2BAA4BA,EAC5Be,gBA7KF,SAAyB9K,EAAKzO,GAG5B,GAFE,GAAKA,GAASA,EAAQyO,EAAInR,QAAmJgZ,GAAU,GAErLtW,EAAQ,IAAMyO,EAAInR,OACpB,OAAO,EAGT,IAAIkc,EAAQ/K,EAAIqK,WAAW9Y,GACvByZ,EAAShL,EAAIqK,WAAW9Y,EAAQ,GACpC,OAjCyB,OAiCMwZ,GAASA,GAhCjB,OACC,OA+BsEC,GAAUA,GA9BlF,KA+BxB,EAoKEC,OA3HF,SAAgBjL,GAEd,IAAKiK,EAAiBjK,GACpB,OAAOA,EAAInR,OAKb,IAFA,IAAI8B,EAAM,EAEDyZ,EAAM,EAAGA,EAAMpK,EAAInR,OAAQub,GAAOD,EAAenK,EAAKoK,GAC7DzZ,IAGF,OAAOA,CACT,EA+GEwC,UAzCF,SAAmB6M,EAAK/N,EAAOiZ,IAC7BjZ,EAAQA,GAAS,GAGL,IACVA,EAAQ,IAHViZ,OAAcjW,IAARiW,EAAoBZ,IAAWY,GAAO,GAMlC,IACRA,EAAM,GAGR,IAAIrc,EAASsc,KAAKC,IAAIF,EAAMjZ,GAE5B,OAAOE,EAAO6N,EADd/N,EAAQA,EAAQiZ,EAAMjZ,EAAQiZ,EACJrc,EAC5B,EA2BEsD,OAAQA,GAEV5D,EAAOC,QAAUkc,C,gCC1NjB,IAAIW,EAAgBxb,EAAQ,QAExByb,EAAezb,EAAQ,QAEvB0b,EAAY1b,EAAQ,QAEpB2b,EAAoB3b,EAAQ,QAYhC,SAAS4b,EAAQ5T,EAAM6T,EAASC,EAAOC,GAErC,GAAI/T,IAAS8T,EACX,OAAO,EAIT,IAAKA,EAAM7T,WAAWD,GACpB,OAAO,EAIT,IAAIgU,EAAQF,EAAM5H,MAAMlM,EAAKhJ,QAE7B,QAAI6c,IACFG,EAAQD,EAAaA,EAAWC,GAASA,EAClCP,EAAaQ,SAASD,EAAOH,GAIxC,CAYA,SAASK,EAAyBL,GAChC,MAAmC,YAA/BL,EAAcW,aACTN,EAAQhX,QAAQ,SAAU,IAG5BgX,CACT,CAOA,IAAIO,EAAY,CA4CdC,UAAW,SAAmBP,GAC5B,OAAOF,EAAQJ,EAAcc,YAAad,EAAce,mBAAoBT,EAC9E,EAUAU,sBAAuB,SAA+BV,GACpD,OAAOF,EAAQJ,EAAciB,oBAAqB,KAAMX,EAC1D,EA0BAY,SAAU,SAAkBZ,GAC1B,OAAOF,EAAQJ,EAAcmB,WAAY,KAAMb,EACjD,EAwBAc,SAAU,SAAkBd,GAC1B,OAAOF,EAAQJ,EAAcqB,WAAYrB,EAAcsB,cAAehB,EACxE,EAqCAiB,WAAY,SAAoBjB,GAC9B,OAAOF,EAAQJ,EAAcW,aAAcX,EAAcwB,oBAAqBlB,EAAOI,EACvF,EAUAe,uBAAwB,SAAgCnB,GACtD,OAAOF,EAAQJ,EAAc0B,qBAAsB,KAAMpB,EAC3D,GAEFpd,EAAOC,QAAU+c,EAAUU,EAAWT,E,gCCzNtC,IAAIwB,EAAWnd,EAAQ,QAEnBod,EAAU,UACVC,EAAe,CACjB,SAAU,YAoCZ,IA9B6BrV,EA+BzBsV,GADS,IAAIH,GACII,YAEjBC,EAvBJ,SAA2B3B,GACzB,IAAKA,EACH,MAAO,CACL4B,MAAO,GACPC,MAAO,IAIX,IAAI3H,EAAQ8F,EAAQhW,MAAM,KAC1B,MAAO,CACL4X,MAAO1H,EAAM,GACb2H,MAAO3H,EAAM,GAEjB,CAUyB4H,CAAkBL,EAAQM,QAAQ/B,SACvDgC,EAAS,CACXpB,oBAAqBa,EAAQQ,IAAIC,cAAgBX,EACjDb,mBAAoBe,EAAQM,QAAQ/B,SAAWuB,EAC/CY,oBAAqBR,EAAmBE,OAASN,EACjDd,YAAagB,EAAQM,QAAQ5V,MAAQoV,EACrCa,eAAgBX,EAAQM,QAAQH,OAASL,EACzCT,WAAYW,EAAQY,OAAOC,OAASf,EACpCP,WAAYS,EAAQc,OAAOpW,MAAQoV,EACnCN,cAAeQ,EAAQc,OAAOvC,SAAWuB,EACzCF,qBAAsBI,EAAQQ,IAAIC,cAAgBX,EAClDjB,cA5C2BnU,EA4COsV,EAAQe,GAAGrW,KA3CtCqV,EAAarV,IAASA,GA2CyBoV,GACtDkB,gBAAiBhB,EAAQe,GAAGxC,SAAWuB,EACvCJ,oBAAqBM,EAAQe,GAAGxC,SAAWuB,GAE7C1e,EAAOC,QAAUkf,C,gCCrEjB,IAAI7F,EAAYhY,EAAQ,QAEpBue,EAAiB,KACjBC,EAAU,OACVC,EAAa,WACbC,EAAgB,+BAChBC,EAAe,aAUnB,SAASC,EAAkB5C,EAAOH,GAChC,IAAIgD,EAAc7C,EAAMnW,MAAM2Y,GAE9B,OAAIK,EAAY7f,OAAS,EAChB6f,EAAYrL,MAAK,SAAUwI,GAChC,OAAOP,EAAaQ,SAASD,EAAOH,EACtC,IAgBJ,SAA8BG,EAAOH,GACnC,IAAIgD,EAAc7C,EAAMnW,MAAM4Y,GAG9B,GAFEI,EAAY7f,OAAS,GAAK6f,EAAY7f,QAAU,GAA+GgZ,GAAU,GAEhJ,IAAvB6G,EAAY7f,OACd,OAAO8f,EAAsBD,EAAY,GAAIhD,GAE7C,IAAIkD,EAAeF,EAAY,GAC3BG,EAAaH,EAAY,GAE7B,OADEI,EAAgBF,IAAiBE,EAAgBD,IAAwIhH,GAAU,GAC9L8G,EAAsB,KAAOC,EAAclD,IAAYiD,EAAsB,KAAOE,EAAYnD,EAE3G,CAzBWqD,CADPlD,EAAQ6C,EAAY,GAAGxb,OACYwY,EAEvC,CAkCA,SAASiD,EAAsB9C,EAAOH,GAGpC,GAAc,MAFdG,EAAQA,EAAM3Y,QAGZ,OAAO,EAGT,IAiDIG,EAjDA2b,EAAoBtD,EAAQhW,MAAM0Y,GAElCa,EAAwBC,EAAyBrD,GACjDsD,EAAWF,EAAsBE,SACjCC,EAAkBH,EAAsBG,gBAE5C,OAAQD,GACN,IAAK,IACH,OAAOE,EAAcL,EAAmBI,GAE1C,IAAK,KACH,OAuCe,KADf/b,EAASic,EAtCmBN,EAAmBI,KAuChB,IAAX/b,EArCtB,IAAK,KACH,OAAOkc,EAAwBP,EAAmBI,GAEpD,IAAK,IACH,OAqEN,SAA0B1gB,EAAGC,GAC3B,OAAmC,IAA5B2gB,EAAkB5gB,EAAGC,EAC9B,CAvEa6gB,CAAiBR,EAAmBI,GAE7C,IAAK,IACL,IAAK,KACH,OA+EN,SAAiC1gB,EAAGC,GAClC,IAAI8gB,EAAa9gB,EAAEoV,QACf2L,EAAa/gB,EAAEoV,QAEf2L,EAAW7gB,OAAS,GACtB6gB,EAAW1b,MAGb,IAAI1C,EAAYoe,EAAW7gB,OAAS,EAChC8gB,EAAUzO,SAASwO,EAAWpe,GAAY,IAE1Cse,EAASD,KACXD,EAAWpe,GAAaqe,EAAU,EAAI,IAGxC,OAAOJ,EAAwB7gB,EAAG+gB,IAAeJ,EAAc3gB,EAAGghB,EACpE,CA/FaG,CAAwBb,EAAmBI,GAEpD,QACE,OAqCN,SAAoB1gB,EAAGC,GACrB,OAAmC,IAA5B2gB,EAAkB5gB,EAAGC,EAC9B,CAvCamhB,CAAWd,EAAmBI,GAE3C,CAUA,SAASC,EAAc3gB,EAAGC,GACxB,OAAoC,IAA7B2gB,EAAkB5gB,EAAGC,EAC9B,CAmCA,SAAS4gB,EAAwB7gB,EAAGC,GAClC,IAAI0E,EAASic,EAAkB5gB,EAAGC,GAClC,OAAkB,IAAX0E,GAA2B,IAAXA,CACzB,CAqDA,SAAS6b,EAAyBrD,GAChC,IAAIuD,EAAkBvD,EAAMnW,MAAM0Y,GAC9Bjd,EAAUie,EAAgB,GAAGre,MAAMwd,GAEvC,OADCpd,GAA+G0W,GAAU,GACnH,CACLsH,SAAUhe,EAAQ,GAClBie,gBAAiB,CAACje,EAAQ,IAAI+H,OAAOkW,EAAgBrL,MAAM,IAE/D,CASA,SAAS6L,EAASG,GAChB,OAAQC,MAAMD,IAAWE,SAASF,EACpC,CAUA,SAASjB,EAAgBjD,GACvB,OAAQqD,EAAyBrD,GAAOsD,QAC1C,CASA,SAASe,EAAQC,EAAOthB,GACtB,IAAK,IAAIC,EAAIqhB,EAAMthB,OAAQC,EAAID,EAAQC,IACrCqhB,EAAMrhB,GAAK,GAEf,CAkDA,SAASshB,EAAe1hB,EAAGC,GACzB,IAAI0hB,EAAU3hB,EAAEqC,MAAMyd,GAAc,GAChC8B,EAAU3hB,EAAEoC,MAAMyd,GAAc,GAChC+B,EAAWrP,SAASmP,EAAS,IAC7BG,EAAWtP,SAASoP,EAAS,IAEjC,OAAIV,EAASW,IAAaX,EAASY,IAAaD,IAAaC,EACpD/E,EAAQ8E,EAAUC,GAElB/E,EAAQ/c,EAAGC,EAEtB,CAWA,SAAS8c,EAAQ/c,EAAGC,GAGlB,cAFSD,UAAaC,GAAwGkZ,GAAU,GAEpInZ,EAAIC,EACC,EACED,EAAIC,GACL,EAED,CAEX,CAWA,SAAS2gB,EAAkB5gB,EAAGC,GAK5B,IAJA,IAAI8hB,EA9EN,SAA2B/hB,EAAGC,GAG5BuhB,EAFAxhB,EAAIA,EAAEqV,SACNpV,EAAIA,EAAEoV,SACOlV,QAEb,IAAK,IAAIC,EAAI,EAAGA,EAAIH,EAAEE,OAAQC,IAAK,CACjC,IAAIqC,EAAUxC,EAAEG,GAAGiC,MAAM,WAEzB,GAAII,IACFxC,EAAEG,GAAKJ,EAAEI,GAAK,IAEK,MAAfqC,EAAQ,IAAcrC,IAAMH,EAAEE,OAAS,GACzC,IAAK,IAAI6J,EAAI5J,EAAG4J,EAAIhK,EAAEG,OAAQ6J,IAC5BhK,EAAEgK,GAAK,GAIf,CAGA,OADAwX,EAAQvhB,EAAGD,EAAEG,QACN,CAACH,EAAGC,EACb,CAyD2B+hB,CAAkBhiB,EAAGC,GAC1CgiB,EAAcF,EAAmB,GACjCG,EAAcH,EAAmB,GAE5B3hB,EAAI,EAAGA,EAAI8hB,EAAY/hB,OAAQC,IAAK,CAC3C,IAAIuE,EAAS+c,EAAeO,EAAY7hB,GAAI8hB,EAAY9hB,IAExD,GAAIuE,EACF,OAAOA,CAEX,CAEA,OAAO,CACT,CAEA,IAAIiY,EAAe,CAgCjBQ,SAAU,SAAkBD,EAAOH,GACjC,OAAO+C,EAAkB5C,EAAM3Y,OAAQwY,EAAQxY,OACjD,GAEF3E,EAAOC,QAAU8c,C,0BCjYjB,IAAIuF,EAAiB,QAiBrBtiB,EAAOC,QANP,SAAkBsC,GAChB,OAAOA,EAAO4D,QAAQmc,GAAgB,SAAU/P,EAAGgQ,GACjD,OAAOA,EAAUC,aACnB,GACF,C,gCCfA,IAAIC,EAAanhB,EAAQ,QA0BzBtB,EAAOC,QAlBP,SAASyiB,EAAaC,EAAWC,GAC/B,SAAKD,IAAcC,KAERD,IAAcC,IAEdH,EAAWE,KAEXF,EAAWG,GACbF,EAAaC,EAAWC,EAAUlK,YAChC,aAAciK,EAChBA,EAAUpF,SAASqF,KACjBD,EAAUE,4BACsC,GAA/CF,EAAUE,wBAAwBD,KAIhD,C,gCCxBA,IAAItJ,EAAYhY,EAAQ,QAuGxBtB,EAAOC,QAVP,SAA8B+B,GAC5B,OArCF,SAAwBA,GACtB,QACIA,IACY,iBAAPA,GAAiC,mBAAPA,IACjC,WAAYA,KACV,gBAAiBA,IAEI,iBAAhBA,EAAI8gB,WACXriB,MAAMC,QAAQsB,IACd,WAAYA,GACZ,SAAUA,EAEd,CAyBO+gB,CAAe/gB,GAETvB,MAAMC,QAAQsB,GAChBA,EAAIwT,QArFf,SAAiBxT,GACf,IAAI1B,EAAS0B,EAAI1B,OAUjB,IAPGG,MAAMC,QAAQsB,IAAwB,iBAARA,GAAmC,mBAARA,IAAyHsX,GAAU,GAC3K,iBAAXhZ,GAA6HgZ,GAAU,GACnI,IAAXhZ,GAAgBA,EAAS,KAAK0B,GAAkHsX,GAAU,GACpI,mBAAftX,EAAIghB,QAAmM1J,GAAU,GAItNtX,EAAId,eACN,IACE,OAAOT,MAAMO,UAAUwU,MAAMrU,KAAKa,EACpC,CAAE,MAAOihB,GAAI,CAQf,IAFA,IAAIC,EAAMziB,MAAMH,GAEP6iB,EAAK,EAAGA,EAAK7iB,EAAQ6iB,IAC5BD,EAAIC,GAAMnhB,EAAImhB,GAGhB,OAAOD,CACT,CA4DWE,CAAQphB,GAJR,CAACA,EAMZ,C,0BC5EA,SAASmE,EAAQsL,GACf,OAAOA,EAAItL,QAAQ,MAAO,IAC5B,CAEAnG,EAAOC,QAdP,SAAYojB,GACV,MAAyB,iBAAdA,EACFtiB,OAAOP,KAAK6iB,GAAY5N,QAAO,SAAU6N,GAC9C,OAAOD,EAAWC,EACpB,IAAGrd,IAAIE,GAASod,KAAK,KAGhB9iB,MAAMO,UAAUiF,IAAI9E,KAAK2Q,UAAW3L,GAASod,KAAK,IAC3D,C,0BCvBA,SAASC,EAAkBC,GACzB,OAAO,WACL,OAAOA,CACT,CACF,CAQA,IAAIxP,EAAgB,WAA0B,EAE9CA,EAAcyP,YAAcF,EAC5BvP,EAAc0P,iBAAmBH,GAAkB,GACnDvP,EAAc2P,gBAAkBJ,GAAkB,GAClDvP,EAAc4P,gBAAkBL,EAAkB,MAElDvP,EAAc6P,gBAAkB,WAC9B,OAAOrb,IACT,EAEAwL,EAAcyB,oBAAsB,SAAU+N,GAC5C,OAAOA,CACT,EAEAzjB,EAAOC,QAAUgU,C,0BCEjBjU,EAAOC,QAhBP,SAA0BuX,GAKxB,QAAmB,KAFnBA,EAAMA,IAA4B,oBAAbuM,SAA2BA,cAAWrd,IAGzD,OAAO,KAGT,IACE,OAAO8Q,EAAIwM,eAAiBxM,EAAIE,IAClC,CAAE,MAAOuL,GACP,OAAOzL,EAAIE,IACb,CACF,C,0BC3BA,IAAIuM,EAAgC,oBAAdC,WAA6BA,UAAUC,UAAUve,QAAQ,gBAAkB,EAqBjG5F,EAAOC,QAVP,SAAkCuX,GAGhC,OAFAA,EAAMA,GAAOuM,UAELK,iBACC5M,EAAI4M,iBAGLH,GAA+B,eAAnBzM,EAAI6M,WAAoD7M,EAAIE,KAA1BF,EAAIC,eAC5D,C,gCCnBA,IAAI6M,EAAiBhjB,EAAQ,QAoB7BtB,EAAOC,QAVP,SAA4BsX,GAC1B,IAAIgN,EAAOD,EAAe/M,GAC1B,MAAO,CACLiN,EAAGD,EAAKE,KACRC,EAAGH,EAAKI,IACRC,MAAOL,EAAKM,MAAQN,EAAKE,KACzBK,OAAQP,EAAKQ,OAASR,EAAKI,IAE/B,C,gCClBA,IAAIjC,EAAephB,EAAQ,QAmC3BtB,EAAOC,QA1BP,SAAwB+kB,GACtB,IAAIC,EAAUD,EAAKnN,cAAcJ,gBAGjC,KAAM,0BAA2BuN,KAAUtC,EAAauC,EAASD,GAC/D,MAAO,CACLP,KAAM,EACNI,MAAO,EACPF,IAAK,EACLI,OAAQ,GAQZ,IAAIR,EAAOS,EAAKE,wBAChB,MAAO,CACLT,KAAM7H,KAAKuI,MAAMZ,EAAKE,MAAQQ,EAAQG,WACtCP,MAAOjI,KAAKuI,MAAMZ,EAAKM,OAASI,EAAQG,WACxCT,IAAK/H,KAAKuI,MAAMZ,EAAKI,KAAOM,EAAQI,UACpCN,OAAQnI,KAAKuI,MAAMZ,EAAKQ,QAAUE,EAAQI,UAE9C,C,+BCjCA,IAAIC,EAA2BhkB,EAAQ,QAEnCikB,EAA6BjkB,EAAQ,QA+BzCtB,EAAOC,QAhBP,SAA2BulB,GACzB,IAAIC,EAAwBH,EAAyBE,EAAW3N,eAAiB2N,EAAWzB,UAExFyB,EAAWE,QAAUF,aAAsBA,EAAWE,SACxDF,EAAaC,GAGf,IAAIE,EAAiBJ,EAA2BC,GAC5CI,EAAWJ,IAAeC,EAAwBD,EAAW3N,cAAcJ,gBAAkB+N,EAC7FK,EAAOL,EAAWM,YAAcF,EAASG,YACzCC,EAAOR,EAAWS,aAAeL,EAASM,aAG9C,OAFAP,EAAenB,EAAI5H,KAAKuJ,IAAI,EAAGvJ,KAAKwJ,IAAIT,EAAenB,EAAGqB,IAC1DF,EAAejB,EAAI9H,KAAKuJ,IAAI,EAAGvJ,KAAKwJ,IAAIT,EAAejB,EAAGsB,IACnDL,CACT,C,gCC/BA,IAAIU,EAAW/kB,EAAQ,QAEnBglB,EAAYhlB,EAAQ,QAExB,SAASilB,EAASthB,GAGhB,OAAgB,MAATA,EAAgBA,EAAQuN,OAAOvN,EACxC,CA6CAjF,EAAOC,QA3CP,SAEA6T,EAEAxK,GAGE,IAAIkd,EAEJ,GAAIC,OAAOC,mBAETF,EAAgBC,OAAOC,iBAAiB5S,EAAM,OAG5C,OAAOyS,EAASC,EAAcG,iBAAiBL,EAAUhd,KAK7D,GAAIya,SAASpL,aAAeoL,SAASpL,YAAY+N,iBAAkB,CAGjE,GAFAF,EAAgBzC,SAASpL,YAAY+N,iBAAiB5S,EAAM,MAG1D,OAAOyS,EAASC,EAAcG,iBAAiBL,EAAUhd,KAG3D,GAAa,YAATA,EACF,MAAO,MAEX,CAGA,OAAIwK,EAAK8S,aAEEL,EADI,UAATjd,EACcwK,EAAK8S,aAAaC,UAAY/S,EAAK8S,aAAaE,WAGlDhT,EAAK8S,aAAaP,EAAS/c,KAGtCid,EAASzS,EAAKiT,OAASjT,EAAKiT,MAAMV,EAAS/c,IACpD,C,0BC3BAtJ,EAAOC,QAdP,SAAoCulB,GAClC,OAAIA,EAAWE,QAAUF,aAAsBA,EAAWE,OACjD,CACLlB,EAAGgB,EAAWwB,aAAexB,EAAWzB,SAAStM,gBAAgBS,WACjEwM,EAAGc,EAAWyB,aAAezB,EAAWzB,SAAStM,gBAAgBK,WAI9D,CACL0M,EAAGgB,EAAWtN,WACdwM,EAAGc,EAAW1N,UAElB,C,0BCrBA,SAASoP,IACP,IAAItC,EAUJ,OARIb,SAAStM,kBACXmN,EAAQb,SAAStM,gBAAgBsO,cAG9BnB,GAASb,SAASrM,OACrBkN,EAAQb,SAASrM,KAAKqO,aAGjBnB,GAAS,CAClB,CAEA,SAASuC,IACP,IAAIrC,EAUJ,OARIf,SAAStM,kBACXqN,EAASf,SAAStM,gBAAgByO,eAG/BpB,GAAUf,SAASrM,OACtBoN,EAASf,SAASrM,KAAKwO,cAGlBpB,GAAU,CACnB,CAMA,SAASsC,IACP,MAAO,CACLxC,MAAO6B,OAAOY,YAAcH,IAC5BpC,OAAQ2B,OAAOa,aAAeH,IAElC,CAMAC,EAAsBG,kBAAoB,WACxC,MAAO,CACL3C,MAAOsC,IACPpC,OAAQqC,IAEZ,EAEAnnB,EAAOC,QAAUmnB,C,0BCnDjB,IAAII,EAAoB,WAkBxBxnB,EAAOC,QAJP,SAAmBsC,GACjB,OAAOA,EAAO4D,QAAQqhB,EAAmB,OAAOC,aAClD,C,0BChBA,IAAIC,EAIA,SAAUhgB,GAAS,EAqCvB1H,EAAOC,QA1BP,SAAmB0nB,EAAWjgB,GAC5B,IAAK,IAAIkgB,EAAO9V,UAAUxR,OAAQunB,EAAO,IAAIpnB,MAAMmnB,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGD,EAAKC,EAAO,GAAKhW,UAAUgW,GAK7B,GAFAJ,EAAehgB,IAEVigB,EAAW,CACd,IAAII,EAEJ,QAAerhB,IAAXgB,EACFqgB,EAAQ,IAAIxb,MAAM,qIACb,CACL,IAAIyb,EAAW,GACfD,EAAQ,IAAIxb,MAAM7E,EAAOvB,QAAQ,OAAO,WACtC,OAAOqM,OAAOqV,EAAKG,KACrB,MACM1e,KAAO,qBACf,CAIA,MAFAye,EAAME,YAAc,EAEdF,CACR,CACF,C,0BC5BA/nB,EAAOC,QANP,SAAgB+I,GACd,IACI2P,GADM3P,EAASA,EAAO6O,eAAiB7O,EAAS+a,UAC9BpL,aAAe8N,OACrC,SAAUzd,KAAuC,mBAArB2P,EAAYuP,KAAsBlf,aAAkB2P,EAAYuP,KAAyB,iBAAXlf,GAAkD,iBAApBA,EAAO8Z,UAAoD,iBAApB9Z,EAAOmf,UACxL,C,gCCTA,IAAIC,EAAS9mB,EAAQ,QAWrBtB,EAAOC,QAJP,SAAoB+I,GAClB,OAAOof,EAAOpf,IAA8B,GAAnBA,EAAO8Z,QAClC,C,0BCYA9iB,EAAOC,QAjBP,SAAqBqjB,GACnB,IAAI+E,EAAe/E,GAAa,GAC5BgF,EAAYxW,UAAUxR,OAE1B,GAAIgoB,EAAY,EACd,IAAK,IAAItlB,EAAQ,EAAGA,EAAQslB,EAAWtlB,IAAS,CAC9C,IAAIulB,EAAYzW,UAAU9O,GAEtBulB,IACFF,GAAgBA,EAAeA,EAAe,IAAM,IAAME,EAE9D,CAGF,OAAOF,CACT,C,0BCpBA,IAAInnB,EAAiBH,OAAOC,UAAUE,eAwCtClB,EAAOC,QAhBP,SAAmB+I,EAAQwf,EAAUC,GACnC,IAAKzf,EACH,OAAO,KAGT,IAAIlE,EAAS,CAAC,EAEd,IAAK,IAAIwE,KAAQN,EACX9H,EAAeC,KAAK6H,EAAQM,KAC9BxE,EAAOwE,GAAQkf,EAASrnB,KAAKsnB,EAASzf,EAAOM,GAAOA,EAAMN,IAI9D,OAAOlE,CACT,C,0BCtBA9E,EAAOC,QAXP,SAA2BuoB,GACzB,IAAIE,EAAQ,CAAC,EACb,OAAO,SAAUnmB,GAKf,OAJKmmB,EAAMxnB,eAAeqB,KACxBmmB,EAAMnmB,GAAUimB,EAASrnB,KAAKsH,KAAMlG,IAG/BmmB,EAAMnmB,EACf,CACF,C,0BCLAvC,EAAOC,QARU,SAAoBukB,GACnC,GAAS,MAALA,EACF,OAAOA,EAGT,MAAM,IAAIjY,MAAM,mCAClB,C,gCCNAjL,EAAQ,QAERtB,EAAOC,QAAU0oB,EAAAA,EAAOC,Y,gCC4BxB,IAAIC,EA/BgBvnB,EAAQ,QA4C5BtB,EAAOC,QAAU4oB,C","sources":["../node_modules/fast-deep-equal/index.js","../node_modules/fast-xml-parser/src/fxp.js","../node_modules/fast-xml-parser/src/util.js","../node_modules/fast-xml-parser/src/validator.js","../node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","../node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","../node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","../node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","../node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","../node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","../node_modules/fast-xml-parser/src/xmlparser/node2json.js","../node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","../node_modules/fbjs/lib/DataTransfer.js","../node_modules/fbjs/lib/Keys.js","../node_modules/fbjs/lib/PhotosMimeType.js","../node_modules/fbjs/lib/Scroll.js","../node_modules/fbjs/lib/Style.js","../node_modules/fbjs/lib/TokenizeUtil.js","../node_modules/fbjs/lib/URI.js","../node_modules/fbjs/lib/UnicodeBidi.js","../node_modules/fbjs/lib/UnicodeBidiDirection.js","../node_modules/fbjs/lib/UnicodeBidiService.js","../node_modules/fbjs/lib/UnicodeUtils.js","../node_modules/fbjs/lib/UserAgent.js","../node_modules/fbjs/lib/UserAgentData.js","../node_modules/fbjs/lib/VersionRange.js","../node_modules/fbjs/lib/camelize.js","../node_modules/fbjs/lib/containsNode.js","../node_modules/fbjs/lib/createArrayFromMixed.js","../node_modules/fbjs/lib/cx.js","../node_modules/fbjs/lib/emptyFunction.js","../node_modules/fbjs/lib/getActiveElement.js","../node_modules/fbjs/lib/getDocumentScrollElement.js","../node_modules/fbjs/lib/getElementPosition.js","../node_modules/fbjs/lib/getElementRect.js","../node_modules/fbjs/lib/getScrollPosition.js","../node_modules/fbjs/lib/getStyleProperty.js","../node_modules/fbjs/lib/getUnboundedScrollPosition.js","../node_modules/fbjs/lib/getViewportDimensions.js","../node_modules/fbjs/lib/hyphenate.js","../node_modules/fbjs/lib/invariant.js","../node_modules/fbjs/lib/isNode.js","../node_modules/fbjs/lib/isTextNode.js","../node_modules/fbjs/lib/joinClasses.js","../node_modules/fbjs/lib/mapObject.js","../node_modules/fbjs/lib/memoizeStringOnly.js","../node_modules/fbjs/lib/nullthrows.js","../node_modules/fbjs/lib/setImmediate.js","../node_modules/fbjs/lib/warning.js"],"sourcesContent":["'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nconst validator = require('./validator');\nconst XMLParser = require('./xmlparser/XMLParser');\nconst XMLBuilder = require('./xmlbuilder/json2xml');\n\nmodule.exports = {\n XMLParser: XMLParser,\n XMLValidator: validator,\n XMLBuilder: XMLBuilder\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else if (tags.length === 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n for (let key in jObj) {\n if(!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node only if it is not an attribute\n if (this.isAttribute(key)) {\n val += '';\n }\n } else if (jObj[key] === null) {\n // null attribute should be ignored by the attribute list, but should not cause the tag closing\n if (this.isAttribute(key)) {\n val += '';\n } else if (key[0] === '?') {\n val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n } else {\n val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n }\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n }else {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n let listTagAttr = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup){\n const result = this.j2x(item, level + 1);\n listTagVal += result.val;\n if (this.options.attributesGroupName && item.hasOwnProperty(this.options.attributesGroupName)) {\n listTagAttr += result.attrStr\n }\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level)\n }\n } else {\n if (this.options.oneListGroup) {\n let textValue = this.options.tagValueProcessor(key, item);\n textValue = this.replaceEntitiesValue(textValue);\n listTagVal += textValue;\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, listTagAttr, level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n if(tagName === undefined) continue;\n\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(!obj.hasOwnProperty(key)) continue;\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n if(!attrMap.hasOwnProperty(attr)) continue;\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n","const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n","\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;","'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\n\n// const regx =\n// '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n// .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n \"num_dec\": { regex: /&#([0-9]{1,7});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 10)) },\n \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val : (_, str) => String.fromCharCode(Number.parseInt(str, 16)) },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (!this.options.ignoreAttributes && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true, true);\n if(val == undefined) val = \"\";\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n const rawTagName = result.rawTagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) {\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n \n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${rawTagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n jPath = jPath.substr(0, jPath.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substring(0, separatorIndex);\n tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n }\n\n const rawTagName = tagName;\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n rawTagName: rawTagName,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n","const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;","'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n","'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar PhotosMimeType = require(\"./PhotosMimeType\");\n\nvar createArrayFromMixed = require(\"./createArrayFromMixed\");\n\nvar emptyFunction = require(\"./emptyFunction\");\n\nvar CR_LF_REGEX = new RegExp(\"\\r\\n\", 'g');\nvar LF_ONLY = \"\\n\";\nvar RICH_TEXT_TYPES = {\n 'text/rtf': 1,\n 'text/html': 1\n};\n/**\n * If DataTransferItem is a file then return the Blob of data.\n *\n * @param {object} item\n * @return {?blob}\n */\n\nfunction getFileFromDataTransfer(item) {\n if (item.kind == 'file') {\n return item.getAsFile();\n }\n}\n\nvar DataTransfer =\n/*#__PURE__*/\nfunction () {\n /**\n * @param {object} data\n */\n function DataTransfer(data) {\n this.data = data; // Types could be DOMStringList or array\n\n this.types = data.types ? createArrayFromMixed(data.types) : [];\n }\n /**\n * Is this likely to be a rich text data transfer?\n *\n * @return {boolean}\n */\n\n\n var _proto = DataTransfer.prototype;\n\n _proto.isRichText = function isRichText() {\n // If HTML is available, treat this data as rich text. This way, we avoid\n // using a pasted image if it is packaged with HTML -- this may occur with\n // pastes from MS Word, for example. However this is only rich text if\n // there's accompanying text.\n if (this.getHTML() && this.getText()) {\n return true;\n } // When an image is copied from a preview window, you end up with two\n // DataTransferItems one of which is a file's metadata as text. Skip those.\n\n\n if (this.isImage()) {\n return false;\n }\n\n return this.types.some(function (type) {\n return RICH_TEXT_TYPES[type];\n });\n };\n /**\n * Get raw text.\n *\n * @return {?string}\n */\n\n\n _proto.getText = function getText() {\n var text;\n\n if (this.data.getData) {\n if (!this.types.length) {\n text = this.data.getData('Text');\n } else if (this.types.indexOf('text/plain') != -1) {\n text = this.data.getData('text/plain');\n }\n }\n\n return text ? text.replace(CR_LF_REGEX, LF_ONLY) : null;\n };\n /**\n * Get HTML paste data\n *\n * @return {?string}\n */\n\n\n _proto.getHTML = function getHTML() {\n if (this.data.getData) {\n if (!this.types.length) {\n return this.data.getData('Text');\n } else if (this.types.indexOf('text/html') != -1) {\n return this.data.getData('text/html');\n }\n }\n };\n /**\n * Is this a link data transfer?\n *\n * @return {boolean}\n */\n\n\n _proto.isLink = function isLink() {\n return this.types.some(function (type) {\n return type.indexOf('Url') != -1 || type.indexOf('text/uri-list') != -1 || type.indexOf('text/x-moz-url');\n });\n };\n /**\n * Get a link url.\n *\n * @return {?string}\n */\n\n\n _proto.getLink = function getLink() {\n if (this.data.getData) {\n if (this.types.indexOf('text/x-moz-url') != -1) {\n var url = this.data.getData('text/x-moz-url').split('\\n');\n return url[0];\n }\n\n return this.types.indexOf('text/uri-list') != -1 ? this.data.getData('text/uri-list') : this.data.getData('url');\n }\n\n return null;\n };\n /**\n * Is this an image data transfer?\n *\n * @return {boolean}\n */\n\n\n _proto.isImage = function isImage() {\n var isImage = this.types.some(function (type) {\n // Firefox will have a type of application/x-moz-file for images during\n // dragging\n return type.indexOf('application/x-moz-file') != -1;\n });\n\n if (isImage) {\n return true;\n }\n\n var items = this.getFiles();\n\n for (var i = 0; i < items.length; i++) {\n var type = items[i].type;\n\n if (!PhotosMimeType.isImage(type)) {\n return false;\n }\n }\n\n return true;\n };\n\n _proto.getCount = function getCount() {\n if (this.data.hasOwnProperty('items')) {\n return this.data.items.length;\n } else if (this.data.hasOwnProperty('mozItemCount')) {\n return this.data.mozItemCount;\n } else if (this.data.files) {\n return this.data.files.length;\n }\n\n return null;\n };\n /**\n * Get files.\n *\n * @return {array}\n */\n\n\n _proto.getFiles = function getFiles() {\n if (this.data.items) {\n // createArrayFromMixed doesn't properly handle DataTransferItemLists.\n return Array.prototype.slice.call(this.data.items).map(getFileFromDataTransfer).filter(emptyFunction.thatReturnsArgument);\n } else if (this.data.files) {\n return Array.prototype.slice.call(this.data.files);\n } else {\n return [];\n }\n };\n /**\n * Are there any files to fetch?\n *\n * @return {boolean}\n */\n\n\n _proto.hasFiles = function hasFiles() {\n return this.getFiles().length > 0;\n };\n\n return DataTransfer;\n}();\n\nmodule.exports = DataTransfer;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nmodule.exports = {\n BACKSPACE: 8,\n TAB: 9,\n RETURN: 13,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46,\n COMMA: 188,\n PERIOD: 190,\n A: 65,\n Z: 90,\n ZERO: 48,\n NUMPAD_0: 96,\n NUMPAD_9: 105\n};","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nvar PhotosMimeType = {\n isImage: function isImage(mimeString) {\n return getParts(mimeString)[0] === 'image';\n },\n isJpeg: function isJpeg(mimeString) {\n var parts = getParts(mimeString);\n return PhotosMimeType.isImage(mimeString) && ( // see http://fburl.com/10972194\n parts[1] === 'jpeg' || parts[1] === 'pjpeg');\n }\n};\n\nfunction getParts(mimeString) {\n return mimeString.split('/');\n}\n\nmodule.exports = PhotosMimeType;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * @param {DOMElement} element\n * @param {DOMDocument} doc\n * @return {boolean}\n */\nfunction _isViewportScrollElement(element, doc) {\n return !!doc && (element === doc.documentElement || element === doc.body);\n}\n/**\n * Scroll Module. This class contains 4 simple static functions\n * to be used to access Element.scrollTop/scrollLeft properties.\n * To solve the inconsistencies between browsers when either\n * document.body or document.documentElement is supplied,\n * below logic will be used to alleviate the issue:\n *\n * 1. If 'element' is either 'document.body' or 'document.documentElement,\n * get whichever element's 'scroll{Top,Left}' is larger.\n * 2. If 'element' is either 'document.body' or 'document.documentElement',\n * set the 'scroll{Top,Left}' on both elements.\n */\n\n\nvar Scroll = {\n /**\n * @param {DOMElement} element\n * @return {number}\n */\n getTop: function getTop(element) {\n var doc = element.ownerDocument;\n return _isViewportScrollElement(element, doc) ? // In practice, they will either both have the same value,\n // or one will be zero and the other will be the scroll position\n // of the viewport. So we can use `X || Y` instead of `Math.max(X, Y)`\n doc.body.scrollTop || doc.documentElement.scrollTop : element.scrollTop;\n },\n\n /**\n * @param {DOMElement} element\n * @param {number} newTop\n */\n setTop: function setTop(element, newTop) {\n var doc = element.ownerDocument;\n\n if (_isViewportScrollElement(element, doc)) {\n doc.body.scrollTop = doc.documentElement.scrollTop = newTop;\n } else {\n element.scrollTop = newTop;\n }\n },\n\n /**\n * @param {DOMElement} element\n * @return {number}\n */\n getLeft: function getLeft(element) {\n var doc = element.ownerDocument;\n return _isViewportScrollElement(element, doc) ? doc.body.scrollLeft || doc.documentElement.scrollLeft : element.scrollLeft;\n },\n\n /**\n * @param {DOMElement} element\n * @param {number} newLeft\n */\n setLeft: function setLeft(element, newLeft) {\n var doc = element.ownerDocument;\n\n if (_isViewportScrollElement(element, doc)) {\n doc.body.scrollLeft = doc.documentElement.scrollLeft = newLeft;\n } else {\n element.scrollLeft = newLeft;\n }\n }\n};\nmodule.exports = Scroll;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar getStyleProperty = require(\"./getStyleProperty\");\n/**\n * @param {DOMNode} element [description]\n * @param {string} name Overflow style property name.\n * @return {boolean} True if the supplied ndoe is scrollable.\n */\n\n\nfunction _isNodeScrollable(element, name) {\n var overflow = Style.get(element, name);\n return overflow === 'auto' || overflow === 'scroll';\n}\n/**\n * Utilities for querying and mutating style properties.\n */\n\n\nvar Style = {\n /**\n * Gets the style property for the supplied node. This will return either the\n * computed style, if available, or the declared style.\n *\n * @param {DOMNode} node\n * @param {string} name Style property name.\n * @return {?string} Style property value.\n */\n get: getStyleProperty,\n\n /**\n * Determines the nearest ancestor of a node that is scrollable.\n *\n * NOTE: This can be expensive if used repeatedly or on a node nested deeply.\n *\n * @param {?DOMNode} node Node from which to start searching.\n * @return {?DOMWindow|DOMElement} Scroll parent of the supplied node.\n */\n getScrollParent: function getScrollParent(node) {\n if (!node) {\n return null;\n }\n\n var ownerDocument = node.ownerDocument;\n\n while (node && node !== ownerDocument.body) {\n if (_isNodeScrollable(node, 'overflow') || _isNodeScrollable(node, 'overflowY') || _isNodeScrollable(node, 'overflowX')) {\n return node;\n }\n\n node = node.parentNode;\n }\n\n return ownerDocument.defaultView || ownerDocument.parentWindow;\n }\n};\nmodule.exports = Style;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * @stub\n * \n */\n'use strict'; // \\u00a1-\\u00b1\\u00b4-\\u00b8\\u00ba\\u00bb\\u00bf\n// is latin supplement punctuation except fractions and superscript\n// numbers\n// \\u2010-\\u2027\\u2030-\\u205e\n// is punctuation from the general punctuation block:\n// weird quotes, commas, bullets, dashes, etc.\n// \\u30fb\\u3001\\u3002\\u3008-\\u3011\\u3014-\\u301f\n// is CJK punctuation\n// \\uff1a-\\uff1f\\uff01-\\uff0f\\uff3b-\\uff40\\uff5b-\\uff65\n// is some full-width/half-width punctuation\n// \\u2E2E\\u061f\\u066a-\\u066c\\u061b\\u060c\\u060d\\uFD3e\\uFD3F\n// is some Arabic punctuation marks\n// \\u1801\\u0964\\u104a\\u104b\n// is misc. other language punctuation marks\n\nvar PUNCTUATION = '[.,+*?$|#{}()\\'\\\\^\\\\-\\\\[\\\\]\\\\\\\\\\\\/!@%\"~=<>_:;' + \"\\u30FB\\u3001\\u3002\\u3008-\\u3011\\u3014-\\u301F\\uFF1A-\\uFF1F\\uFF01-\\uFF0F\" + \"\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\u2E2E\\u061F\\u066A-\\u066C\\u061B\\u060C\\u060D\" + \"\\uFD3E\\uFD3F\\u1801\\u0964\\u104A\\u104B\\u2010-\\u2027\\u2030-\\u205E\" + \"\\xA1-\\xB1\\xB4-\\xB8\\xBA\\xBB\\xBF]\";\nmodule.exports = {\n getPunctuation: function getPunctuation() {\n return PUNCTUATION;\n }\n};","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar URI =\n/*#__PURE__*/\nfunction () {\n function URI(uri) {\n _defineProperty(this, \"_uri\", void 0);\n\n this._uri = uri;\n }\n\n var _proto = URI.prototype;\n\n _proto.toString = function toString() {\n return this._uri;\n };\n\n return URI;\n}();\n\nmodule.exports = URI;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Basic (stateless) API for text direction detection\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\n/**\n * RegExp ranges of characters with a *Strong* Bidi_Class value.\n *\n * Data is based on DerivedBidiClass.txt in UCD version 7.0.0.\n *\n * NOTE: For performance reasons, we only support Unicode's\n * Basic Multilingual Plane (BMP) for now.\n */\nvar RANGE_BY_BIDI_TYPE = {\n L: \"A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u01BA\\u01BB\" + \"\\u01BC-\\u01BF\\u01C0-\\u01C3\\u01C4-\\u0293\\u0294\\u0295-\\u02AF\\u02B0-\\u02B8\" + \"\\u02BB-\\u02C1\\u02D0-\\u02D1\\u02E0-\\u02E4\\u02EE\\u0370-\\u0373\\u0376-\\u0377\" + \"\\u037A\\u037B-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\" + \"\\u03A3-\\u03F5\\u03F7-\\u0481\\u0482\\u048A-\\u052F\\u0531-\\u0556\\u0559\" + \"\\u055A-\\u055F\\u0561-\\u0587\\u0589\\u0903\\u0904-\\u0939\\u093B\\u093D\" + \"\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0950\\u0958-\\u0961\\u0964-\\u0965\" + \"\\u0966-\\u096F\\u0970\\u0971\\u0972-\\u0980\\u0982-\\u0983\\u0985-\\u098C\" + \"\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\" + \"\\u09BE-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u09CE\\u09D7\\u09DC-\\u09DD\" + \"\\u09DF-\\u09E1\\u09E6-\\u09EF\\u09F0-\\u09F1\\u09F4-\\u09F9\\u09FA\\u0A03\" + \"\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\" + \"\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A3E-\\u0A40\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A6F\" + \"\\u0A72-\\u0A74\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\" + \"\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0AD0\" + \"\\u0AE0-\\u0AE1\\u0AE6-\\u0AEF\\u0AF0\\u0B02-\\u0B03\\u0B05-\\u0B0C\\u0B0F-\\u0B10\" + \"\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B3E\\u0B40\" + \"\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0B57\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B66-\\u0B6F\" + \"\\u0B70\\u0B71\\u0B72-\\u0B77\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\" + \"\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\" + \"\\u0BBE-\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\" + \"\\u0BE6-\\u0BEF\\u0BF0-\\u0BF2\\u0C01-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\" + \"\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C41-\\u0C44\\u0C58-\\u0C59\\u0C60-\\u0C61\" + \"\\u0C66-\\u0C6F\\u0C7F\\u0C82-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\" + \"\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CBE\\u0CBF\\u0CC0-\\u0CC4\\u0CC6\" + \"\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0CD5-\\u0CD6\\u0CDE\\u0CE0-\\u0CE1\\u0CE6-\\u0CEF\" + \"\\u0CF1-\\u0CF2\\u0D02-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\" + \"\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D57\\u0D60-\\u0D61\" + \"\\u0D66-\\u0D6F\\u0D70-\\u0D75\\u0D79\\u0D7A-\\u0D7F\\u0D82-\\u0D83\\u0D85-\\u0D96\" + \"\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\" + \"\\u0DE6-\\u0DEF\\u0DF2-\\u0DF3\\u0DF4\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E45\" + \"\\u0E46\\u0E4F\\u0E50-\\u0E59\\u0E5A-\\u0E5B\\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\" + \"\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F01-\\u0F03\\u0F04-\\u0F12\\u0F13\\u0F14\" + \"\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F20-\\u0F29\\u0F2A-\\u0F33\\u0F34\\u0F36\\u0F38\" + \"\\u0F3E-\\u0F3F\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F7F\\u0F85\\u0F88-\\u0F8C\" + \"\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE-\\u0FCF\\u0FD0-\\u0FD4\\u0FD5-\\u0FD8\" + \"\\u0FD9-\\u0FDA\\u1000-\\u102A\\u102B-\\u102C\\u1031\\u1038\\u103B-\\u103C\\u103F\" + \"\\u1040-\\u1049\\u104A-\\u104F\\u1050-\\u1055\\u1056-\\u1057\\u105A-\\u105D\\u1061\" + \"\\u1062-\\u1064\\u1065-\\u1066\\u1067-\\u106D\\u106E-\\u1070\\u1075-\\u1081\" + \"\\u1083-\\u1084\\u1087-\\u108C\\u108E\\u108F\\u1090-\\u1099\\u109A-\\u109C\" + \"\\u109E-\\u109F\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FB\\u10FC\" + \"\\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\\u1360-\\u1368\" + \"\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166D-\\u166E\" + \"\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EB-\\u16ED\\u16EE-\\u16F0\" + \"\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1735-\\u1736\" + \"\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17B6\\u17BE-\\u17C5\" + \"\\u17C7-\\u17C8\\u17D4-\\u17D6\\u17D7\\u17D8-\\u17DA\\u17DC\\u17E0-\\u17E9\" + \"\\u1810-\\u1819\\u1820-\\u1842\\u1843\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\" + \"\\u18B0-\\u18F5\\u1900-\\u191E\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\" + \"\\u1933-\\u1938\\u1946-\\u194F\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\" + \"\\u19B0-\\u19C0\\u19C1-\\u19C7\\u19C8-\\u19C9\\u19D0-\\u19D9\\u19DA\\u1A00-\\u1A16\" + \"\\u1A19-\\u1A1A\\u1A1E-\\u1A1F\\u1A20-\\u1A54\\u1A55\\u1A57\\u1A61\\u1A63-\\u1A64\" + \"\\u1A6D-\\u1A72\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AA6\\u1AA7\\u1AA8-\\u1AAD\" + \"\\u1B04\\u1B05-\\u1B33\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B45-\\u1B4B\" + \"\\u1B50-\\u1B59\\u1B5A-\\u1B60\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1B82\\u1B83-\\u1BA0\" + \"\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BAE-\\u1BAF\\u1BB0-\\u1BB9\\u1BBA-\\u1BE5\\u1BE7\" + \"\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1BFC-\\u1BFF\\u1C00-\\u1C23\\u1C24-\\u1C2B\" + \"\\u1C34-\\u1C35\\u1C3B-\\u1C3F\\u1C40-\\u1C49\\u1C4D-\\u1C4F\\u1C50-\\u1C59\" + \"\\u1C5A-\\u1C77\\u1C78-\\u1C7D\\u1C7E-\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u1CE1\" + \"\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF2-\\u1CF3\\u1CF5-\\u1CF6\\u1D00-\\u1D2B\" + \"\\u1D2C-\\u1D6A\\u1D6B-\\u1D77\\u1D78\\u1D79-\\u1D9A\\u1D9B-\\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\\u200E\" + \"\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\" + \"\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2134\\u2135-\\u2138\\u2139\" + \"\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u214F\\u2160-\\u2182\\u2183-\\u2184\" + \"\\u2185-\\u2188\\u2336-\\u237A\\u2395\\u249C-\\u24E9\\u26AC\\u2800-\\u28FF\" + \"\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C7B\\u2C7C-\\u2C7D\\u2C7E-\\u2CE4\" + \"\\u2CEB-\\u2CEE\\u2CF2-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\" + \"\\u2D70\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\" + \"\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005\\u3006\\u3007\" + \"\\u3021-\\u3029\\u302E-\\u302F\\u3031-\\u3035\\u3038-\\u303A\\u303B\\u303C\" + \"\\u3041-\\u3096\\u309D-\\u309E\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FE\\u30FF\" + \"\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u3191\\u3192-\\u3195\\u3196-\\u319F\" + \"\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3200-\\u321C\\u3220-\\u3229\\u322A-\\u3247\" + \"\\u3248-\\u324F\\u3260-\\u327B\\u327F\\u3280-\\u3289\\u328A-\\u32B0\\u32C0-\\u32CB\" + \"\\u32D0-\\u32FE\\u3300-\\u3376\\u337B-\\u33DD\\u33E0-\\u33FE\\u3400-\\u4DB5\" + \"\\u4E00-\\u9FCC\\uA000-\\uA014\\uA015\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA4F8-\\uA4FD\" + \"\\uA4FE-\\uA4FF\\uA500-\\uA60B\\uA60C\\uA610-\\uA61F\\uA620-\\uA629\\uA62A-\\uA62B\" + \"\\uA640-\\uA66D\\uA66E\\uA680-\\uA69B\\uA69C-\\uA69D\\uA6A0-\\uA6E5\\uA6E6-\\uA6EF\" + \"\\uA6F2-\\uA6F7\\uA722-\\uA76F\\uA770\\uA771-\\uA787\\uA789-\\uA78A\\uA78B-\\uA78E\" + \"\\uA790-\\uA7AD\\uA7B0-\\uA7B1\\uA7F7\\uA7F8-\\uA7F9\\uA7FA\\uA7FB-\\uA801\" + \"\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA823-\\uA824\\uA827\\uA830-\\uA835\" + \"\\uA836-\\uA837\\uA840-\\uA873\\uA880-\\uA881\\uA882-\\uA8B3\\uA8B4-\\uA8C3\" + \"\\uA8CE-\\uA8CF\\uA8D0-\\uA8D9\\uA8F2-\\uA8F7\\uA8F8-\\uA8FA\\uA8FB\\uA900-\\uA909\" + \"\\uA90A-\\uA925\\uA92E-\\uA92F\\uA930-\\uA946\\uA952-\\uA953\\uA95F\\uA960-\\uA97C\" + \"\\uA983\\uA984-\\uA9B2\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BD-\\uA9C0\\uA9C1-\\uA9CD\" + \"\\uA9CF\\uA9D0-\\uA9D9\\uA9DE-\\uA9DF\\uA9E0-\\uA9E4\\uA9E6\\uA9E7-\\uA9EF\" + \"\\uA9F0-\\uA9F9\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA2F-\\uAA30\\uAA33-\\uAA34\" + \"\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA5F\\uAA60-\\uAA6F\" + \"\\uAA70\\uAA71-\\uAA76\\uAA77-\\uAA79\\uAA7A\\uAA7B\\uAA7D\\uAA7E-\\uAAAF\\uAAB1\" + \"\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADC\\uAADD\\uAADE-\\uAADF\" + \"\\uAAE0-\\uAAEA\\uAAEB\\uAAEE-\\uAAEF\\uAAF0-\\uAAF1\\uAAF2\\uAAF3-\\uAAF4\\uAAF5\" + \"\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\" + \"\\uAB30-\\uAB5A\\uAB5B\\uAB5C-\\uAB5F\\uAB64-\\uAB65\\uABC0-\\uABE2\\uABE3-\\uABE4\" + \"\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEB\\uABEC\\uABF0-\\uABF9\\uAC00-\\uD7A3\" + \"\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uE000-\\uF8FF\\uF900-\\uFA6D\\uFA70-\\uFAD9\" + \"\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFF6F\\uFF70\" + \"\\uFF71-\\uFF9D\\uFF9E-\\uFF9F\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\" + \"\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC\",\n R: \"\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05D0-\\u05EA\\u05EB-\\u05EF\" + \"\\u05F0-\\u05F2\\u05F3-\\u05F4\\u05F5-\\u05FF\\u07C0-\\u07C9\\u07CA-\\u07EA\" + \"\\u07F4-\\u07F5\\u07FA\\u07FB-\\u07FF\\u0800-\\u0815\\u081A\\u0824\\u0828\" + \"\\u082E-\\u082F\\u0830-\\u083E\\u083F\\u0840-\\u0858\\u085C-\\u085D\\u085E\" + \"\\u085F-\\u089F\\u200F\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB37\\uFB38-\\uFB3C\" + \"\\uFB3D\\uFB3E\\uFB3F\\uFB40-\\uFB41\\uFB42\\uFB43-\\uFB44\\uFB45\\uFB46-\\uFB4F\",\n AL: \"\\u0608\\u060B\\u060D\\u061B\\u061C\\u061D\\u061E-\\u061F\\u0620-\\u063F\\u0640\" + \"\\u0641-\\u064A\\u066D\\u066E-\\u066F\\u0671-\\u06D3\\u06D4\\u06D5\\u06E5-\\u06E6\" + \"\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FD-\\u06FE\\u06FF\\u0700-\\u070D\\u070E\\u070F\" + \"\\u0710\\u0712-\\u072F\\u074B-\\u074C\\u074D-\\u07A5\\u07B1\\u07B2-\\u07BF\" + \"\\u08A0-\\u08B2\\u08B3-\\u08E3\\uFB50-\\uFBB1\\uFBB2-\\uFBC1\\uFBC2-\\uFBD2\" + \"\\uFBD3-\\uFD3D\\uFD40-\\uFD4F\\uFD50-\\uFD8F\\uFD90-\\uFD91\\uFD92-\\uFDC7\" + \"\\uFDC8-\\uFDCF\\uFDF0-\\uFDFB\\uFDFC\\uFDFE-\\uFDFF\\uFE70-\\uFE74\\uFE75\" + \"\\uFE76-\\uFEFC\\uFEFD-\\uFEFE\"\n};\nvar REGEX_STRONG = new RegExp('[' + RANGE_BY_BIDI_TYPE.L + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\nvar REGEX_RTL = new RegExp('[' + RANGE_BY_BIDI_TYPE.R + RANGE_BY_BIDI_TYPE.AL + ']');\n/**\n * Returns the first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @return A character with strong bidi direction, or null if not found\n */\n\nfunction firstStrongChar(str) {\n var match = REGEX_STRONG.exec(str);\n return match == null ? null : match[0];\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL).\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @return The resolved direction\n */\n\n\nfunction firstStrongCharDir(str) {\n var strongChar = firstStrongChar(str);\n\n if (strongChar == null) {\n return UnicodeBidiDirection.NEUTRAL;\n }\n\n return REGEX_RTL.exec(strongChar) ? UnicodeBidiDirection.RTL : UnicodeBidiDirection.LTR;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str A text block; e.g. paragraph, table cell, tag\n * @param fallback Fallback direction, used if no strong direction detected\n * for the block (default = NEUTRAL)\n * @return The resolved direction\n */\n\n\nfunction resolveBlockDir(str, fallback) {\n fallback = fallback || UnicodeBidiDirection.NEUTRAL;\n\n if (!str.length) {\n return fallback;\n }\n\n var blockDir = firstStrongCharDir(str);\n return blockDir === UnicodeBidiDirection.NEUTRAL ? fallback : blockDir;\n}\n/**\n * Returns the direction of a block of text, based on the direction of its\n * first strong character (has Bidi_Class value of L, R, or AL), or a fallback\n * direction, if no strong character is found.\n *\n * NOTE: This function is similar to resolveBlockDir(), but uses the global\n * direction as the fallback, so it *always* returns a Strong direction,\n * making it useful for integration in places that you need to make the final\n * decision, like setting some CSS class.\n *\n * This function is supposed to be used in respect to Higher-Level Protocol\n * rule HL1. (http://www.unicode.org/reports/tr9/#HL1)\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return The resolved Strong direction\n */\n\n\nfunction getDirection(str, strongFallback) {\n if (!strongFallback) {\n strongFallback = UnicodeBidiDirection.getGlobalDir();\n }\n\n !UnicodeBidiDirection.isStrong(strongFallback) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Fallback direction must be a strong direction') : invariant(false) : void 0;\n return resolveBlockDir(str, strongFallback);\n}\n/**\n * Returns true if getDirection(arguments...) returns LTR.\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return True if the resolved direction is LTR\n */\n\n\nfunction isDirectionLTR(str, strongFallback) {\n return getDirection(str, strongFallback) === UnicodeBidiDirection.LTR;\n}\n/**\n * Returns true if getDirection(arguments...) returns RTL.\n *\n * @param str A text block; e.g. paragraph, table cell\n * @param strongFallback Fallback direction, used if no strong direction\n * detected for the block (default = global direction)\n * @return True if the resolved direction is RTL\n */\n\n\nfunction isDirectionRTL(str, strongFallback) {\n return getDirection(str, strongFallback) === UnicodeBidiDirection.RTL;\n}\n\nvar UnicodeBidi = {\n firstStrongChar: firstStrongChar,\n firstStrongCharDir: firstStrongCharDir,\n resolveBlockDir: resolveBlockDir,\n getDirection: getDirection,\n isDirectionLTR: isDirectionLTR,\n isDirectionRTL: isDirectionRTL\n};\nmodule.exports = UnicodeBidi;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Constants to represent text directionality\n *\n * Also defines a *global* direciton, to be used in bidi algorithms as a\n * default fallback direciton, when no better direction is found or provided.\n *\n * NOTE: Use `setGlobalDir()`, or update `initGlobalDir()`, to set the initial\n * global direction value based on the application.\n *\n * Part of the implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar NEUTRAL = 'NEUTRAL'; // No strong direction\n\nvar LTR = 'LTR'; // Left-to-Right direction\n\nvar RTL = 'RTL'; // Right-to-Left direction\n\nvar globalDir = null; // == Helpers ==\n\n/**\n * Check if a directionality value is a Strong one\n */\n\nfunction isStrong(dir) {\n return dir === LTR || dir === RTL;\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property.\n */\n\n\nfunction getHTMLDir(dir) {\n !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n return dir === LTR ? 'ltr' : 'rtl';\n}\n/**\n * Get string value to be used for `dir` HTML attribute or `direction` CSS\n * property, but returns null if `dir` has same value as `otherDir`.\n * `null`.\n */\n\n\nfunction getHTMLDirIfDifferent(dir, otherDir) {\n !isStrong(dir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`dir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n !isStrong(otherDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '`otherDir` must be a strong direction to be converted to HTML Direction') : invariant(false) : void 0;\n return dir === otherDir ? null : getHTMLDir(dir);\n} // == Global Direction ==\n\n/**\n * Set the global direction.\n */\n\n\nfunction setGlobalDir(dir) {\n globalDir = dir;\n}\n/**\n * Initialize the global direction\n */\n\n\nfunction initGlobalDir() {\n setGlobalDir(LTR);\n}\n/**\n * Get the global direction\n */\n\n\nfunction getGlobalDir() {\n if (!globalDir) {\n this.initGlobalDir();\n }\n\n !globalDir ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Global direction not set.') : invariant(false) : void 0;\n return globalDir;\n}\n\nvar UnicodeBidiDirection = {\n // Values\n NEUTRAL: NEUTRAL,\n LTR: LTR,\n RTL: RTL,\n // Helpers\n isStrong: isStrong,\n getHTMLDir: getHTMLDir,\n getHTMLDirIfDifferent: getHTMLDirIfDifferent,\n // Global Direction\n setGlobalDir: setGlobalDir,\n initGlobalDir: initGlobalDir,\n getGlobalDir: getGlobalDir\n};\nmodule.exports = UnicodeBidiDirection;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n * \n */\n\n/**\n * Stateful API for text direction detection\n *\n * This class can be used in applications where you need to detect the\n * direction of a sequence of text blocks, where each direction shall be used\n * as the fallback direction for the next one.\n *\n * NOTE: A default direction, if not provided, is set based on the global\n * direction, as defined by `UnicodeBidiDirection`.\n *\n * == Example ==\n * ```\n * var UnicodeBidiService = require('UnicodeBidiService');\n *\n * var bidiService = new UnicodeBidiService();\n *\n * ...\n *\n * bidiService.reset();\n * for (var para in paragraphs) {\n * var dir = bidiService.getDirection(para);\n * ...\n * }\n * ```\n *\n * Part of our implementation of Unicode Bidirectional Algorithm (UBA)\n * Unicode Standard Annex #9 (UAX9)\n * http://www.unicode.org/reports/tr9/\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar UnicodeBidi = require(\"./UnicodeBidi\");\n\nvar UnicodeBidiDirection = require(\"./UnicodeBidiDirection\");\n\nvar invariant = require(\"./invariant\");\n\nvar UnicodeBidiService =\n/*#__PURE__*/\nfunction () {\n /**\n * Stateful class for paragraph direction detection\n *\n * @param defaultDir Default direction of the service\n */\n function UnicodeBidiService(defaultDir) {\n _defineProperty(this, \"_defaultDir\", void 0);\n\n _defineProperty(this, \"_lastDir\", void 0);\n\n if (!defaultDir) {\n defaultDir = UnicodeBidiDirection.getGlobalDir();\n } else {\n !UnicodeBidiDirection.isStrong(defaultDir) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Default direction must be a strong direction (LTR or RTL)') : invariant(false) : void 0;\n }\n\n this._defaultDir = defaultDir;\n this.reset();\n }\n /**\n * Reset the internal state\n *\n * Instead of creating a new instance, you can just reset() your instance\n * everytime you start a new loop.\n */\n\n\n var _proto = UnicodeBidiService.prototype;\n\n _proto.reset = function reset() {\n this._lastDir = this._defaultDir;\n };\n /**\n * Returns the direction of a block of text, and remembers it as the\n * fall-back direction for the next paragraph.\n *\n * @param str A text block, e.g. paragraph, table cell, tag\n * @return The resolved direction\n */\n\n\n _proto.getDirection = function getDirection(str) {\n this._lastDir = UnicodeBidi.getDirection(str, this._lastDir);\n return this._lastDir;\n };\n\n return UnicodeBidiService;\n}();\n\nmodule.exports = UnicodeBidiService;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * Unicode-enabled replacesments for basic String functions.\n *\n * All the functions in this module assume that the input string is a valid\n * UTF-16 encoding of a Unicode sequence. If it's not the case, the behavior\n * will be undefined.\n *\n * WARNING: Since this module is typechecks-enforced, you may find new bugs\n * when replacing normal String functions with ones provided here.\n */\n'use strict';\n\nvar invariant = require(\"./invariant\"); // These two ranges are consecutive so anything in [HIGH_START, LOW_END] is a\n// surrogate code unit.\n\n\nvar SURROGATE_HIGH_START = 0xD800;\nvar SURROGATE_HIGH_END = 0xDBFF;\nvar SURROGATE_LOW_START = 0xDC00;\nvar SURROGATE_LOW_END = 0xDFFF;\nvar SURROGATE_UNITS_REGEX = /[\\uD800-\\uDFFF]/;\n/**\n * @param {number} codeUnit A Unicode code-unit, in range [0, 0x10FFFF]\n * @return {boolean} Whether code-unit is in a surrogate (hi/low) range\n */\n\nfunction isCodeUnitInSurrogateRange(codeUnit) {\n return SURROGATE_HIGH_START <= codeUnit && codeUnit <= SURROGATE_LOW_END;\n}\n/**\n * Returns whether the two characters starting at `index` form a surrogate pair.\n * For example, given the string s = \"\\uD83D\\uDE0A\", (s, 0) returns true and\n * (s, 1) returns false.\n *\n * @param {string} str\n * @param {number} index\n * @return {boolean}\n */\n\n\nfunction isSurrogatePair(str, index) {\n !(0 <= index && index < str.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isSurrogatePair: Invalid index %s for string length %s.', index, str.length) : invariant(false) : void 0;\n\n if (index + 1 === str.length) {\n return false;\n }\n\n var first = str.charCodeAt(index);\n var second = str.charCodeAt(index + 1);\n return SURROGATE_HIGH_START <= first && first <= SURROGATE_HIGH_END && SURROGATE_LOW_START <= second && second <= SURROGATE_LOW_END;\n}\n/**\n * @param {string} str Non-empty string\n * @return {boolean} True if the input includes any surrogate code units\n */\n\n\nfunction hasSurrogateUnit(str) {\n return SURROGATE_UNITS_REGEX.test(str);\n}\n/**\n * Return the length of the original Unicode character at given position in the\n * String by looking into the UTF-16 code unit; that is equal to 1 for any\n * non-surrogate characters in BMP ([U+0000..U+D7FF] and [U+E000, U+FFFF]); and\n * returns 2 for the hi/low surrogates ([U+D800..U+DFFF]), which are in fact\n * representing non-BMP characters ([U+10000..U+10FFFF]).\n *\n * Examples:\n * - '\\u0020' => 1\n * - '\\u3020' => 1\n * - '\\uD835' => 2\n * - '\\uD835\\uDDEF' => 2\n * - '\\uDDEF' => 2\n *\n * @param {string} str Non-empty string\n * @param {number} pos Position in the string to look for one code unit\n * @return {number} Number 1 or 2\n */\n\n\nfunction getUTF16Length(str, pos) {\n return 1 + isCodeUnitInSurrogateRange(str.charCodeAt(pos));\n}\n/**\n * Fully Unicode-enabled replacement for String#length\n *\n * @param {string} str Valid Unicode string\n * @return {number} The number of Unicode characters in the string\n */\n\n\nfunction strlen(str) {\n // Call the native functions if there's no surrogate char\n if (!hasSurrogateUnit(str)) {\n return str.length;\n }\n\n var len = 0;\n\n for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n len++;\n }\n\n return len;\n}\n/**\n * Fully Unicode-enabled replacement for String#substr()\n *\n * @param {string} str Valid Unicode string\n * @param {number} start Location in Unicode sequence to begin extracting\n * @param {?number} length The number of Unicode characters to extract\n * (default: to the end of the string)\n * @return {string} Extracted sub-string\n */\n\n\nfunction substr(str, start, length) {\n start = start || 0;\n length = length === undefined ? Infinity : length || 0; // Call the native functions if there's no surrogate char\n\n if (!hasSurrogateUnit(str)) {\n return str.substr(start, length);\n } // Obvious cases\n\n\n var size = str.length;\n\n if (size <= 0 || start > size || length <= 0) {\n return '';\n } // Find the actual starting position\n\n\n var posA = 0;\n\n if (start > 0) {\n for (; start > 0 && posA < size; start--) {\n posA += getUTF16Length(str, posA);\n }\n\n if (posA >= size) {\n return '';\n }\n } else if (start < 0) {\n for (posA = size; start < 0 && 0 < posA; start++) {\n posA -= getUTF16Length(str, posA - 1);\n }\n\n if (posA < 0) {\n posA = 0;\n }\n } // Find the actual ending position\n\n\n var posB = size;\n\n if (length < size) {\n for (posB = posA; length > 0 && posB < size; length--) {\n posB += getUTF16Length(str, posB);\n }\n }\n\n return str.substring(posA, posB);\n}\n/**\n * Fully Unicode-enabled replacement for String#substring()\n *\n * @param {string} str Valid Unicode string\n * @param {number} start Location in Unicode sequence to begin extracting\n * @param {?number} end Location in Unicode sequence to end extracting\n * (default: end of the string)\n * @return {string} Extracted sub-string\n */\n\n\nfunction substring(str, start, end) {\n start = start || 0;\n end = end === undefined ? Infinity : end || 0;\n\n if (start < 0) {\n start = 0;\n }\n\n if (end < 0) {\n end = 0;\n }\n\n var length = Math.abs(end - start);\n start = start < end ? start : end;\n return substr(str, start, length);\n}\n/**\n * Get a list of Unicode code-points from a String\n *\n * @param {string} str Valid Unicode string\n * @return {array} A list of code-points in [0..0x10FFFF]\n */\n\n\nfunction getCodePoints(str) {\n var codePoints = [];\n\n for (var pos = 0; pos < str.length; pos += getUTF16Length(str, pos)) {\n codePoints.push(str.codePointAt(pos));\n }\n\n return codePoints;\n}\n\nvar UnicodeUtils = {\n getCodePoints: getCodePoints,\n getUTF16Length: getUTF16Length,\n hasSurrogateUnit: hasSurrogateUnit,\n isCodeUnitInSurrogateRange: isCodeUnitInSurrogateRange,\n isSurrogatePair: isSurrogatePair,\n strlen: strlen,\n substring: substring,\n substr: substr\n};\nmodule.exports = UnicodeUtils;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar UserAgentData = require(\"./UserAgentData\");\n\nvar VersionRange = require(\"./VersionRange\");\n\nvar mapObject = require(\"./mapObject\");\n\nvar memoizeStringOnly = require(\"./memoizeStringOnly\");\n/**\n * Checks to see whether `name` and `version` satisfy `query`.\n *\n * @param {string} name Name of the browser, device, engine or platform\n * @param {?string} version Version of the browser, engine or platform\n * @param {string} query Query of form \"Name [range expression]\"\n * @param {?function} normalizer Optional pre-processor for range expression\n * @return {boolean}\n */\n\n\nfunction compare(name, version, query, normalizer) {\n // check for exact match with no version\n if (name === query) {\n return true;\n } // check for non-matching names\n\n\n if (!query.startsWith(name)) {\n return false;\n } // full comparison with version\n\n\n var range = query.slice(name.length);\n\n if (version) {\n range = normalizer ? normalizer(range) : range;\n return VersionRange.contains(range, version);\n }\n\n return false;\n}\n/**\n * Normalizes `version` by stripping any \"NT\" prefix, but only on the Windows\n * platform.\n *\n * Mimics the stripping performed by the `UserAgentWindowsPlatform` PHP class.\n *\n * @param {string} version\n * @return {string}\n */\n\n\nfunction normalizePlatformVersion(version) {\n if (UserAgentData.platformName === 'Windows') {\n return version.replace(/^\\s*NT/, '');\n }\n\n return version;\n}\n/**\n * Provides client-side access to the authoritative PHP-generated User Agent\n * information supplied by the server.\n */\n\n\nvar UserAgent = {\n /**\n * Check if the User Agent browser matches `query`.\n *\n * `query` should be a string like \"Chrome\" or \"Chrome > 33\".\n *\n * Valid browser names include:\n *\n * - ACCESS NetFront\n * - AOL\n * - Amazon Silk\n * - Android\n * - BlackBerry\n * - BlackBerry PlayBook\n * - Chrome\n * - Chrome for iOS\n * - Chrome frame\n * - Facebook PHP SDK\n * - Facebook for iOS\n * - Firefox\n * - IE\n * - IE Mobile\n * - Mobile Safari\n * - Motorola Internet Browser\n * - Nokia\n * - Openwave Mobile Browser\n * - Opera\n * - Opera Mini\n * - Opera Mobile\n * - Safari\n * - UIWebView\n * - Unknown\n * - webOS\n * - etc...\n *\n * An authoritative list can be found in the PHP `BrowserDetector` class and\n * related classes in the same file (see calls to `new UserAgentBrowser` here:\n * https://fburl.com/50728104).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isBrowser: function isBrowser(query) {\n return compare(UserAgentData.browserName, UserAgentData.browserFullVersion, query);\n },\n\n /**\n * Check if the User Agent browser uses a 32 or 64 bit architecture.\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"32\" or \"64\".\n * @return {boolean}\n */\n isBrowserArchitecture: function isBrowserArchitecture(query) {\n return compare(UserAgentData.browserArchitecture, null, query);\n },\n\n /**\n * Check if the User Agent device matches `query`.\n *\n * `query` should be a string like \"iPhone\" or \"iPad\".\n *\n * Valid device names include:\n *\n * - Kindle\n * - Kindle Fire\n * - Unknown\n * - iPad\n * - iPhone\n * - iPod\n * - etc...\n *\n * An authoritative list can be found in the PHP `DeviceDetector` class and\n * related classes in the same file (see calls to `new UserAgentDevice` here:\n * https://fburl.com/50728332).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name\"\n * @return {boolean}\n */\n isDevice: function isDevice(query) {\n return compare(UserAgentData.deviceName, null, query);\n },\n\n /**\n * Check if the User Agent rendering engine matches `query`.\n *\n * `query` should be a string like \"WebKit\" or \"WebKit >= 537\".\n *\n * Valid engine names include:\n *\n * - Gecko\n * - Presto\n * - Trident\n * - WebKit\n * - etc...\n *\n * An authoritative list can be found in the PHP `RenderingEngineDetector`\n * class related classes in the same file (see calls to `new\n * UserAgentRenderingEngine` here: https://fburl.com/50728617).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isEngine: function isEngine(query) {\n return compare(UserAgentData.engineName, UserAgentData.engineVersion, query);\n },\n\n /**\n * Check if the User Agent platform matches `query`.\n *\n * `query` should be a string like \"Windows\" or \"iOS 5 - 6\".\n *\n * Valid platform names include:\n *\n * - Android\n * - BlackBerry OS\n * - Java ME\n * - Linux\n * - Mac OS X\n * - Mac OS X Calendar\n * - Mac OS X Internet Account\n * - Symbian\n * - SymbianOS\n * - Windows\n * - Windows Mobile\n * - Windows Phone\n * - iOS\n * - iOS Facebook Integration Account\n * - iOS Facebook Social Sharing UI\n * - webOS\n * - Chrome OS\n * - etc...\n *\n * An authoritative list can be found in the PHP `PlatformDetector` class and\n * related classes in the same file (see calls to `new UserAgentPlatform`\n * here: https://fburl.com/50729226).\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"Name [range expression]\"\n * @return {boolean}\n */\n isPlatform: function isPlatform(query) {\n return compare(UserAgentData.platformName, UserAgentData.platformFullVersion, query, normalizePlatformVersion);\n },\n\n /**\n * Check if the User Agent platform is a 32 or 64 bit architecture.\n *\n * @note Function results are memoized\n *\n * @param {string} query Query of the form \"32\" or \"64\".\n * @return {boolean}\n */\n isPlatformArchitecture: function isPlatformArchitecture(query) {\n return compare(UserAgentData.platformArchitecture, null, query);\n }\n};\nmodule.exports = mapObject(UserAgent, memoizeStringOnly);","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Usage note:\n * This module makes a best effort to export the same data we would internally.\n * At Facebook we use a server-generated module that does the parsing and\n * exports the data for the client to use. We can't rely on a server-side\n * implementation in open source so instead we make use of an open source\n * library to do the heavy lifting and then make some adjustments as necessary.\n * It's likely there will be some differences. Some we can smooth over.\n * Others are going to be harder.\n */\n'use strict';\n\nvar UAParser = require(\"ua-parser-js\");\n\nvar UNKNOWN = 'Unknown';\nvar PLATFORM_MAP = {\n 'Mac OS': 'Mac OS X'\n};\n/**\n * Convert from UAParser platform name to what we expect.\n */\n\nfunction convertPlatformName(name) {\n return PLATFORM_MAP[name] || name;\n}\n/**\n * Get the version number in parts. This is very naive. We actually get major\n * version as a part of UAParser already, which is generally good enough, but\n * let's get the minor just in case.\n */\n\n\nfunction getBrowserVersion(version) {\n if (!version) {\n return {\n major: '',\n minor: ''\n };\n }\n\n var parts = version.split('.');\n return {\n major: parts[0],\n minor: parts[1]\n };\n}\n/**\n * Get the UA data fom UAParser and then convert it to the format we're\n * expecting for our APIS.\n */\n\n\nvar parser = new UAParser();\nvar results = parser.getResult(); // Do some conversion first.\n\nvar browserVersionData = getBrowserVersion(results.browser.version);\nvar uaData = {\n browserArchitecture: results.cpu.architecture || UNKNOWN,\n browserFullVersion: results.browser.version || UNKNOWN,\n browserMinorVersion: browserVersionData.minor || UNKNOWN,\n browserName: results.browser.name || UNKNOWN,\n browserVersion: results.browser.major || UNKNOWN,\n deviceName: results.device.model || UNKNOWN,\n engineName: results.engine.name || UNKNOWN,\n engineVersion: results.engine.version || UNKNOWN,\n platformArchitecture: results.cpu.architecture || UNKNOWN,\n platformName: convertPlatformName(results.os.name) || UNKNOWN,\n platformVersion: results.os.version || UNKNOWN,\n platformFullVersion: results.os.version || UNKNOWN\n};\nmodule.exports = uaData;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar invariant = require(\"./invariant\");\n\nvar componentRegex = /\\./;\nvar orRegex = /\\|\\|/;\nvar rangeRegex = /\\s+\\-\\s+/;\nvar modifierRegex = /^(<=|<|=|>=|~>|~|>|)?\\s*(.+)/;\nvar numericRegex = /^(\\d*)(.*)/;\n/**\n * Splits input `range` on \"||\" and returns true if any subrange matches\n * `version`.\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\nfunction checkOrExpression(range, version) {\n var expressions = range.split(orRegex);\n\n if (expressions.length > 1) {\n return expressions.some(function (range) {\n return VersionRange.contains(range, version);\n });\n } else {\n range = expressions[0].trim();\n return checkRangeExpression(range, version);\n }\n}\n/**\n * Splits input `range` on \" - \" (the surrounding whitespace is required) and\n * returns true if version falls between the two operands.\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\n\nfunction checkRangeExpression(range, version) {\n var expressions = range.split(rangeRegex);\n !(expressions.length > 0 && expressions.length <= 2) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'the \"-\" operator expects exactly 2 operands') : invariant(false) : void 0;\n\n if (expressions.length === 1) {\n return checkSimpleExpression(expressions[0], version);\n } else {\n var startVersion = expressions[0],\n endVersion = expressions[1];\n !(isSimpleVersion(startVersion) && isSimpleVersion(endVersion)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'operands to the \"-\" operator must be simple (no modifiers)') : invariant(false) : void 0;\n return checkSimpleExpression('>=' + startVersion, version) && checkSimpleExpression('<=' + endVersion, version);\n }\n}\n/**\n * Checks if `range` matches `version`. `range` should be a \"simple\" range (ie.\n * not a compound range using the \" - \" or \"||\" operators).\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n\n\nfunction checkSimpleExpression(range, version) {\n range = range.trim();\n\n if (range === '') {\n return true;\n }\n\n var versionComponents = version.split(componentRegex);\n\n var _getModifierAndCompon = getModifierAndComponents(range),\n modifier = _getModifierAndCompon.modifier,\n rangeComponents = _getModifierAndCompon.rangeComponents;\n\n switch (modifier) {\n case '<':\n return checkLessThan(versionComponents, rangeComponents);\n\n case '<=':\n return checkLessThanOrEqual(versionComponents, rangeComponents);\n\n case '>=':\n return checkGreaterThanOrEqual(versionComponents, rangeComponents);\n\n case '>':\n return checkGreaterThan(versionComponents, rangeComponents);\n\n case '~':\n case '~>':\n return checkApproximateVersion(versionComponents, rangeComponents);\n\n default:\n return checkEqual(versionComponents, rangeComponents);\n }\n}\n/**\n * Checks whether `a` is less than `b`.\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\n\n\nfunction checkLessThan(a, b) {\n return compareComponents(a, b) === -1;\n}\n/**\n * Checks whether `a` is less than or equal to `b`.\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\n\n\nfunction checkLessThanOrEqual(a, b) {\n var result = compareComponents(a, b);\n return result === -1 || result === 0;\n}\n/**\n * Checks whether `a` is equal to `b`.\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\n\n\nfunction checkEqual(a, b) {\n return compareComponents(a, b) === 0;\n}\n/**\n * Checks whether `a` is greater than or equal to `b`.\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\n\n\nfunction checkGreaterThanOrEqual(a, b) {\n var result = compareComponents(a, b);\n return result === 1 || result === 0;\n}\n/**\n * Checks whether `a` is greater than `b`.\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\n\n\nfunction checkGreaterThan(a, b) {\n return compareComponents(a, b) === 1;\n}\n/**\n * Checks whether `a` is \"reasonably close\" to `b` (as described in\n * https://www.npmjs.org/doc/misc/semver.html). For example, if `b` is \"1.3.1\"\n * then \"reasonably close\" is defined as \">= 1.3.1 and < 1.4\".\n *\n * @param {array} a\n * @param {array} b\n * @returns {boolean}\n */\n\n\nfunction checkApproximateVersion(a, b) {\n var lowerBound = b.slice();\n var upperBound = b.slice();\n\n if (upperBound.length > 1) {\n upperBound.pop();\n }\n\n var lastIndex = upperBound.length - 1;\n var numeric = parseInt(upperBound[lastIndex], 10);\n\n if (isNumber(numeric)) {\n upperBound[lastIndex] = numeric + 1 + '';\n }\n\n return checkGreaterThanOrEqual(a, lowerBound) && checkLessThan(a, upperBound);\n}\n/**\n * Extracts the optional modifier (<, <=, =, >=, >, ~, ~>) and version\n * components from `range`.\n *\n * For example, given `range` \">= 1.2.3\" returns an object with a `modifier` of\n * `\">=\"` and `components` of `[1, 2, 3]`.\n *\n * @param {string} range\n * @returns {object}\n */\n\n\nfunction getModifierAndComponents(range) {\n var rangeComponents = range.split(componentRegex);\n var matches = rangeComponents[0].match(modifierRegex);\n !matches ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'expected regex to match but it did not') : invariant(false) : void 0;\n return {\n modifier: matches[1],\n rangeComponents: [matches[2]].concat(rangeComponents.slice(1))\n };\n}\n/**\n * Determines if `number` is a number.\n *\n * @param {mixed} number\n * @returns {boolean}\n */\n\n\nfunction isNumber(number) {\n return !isNaN(number) && isFinite(number);\n}\n/**\n * Tests whether `range` is a \"simple\" version number without any modifiers\n * (\">\", \"~\" etc).\n *\n * @param {string} range\n * @returns {boolean}\n */\n\n\nfunction isSimpleVersion(range) {\n return !getModifierAndComponents(range).modifier;\n}\n/**\n * Zero-pads array `array` until it is at least `length` long.\n *\n * @param {array} array\n * @param {number} length\n */\n\n\nfunction zeroPad(array, length) {\n for (var i = array.length; i < length; i++) {\n array[i] = '0';\n }\n}\n/**\n * Normalizes `a` and `b` in preparation for comparison by doing the following:\n *\n * - zero-pads `a` and `b`\n * - marks any \"x\", \"X\" or \"*\" component in `b` as equivalent by zero-ing it out\n * in both `a` and `b`\n * - marks any final \"*\" component in `b` as a greedy wildcard by zero-ing it\n * and all of its successors in `a`\n *\n * @param {array} a\n * @param {array} b\n * @returns {array>}\n */\n\n\nfunction normalizeVersions(a, b) {\n a = a.slice();\n b = b.slice();\n zeroPad(a, b.length); // mark \"x\" and \"*\" components as equal\n\n for (var i = 0; i < b.length; i++) {\n var matches = b[i].match(/^[x*]$/i);\n\n if (matches) {\n b[i] = a[i] = '0'; // final \"*\" greedily zeros all remaining components\n\n if (matches[0] === '*' && i === b.length - 1) {\n for (var j = i; j < a.length; j++) {\n a[j] = '0';\n }\n }\n }\n }\n\n zeroPad(b, a.length);\n return [a, b];\n}\n/**\n * Returns the numerical -- not the lexicographical -- ordering of `a` and `b`.\n *\n * For example, `10-alpha` is greater than `2-beta`.\n *\n * @param {string} a\n * @param {string} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compareNumeric(a, b) {\n var aPrefix = a.match(numericRegex)[1];\n var bPrefix = b.match(numericRegex)[1];\n var aNumeric = parseInt(aPrefix, 10);\n var bNumeric = parseInt(bPrefix, 10);\n\n if (isNumber(aNumeric) && isNumber(bNumeric) && aNumeric !== bNumeric) {\n return compare(aNumeric, bNumeric);\n } else {\n return compare(a, b);\n }\n}\n/**\n * Returns the ordering of `a` and `b`.\n *\n * @param {string|number} a\n * @param {string|number} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compare(a, b) {\n !(typeof a === typeof b) ? process.env.NODE_ENV !== \"production\" ? invariant(false, '\"a\" and \"b\" must be of the same type') : invariant(false) : void 0;\n\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n } else {\n return 0;\n }\n}\n/**\n * Compares arrays of version components.\n *\n * @param {array} a\n * @param {array} b\n * @returns {number} -1, 0 or 1 to indicate whether `a` is less than, equal to,\n * or greater than `b`, respectively\n */\n\n\nfunction compareComponents(a, b) {\n var _normalizeVersions = normalizeVersions(a, b),\n aNormalized = _normalizeVersions[0],\n bNormalized = _normalizeVersions[1];\n\n for (var i = 0; i < bNormalized.length; i++) {\n var result = compareNumeric(aNormalized[i], bNormalized[i]);\n\n if (result) {\n return result;\n }\n }\n\n return 0;\n}\n\nvar VersionRange = {\n /**\n * Checks whether `version` satisfies the `range` specification.\n *\n * We support a subset of the expressions defined in\n * https://www.npmjs.org/doc/misc/semver.html:\n *\n * version Must match version exactly\n * =version Same as just version\n * >version Must be greater than version\n * >=version Must be greater than or equal to version\n * = 1.2.3 and < 1.3\"\n * ~>version Equivalent to ~version\n * 1.2.x Must match \"1.2.x\", where \"x\" is a wildcard that matches\n * anything\n * 1.2.* Similar to \"1.2.x\", but \"*\" in the trailing position is a\n * \"greedy\" wildcard, so will match any number of additional\n * components:\n * \"1.2.*\" will match \"1.2.1\", \"1.2.1.1\", \"1.2.1.1.1\" etc\n * * Any version\n * \"\" (Empty string) Same as *\n * v1 - v2 Equivalent to \">= v1 and <= v2\"\n * r1 || r2 Passes if either r1 or r2 are satisfied\n *\n * @param {string} range\n * @param {string} version\n * @returns {boolean}\n */\n contains: function contains(range, version) {\n return checkOrExpression(range.trim(), version.trim());\n }\n};\nmodule.exports = VersionRange;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _hyphenPattern = /-(.)/g;\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar isTextNode = require(\"./isTextNode\");\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\n\n\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar invariant = require(\"./invariant\");\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\n\n\nfunction toArray(obj) {\n var length = obj.length; // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n !(typeof length === 'number') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0; // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {// IE < 9 does not support Array#slice on collections objects\n }\n } // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n\n\n var ret = Array(length);\n\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n\n return ret;\n}\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\n\n\nfunction hasArrayNature(obj) {\n return (// not null/false\n !!obj && ( // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') && // quacks like an array\n 'length' in obj && // not window\n !('setInterval' in obj) && // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && ( // a real array\n Array.isArray(obj) || // arguments\n 'callee' in obj || // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\n\n\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * This function is used to mark string literals representing CSS class names\n * so that they can be transformed statically. This allows for modularization\n * and minification of CSS class names.\n *\n * In static_upstream, this function is actually implemented, but it should\n * eventually be replaced with something more descriptive, and the transform\n * that is used in the main stack should be ported for use elsewhere.\n *\n * @param string|object className to modularize, or an object of key/values.\n * In the object case, the values are conditions that\n * determine if the className keys should be included.\n * @param [string ...] Variable list of classNames in the string case.\n * @return string Renderable space-separated CSS className.\n */\nfunction cx(classNames) {\n if (typeof classNames == 'object') {\n return Object.keys(classNames).filter(function (className) {\n return classNames[className];\n }).map(replace).join(' ');\n }\n\n return Array.prototype.map.call(arguments, replace).join(' ');\n}\n\nfunction replace(str) {\n return str.replace(/\\//g, '-');\n}\n\nmodule.exports = cx;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n\n\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\n\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\nfunction getActiveElement(doc)\n/*?DOMElement*/\n{\n doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n if (typeof doc === 'undefined') {\n return null;\n }\n\n try {\n return doc.activeElement || doc.body;\n } catch (e) {\n return doc.body;\n }\n}\n\nmodule.exports = getActiveElement;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n\nvar isWebkit = typeof navigator !== 'undefined' && navigator.userAgent.indexOf('AppleWebKit') > -1;\n/**\n * Gets the element with the document scroll properties such as `scrollLeft` and\n * `scrollHeight`. This may differ across different browsers.\n *\n * NOTE: The return value can be null if the DOM is not yet ready.\n *\n * @param {?DOMDocument} doc Defaults to current document.\n * @return {?DOMElement}\n */\n\nfunction getDocumentScrollElement(doc) {\n doc = doc || document;\n\n if (doc.scrollingElement) {\n return doc.scrollingElement;\n }\n\n return !isWebkit && doc.compatMode === 'CSS1Compat' ? doc.documentElement : doc.body;\n}\n\nmodule.exports = getDocumentScrollElement;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar getElementRect = require(\"./getElementRect\");\n/**\n * Gets an element's position in pixels relative to the viewport. The returned\n * object represents the position of the element's top left corner.\n *\n * @param {DOMElement} element\n * @return {object}\n */\n\n\nfunction getElementPosition(element) {\n var rect = getElementRect(element);\n return {\n x: rect.left,\n y: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n}\n\nmodule.exports = getElementPosition;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar containsNode = require(\"./containsNode\");\n/**\n * Gets an element's bounding rect in pixels relative to the viewport.\n *\n * @param {DOMElement} elem\n * @return {object}\n */\n\n\nfunction getElementRect(elem) {\n var docElem = elem.ownerDocument.documentElement; // FF 2, Safari 3 and Opera 9.5- do not support getBoundingClientRect().\n // IE9- will throw if the element is not in the document.\n\n if (!('getBoundingClientRect' in elem) || !containsNode(docElem, elem)) {\n return {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n } // Subtracts clientTop/Left because IE8- added a 2px border to the\n // element (see http://fburl.com/1493213). IE 7 in\n // Quicksmode does not report clientLeft/clientTop so there\n // will be an unaccounted offset of 2px when in quirksmode\n\n\n var rect = elem.getBoundingClientRect();\n return {\n left: Math.round(rect.left) - docElem.clientLeft,\n right: Math.round(rect.right) - docElem.clientLeft,\n top: Math.round(rect.top) - docElem.clientTop,\n bottom: Math.round(rect.bottom) - docElem.clientTop\n };\n}\n\nmodule.exports = getElementRect;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n\nvar getDocumentScrollElement = require(\"./getDocumentScrollElement\");\n\nvar getUnboundedScrollPosition = require(\"./getUnboundedScrollPosition\");\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are bounded. This means that if the scroll position is\n * negative or exceeds the element boundaries (which is possible using inertial\n * scrolling), you will get zero or the maximum scroll position, respectively.\n *\n * If you need the unbound scroll position, use `getUnboundedScrollPosition`.\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\n\nfunction getScrollPosition(scrollable) {\n var documentScrollElement = getDocumentScrollElement(scrollable.ownerDocument || scrollable.document);\n\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n scrollable = documentScrollElement;\n }\n\n var scrollPosition = getUnboundedScrollPosition(scrollable);\n var viewport = scrollable === documentScrollElement ? scrollable.ownerDocument.documentElement : scrollable;\n var xMax = scrollable.scrollWidth - viewport.clientWidth;\n var yMax = scrollable.scrollHeight - viewport.clientHeight;\n scrollPosition.x = Math.max(0, Math.min(scrollPosition.x, xMax));\n scrollPosition.y = Math.max(0, Math.min(scrollPosition.y, yMax));\n return scrollPosition;\n}\n\nmodule.exports = getScrollPosition;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar camelize = require(\"./camelize\");\n\nvar hyphenate = require(\"./hyphenate\");\n\nfunction asString(value)\n/*?string*/\n{\n return value == null ? value : String(value);\n}\n\nfunction getStyleProperty(\n/*DOMNode*/\nnode,\n/*string*/\nname)\n/*?string*/\n{\n var computedStyle; // W3C Standard\n\n if (window.getComputedStyle) {\n // In certain cases such as within an iframe in FF3, this returns null.\n computedStyle = window.getComputedStyle(node, null);\n\n if (computedStyle) {\n return asString(computedStyle.getPropertyValue(hyphenate(name)));\n }\n } // Safari\n\n\n if (document.defaultView && document.defaultView.getComputedStyle) {\n computedStyle = document.defaultView.getComputedStyle(node, null); // A Safari bug causes this to return null for `display: none` elements.\n\n if (computedStyle) {\n return asString(computedStyle.getPropertyValue(hyphenate(name)));\n }\n\n if (name === 'display') {\n return 'none';\n }\n } // Internet Explorer\n\n\n if (node.currentStyle) {\n if (name === 'float') {\n return asString(node.currentStyle.cssFloat || node.currentStyle.styleFloat);\n }\n\n return asString(node.currentStyle[camelize(name)]);\n }\n\n return asString(node.style && node.style[camelize(name)]);\n}\n\nmodule.exports = getStyleProperty;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n'use strict';\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable.Window && scrollable instanceof scrollable.Window) {\n return {\n x: scrollable.pageXOffset || scrollable.document.documentElement.scrollLeft,\n y: scrollable.pageYOffset || scrollable.document.documentElement.scrollTop\n };\n }\n\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks\n */\nfunction getViewportWidth() {\n var width;\n\n if (document.documentElement) {\n width = document.documentElement.clientWidth;\n }\n\n if (!width && document.body) {\n width = document.body.clientWidth;\n }\n\n return width || 0;\n}\n\nfunction getViewportHeight() {\n var height;\n\n if (document.documentElement) {\n height = document.documentElement.clientHeight;\n }\n\n if (!height && document.body) {\n height = document.body.clientHeight;\n }\n\n return height || 0;\n}\n/**\n * Gets the viewport dimensions including any scrollbars.\n */\n\n\nfunction getViewportDimensions() {\n return {\n width: window.innerWidth || getViewportWidth(),\n height: window.innerHeight || getViewportHeight()\n };\n}\n/**\n * Gets the viewport dimensions excluding any scrollbars.\n */\n\n\ngetViewportDimensions.withoutScrollbars = function () {\n return {\n width: getViewportWidth(),\n height: getViewportHeight()\n };\n};\n\nmodule.exports = getViewportDimensions;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar _uppercasePattern = /([A-Z])/g;\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\n\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {\n if (format === undefined) {\n throw new Error('invariant(...): Second argument must be a string.');\n }\n} : function (format) {};\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n validateFormat(format);\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return String(args[argIndex++]);\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // Skip invariant's own stack frame.\n\n throw error;\n }\n}\n\nmodule.exports = invariant;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n var doc = object ? object.ownerDocument || object : document;\n var defaultView = doc.defaultView || window;\n return !!(object && (typeof defaultView.Node === 'function' ? object instanceof defaultView.Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\nvar isNode = require(\"./isNode\");\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\n\n\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Combines multiple className strings into one.\n */\n\nfunction joinClasses(className) {\n var newClassName = className || '';\n var argLength = arguments.length;\n\n if (argLength > 1) {\n for (var index = 1; index < argLength; index++) {\n var nextClass = arguments[index];\n\n if (nextClass) {\n newClassName = (newClassName ? newClassName + ' ' : '') + nextClass;\n }\n }\n }\n\n return newClassName;\n}\n\nmodule.exports = joinClasses;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n/**\n * Executes the provided `callback` once for each enumerable own property in the\n * object and constructs a new object from the results. The `callback` is\n * invoked with three arguments:\n *\n * - the property value\n * - the property name\n * - the object being traversed\n *\n * Properties that are added after the call to `mapObject` will not be visited\n * by `callback`. If the values of existing properties are changed, the value\n * passed to `callback` will be the value at the time `mapObject` visits them.\n * Properties that are deleted before being visited are not visited.\n *\n * @grep function objectMap()\n * @grep function objMap()\n *\n * @param {?object} object\n * @param {function} callback\n * @param {*} context\n * @return {?object}\n */\n\nfunction mapObject(object, callback, context) {\n if (!object) {\n return null;\n }\n\n var result = {};\n\n for (var name in object) {\n if (hasOwnProperty.call(object, name)) {\n result[name] = callback.call(context, object[name], name, object);\n }\n }\n\n return result;\n}\n\nmodule.exports = mapObject;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n * @typechecks static-only\n */\n'use strict';\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nvar nullthrows = function nullthrows(x) {\n if (x != null) {\n return x;\n }\n\n throw new Error(\"Got unexpected null or undefined\");\n};\n\nmodule.exports = nullthrows;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict'; // setimmediate adds setImmediate to the global. We want to make sure we export\n// the actual function.\n\nrequire(\"setimmediate\");\n\nmodule.exports = global.setImmediate;","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n'use strict';\n\nvar emptyFunction = require(\"./emptyFunction\");\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n\nfunction printWarning(format) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n}\n\nvar warning = process.env.NODE_ENV !== \"production\" ? function (condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(void 0, [format].concat(args));\n }\n} : emptyFunction;\nmodule.exports = warning;"],"names":["module","exports","equal","a","b","constructor","length","i","keys","Array","isArray","RegExp","source","flags","valueOf","Object","prototype","toString","hasOwnProperty","call","key","validator","require","XMLParser","XMLBuilder","XMLValidator","nameStartChar","nameRegexp","regexName","isExist","v","isEmptyObject","obj","merge","target","arrayMode","len","getValue","isName","string","match","exec","getAllMatches","regex","matches","allmatches","startIndex","lastIndex","index","push","util","defaultOptions","allowBooleanAttributes","unpairedTags","isWhiteSpace","char","readPI","xmlData","start","tagname","substr","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","angleBracketsCount","validate","options","assign","tags","tagFound","reachedRoot","err","tagStartPos","closingTag","tagName","trim","substring","msg","result","readAttributeStr","attrStr","value","attrStrStart","isValid","validateAttributeString","code","line","tagClosed","otg","pop","openPos","col","indexOf","afterAmp","validateAmpersand","JSON","stringify","map","t","replace","doubleQuote","singleQuote","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","undefined","attrName","validateAttrName","re","validateNumberAmpersand","count","message","lineNumber","lines","split","buildFromOrderedJs","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","cdataPropName","format","indentBy","suppressEmptyNode","suppressUnpairedNode","suppressBooleanAttributes","tagValueProcessor","attributeValueProcessor","preserveOrder","commentPropName","entities","val","processEntities","stopNodes","oneListGroup","Builder","this","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","j2x","buildTextValNode","buildObjectNode","repeat","name","startsWith","build","jObj","arrayNodeName","Date","attr","buildAttrPairStr","newval","replaceEntitiesValue","arrLen","listTagVal","listTagAttr","j","item","textValue","Ks","L","closeTag","tagEndExp","piClosingChar","concat","entity","arrToStr","arr","jPath","indentation","xmlStr","isPreviousElementTag","tagObj","propName","newJPath","tagText","isStopNode","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","endsWith","includes","attrMap","attrVal","lastIndexOf","jArray","readEntityExp","entityName","Error","isComment","isEntity","isElement","isAttlist","isNotation","validateEntityName","hasBody","comment","exp","regx","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","numberParseOptions","hex","leadingZeros","eNotation","alwaysCreateTextNode","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","attrs","buildOptions","xmlNode","readDocType","toNumber","addExternalEntities","externalEntities","entKeys","ent","lastEntities","parseTextData","dontTrim","hasAttributes","isLeafNode","escapeEntities","parseValue","resolveNameSpace","prefix","charAt","attrsRegx","buildAttributesMap","oldVal","aName","newVal","attrCollection","parseXml","xmlObj","currentNode","textData","closeIndex","findClosingIndex","colonIndex","saveTextToParentTag","lastTagName","propIndex","tagsNodeStack","tagData","readTagExp","childNode","add","tagExp","attrExpPresent","addChild","endIndex","docTypeEntities","rawTagName","lastTag","isItStopNode","tagContent","readStopNodeData","child","ampEntity","currentTagName","allNodesExp","stopNodePath","stopNodeExp","str","errMsg","closingIndex","attrBoundary","closingChar","arguments","ch","data","tagExpWithClosingIndex","separatorIndex","search","trimStart","openTagCount","shouldParse","_","String","fromCharCode","Number","parseInt","OrderedObjParser","prettify","parse","validationOption","orderedObjParser","orderedResult","addEntity","compress","text","compressedObj","property","newJpath","isLeaf","isLeafTag","assignAttributes","jpath","atrrName","propCount","node","PhotosMimeType","createArrayFromMixed","emptyFunction","CR_LF_REGEX","RICH_TEXT_TYPES","getFileFromDataTransfer","kind","getAsFile","DataTransfer","types","_proto","isRichText","getHTML","getText","isImage","some","type","getData","isLink","getLink","items","getFiles","getCount","mozItemCount","files","slice","filter","thatReturnsArgument","hasFiles","BACKSPACE","TAB","RETURN","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","COMMA","PERIOD","A","Z","ZERO","NUMPAD_0","NUMPAD_9","mimeString","getParts","isJpeg","parts","_isViewportScrollElement","element","doc","documentElement","body","Scroll","getTop","ownerDocument","scrollTop","setTop","newTop","getLeft","scrollLeft","setLeft","newLeft","_isNodeScrollable","overflow","Style","get","getScrollParent","parentNode","defaultView","parentWindow","getPunctuation","URI","uri","defineProperty","enumerable","configurable","writable","_uri","UnicodeBidiDirection","invariant","RANGE_BY_BIDI_TYPE","REGEX_STRONG","REGEX_RTL","firstStrongChar","firstStrongCharDir","strongChar","NEUTRAL","RTL","LTR","resolveBlockDir","fallback","blockDir","getDirection","strongFallback","getGlobalDir","isStrong","UnicodeBidi","isDirectionLTR","isDirectionRTL","globalDir","dir","getHTMLDir","setGlobalDir","getHTMLDirIfDifferent","otherDir","initGlobalDir","_defineProperty","UnicodeBidiService","defaultDir","_defaultDir","reset","_lastDir","SURROGATE_UNITS_REGEX","isCodeUnitInSurrogateRange","codeUnit","hasSurrogateUnit","test","getUTF16Length","pos","charCodeAt","Infinity","size","posA","posB","UnicodeUtils","getCodePoints","codePoints","codePointAt","isSurrogatePair","first","second","strlen","end","Math","abs","UserAgentData","VersionRange","mapObject","memoizeStringOnly","compare","version","query","normalizer","range","contains","normalizePlatformVersion","platformName","UserAgent","isBrowser","browserName","browserFullVersion","isBrowserArchitecture","browserArchitecture","isDevice","deviceName","isEngine","engineName","engineVersion","isPlatform","platformFullVersion","isPlatformArchitecture","platformArchitecture","UAParser","UNKNOWN","PLATFORM_MAP","results","getResult","browserVersionData","major","minor","getBrowserVersion","browser","uaData","cpu","architecture","browserMinorVersion","browserVersion","device","model","engine","os","platformVersion","componentRegex","orRegex","rangeRegex","modifierRegex","numericRegex","checkOrExpression","expressions","checkSimpleExpression","startVersion","endVersion","isSimpleVersion","checkRangeExpression","versionComponents","_getModifierAndCompon","getModifierAndComponents","modifier","rangeComponents","checkLessThan","compareComponents","checkGreaterThanOrEqual","checkGreaterThan","lowerBound","upperBound","numeric","isNumber","checkApproximateVersion","checkEqual","number","isNaN","isFinite","zeroPad","array","compareNumeric","aPrefix","bPrefix","aNumeric","bNumeric","_normalizeVersions","normalizeVersions","aNormalized","bNormalized","_hyphenPattern","character","toUpperCase","isTextNode","containsNode","outerNode","innerNode","compareDocumentPosition","nodeType","hasArrayNature","callee","e","ret","ii","toArray","classNames","className","join","makeEmptyFunction","arg","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","document","activeElement","isWebkit","navigator","userAgent","scrollingElement","compatMode","getElementRect","rect","x","left","y","top","width","right","height","bottom","elem","docElem","getBoundingClientRect","round","clientLeft","clientTop","getDocumentScrollElement","getUnboundedScrollPosition","scrollable","documentScrollElement","Window","scrollPosition","viewport","xMax","scrollWidth","clientWidth","yMax","scrollHeight","clientHeight","max","min","camelize","hyphenate","asString","computedStyle","window","getComputedStyle","getPropertyValue","currentStyle","cssFloat","styleFloat","style","pageXOffset","pageYOffset","getViewportWidth","getViewportHeight","getViewportDimensions","innerWidth","innerHeight","withoutScrollbars","_uppercasePattern","toLowerCase","validateFormat","condition","_len","args","_key","error","argIndex","framesToPop","Node","nodeName","isNode","newClassName","argLength","nextClass","callback","context","cache","global","setImmediate","warning"],"sourceRoot":""}