{"version":3,"file":"static/chunks/pages/tools/meowshi-d2f4628b9dc5ff77.js","mappings":"sWAIA,IAFmBA,IAAU,SAAC,I,qWAAD,EAAGC,UAAU,kBAAqBD,K,osBCA/D,MAAME,EAAY,CAChBC,KAAM,aACN,MAAO,YACP,MAAO,YACP,MAAO,YACP,MAAO,YACP,MAAO,YACP,MAAO,YACPC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,WACJC,GAAI,YASN,IANkB,QAAC,SAAEC,EAAF,SAAYC,EAAW,MAAvB,UAA8BT,EAAY,IAA3C,EAAkDU,GAAlD,mBAChB,oBAAKV,WAAWW,EAAAA,EAAAA,IAAWX,EAAWC,EAAUQ,GAAW,WAAeC,GAA1E,aACGF,O,6aCZL,MAAMI,EAAa,CACjB,CAACC,EAAAA,GAAAA,UAAmB,WACpB,CAACA,EAAAA,GAAAA,KAAc,WACf,CAACA,EAAAA,GAAAA,MAAe,OAChB,CAACA,EAAAA,GAAAA,QAAiB,SAClB,CAACA,EAAAA,GAAAA,SAAkB,UACnB,CAACA,EAAAA,GAAAA,OAAgB,UACjB,CAACA,EAAAA,GAAAA,MAAe,OAEhB,CAACA,EAAAA,GAAAA,WAAoB,YACrB,CAACA,EAAAA,GAAAA,OAAgB,SAsBZ,SAASC,EAAoBC,GAClC,MAAMC,EAAO,GAoBb,OAlBID,EAASE,WAAWL,IACtBI,EAAKE,KAAL,yEACoEN,EAAWG,EAASE,SADxF,YAEIF,EAASI,QAFb,SAKAH,EAAKE,KAAL,gFAC2EN,EAAWG,EAASE,SAD/F,mBAEIF,EAASI,QAFb,cAKAH,EAAKE,KAAL,kFAC6EN,EAAWG,EAASE,SADjG,mBAEIF,EAASI,QAFb,eAOKH,EAGT,MAAMI,EAAgB,0EAChBC,EAAkB,yEAClBC,EAAe,yEACfC,EAAa,yEACbC,EAAc,yEACdC,EAAW,0EACXC,EAAY,6EAEZC,EAAW,yEAIXC,EAAW,0EAMXC,EAAmD,CACvD,CAAChB,EAAAA,GAAAA,UAAmBS,EACpB,CAACT,EAAAA,GAAAA,QAAiBU,EAClB,CAACV,EAAAA,GAAAA,gBAAyBU,EAC1B,CAACV,EAAAA,GAAAA,OAAgBa,EACjB,CAACb,EAAAA,GAAAA,eAAwBa,EACzB,CAACb,EAAAA,GAAAA,MAdD,wIAeA,CAACA,EAAAA,GAAAA,KAAcQ,EACf,CAACR,EAAAA,GAAAA,aAAsBQ,EACvB,CAACR,EAAAA,GAAAA,kBApBkB,yEAqBnB,CAACA,EAAAA,GAAAA,WAAoBO,EACrB,CAACP,EAAAA,GAAAA,mBAA4BO,EAC7B,CAACP,EAAAA,GAAAA,MAAeY,EAChB,CAACZ,EAAAA,GAAAA,cAAuBY,EACxB,CAACZ,EAAAA,GAAAA,SAAkBW,EACnB,CAACX,EAAAA,GAAAA,iBAA0BW,EAC3B,CAACX,EAAAA,GAAAA,MAAec,EAChB,CAACd,EAAAA,GAAAA,cAAuBc,EACxB,CAACd,EAAAA,GAAAA,UAAmBS,EACpB,CAACT,EAAAA,GAAAA,kBAA2BS,EAC5B,CAACT,EAAAA,GAAAA,MA3Bc,0EA4Bf,CAACA,EAAAA,GAAAA,MAAee,EAChB,CAACf,EAAAA,GAAAA,cAAuBe,EACxB,CAACf,EAAAA,GAAAA,WA5Bc,0EA6Bf,CAACA,EAAAA,GAAAA,MA5Bc,0EA6Bf,CAACA,EAAAA,GAAAA,OA3BD,uHAsCIiB,EAAU,6EAkChB,IAhC2D,IAMrD,IANsD,SAC1Df,EAD0D,KAE1DgB,EAAO,OAFmD,MAG1DC,EAH0D,UAI1DhC,EAAY,IAER,EADDU,GACC,YACJ,MAAMuB,GAAeC,EAAAA,EAAAA,GACnBnB,aAAoBoB,EAAAA,EAAmBpB,EAASqB,SAAWrB,EAASsB,UAAUD,aAAUE,GAGpFC,GAAOC,EAAAA,EAAAA,UAAQ,KACnB,IAAKzB,EACH,MAAO,CAACe,GAGV,GAAIf,EAAS0B,UAAY1B,EAAS2B,OAAOC,EAAAA,GAAQ5B,EAASE,UACxD,MAAO,CAACY,EAAKd,EAASE,SAAUa,GAGlC,GAAIf,EAAS6B,QAAS,CACpB,MAAMC,EAAc,IAAI/B,EAAoBC,IAC5C,OAAIA,aAAoBoB,EAAAA,EACf,IAAIU,KAAgBZ,EAAcH,GAEpCe,KAER,CAAC9B,EAAUkB,IAEd,OAAO,SAAC,I,qWAAD,EAAMM,KAAMA,EAAMO,MAAOf,EAAMgB,OAAQhB,EAAMiB,IAAG,OAAEjC,QAAF,IAAEA,OAAF,EAAEA,EAAUkC,OAAQjD,UAAWA,GAAeU,M,mtBC7EvG,IAtCc,IAQR,IARS,IACbwC,EADa,MAEbJ,EAFa,OAGbC,EAHa,OAIbI,EAJa,OAKbC,EALa,MAMbpB,GAEI,EADDtB,GACC,YACJ,MAAM2C,EAAUC,SAASC,OAAOR,GAAS,KAAO,IAAMO,SAASC,OAAOT,GAAQ,KAAO,GACrF,OACE,gBAAKd,MAAO,CAAEc,MAAAA,EAAOC,OAAAA,GAAU/C,UAAU,0BAAzC,SACGqD,GACC,SAAC,UAAD,GACED,OAAQA,EACRF,IAAKA,EACLJ,MAAOA,EACPC,OAAQA,EACRI,OAAQA,EACRK,YAAY,OACZC,YAAW,qCApCJC,EAoCoDZ,EApCjDa,EAoCwDZ,EAtB1Da,EAdF,wBACFF,EADE,qBACYC,EADZ,gVASCD,EATD,qBASeC,EATf,mDAUQD,EAVR,qBAUsBC,EAVtB,oFAWsCD,EAXtC,iBAWgDA,EAXhD,mDAciFG,OAAOC,KAAKF,MAuB/FlD,KAGN,SAAC,UAAD,GACE0C,OAAQA,EACRF,IAAKA,EACLJ,MAAOA,EACPC,OAAQA,EACRI,OAAQA,EACRK,YAAY,SACR9C,MAjCIkD,IAAAA,EAdDF,EAAGC,I,2xBCZpB,MAAMI,EAAaC,OAAO,UAEbC,EAAeC,EAAAA,MAC1B,IAc2E,IAd1E,MACCC,EADD,YAECC,EAFD,YAGCZ,EAHD,UAICxD,EAAY,0HAJb,MAKCqE,EALD,SAMCC,EAAW,QAQ8D,EAPtE5D,GAOsE,YACzE,MAAM,QAAES,EAAF,QAAWoD,IAAYC,EAAAA,EAAAA,GAAOL,GAUpC,OACE,+BACE,oBACEA,MAAOA,EACPM,SAAWC,IAZCC,IAAAA,GACM,MADNA,EAaDD,EAAME,OAAOT,MAAMU,QAAQ,OAAQ,MAZtBd,EAAWe,MAAKC,EAAAA,EAAAA,IAAaJ,MACnDK,OAAOL,IAAkB,KAC3BP,EAAYO,IAaZM,UAAU,OACVC,MAAM,6BACNC,aAAa,MACbC,YAAY,MACZC,eAAe,MACfC,WAAW,QACX9B,YAAY,6BACZ+B,QAAQ,wBAERC,KAAK,OACLxF,WAAWW,EAAAA,EAAAA,IACC,UAAV0D,GAAqB,aACrB,2EACArE,GAEFgC,MAAO,CAAEsC,SAAAA,IACL5D,SAOduD,EAAawB,YAAc,eAE3B,Q,+nBC9DA,MAAM1B,EAAaC,OAAO,0BAEpB0B,EAAmB,kCAEZC,EAAQzB,EAAAA,MACnB,IAY2E,IAZ1E,MACCC,EADD,YAECC,EAFD,YAGCZ,EAHD,UAICxD,EAAY0F,GAQ6D,EAPtEhF,GAOsE,YAOzE,OACE,wBACMA,GADN,IAEEyD,MAAOA,EACPM,SAAWC,IAVGC,IAAAA,GACM,MADNA,EAYHD,EAAME,OAAOT,MAAMU,QAAQ,KAAM,OAXlBd,EAAWe,MAAKC,EAAAA,EAAAA,IAAaJ,MACvDP,EAAYO,IAaZM,UAAU,UACVC,MAAM,eACNC,aAAa,MACbC,YAAY,MAEZI,KAAK,OACLD,QAAQ,sBACR/B,YAAaA,GAAe,MAC5BoC,IAAK,EACLC,UAAW,EACXC,UAAW,GACXR,WAAW,QACXtF,WAAWW,EAAAA,EAAAA,IACT,6IACAX,SAOV2F,EAAMF,YAAc,iBAEpB,Q,kpBCxDA,MAAM1B,EAAaC,OAAO,UAEb2B,EAAQzB,EAAAA,MACnB,IAc2E,IAd1E,MACCC,EADD,YAECC,EAFD,YAGCZ,EAHD,UAICxD,EAJD,MAKCqE,EALD,SAMCC,EAAW,QAQ8D,EAPtE5D,GAOsE,YASzE,OACE,+BACE,oBACEyD,MAAOA,EACPM,SAAWC,IAZCC,IAAAA,GACM,MADNA,EAcDD,EAAME,OAAOT,MAAMU,QAAQ,KAAM,KAAKA,QAAQ,KAAM,MAbvCd,EAAWe,MAAKC,EAAAA,EAAAA,IAAaJ,MACnDK,OAAOL,IAAkB,KAC3BP,EAAYO,IAcZM,UAAU,UACVC,MAAM,eACNC,aAAa,MACbC,YAAY,MAEZI,KAAK,OACLD,QAAQ,WACR/B,YAAaA,GAAe,MAC5BsC,UAAW,EACX9F,WAAWW,EAAAA,EAAAA,IACC,UAAV0D,GAAqB,aACrB,2EACArE,GAEFgC,MAAO,CAAEsC,SAAAA,IACL5D,SAOdiF,EAAMF,YAAc,eCnDpB,MANc,CACZM,QADY,EAEZC,QDyDF,ECxDEC,QAAOA,I,qvBCAT,MAAMC,EAA6C,GAmCnD,IAvB4B,IAAkE,IAAjE,KAAE3D,EAAF,MAAQO,EAAR,OAAeC,EAAf,MAAuBf,EAAvB,IAA8BgB,EAAM,GAApC,UAAwChD,GAAyB,EAAXU,GAAW,YAC5F,MAAM,EAAGyF,IAAWC,EAAAA,EAAAA,UAAiB,GAC/BlD,EAAMX,EAAK8D,MAAMnD,IAASgD,EAAShD,KACzC,OACE,gBAAKlD,UAAU,UAAUgC,MAAK,GAAIc,MAAAA,EAAOC,OAAAA,GAAWf,GAApD,UACE,SAAC,IAAD,GACEkB,IAAKA,GAAO,6EACZE,OAAQkD,EAAAA,EACRC,QAAS,KACHrD,IAAKgD,EAAShD,IAAO,GACzBiD,GAASK,GAAMA,EAAI,KAErB1D,MAAOA,EACPC,OAAQA,EACRC,IAAKA,EACLG,OAAO,QACPnD,WAAWW,EAAAA,EAAAA,IAAW,UAAWX,IAC7BU,Q,41BCtBL,MAAM+F,EAA2D,QAAC,SACvEjG,EADuE,UAEvER,EAFuE,MAGvE8C,EAHuE,MAIvEuB,EAJuE,QAKvEqC,EALuE,QAMvEC,EANuE,OAOvEC,EAPuE,aAQvEC,GARsE,EASnEnG,GATmE,mBAWtE,oBACEV,WAAWW,EAAAA,EAAAA,IAAW,kBAAmBX,GACzCgC,MAAO,CACLc,MAAAA,EACAgE,WAAYzC,EACZ0C,eAAgBL,EAChBC,QAAAA,EACAC,OAAAA,EACAC,aAAAA,IAEEnG,GAVN,aAYGF,MAIQwG,GAAaC,EAAAA,EAAAA,IAAOR,GAAV,qEAAGQ,CAAH,oCASVC,GALUD,EAAAA,GAAAA,IAAAA,WAAH,uDAAGA,CAAH,yCAKGA,EAAAA,EAAAA,IAAOR,GAAV,kEAAGQ,CAAH,iFAER,EAAGE,IAAAA,KAAUA,GAAO,IAAJ,OAAQA,KACf,EAAGT,QAAAA,KAAcA,GAAWA,IAGnC,EAAGS,IAAAA,KAAUA,KAIdC,GAAWH,EAAAA,EAAAA,IAAOR,GAAV,mEAAGQ,CAAH,mCAET,EAAGE,IAAAA,KAAUA,GAAO,IAAJ,OAAQA,M,mEC9DpC,MAIab,EAAmB,EAAGpD,IAAAA,EAAKJ,MAAAA,KACtC,6DAA6DA,EAA7D,YALiBI,CAAAA,GACC,MAAXA,EAAI,GAAaA,EAAImE,MAAM,GAAKnE,EAI+BoE,CAAUpE,K,oJCiDlF,MA5CwC,EAAGqE,OAAAA,EAAQC,UAAAA,EAAWhH,SAAAA,MAE1D,SAAC,SAAD,CAAiBiH,KAAMF,EAAQG,GAAIC,EAAAA,SAAnC,UACE,SAAC,IAAD,CAAQD,GAAG,MAAME,QAAM,EAAC5H,UAAU,qCAAqC6H,KAAMN,EAAQO,QAASN,EAA9F,UACE,iBAAKxH,UAAU,2EAAf,WACE,SAAC,UAAD,CACE0H,GAAIC,EAAAA,SACJI,MAAM,wBACNC,UAAU,YACVC,QAAQ,aACRC,MAAM,uBACNC,UAAU,aACVC,QAAQ,YAPV,UASE,UAAC,YAAD,CAAgBpI,UAAU,2GAA1B,WACE,gBAAKA,UAAU,sHACf,gBAAKA,UAAU,2HAKnB,iBAAMA,UAAU,qCAAqC,cAAY,OAAjE,qBAIA,SAAC,UAAD,CACE0H,GAAIC,EAAAA,SACJI,MAAM,wBACNC,UAAU,YACVC,QAAQ,aACRC,MAAM,uBACNC,UAAU,aACVC,QAAQ,YAPV,UASE,gBAAKpI,UAAU,+IAAf,SACGQ,a,2EC5Bf,MAAM6H,EAAmC,EAAG7H,SAAAA,EAAU8H,SAAAA,EAAW,OAC/D,MAAM,KAAEC,IAASC,EAAAA,EAAAA,OACX,QAAEvH,EAAF,QAAWwH,EAAX,QAAoBC,IAAYC,EAAAA,EAAAA,KAEhCC,GACJ,SAACC,EAAA,EAAD,CAASC,KAAK,QAAd,UACE,cAAG9I,UAAU,+BAAb,SAA6CuI,EAAKQ,EAAE,sBAIxD,OACE,iCACE,SAAC,EAAD,CAAiBxB,SAAUmB,IAAYJ,EAASU,SAAS/H,GAAUuG,UAAW,IAAM,KAApF,UACE,iBAAKxH,UAAU,qCAAf,WACE,SAACiJ,EAAA,EAAD,CAAYC,QAAQ,KAAKlJ,UAAU,mCAAmCmJ,OAAQ,IAA9E,SACGZ,EAAKQ,EAAE,kEAAwDK,EAAAA,EAAcnI,SAEhF,SAACgI,EAAA,EAAD,CAAYjJ,UAAU,cAAtB,UACE,SAAC,KAAD,CACEqJ,GAAG,kEACHC,OAAQ,CAAEV,KAAAA,GACVW,WAAY5B,EAAAA,cAGhB,SAACsB,EAAA,EAAD,CAAYjJ,UAAU,4DAA4DmJ,OAAQ,IAA1F,SACGZ,EAAKQ,EAAE,8BAEV,gBACE/I,UAAS,6CAAwCwJ,KAAK5D,IAAI,EAAG0C,EAASmB,QAA7D,wBAAoFD,KAAK5D,IAChG,EACA0C,EAASmB,QAFF,KADX,SAMGnB,EAASoB,KAAI,CAACC,EAAcC,KAC3B,oBACE5J,UAAU,+EAEV6J,QAAS,KACP,MAAMC,EAASC,EAAAA,EAAmBJ,GAClCK,IAAAA,IAAW,UAAWL,GAClBA,IAAQ9I,EAAAA,GAAAA,SACH,OAAP4H,QAAO,IAAPA,GAAAA,EAASwB,KAAK,6BAA8B,CAAC,CAAEhJ,QAAS,OAASyH,IAE1D,OAAPD,QAAO,IAAPA,GAAAA,EAASwB,KAAK,0BAA2B,CAACH,EAAQpB,KATxD,WAaE,gBAAK1I,UAAU,oBAAf,UACE,SAAC,UAAD,CACEkD,IAAKgH,EAAAA,EAAaP,GAClB3G,IAAI,iBACJhD,UAAU,6CACV8C,MAAM,OACNC,OAAO,YAGX,SAACkG,EAAA,EAAD,CAAYjJ,UAAU,UAAtB,SAAiCoJ,EAAAA,EAAcO,OApB1CC,YA0BdpJ,MASP,MAJsB8H,GACb,EAAG9H,SAAAA,MAAe,SAAC6H,EAAD,CAAWC,SAAUA,EAArB,SAAgC9H,K,wGC7E5C,SAASgE,EAAO2F,GAK7B,MAAMC,GAAYC,EAAAA,EAAAA,IAAUF,GACtBG,GAAgBC,EAAAA,EAAAA,GAAWH,QAAwB9H,GACnDkI,GAASC,EAAAA,EAAAA,GAAcN,GAE7B,MAAO,CACL5F,QAAS+F,EAAc/F,SAAWiG,EAAOjG,QACzCpD,QAASiJ,GAAwBI,EAAOrJ,QACxCuJ,KAAMJ,EAAcK,QAAUL,EAAcK,SAAWP,GAAaI,EAAOrJ,SAAUgJ,GAAwB,Q,uICTlG,SAASM,EAAcG,GAGpC,UACA,MAAMC,GAAgBC,EAAAA,EAAAA,GAAYF,EAAS,KACrCG,GAAkBvI,EAAAA,EAAAA,UAAQ,KAC9B,IAAKqI,EAAe,MAAO,MAACvI,GAC5B,IACE,OAAOuI,EAAgB,EAACG,EAAAA,EAAAA,GAASH,IAAkB,MAACvI,GACpD,MAAO2I,GACP,MAAO,MAAC3I,MAET,CAACuI,IACEK,GAAoBC,EAAAA,EAAAA,KAAwB,GAC5CC,GAAkBC,EAAAA,EAAAA,IAAoBH,EAAmB,WAAYH,GACrEO,EAAqB,UAAGF,EAAgBG,cAAnB,aAAG,EAAyB,GACjDC,GAAmBC,EAAAA,EAAAA,IACvBH,KAA0BI,EAAAA,EAAAA,IAAOJ,GAAyBA,OAAwBhJ,GAClF,GAEIqJ,GAAON,EAAAA,EAAAA,IAAoBG,EAAkB,OAAQT,GAErDa,EAAUf,IAAkBD,EAClC,MAAO,CACLzJ,QAASyK,EAAU,KAAH,oBAAUD,EAAKJ,cAAf,aAAU,EAAc,UAAxB,QAA8B,KAC9ChH,QAASqH,GAAWR,EAAgB7G,SAAWoH,EAAKpH,W,iJC9BzC,SAASrC,EAAiB2J,GACvC,MAAMC,GAAMtJ,EAAAA,EAAAA,UAAQ,IAAOqJ,GAAME,EAAAA,EAAAA,GAAgBF,QAAOvJ,GAAY,CAACuJ,IAC/DG,ECEO,SAA2BpB,GAGxC,UACA,MAAMG,GAAkBvI,EAAAA,EAAAA,UAAQ,KAC9B,IAAKoI,EAAS,MAAO,MAACtI,GACtB,IACE,OAAOsI,EAAU,EAACI,EAAAA,EAAAA,GAASJ,IAAY,MAACtI,GACxC,MAAO2I,GACP,MAAO,MAAC3I,MAET,CAACsI,IACEM,GAAoBC,EAAAA,EAAAA,KAAwB,GAC5CG,GAAwBD,EAAAA,EAAAA,IAAoBH,EAAmB,WAAYH,GAC3EK,EAAe,UAAGE,EAAsBC,cAAzB,aAAG,EAA+B,GACjDC,GAAmBC,EAAAA,EAAAA,IACvBL,IAAmBM,EAAAA,EAAAA,IAAON,QAAmB9I,EAAY8I,GACzD,GAEIa,GAAcZ,EAAAA,EAAAA,IAAoBG,EAAkB,cAAeT,GAEzE,MAAO,CACLkB,YAAW,oBAAEA,EAAYV,cAAd,aAAE,EAAqB,UAAvB,QAA6B,KACxChH,QAAS+G,EAAsB/G,SAAW0H,EAAY1H,SDzB5B2H,CAAiB,OAACJ,QAAD,IAACA,OAAD,EAACA,EAAKlB,SACnD,OAAOpI,EAAAA,EAAAA,UAAQ,IACTsJ,EACKE,EAAoBC,aAAcE,EAAAA,EAAAA,KAAUC,EAAAA,EAAAA,IAAiBJ,EAAoBC,cAAgB,GAEjGJ,GAAMM,EAAAA,EAAAA,IAAUN,GAAO,IAE/B,CAACC,EAAKE,EAAoBC,YAAaJ,M,0IEL5C,MAAMQ,EAAsE,CAC1E,CAACxL,EAAAA,GAAAA,UAAmByL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,UAAmB,MACxE,CAACA,EAAAA,GAAAA,SAAkByL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,SAAkB,MACtE,CAACA,EAAAA,GAAAA,OAAgByL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,OAAgB,MAClE,CAACA,EAAAA,GAAAA,OAAgByL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,OAAgB,MAClE,CAACA,EAAAA,GAAAA,QAAiByL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,QAAiB,MACpE,CAACA,EAAAA,GAAAA,KAAcyL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,KAAc,MAC9D,CAACA,EAAAA,GAAAA,SAAkByL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,SAAkB,MACtE,CAACA,EAAAA,GAAAA,MAAeyL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,MAAe,MAChE,CAACA,EAAAA,GAAAA,MAAeyL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,MAAe,MAChE,CAACA,EAAAA,GAAAA,MAAeyL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,MAAe,MAChE,CAACA,EAAAA,GAAAA,UAAmByL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,UAAmB,MACxE,CAACA,EAAAA,GAAAA,MAAeyL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,MAAe,MAChE,CAACA,EAAAA,GAAAA,WAAoByL,EAAAA,GAAAA,cAA6BC,EAAAA,GAAI1L,EAAAA,GAAAA,WAAoB,OAO7D,SAAS2L,EAAazL,GACnC,MAAM,QAAEE,IAAY0H,EAAAA,EAAAA,KAEd8D,EAAYxL,EAAUoL,EAAsBpL,QAAWqB,EACvDoK,EAAU,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAW1L,SAExB4L,GAAcC,EAAAA,EAAAA,GAAmB7L,EAAU0L,EAAW,CAC1DI,QAAS,IAGX,OAAOrK,EAAAA,EAAAA,UAAQ,KACb,GAAKzB,GAAa2L,EAAlB,CAKA,UAAI3L,QAAJ,IAAIA,GAAAA,EAAU+L,QAAQpK,OAAOgK,GAC3B,OAAO,IAAIK,EAAAA,GAAML,EAAYA,EAAY,IAAK,KAIhD,GAAIC,EAAa,CACf,MAAM,UAAEK,EAAF,YAAaC,GAAgBN,EAAYO,MAAMC,SACrD,OAAO,IAAIJ,EAAAA,GAAMhM,EAAU2L,EAAYO,EAAaD,OAIrD,CAACjM,EAAU2L,EAAYC,IAGrB,SAASS,EAAaC,GAC3B,MAAMC,EAAQd,EAAY,OAACa,QAAD,IAACA,OAAD,EAACA,EAAgBtM,UAE3C,OAAOyB,EAAAA,EAAAA,UAAQ,KACb,IAAK8K,IAAUD,EAAgB,OAAO,KACtC,IACE,OAAOC,EAAMC,MAAMF,GACnB,MAAOpC,GACP,OAAO,QAER,CAACoC,EAAgBC,M,6KC/DtB,MAAME,EAAiB,IAAIC,EAAAA,GAAUC,GAE9B,IAAKC,EAOL,SAASC,EAAWC,GACzB,MAAMC,GAAStL,EAAAA,EAAAA,UACb,IAAMqL,EAAWnE,KAAI,EAAEqE,EAAWC,KAAe,QAACD,QAAD,IAACA,OAAD,EAACA,EAAWjB,QAAZ,OAAqBkB,QAArB,IAAqBA,OAArB,EAAqBA,EAAWlB,YACjF,CAACe,IAGGI,GAAgBzL,EAAAA,EAAAA,UACpB,IACEsL,EAAOpE,KAAI,EAAEwE,EAAQC,KACZD,GACLC,GACAD,EAAOjN,UAAYkN,EAAOlN,UACzBiN,EAAOxL,OAAOyL,IACfC,EAAAA,GAAgBF,EAAOjN,UACrBoN,EAAAA,EAAAA,IAAmB,CACjBC,eAAgBF,EAAAA,GAAgBF,EAAOjN,SACvCiN,OAAAA,EACAC,OAAAA,SAEF7L,KAER,CAACwL,IAGGS,GAAUC,EAAAA,EAAAA,IAA8BP,EAAeT,EAAgB,eAE7E,OAAOhL,EAAAA,EAAAA,UAAQ,IACN+L,EAAQ7E,KAAI,CAAC6B,EAAQ/E,KAC1B,MAAQ+E,OAAQkD,EAAV,QAAoBlK,GAAYgH,EAChC2C,EAASJ,EAAOtH,GAAG,GACnB2H,EAASL,EAAOtH,GAAG,GACzB,GAAIjC,EAAS,MAAO,CAACoJ,EAAUe,QAAS,MACxC,IAAKR,IAAWC,GAAUD,EAAOxL,OAAOyL,GAAS,MAAO,CAACR,EAAUgB,QAAS,MAC5E,IAAKF,EAAU,MAAO,CAACd,EAAUiB,WAAY,MAC7C,MAAM,SAAEC,EAAF,SAAYC,GAAaL,GACxBM,EAAQC,GAAUd,EAAOe,YAAYd,GAAU,CAACD,EAAQC,GAAU,CAACA,EAAQD,GAClF,MAAO,CACLP,EAAUuB,OACV,IAAIC,EAAAA,GACF7C,EAAAA,GAAAA,cAA6ByC,EAAQF,EAASO,YAC9C9C,EAAAA,GAAAA,cAA6B0C,EAAQF,EAASM,kBAInD,CAACb,EAAST,IAGR,SAASuB,EAAUnB,EAAmBC,GAE3C,OAAOP,GADwDpL,EAAAA,EAAAA,UAAQ,IAAM,CAAC,CAAC0L,EAAQC,KAAU,CAACD,EAAQC,KAChF,I,SAxDhBR,GAAAA,EAAAA,EAAAA,QAAAA,GAAAA,UAAAA,EAAAA,EAAAA,WAAAA,GAAAA,aAAAA,EAAAA,EAAAA,OAAAA,GAAAA,SAAAA,EAAAA,EAAAA,QAAAA,GAAAA,U,CAAAA,IAAAA,EAAAA,M,+LCDZ,SAAS2B,EAAkBvB,EAAsBC,GAC/C,MAAMuB,ECFD,SAAoCxB,EAAsBC,GAC/D,MAAM,QAAE/M,IAAY0H,EAAAA,EAAAA,MAEbuF,EAAQC,GAAUlN,EAAU,QAAC8M,QAAD,IAACA,OAAD,EAACA,EAAWjB,QAAZ,OAAqBkB,QAArB,IAAqBA,OAArB,EAAqBA,EAAWlB,SAAW,MAACxK,OAAWA,GAEpFkN,GAAiBhN,EAAAA,EAAAA,UAAQ,KAAM,cACnC,OAAKvB,EAME,IAJK,UAAGwO,EAAAA,GAA8BxO,UAAjC,QAA6C,MACrCiN,GAAM,oBAAGwB,EAAAA,GAAiBzO,UAApB,aAAG,EAA4BiN,EAAO/M,gBAAtC,QAAuD,MAC7DgN,GAAM,oBAAGuB,EAAAA,GAAiBzO,UAApB,aAAG,EAA4BkN,EAAOhN,gBAAtC,QAAuD,IAJ5D,KAOpB,CAACF,EAASiN,EAAQC,IAEfwB,GAA8BnN,EAAAA,EAAAA,UAClC,IAAMoN,GAAAA,CAAQJ,GAAQK,GAA2BL,EAAM9F,KAAKoG,GAAc,CAACD,EAAMC,QACjF,CAACN,IAGH,OAAOhN,EAAAA,EAAAA,UACL,IACE0L,GAAUC,EACN,CAEE,CAACD,EAAQC,MAENqB,EAAM9F,KAAKmG,GAAyB,CAAC3B,EAAQ2B,QAE7CL,EAAM9F,KAAKmG,GAAyB,CAAC1B,EAAQ0B,QAE7CF,GAEFI,QAAQjC,GAAqCkC,QAAQlC,EAAO,IAAMA,EAAO,MACzEiC,QAAO,EAAEE,EAAIC,KAAQD,EAAG9O,UAAY+O,EAAG/O,UACvC4O,QAAO,EAAE7B,EAAQC,MAChB,IAAKlN,EAAS,OAAO,EACrB,MAAMkP,EAAcC,EAAAA,GAAanP,GAE3BoP,EAAiC,OAAGF,QAAH,IAAGA,OAAH,EAAGA,EAAcjC,EAAO/M,SACzDmP,EAAiC,OAAGH,QAAH,IAAGA,OAAH,EAAGA,EAAchC,EAAOhN,SAE/D,OAAKkP,IAAiBC,KAElBD,IAAiBA,EAAahK,MAAMwJ,GAAS1B,EAAOzL,OAAOmN,SAC3DS,IAAiBA,EAAajK,MAAMwJ,GAAS3B,EAAOxL,OAAOmN,SAInE,IACN,CAAC3B,EAAQC,EAAQqB,EAAOG,EAAW1O,IDhDLsP,CAA2BxC,EAAWC,GAEhEwC,GAAW5C,EAAAA,EAAAA,IAAW2B,GAG5B,OAAO/M,EAAAA,EAAAA,UACL,IACEiO,OAAOnH,OACLkH,EAEGT,QAAQxE,GAA+CyE,QAAQzE,EAAO,KAAOoC,EAAAA,GAAAA,QAAoBpC,EAAO,MAExGmF,QAAwC,CAACC,GAAO,CAAEC,MAAU,MAE3D,OADAD,EAAKC,EAAKC,eAAe1P,SAAzB,UAAoCwP,EAAKC,EAAKC,eAAe1P,gBAA7D,QAAyEyP,EAClED,IACN,MAET,CAACH,IASE,SAASM,EACdC,EACAC,GACA,QAAEnE,EARa,GAQU,IAEzB,MAAMoE,EAAe3B,EAAiB,OAACyB,QAAD,IAACA,OAAD,EAACA,EAAkBhQ,SAAUiQ,GAEnE,OAAOxO,EAAAA,EAAAA,UAAQ,KACb,GAAIuO,GAAoBC,GAAeC,EAAaxH,OAAS,EAAG,CAC3C,MAAnB,GAAgB,IAAZoD,EACF,iBACEqE,EAAAA,GAAAA,iBAAuBD,EAAcF,EAAkBC,EAAa,CAClEnE,QAAS,EACTsE,cAAe,IACd,UAJL,QAIW,KAIb,IAAIC,EAA0E,KAC9E,IAAK,IAAI5K,EAAI,EAAGA,GAAKqG,EAASrG,IAAK,OACjC,MAAM6K,EAAqE,UACzEH,EAAAA,GAAAA,iBAAuBD,EAAcF,EAAkBC,EAAa,CAClEnE,QAASrG,EACT2K,cAAe,IACd,UAJsE,QAIhE,MAEPG,EAAAA,EAAAA,IAAcF,EAAgBC,EAAcE,EAAAA,MAC9CH,EAAiBC,GAGrB,OAAOD,EAGT,OAAO,OACN,CAACH,EAAcF,EAAkBC,EAAanE,IAM5C,SAASD,EACd4E,EACAC,GACA,QAAE5E,EAhDa,GAgDU,IAEzB,MAAMoE,EAAe3B,EAAkBkC,EAAD,OAAaC,QAAb,IAAaA,OAAb,EAAaA,EAAmB1Q,UAEtE,OAAOyB,EAAAA,EAAAA,UAAQ,KACb,GAAIgP,GAAcC,GAAqBR,EAAaxH,OAAS,EAAG,CAC3C,MAAnB,GAAgB,IAAZoD,EACF,iBACEqE,EAAAA,GAAAA,kBAAwBD,EAAcO,EAAYC,EAAmB,CACnE5E,QAAS,EACTsE,cAAe,IACd,UAJL,QAIW,KAIb,IAAIC,EAA2E,KAC/E,IAAK,IAAI5K,EAAI,EAAGA,GAAKqG,EAASrG,IAAK,OACjC,MAAM6K,EAAY,UAChBH,EAAAA,GAAAA,kBAAwBD,EAAcO,EAAYC,EAAmB,CACnE5E,QAASrG,EACT2K,cAAe,IACd,UAJa,QAIP,MACPG,EAAAA,EAAAA,IAAcF,EAAgBC,EAAcE,EAAAA,MAC9CH,EAAiBC,GAGrB,OAAOD,EAET,OAAO,OACN,CAACI,EAAYC,EAAmBR,EAAcpE,M,02NEnF5C,MAAM6E,EAAkE,EAAGlK,UAAAA,EAAWmK,YAAAA,MAC3F,MAAM,KAAEpJ,IAASC,EAAAA,EAAAA,MACjB,OACE,4BACE,gBAAKxI,UAAU,mBAAf,UACE,SAAC4R,EAAA,EAAD,CAAW/H,QAASrC,OAEtB,gBAAKxH,UAAU,mBAAf,UACE,SAAC,IAAD,CAAQ6R,cAAeC,EAAsBC,UAAQ,EAACC,MAAI,OAE5D,iBAAKhS,UAAU,kDAAf,WACE,gBAAKA,UAAU,uCAAf,SAAuDuI,EAAKQ,EAAE,oCAC9D,gBAAK/I,UAAU,YAAf,SAA4B2R,KAC5B,gBAAK3R,UAAU,mCAAf,SAAmDuI,EAAKQ,EAAE,yDAcrDkJ,EAAoE,EAC/EzK,UAAAA,EACAvG,QAAAA,EACAiR,KAAAA,EACAC,cAAAA,MACI,MACJ,MAAM,KAAE5J,IAASC,EAAAA,EAAAA,OACX,QAAEC,IAAYE,EAAAA,EAAAA,MACd,SAAEyJ,EAAF,QAAYC,GCrDL,SAA+BF,GAI5C,MAAM,QAAElR,EAAF,QAAWwH,IAAYE,EAAAA,EAAAA,KAEvB2J,EAAwB,OAAGH,QAAH,IAAGA,OAAH,EAAGA,EAAerF,SAE1C,EAACuF,EAAD,EAAUE,IAAcnM,EAAAA,EAAAA,YA2B9B,MAAO,CAAEgM,UAzBQI,EAAAA,EAAAA,cAAY,KACvB/J,GAAWA,EAAQgK,SAASC,YAAcjK,EAAQgK,SAASE,SAAWL,EACxE7J,EAAQgK,SACLE,QAAQ,CACPC,OAAQ,oBACR9I,OAAQ,CAENtE,KAAM,QACNqN,QAAS,CACP1R,QAASmR,EAAMnR,QACf8B,OAAQqP,EAAMrP,OACd6P,SAAUR,EAAMQ,SAChBC,OAAOjS,EAAAA,EAAAA,GAAoBwR,OAIhCU,MAAMX,IACLE,EAAWF,MAEZY,OAAM,IAAMV,GAAW,KAE1BA,GAAW,KAEZ,CAAC9J,EAAS6J,IAEMD,QAAAA,GDkBWa,CAAsBf,GACpD,OACE,4BACE,gBAAKnS,UAAU,mBAAf,UACE,SAAC4R,EAAA,EAAD,CAAW/H,QAASrC,OAEtB,gBAAKxH,UAAU,mBAAf,UACE,SAAC,IAAD,CAAemT,YAAa,GAAKpR,KAAM,GAAI/B,UAAU,iBAEvD,iBAAKA,UAAU,kDAAf,WACE,gBAAKA,UAAU,oBAAf,SAAoCuI,EAAKQ,EAAE,gCAC1C9H,GAAWiR,IACV,SAACkB,EAAA,EAAD,CAActK,MAAMuK,EAAAA,EAAAA,GAAgBpS,EAASiR,EAAM,eAAnD,UACE,gBAAKlS,UAAU,sBAAf,gCAGHmS,IAAa,OAAI1J,QAAJ,IAAIA,GAAJ,UAAIA,EAASgK,gBAAb,aAAI,EAAmBC,cACnC,SAACY,EAAA,GAAD,CAAQC,MAAM,WAAW1J,QAASuI,EAAUpS,UAAU,cAAtD,SACIqS,GAYA,UAAC5L,EAAA,GAAD,WACG8B,EAAKQ,EAAE,cADV,IACsBoJ,EAAclP,WAZpC,UAACwD,EAAA,GAAD,CAAUzG,UAAU,oBAApB,WACE,0BAAOuI,EAAKQ,EAAE,6BAAQoJ,EAAclP,aACpC,SAACuQ,EAAA,EAAD,CACEtQ,IAAI,+BACJF,IAAKuF,EAAKQ,EAAE,6BAAQoJ,EAAclP,UAClCH,MAAO,GACPC,OAAQ,GACR/C,UAAU,qBA0BfyT,EAA8D,EACzEvO,MAAAA,EACAwO,cAAAA,EACAlM,UAAAA,EACAmM,WAAAA,MAGE,iBAAK3T,UAAU,aAAf,WACE,SAAC4T,EAAA,EAAD,CAAa1O,MAAOA,EAAO4C,QAASN,IACnCmM,IACAD,OAUMG,EAA4D,EAAGC,QAAAA,EAAStM,UAAAA,MACnF,MAAM,KAAEe,IAASC,EAAAA,EAAAA,MAEjB,OACE,iBAAKxI,UAAU,aAAf,WACE,4BACE,iBAAKA,UAAU,uBAAf,WACE,gBAAKA,UAAU,yCAAf,SAAyDuI,EAAKQ,EAAE,iBAChE,SAAC6I,EAAA,EAAD,CAAW/H,QAASrC,QAEtB,iBAAKxH,UAAU,kDAAf,WACE,SAAC,IAAD,CAAeA,UAAU,WAAWgC,MAAO,CAAEmR,YAAa,KAAOpR,KAAM,MACvE,gBAAK/B,UAAU,qBAAf,SAAqC8T,WAGzC,0BACE,SAACR,EAAA,GAAD,CAAQC,MAAM,WAAWxR,KAAK,KAAK8H,QAASrC,EAA5C,2BAkDR,MAhCiE,EAC/DD,OAAAA,EACAC,UAAAA,EACAuM,cAAAA,EACA7B,KAAAA,EACAP,YAAAA,EACAqC,QAAAA,EACA7B,cAAAA,MAEA,MAAM,QAAElR,IAAY0H,EAAAA,EAAAA,KAEpB,OAAK1H,GAIH,SAACgT,EAAA,EAAD,CAAO1M,OAAQA,EAAQC,UAAWA,EAAW0M,UAAW,GAAxD,SACGH,GACC,SAACrC,EAAD,CAA4BlK,UAAWA,EAAWmK,YAAaA,IAC7DO,GACF,SAACD,EAAD,CACEhR,QAASA,EACTiR,KAAMA,EACN1K,UAAWA,EACX2K,cAAeA,IAGjB6B,MAfe,O,oREzDvB,MAlGwD,EAAGG,MAAAA,EAAOC,aAAAA,EAAcC,QAAAA,MAC9E,MAAM,WAAExG,EAAF,YAAcyG,EAAd,YAA2BC,EAA3B,OAAwCC,GAAWJ,GAEnD,QAAE1L,IAAYC,EAAAA,EAAAA,MACd,KAAEJ,IAASC,EAAAA,EAAAA,MACXzH,EAAW8M,EAAWsG,GACtBM,GAAUC,EAAAA,EAAAA,IAAgBhM,EAAS3H,GACnC4T,GAAiBvH,EAAAA,EAAAA,IAAawH,EAAAA,EAAAA,IAAeJ,EAAOL,GAAQtG,EAAWsG,KACvEU,GAAmBzH,EAAAA,EAAAA,GAAaqH,GAEtC,OACE,+BACE,iBAAKzU,UAAU,sBAAf,WACE,iBAAKA,UAAU,uEAAf,WACE,gBAAKA,UAAU,oCAAf,UACE,iBAAKA,UAAU,0BAAf,WACE,SAAC,UAAD,CACEkD,IACEnC,IAAa+T,EAAAA,GAAMjU,EAAAA,GAAAA,UACf,kCACAE,IAAagU,EAAAA,GACb,mCACA,iCAEN/R,IAAI,QACJF,MAAM,OACNC,OAAO,OACPiS,UAAU,UACVhV,UAAU,kBAEZ,iBAAKA,UAAU,4BAAf,WACE,SAACiJ,EAAA,EAAD,CAAYC,QAAQ,KAAKlJ,UAAU,+BAA+BmJ,OAAQ,IAA1E,gBACGpI,QADH,IACGA,OADH,EACGA,EAAUkC,UAEXlC,IAAa+T,EAAAA,GAAMjU,EAAAA,GAAAA,WAAqBE,IAAagU,EAAAA,MACrD,SAAC9L,EAAA,EAAD,CACEC,QAAQ,KACRlJ,UAAU,qCACV6J,QAAS,IAAM0K,EAAYxT,IAAagU,EAAAA,GAASD,EAAAA,GAAMjU,EAAAA,GAAAA,UAAoBkU,EAAAA,GAAQZ,GAHrF,SAKGtG,EAAWsG,KAAWW,EAAAA,GAAMjU,EAAAA,GAAAA,UAAoB0H,EAAKQ,EAAE,mBAAiBR,EAAKQ,EAAE,6BAM1F,iBAAK/I,UAAU,kFAAf,WACE,iBAAKA,UAAU,4BAAf,WACE,gBAAKA,UAAU,SAAf,UACE,SAAC2F,EAAA,UAAD,CACE3F,UAAU,2CACVqJ,GAAG,qBACHlF,MAAOqQ,EAAOL,GACd/P,YAAc6Q,GAAQX,EAAYW,EAAKd,OAG1CQ,IACC,iBAAK3U,UAAU,wCAAf,2BACK2U,QADL,IACKA,OADL,EACKA,EAAgBO,cAAc,EAAG,CAAEC,eAAgB,MADxD,cAMHd,IACC,iBACExK,QAAS,IAAMyK,EAAW,OAACG,QAAD,IAACA,OAAD,EAACA,EAASW,UAAWjB,GAC/CnU,UAAU,wLAFZ,SAIGuI,EAAKQ,EAAE,qBAKhB,iBAAK/I,UAAU,2DAAf,WACE,UAACiJ,EAAA,EAAD,CACEC,QAAQ,KACRmM,UAAU,OACVxL,QAAS,IAAMyK,EAAW,OAACG,QAAD,IAACA,OAAD,EAACA,EAASW,UAAWjB,GAC/CnU,UAAU,8BAJZ,uBAMmB,OAAPyU,QAAO,IAAPA,OAAA,EAAAA,EAASS,cAAc,EAAG,CAAEC,eAAgB,QAAU,IANlE,WAMwEpU,QANxE,IAMwEA,OANxE,EAMwEA,EAAUkC,UAEjF4R,IACC,iCACE,SAAC5L,EAAA,EAAD,CAAYC,QAAQ,KAAKmM,UAAU,OAAOrV,UAAU,WAApD,SACG,cAEH,UAACiJ,EAAA,EAAD,CAAYC,QAAQ,KAAKmM,UAAU,OAAOrV,UAAU,iBAApD,qBACI6U,QADJ,IACIA,OADJ,EACIA,EAAkBK,cAAc,EAAG,CAAEC,eAAgB,MADzD,uB,qBCvDd,MA1C4C,EAAGf,aAAAA,MAC7C,MAAM,KAAEkB,EAAF,iBAAQC,GAAqBnB,EAEnC,OACE,iBAAKpU,UAAU,uBAAf,WACE,UAAC,IAAD,CACEmE,MAAOmR,EACP7Q,SAAU8Q,EACVvV,UAAU,yDAHZ,WAKE,SAAC,WAAD,CACEmE,OAAO,EACPnE,UAAW,EAAGwV,QAAAA,MACZ7U,EAAAA,EAAAA,IAAW,oBAAD,UAAyB6U,EAAU,qCAAuC,KAHxF,SAMG,EAAGA,QAAAA,MACF,SAACvM,EAAA,EAAD,CAAYE,OAAQqM,EAAU,IAAM,IAAKxV,UAAS,UAAKwV,EAAU,qBAAuB,kBAAxF,qBAKJ,SAAC,WAAD,CACErR,OAAO,EACPnE,UAAW,EAAGwV,QAAAA,MACZ7U,EAAAA,EAAAA,IAAW,oBAAD,UAAyB6U,EAAU,qCAAuC,KAHxF,SAMG,EAAGA,QAAAA,MACF,SAACvM,EAAA,EAAD,CAAYE,OAAQqM,EAAU,IAAM,IAAKxV,UAAS,UAAKwV,EAAU,qBAAuB,kBAAxF,2BAMN,gBAAKxV,UAAU,2NAAf,2C,0GCsGN,MAzIoByV,IAClB,MAAM,QAAE/M,IAAYC,EAAAA,EAAAA,KACd+M,GAAiBC,EAAAA,EAAAA,MACjBC,GAAgBC,EAAAA,EAAAA,KAAiB,GACjCC,GAAcC,EAAAA,EAAAA,KAAoB,GAClCC,GAAkBC,EAAAA,EAAAA,KAAmB,IACrC,EAACC,EAAD,EAAkBC,IAAsB/P,EAAAA,EAAAA,WAAS,IAEjD,EAACgQ,EAAD,EAAYC,IAAgBjQ,EAAAA,EAAAA,UAAS,KACrCkQ,GAAiB9D,EAAAA,EAAAA,cAAY+D,UACjC,GAAI7N,EACF,IACE,IAAI0N,EAEFA,EADEX,QACU,OAAMG,QAAN,IAAMA,OAAN,EAAMA,EAAeQ,UAAU1N,EAAzB,OAAkCsN,QAAlC,IAAkCA,OAAlC,EAAkCA,EAAiB7U,gBAEzD,OAAM2U,QAAN,IAAMA,OAAN,EAAMA,EAAaM,UAAU1N,EAAvB,OAAgCsN,QAAhC,IAAgCA,OAAhC,EAAgCA,EAAiB7U,UAGrE,MAAMqV,EAAYC,EAAAA,EAAAA,KAAcC,EAAAA,GAAAA,KAAeN,GAAYM,EAAAA,GAAAA,KAAe,IAAIC,IAAI,KAAKvH,WACvFiH,EAAaG,GACb,MAAOvL,GACPoL,EAAa,QAGhB,CAAC3N,EAAS+M,EAAOG,EAAjB,OAAgCI,QAAhC,IAAgCA,OAAhC,EAAgCA,EAAiB7U,QAAS2U,KAE7Dc,EAAAA,EAAAA,YAAU,KACJlO,GAAWsN,IACRP,GAASG,IAAoBH,GAASK,IACzCQ,IAIJ,MAAMO,EAAkBC,YAAYR,EAAgB,KACpD,MAAO,IAAMS,cAAcF,KAC1B,CAACnO,EAASsN,EAAiBM,EAAgBV,EAAeE,EAAaL,IA2F1E,MAAO,CACLuB,eA1FmCxU,EAAAA,EAAAA,UAAQ,IACtCkG,EACDwN,EAAwBe,EAAAA,GAAAA,QACvBb,GAAmC,IAAtBpR,OAAOoR,GAElBa,EAAAA,GAAAA,SAF2CA,EAAAA,GAAAA,aAF7BA,EAAAA,GAAAA,SAKpB,CAACvO,EAAS0N,EAAWF,IAqFtBgB,SAnFc1E,EAAAA,EAAAA,cAAY+D,UAC1B,IAGE,IAAIY,EASJ,OAXAhB,GAAmB,GAIjBgB,EADE1B,QACG,OAAMG,QAAN,IAAMA,OAAN,EAAMA,EAAesB,QAAf,OAAuBlB,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAiB7U,QAASiW,EAAAA,GAAAA,mBAEvD,OAAMtB,QAAN,IAAMA,OAAN,EAAMA,EAAaoB,QAAb,OAAqBlB,QAArB,IAAqBA,OAArB,EAAqBA,EAAiB7U,QAASiW,EAAAA,GAAAA,aAG5D1B,EAAeyB,EAAI,CAAEE,QAAS,kBACxBF,EAAGG,OACFH,EACP,MAAOI,GACP,OAAOA,EAdT,QAgBEpB,GAAmB,MAEpB,CAACV,EAAOC,EAAgBE,EAAxB,OAAuCI,QAAvC,IAAuCA,OAAvC,EAAuCA,EAAiB7U,QAAS2U,IAiElER,MA/DW9C,EAAAA,EAAAA,cACX+D,MAAAA,IACE,UAAIiB,QAAJ,IAAIA,GAAAA,EAAQrT,MACV,IACE,MAAMgT,QAAK,OAAMnB,QAAN,IAAMA,OAAN,EAAMA,EAAiBV,KAAK5M,EAAtB,OAA+B8O,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAQrT,QAExD,OADAuR,EAAeyB,EAAI,CAAEE,QAAS,kBACvBF,EACP,MAAOI,GACP,OAAOA,KAIb,CAAC7O,EAASgN,EAAgBM,IAoD1ByB,QAjDajF,EAAAA,EAAAA,cACb+D,MAAAA,IACE,UAAIiB,QAAJ,IAAIA,GAAAA,EAAQrT,MACV,IACE,MAAMgT,QAAK,OAAMnB,QAAN,IAAMA,OAAN,EAAMA,EAAiByB,OAAO/O,EAAxB,OAAiC8O,QAAjC,IAAiCA,OAAjC,EAAiCA,EAAQrT,QAE1D,OADAuR,EAAeyB,EAAI,CAAEE,QAAS,kBACvBF,EACP,MAAOI,GACP,OAAOA,KAIb,CAAC7O,EAASgN,EAAgBM,IAsC1B0B,WAnCgBlF,EAAAA,EAAAA,cAChB+D,MAAAA,IACE,UAAIiB,QAAJ,IAAIA,GAAAA,EAAQrT,MACV,IACE,MAAMgT,QAAK,OAAMnB,QAAN,IAAMA,OAAN,EAAMA,EAAiB0B,UAAUhP,EAA3B,OAAoC8O,QAApC,IAAoCA,OAApC,EAAoCA,EAAQrT,QAE7D,OADAuR,EAAeyB,EAAI,CAAEE,QAAS,kBACvBF,EACP,MAAOI,GACP,OAAOA,KAIb,CAAC7O,EAASgN,EAAgBM,IAwB1B2B,aArBkBnF,EAAAA,EAAAA,cAClB+D,MAAAA,IACE,UAAIiB,QAAJ,IAAIA,GAAAA,EAAQrT,MACV,IACE,MAAMgT,QAAK,OAAMnB,QAAN,IAAMA,OAAN,EAAMA,EAAiB2B,YAAYjP,EAA7B,OAAsC8O,QAAtC,IAAsCA,OAAtC,EAAsCA,EAAQrT,QAE/D,OADAuR,EAAeyB,EAAI,CAAEE,QAAS,kBACvBF,EACP,MAAOI,GACP,OAAOA,KAIb,CAAC7O,EAASgN,EAAgBM,M,qkBCwB9B,MA1I8C,EAAG5B,aAAAA,MAAmB,QAClE,MAAM,WAAEvG,EAAYyH,KAAMsC,EAApB,OAA4BpD,GAAWJ,GACvC,KAAE7L,IAASC,EAAAA,EAAAA,OACX,EAACqP,EAAD,EAAaC,IAAiB1R,EAAAA,EAAAA,UAAS,CAC3C2N,eAAe,EACfgE,OAAQ,GACRlQ,MAAM,KAEF,QAAEa,EAAF,QAAWzH,IAAY0H,EAAAA,EAAAA,KACvBqP,GAAetD,EAAAA,EAAAA,IAAgBhM,EAASoM,EAAAA,GAAMjU,EAAAA,GAAAA,WAC9CoX,GAAgBvD,EAAAA,EAAAA,IAAgBhM,EAASqM,EAAAA,KACzC,cAAEiC,EAAF,QAAiBE,EAAjB,KAA0B5B,EAA1B,OAAgCmC,EAAhC,UAAwCC,EAAxC,YAAmDC,GAAgBO,EACvErK,EAAWsK,EAAMC,SAAWtD,EAAAA,GAAMjU,EAAAA,GAAAA,WAE9B4T,GAAUC,EAAAA,EAAAA,IAAgBhM,EAASmF,EAAWsK,EAAMC,QACpDC,GAAoBzD,EAAAA,EAAAA,IAAeJ,EAAO2D,EAAMC,OAAQvK,EAAWsK,EAAMC,QACzEE,GAAqB1D,EAAAA,EAAAA,IAAeJ,EAAO2D,EAAMI,QAAS1K,EAAWsK,EAAMI,SAE3EC,EAAa,KACjBV,GAAeW,GAAD,OACTA,GADS,IAEZ5Q,MAAM,OAmDJ6Q,GAAqBlW,EAAAA,EAAAA,UAAQ,IAC5BiS,EACL,OAAI4D,QAAJ,IAAIA,GAAAA,EAAmBM,YAAYlE,GAAiBlM,EAAKQ,EAAE,6BACvD,OAACsP,QAAD,IAACA,GAAAA,EAAmBM,YAAY,GAC7B,KADwCpQ,EAAKQ,EAAE,+BAFjCR,EAAKQ,EAAE,yBAI3B,CAAC0L,EAASlM,EAAM8P,IAEnB,OAAK3P,EAODzH,IAAYJ,EAAAA,GAAAA,UAEZ,SAACyS,EAAA,GAAD,CAAQzJ,QAASqN,EAAS3D,MAAM,WAAWqF,UAAU,EAArD,SACGrQ,EAAKQ,EAAE,oCAIViO,IAAkBC,EAAAA,GAAAA,SAElB,SAAC3D,EAAA,GAAD,CAAQC,MAAM,WAAWqF,UAAU,EAAnC,UACE,SAACC,EAAA,EAAD,UAAOtQ,EAAKQ,EAAE,sBAIhBiO,IAAkBC,EAAAA,GAAAA,cAElB,SAAC3D,EAAA,GAAD,CAAQzJ,QAASqN,EAAS3D,MAAM,WAAWqF,WAAYF,EAAvD,SACGA,GAAsBnQ,EAAKQ,EAAE,kBAIhCiO,IAAkBC,EAAAA,GAAAA,UAElB,iCACE,SAAC6B,EAAA,GAAD,CACEvR,OAAQsQ,EAAWhQ,KACnBL,UAAWgR,EACXzE,cAAe8D,EAAW9D,cAC1B7B,KAAM2F,EAAWE,OACjB/D,QAAS,KACP,SAAC,KAAD,CACE9O,MAAOqD,EAAKQ,EAAE,wBACdvB,UAAWgR,EACX7E,WAAY,KAAM,oBAClBD,cAAe,KAAM,sBAGzB/B,YAAapJ,EAAKQ,EAChB,+CAAesP,QAAf,IAAeA,OAAf,EAAeA,EAAmBnD,cAAc,EAAG,CAAEC,eAAgB,MAArE,YACEf,EAAavG,WAAWsK,EAAMC,cADhC,aACE,EAAsCnV,OADxC,SAEQqV,QAFR,IAEQA,OAFR,EAEQA,EAAoBpD,cAAc,EAAG,CAAEC,eAAgB,MAF/D,YAGEf,EAAavG,WAAWsK,EAAMI,eAHhC,aAGE,EAAuCtV,aAI7C,SAACqQ,EAAA,GAAD,CAAQzJ,QA1GO0M,UAAY,MAO/B,IAAIY,EACQ,QAaL,KApBPW,EAAc,CACZ/D,eAAe,EACflM,MAAM,EACNkQ,OAAQ,KAINH,IACsC,WAApC,UAAA/J,EAAWsK,EAAMC,cAAjB,eAAyBnV,UAC3BkU,QAAWO,EAAU,CACnBvT,OAAO4U,EAAAA,EAAAA,IAAWvE,EAAO2D,EAAMC,OAAQJ,EAAajX,SAAS+R,UAC7DA,SAAUkF,EAAajX,SAAS+R,YAGI,YAApC,UAAAjF,EAAWsK,EAAMC,cAAjB,eAAyBnV,UAC3BkU,QAAW7B,EAAK,CACdnR,OAAO4U,EAAAA,EAAAA,IAAWvE,EAAO2D,EAAMC,OAAQJ,EAAajX,SAAS+R,UAC7DA,SAAUmF,EAAclX,SAAS+R,cAII,WAArC,UAAAjF,EAAWsK,EAAMI,eAAjB,eAA0BtV,UAC5BkU,QAAWQ,EAAY,CACrBxT,OAAO4U,EAAAA,EAAAA,IAAWvE,EAAO2D,EAAMC,OAAQJ,EAAajX,SAAS+R,UAC7DA,SAAUmF,EAAclX,SAAS+R,YAGI,YAArC,UAAAjF,EAAWsK,EAAMI,eAAjB,eAA0BtV,UAC5BkU,QAAWM,EAAO,CAChBtT,OAAO4U,EAAAA,EAAAA,IAAWvE,EAAO2D,EAAMC,OAAQJ,EAAajX,SAAS+R,UAC7DA,SAAUmF,EAAclX,SAAS+R,aAKvC,UAAIqE,SAAJ,OAAI,EAAIjF,KACN4F,GAAeW,GAAD,OACTA,GADS,IAEZ1E,eAAe,EACfgE,OAAQZ,EAAGjF,SAGbsG,KA+DiCI,WAAYF,EAAoBnF,MAAM,WAArE,SACGmF,GAAsBnQ,EAAKQ,EAAE,0BAzBtC,GA1BI,SAACuK,EAAA,GAAD,CAAQzJ,QAASqN,EAAS3D,MAAM,WAAWqF,UAAU,EAArD,SACGrQ,EAAKQ,EAAE,6B,+lBCpFT,IAAKoP,EAqBG,SAASa,IAAU,QAChC,MAAM,KAAEzQ,IAASC,EAAAA,EAAAA,MACXyQ,GAAiBC,EAAAA,EAAAA,MAChBC,EAAkBC,GCrCZ,WACb,MAAMC,GAAmBC,EAAAA,EAAAA,OACnB,EAACC,EAAD,EAAQC,IAAYpT,EAAAA,EAAAA,UAAiC,CAACsQ,EAAAA,GAAAA,KAAe,KAAMA,EAAAA,GAAAA,KAAe,OAWhG,OATAE,EAAAA,EAAAA,YAAU,KACHyC,GACJ,WACC,MAAMI,QAAgBJ,EAAiBI,QAAQ1E,EAAAA,GAAAA,QAAgB,IAAI2E,YAAY3E,EAAAA,GAAAA,WAAkB,GAC3F4E,QAAiBN,EAAiBM,SAAS5E,EAAAA,GAAAA,QAAgB,IAAI2E,YAAY3E,EAAAA,GAAAA,WAAkB,GACnGyE,EAAS,CAACC,EAASE,KAHpB,KAKA,CAACN,IAEGE,EDwBsCK,IAEvC,EAACpF,EAAD,EAASqF,IAAazT,EAAAA,EAAAA,UAAS,CACnC0T,iBAAkB3B,EAAMC,MACxB,CAACD,EAAMC,OAAQ,GACf,CAACD,EAAMI,QAAS,MAGZ,EAAC1K,EAAD,EAAakM,IAAiB3T,EAAAA,EAAAA,UAAS,CAC3C,CAAC+R,EAAMC,OAAQtD,EAAAA,GAAMjU,EAAAA,GAAAA,UACrB,CAACsX,EAAMI,QAASyB,EAAAA,KAGZ1F,GAAc9B,EAAAA,EAAAA,cAClB+D,MAAOtB,EAAKd,KACV0F,GAAWpB,IACT,MAAMwB,EACJpM,EAAWsK,EAAMC,SAAWrD,EAAAA,GACxBoE,EAAiBe,KAAIC,EAAAA,EAAAA,IAAI,IACzBhB,EAAiBe,KAAIC,EAAAA,EAAAA,IAAI,IAAIC,QAAOD,EAAAA,EAAAA,IAAI,IAAKlB,EAAe7J,WAAWsK,YAAY,KACnFW,EACJxM,EAAWsK,EAAMI,UAAYxD,EAAAA,GACzBqE,EAAiBkB,KAAIH,EAAAA,EAAAA,IAAI,IACzBf,EAAiBgB,OAAOnB,EAAe7J,WAAWsK,YAAY,KAAKS,EAAAA,EAAAA,IAAI,KAAKG,KAAIH,EAAAA,EAAAA,IAAI,IAGjD,MAMhC,EAQgC,EAMhC,EArBT,OAAIhG,IAAUgE,EAAMC,MACdvK,EAAWsK,EAAMI,UAAYyB,EAAAA,GACxB,CACLF,iBAAkB3B,EAAMC,MACxB,CAACD,EAAMC,OAAQnD,GAAOwD,EAAUN,EAAMC,OACtC,CAACD,EAAMI,QAAP,UAAgB0B,EAAUG,QAAQnF,GAAOwD,EAAUN,EAAMC,QAAQsB,YAAY,KAAKS,EAAAA,EAAAA,IAAI,YAAtF,aAAgB,EAA4EI,QAAQ,KAG/F,CACLT,iBAAkB3B,EAAMC,MACxB,CAACD,EAAMC,OAAQnD,GAAOwD,EAAUN,EAAMC,OACtC,CAACD,EAAMI,QAAP,UAAgB8B,EAAWD,QAAQnF,GAAOwD,EAAUN,EAAMC,QAAQsB,YAAY,KAAKS,EAAAA,EAAAA,IAAI,YAAvF,aAAgB,EAA6EI,QAAQ,KAIrG1M,EAAWsK,EAAMI,UAAYyB,EAAAA,GACxB,CACLF,iBAAkB3B,EAAMI,OACxB,CAACJ,EAAMC,OAAP,WAAgBnD,GAAOwD,EAAUN,EAAMI,SAASmB,YAAY,IAAIU,QAAOD,EAAAA,EAAAA,IAAI,IAAKF,UAAhF,aAAe,EAA6EM,QAAQ,IACpG,CAACpC,EAAMI,QAAStD,GAAOwD,EAAUN,EAAMI,SAGlC,CACLuB,iBAAkB3B,EAAMI,OACxB,CAACJ,EAAMC,OAAP,WAAgBnD,GAAOwD,EAAUN,EAAMI,SAASmB,YAAY,IAAIU,QAAOD,EAAAA,EAAAA,IAAI,IAAKE,UAAhF,aAAe,EAA8EE,QAAQ,IACrG,CAACpC,EAAMI,QAAStD,GAAOwD,EAAUN,EAAMI,cAMjD,CAAC1K,EAAYsL,EAAkBF,EAAgBG,IAG3C7E,GAAc/B,EAAAA,EAAAA,cAAY,CAACzR,EAAoBoT,KACnD4F,GAAetB,GAAD,EAAC,KACVA,GADS,IAEZ,CAACtE,GAAQpT,QAEV,KAEH6V,EAAAA,EAAAA,YAAU,KACRtC,EAAY,KAAME,EAAOsF,oBACxB,CAACtF,EAAOsF,iBAAkBxF,IAE7B,MAAMiB,GAAmB/C,EAAAA,EAAAA,cAAY,KACnCuH,GAAetB,IAAD,CACZ,CAACN,EAAMC,OAAQK,EAAUN,EAAMI,QAC/B,CAACJ,EAAMI,QAASE,EAAUN,EAAMC,aAEjC,IAEGhE,GAAe5R,EAAAA,EAAAA,UACnB,iBAAO,CACLqL,WAAAA,EACA0G,YAAAA,EACAgB,iBAAAA,EACAf,OAAAA,EACAc,KAA2C,UAArC,UAAAzH,EAAWsK,EAAMI,eAAjB,eAA0BtV,QAChCqR,YAAAA,KAEF,CAACzG,EAAY2G,EAAQF,EAAaC,EAAagB,IAGjD,OACE,UAACiF,EAAA,EAAD,CAAWnR,GAAG,eAAerJ,UAAU,wBAAwBS,SAAS,MAAxE,WACE,UAAC,UAAD,YACE,gDACA,iBAAwBiK,KAAK,cAAcsJ,QAAQ,wBAAzC,mBAGZ,iBAAKhU,UAAU,6FAAf,WACE,gBAAKA,UAAU,gCAAf,UACE,SAAC,UAAD,CAAOkD,IAAI,gBAAgBF,IAAI,WAAWF,MAAM,QAAQC,OAAO,aAGjE,iBAAK/C,UAAU,0FAAf,WACE,SAAC,MAAD,CAAuB8C,MAAO,GAAIC,OAAQ,GAAIwQ,MAAM,UACpD,SAACtK,EAAA,EAAD,CAAYC,QAAQ,KAAKC,OAAQ,IAAjC,SACGZ,EAAKQ,EAAE,sIAKd,iBAAK/I,UAAU,uFAAf,WACE,SAAC,EAAD,CAAcoU,aAAcA,KAC5B,SAAC,EAAD,CAAoBD,MAAOgE,EAAMC,MAAO/D,SAAS,EAAMD,aAAcA,KACrE,iBAAKpU,UAAU,6DAAf,WACE,gBACEA,UAAU,mFACV6J,QAAS0L,EAFX,UAIE,SAAC,MAAD,CAAezS,MAAO,GAAIC,OAAQ,QAEpC,UAACkG,EAAA,EAAD,CAAYC,QAAQ,KAAKlJ,UAAU,2BAAnC,oBACG6N,EAAWsK,EAAMC,cADpB,aACG,EAAyBnV,OAD5B,UACsC,KAClC4K,EAAWsK,EAAMC,SAAWtD,EAAAA,GAAMjU,EAAAA,GAAAA,WAClCgN,EAAWsK,EAAMI,UAAYzD,EAAAA,GAAMjU,EAAAA,GAAAA,YACnC,kBAJJ,UAKGgN,EAAWsK,EAAMI,eALpB,aAKG,EAA0BtV,cAG/B,SAAC,EAAD,CAAoBkR,MAAOgE,EAAMI,OAAQlE,SAAS,EAAOD,aAAcA,KACvE,SAAC,EAAD,CAAeA,aAAcA,W,SAxJzB+D,GAAAA,EAAAA,MAAAA,QAAAA,EAAAA,OAAAA,S,CAAAA,IAAAA,EAAAA,KA8JZa,EAAQyB,OAAQC,EAAAA,EAAAA,GAAa,CAAC7Z,EAAAA,GAAAA,Y,uBEhLzBgD,OAAO8W,SAAW9W,OAAO8W,UAAY,IAAIzZ,KAAK,CAC7C,iBACA,WACE,OAAO,EAAQ,Y","sources":["webpack://_N_E/./src/components/CloseIcon/index.tsx","webpack://_N_E/./src/components/Container/index.tsx","webpack://_N_E/./src/components/CurrencyLogo/index.tsx","webpack://_N_E/./src/components/Image/index.tsx","webpack://_N_E/./src/components/Input/Address/index.tsx","webpack://_N_E/./src/components/Input/Numeric/index.tsx","webpack://_N_E/./src/components/Input/Percent/index.tsx","webpack://_N_E/./src/components/Input/index.tsx","webpack://_N_E/./src/components/Logo/index.tsx","webpack://_N_E/./src/components/Row/index.tsx","webpack://_N_E/./src/functions/cloudinary.ts","webpack://_N_E/./src/components/Modal/HeadlessUIModal.tsx","webpack://_N_E/./src/guards/Network/index.tsx","webpack://_N_E/./src/hooks/useENS.ts","webpack://_N_E/./src/hooks/useENSAddress.ts","webpack://_N_E/./src/hooks/useHttpLocations.ts","webpack://_N_E/./src/hooks/useENSContentHash.ts","webpack://_N_E/./src/hooks/useUSDCPrice.ts","webpack://_N_E/./src/hooks/useV2Pairs.ts","webpack://_N_E/./src/hooks/useV2Trades.ts","webpack://_N_E/./src/hooks/useAllCurrencyCombinations.ts","webpack://_N_E/./src/modals/TransactionConfirmationModal/index.tsx","webpack://_N_E/./src/hooks/useAddTokenToMetaMask.ts","webpack://_N_E/./src/features/meowshi/CurrencyInputPanel.tsx","webpack://_N_E/./src/features/meowshi/HeaderToggle.tsx","webpack://_N_E/./src/hooks/useMeowshi.ts","webpack://_N_E/./src/features/meowshi/MeowshiButton.tsx","webpack://_N_E/./src/pages/tools/meowshi.tsx","webpack://_N_E/./src/hooks/useMeowshiPerXSushi.ts","webpack://_N_E/?84a5"],"sourcesContent":["import { X } from 'react-feather'\n\nconst CloseIcon = (props) => \n\nexport default CloseIcon\n","import { classNames } from '../../functions'\n\nconst MAX_WIDTH = {\n full: 'max-w-full',\n '7xl': 'max-w-7xl',\n '6xl': 'max-w-6xl',\n '5xl': 'max-w-5xl',\n '4xl': 'max-w-4xl',\n '3xl': 'max-w-3xl',\n '2xl': 'max-w-2xl',\n xl: 'max-w-xl',\n lg: 'max-w-lg',\n md: 'max-w-md',\n sm: 'max-w-sm',\n xs: 'max-w-xs',\n}\n\nconst Container = ({ children, maxWidth = '2xl', className = '', ...rest }) => (\n
\n {children}\n
\n)\n\nexport default Container\n","import { ChainId, Currency, WNATIVE } from '@sushiswap/core-sdk'\nimport React, { FunctionComponent, useMemo } from 'react'\n\nimport Logo from '../Logo'\nimport { WrappedTokenInfo } from '../../state/lists/wrappedTokenInfo'\nimport useHttpLocations from '../../hooks/useHttpLocations'\n\nconst BLOCKCHAIN = {\n [ChainId.ETHEREUM]: 'ethereum',\n [ChainId.BSC]: 'binanace',\n [ChainId.CELO]: 'celo',\n [ChainId.FANTOM]: 'fantom',\n [ChainId.HARMONY]: 'harmony',\n [ChainId.MATIC]: 'polygon',\n [ChainId.XDAI]: 'xdai',\n // [ChainId.OKEX]: 'okex',\n [ChainId.MOONRIVER]: 'moonriver',\n [ChainId.TELOS]: 'telos',\n}\n\nfunction getCurrencySymbol(currency) {\n if (currency.symbol.replace('/e', '') === 'WBTC') {\n return 'btc'\n }\n if (currency.symbol.replace('/e', '') === 'WETH') {\n return 'eth'\n }\n\n if (currency.symbol === 'WMOVR') {\n return 'movr'\n }\n\n if (currency.chainId === ChainId.AVALANCHE) {\n return currency.symbol.replace('/e', '').toLowerCase()\n }\n\n return currency.symbol.toLowerCase()\n}\n\nexport function getCurrencyLogoUrls(currency) {\n const urls = []\n\n if (currency.chainId in BLOCKCHAIN) {\n urls.push(\n `https://raw.githubusercontent.com/sushiswap/logos/main/network/${BLOCKCHAIN[currency.chainId]}/${\n currency.address\n }.jpg`\n )\n urls.push(\n `https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/${BLOCKCHAIN[currency.chainId]}/assets/${\n currency.address\n }/logo.png`\n )\n urls.push(\n `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/${BLOCKCHAIN[currency.chainId]}/assets/${\n currency.address\n }/logo.png`\n )\n }\n\n return urls\n}\n\nconst AvalancheLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/avax.jpg'\nconst BinanceCoinLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/bnb.jpg'\nconst EthereumLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/eth.jpg'\nconst FantomLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/ftm.jpg'\nconst HarmonyLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/one.jpg'\nconst HecoLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/heco.jpg'\nconst MaticLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/polygon.jpg'\nconst MoonbeamLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/eth.jpg'\nconst OKExLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/okt.jpg'\nconst xDaiLogo =\n 'https://raw.githubusercontent.com/sushiswap/assets/master/blockchains/xdai/assets/0xe91D153E0b41518A2Ce8Dd3D7944Fa863463a97d/logo.png'\nconst CeloLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/celo.jpg'\nconst PalmLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/palm.jpg'\nconst MovrLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/movr.jpg'\nconst FuseLogo = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/fuse.jpg'\nconst TelosLogo =\n 'https://raw.githubusercontent.com/sushiswap/logos/main/network/telos/0xD102cE6A4dB07D247fcc28F366A623Df0938CA9E.jpg'\n\nconst LOGO: { readonly [chainId in ChainId]?: string } = {\n [ChainId.ETHEREUM]: EthereumLogo,\n [ChainId.FANTOM]: FantomLogo,\n [ChainId.FANTOM_TESTNET]: FantomLogo,\n [ChainId.MATIC]: MaticLogo,\n [ChainId.MATIC_TESTNET]: MaticLogo,\n [ChainId.XDAI]: xDaiLogo,\n [ChainId.BSC]: BinanceCoinLogo,\n [ChainId.BSC_TESTNET]: BinanceCoinLogo,\n [ChainId.MOONBEAM_TESTNET]: MoonbeamLogo,\n [ChainId.AVALANCHE]: AvalancheLogo,\n [ChainId.AVALANCHE_TESTNET]: AvalancheLogo,\n [ChainId.HECO]: HecoLogo,\n [ChainId.HECO_TESTNET]: HecoLogo,\n [ChainId.HARMONY]: HarmonyLogo,\n [ChainId.HARMONY_TESTNET]: HarmonyLogo,\n [ChainId.OKEX]: OKExLogo,\n [ChainId.OKEX_TESTNET]: OKExLogo,\n [ChainId.ARBITRUM]: EthereumLogo,\n [ChainId.ARBITRUM_TESTNET]: EthereumLogo,\n [ChainId.CELO]: CeloLogo,\n [ChainId.PALM]: PalmLogo,\n [ChainId.PALM_TESTNET]: PalmLogo,\n [ChainId.MOONRIVER]: MovrLogo,\n [ChainId.FUSE]: FuseLogo,\n [ChainId.TELOS]: TelosLogo,\n}\n\ninterface CurrencyLogoProps {\n currency?: Currency\n size?: string | number\n style?: React.CSSProperties\n className?: string\n squared?: boolean\n}\n\nconst unknown = 'https://raw.githubusercontent.com/sushiswap/icons/master/token/unknown.png'\n\nconst CurrencyLogo: FunctionComponent = ({\n currency,\n size = '24px',\n style,\n className = '',\n ...rest\n}) => {\n const uriLocations = useHttpLocations(\n currency instanceof WrappedTokenInfo ? currency.logoURI || currency.tokenInfo.logoURI : undefined\n )\n\n const srcs = useMemo(() => {\n if (!currency) {\n return [unknown]\n }\n\n if (currency.isNative || currency.equals(WNATIVE[currency.chainId])) {\n return [LOGO[currency.chainId], unknown]\n }\n\n if (currency.isToken) {\n const defaultUrls = [...getCurrencyLogoUrls(currency)]\n if (currency instanceof WrappedTokenInfo) {\n return [...defaultUrls, ...uriLocations, unknown]\n }\n return defaultUrls\n }\n }, [currency, uriLocations])\n\n return \n}\n\nexport default CurrencyLogo\n","import NextImage from 'next/image'\nimport { cloudinaryLoader } from '../../functions/cloudinary'\n\n// Cloudflare Loader\nconst normalize = (src) => {\n return src[0] === '/' ? src.slice(1) : src\n}\n\nconst cloudFlareLoader = ({ src, width, quality }) => {\n const params = [`width=${width}`]\n if (quality) {\n params.push(`quality=${quality}`)\n }\n const paramsString = params.join(',')\n return `/cdn-cgi/image/${paramsString}/${normalize(src)}`\n}\n\nconst shimmer = (w, h) => `\n\n \n \n \n \n \n \n \n \n \n \n`\n\nconst toBase64 = (str) => (typeof window === 'undefined' ? Buffer.from(str).toString('base64') : window.btoa(str))\n\nconst Image = ({\n src,\n width = undefined,\n height = undefined,\n layout = undefined,\n loader = undefined,\n style = undefined,\n ...rest\n}) => {\n const useBlur = parseInt(String(height), 10) >= 40 && parseInt(String(width), 10) >= 40\n return (\n
\n {useBlur ? (\n \n ) : (\n \n )}\n
\n )\n}\n\nexport default Image\n","import { classNames, escapeRegExp } from '../../../functions'\n\nimport React from 'react'\nimport useENS from '../../../hooks/useENS'\n\nconst inputRegex = RegExp(`^\\\\d*$`) // match escaped \".\" characters via in a non-capturing group\n\nexport const AddressInput = React.memo(\n ({\n value,\n onUserInput,\n placeholder,\n className = 'flex w-full h-full p-3 font-bold rounded overflow-ellipsis recipient-address-input bg-dark-900 placeholder-low-emphesis',\n align,\n fontSize = '24px',\n ...rest\n }: {\n value: string\n onUserInput: (input: string) => void\n error?: boolean\n fontSize?: string\n align?: 'right' | 'left'\n } & Omit, 'ref' | 'onChange' | 'as'>) => {\n const { address, loading } = useENS(value)\n\n const enforcer = (nextUserInput: string) => {\n if (nextUserInput === '' || inputRegex.test(escapeRegExp(nextUserInput))) {\n if (Number(nextUserInput) <= 100) {\n onUserInput(nextUserInput)\n }\n }\n }\n\n return (\n <>\n {\n enforcer(event.target.value.replace(/\\s+/g, ''))\n }}\n // universal input options\n inputMode=\"text\"\n title=\"Wallet Address or ENS name\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n autoCapitalize=\"off\"\n spellCheck=\"false\"\n placeholder=\"Wallet Address or ENS name\"\n pattern=\"^(0x[a-fA-F0-9]{40})$\"\n // text-specific options\n type=\"text\"\n className={classNames(\n align === 'right' && 'text-right',\n 'font-medium bg-transparent whitespace-nowrap overflow-ellipsis flex-auto',\n className\n )}\n style={{ fontSize }}\n {...rest}\n />\n \n )\n }\n)\n\nAddressInput.displayName = 'AddressInput'\n\nexport default AddressInput\n\n// const inputRegex = RegExp(`^\\\\d*(?:\\\\\\\\[.])?\\\\d*$`) // match escaped \".\" characters via in a non-capturing group\n","import { classNames, escapeRegExp } from '../../../functions'\n\nimport React from 'react'\n\nconst inputRegex = RegExp(`^\\\\d*(?:\\\\\\\\[.])?\\\\d*$`) // match escaped \".\" characters via in a non-capturing group\n\nconst defaultClassName = 'w-0 p-0 text-2xl bg-transparent'\n\nexport const Input = React.memo(\n ({\n value,\n onUserInput,\n placeholder,\n className = defaultClassName,\n ...rest\n }: {\n value: string | number\n onUserInput: (input: string) => void\n error?: boolean\n fontSize?: string\n align?: 'right' | 'left'\n } & Omit, 'ref' | 'onChange' | 'as'>) => {\n const enforcer = (nextUserInput: string) => {\n if (nextUserInput === '' || inputRegex.test(escapeRegExp(nextUserInput))) {\n onUserInput(nextUserInput)\n }\n }\n\n return (\n {\n // replace commas with periods, because uniswap exclusively uses period as the decimal separator\n enforcer(event.target.value.replace(/,/g, '.'))\n }}\n // universal input options\n inputMode=\"decimal\"\n title=\"Token Amount\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n // text-specific options\n type=\"text\"\n pattern=\"^[0-9]*[.,]?[0-9]*$\"\n placeholder={placeholder || '0.0'}\n min={0}\n minLength={1}\n maxLength={79}\n spellCheck=\"false\"\n className={classNames(\n 'relative font-bold outline-none border-none flex-auto overflow-hidden overflow-ellipsis placeholder-low-emphesis focus:placeholder-primary',\n className\n )}\n />\n )\n }\n)\n\nInput.displayName = 'NumericalInput'\n\nexport default Input\n\n// const inputRegex = RegExp(`^\\\\d*(?:\\\\\\\\[.])?\\\\d*$`) // match escaped \".\" characters via in a non-capturing group\n","import { classNames, escapeRegExp } from '../../../functions'\n\nimport React from 'react'\n\nconst inputRegex = RegExp(`^\\\\d*$`) // match escaped \".\" characters via in a non-capturing group\n\nexport const Input = React.memo(\n ({\n value,\n onUserInput,\n placeholder,\n className,\n align,\n fontSize = '24px',\n ...rest\n }: {\n value: string | number\n onUserInput: (input: string) => void\n error?: boolean\n fontSize?: string\n align?: 'right' | 'left'\n } & Omit, 'ref' | 'onChange' | 'as'>) => {\n const enforcer = (nextUserInput: string) => {\n if (nextUserInput === '' || inputRegex.test(escapeRegExp(nextUserInput))) {\n if (Number(nextUserInput) <= 100) {\n onUserInput(nextUserInput)\n }\n }\n }\n\n return (\n <>\n {\n // replace commas with periods, because uniswap exclusively uses period as the decimal separator\n enforcer(event.target.value.replace(/,/g, '.').replace(/%/g, ''))\n }}\n // universal input options\n inputMode=\"decimal\"\n title=\"Token Amount\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n // text-specific options\n type=\"text\"\n pattern=\"^[0-9]*$\"\n placeholder={placeholder || '100'}\n maxLength={3}\n className={classNames(\n align === 'right' && 'text-right',\n 'font-medium bg-transparent whitespace-nowrap overflow-ellipsis flex-auto',\n className\n )}\n style={{ fontSize }}\n {...rest}\n />\n \n )\n }\n)\n\nInput.displayName = 'PercentInput'\n\nexport default Input\n","import Address from './Address'\nimport Numeric from './Numeric'\nimport Percent from './Percent'\n\nconst Input = {\n Address,\n Percent,\n Numeric,\n}\n\nexport default Input\n","import React, { FC, useState } from 'react'\n\nimport { IconProps } from 'react-feather'\nimport Image from '../Image'\nimport { classNames } from '../../functions'\nimport { cloudinaryLoader } from '../../functions/cloudinary'\n\nconst BAD_SRCS: { [tokenAddress: string]: true } = {}\n\nexport type LogoProps = {\n srcs: string[]\n width: string | number\n height: string | number\n alt?: string\n} & IconProps\n\n/**\n * Renders an image by sequentially trying a list of URIs, and then eventually a fallback triangle alert\n */\nconst Logo: FC = ({ srcs, width, height, style, alt = '', className, ...rest }) => {\n const [, refresh] = useState(0)\n const src = srcs.find((src) => !BAD_SRCS[src])\n return (\n
\n {\n if (src) BAD_SRCS[src] = true\n refresh((i) => i + 1)\n }}\n width={width}\n height={height}\n alt={alt}\n layout=\"fixed\"\n className={classNames('rounded', className)}\n {...rest}\n />\n
\n )\n}\n\nexport default Logo\n","import React, { FC } from 'react'\n\nimport { classNames } from '../../functions'\nimport styled from 'styled-components'\n\ninterface RowProps {\n width?: string\n align?: string\n justify?: string\n padding?: string\n border?: string\n borderRadius?: string\n}\n\nexport const Row: FC & RowProps> = ({\n children,\n className,\n width,\n align,\n justify,\n padding,\n border,\n borderRadius,\n ...rest\n}) => (\n \n {children}\n \n)\n\nexport const RowBetween = styled(Row)`\n justify-content: space-between;\n`\n\nexport const RowFlat = styled.div`\n display: flex;\n align-items: flex-end;\n`\n\nexport const AutoRow = styled(Row)<{ gap?: string; justify?: string }>`\n flex-wrap: wrap;\n margin: ${({ gap }) => gap && `-${gap}`};\n justify-content: ${({ justify }) => justify && justify};\n\n & > * {\n margin: ${({ gap }) => gap} !important;\n }\n`\n\nexport const RowFixed = styled(Row)<{ gap?: string; justify?: string }>`\n width: fit-content;\n margin: ${({ gap }) => gap && `-${gap}`};\n`\n\nexport default Row\n","const normalize = (src) => {\n return src[0] === '/' ? src.slice(1) : src\n}\n\nexport const cloudinaryLoader = ({ src, width }) => {\n return `https://res.cloudinary.com/sushi-cdn/image/fetch/w_${width}/${normalize(src)}`\n}\n","import { FC } from 'react'\nimport React, { Fragment } from 'react'\nimport { Dialog, Transition } from '@headlessui/react'\n\ninterface ModalProps {\n isOpen: boolean\n onDismiss: () => void\n children?: React.ReactNode\n}\n\nconst HeadlessUIModal: FC = ({ isOpen, onDismiss, children }) => {\n return (\n \n \n
\n \n \n
\n
\n \n \n\n {/* This element is to trick the browser into centering the modal contents. */}\n \n ​\n \n\n \n
\n {children}\n
\n \n
\n
\n
\n )\n}\n\nexport default HeadlessUIModal\n","import { NETWORK_ICON, NETWORK_LABEL } from '../../config/networks'\nimport React, { FC, Fragment } from 'react'\nimport { Trans, useLingui } from '@lingui/react'\nimport { ChainId } from '@sushiswap/core-sdk'\nimport HeadlessUIModal from '../../components/Modal/HeadlessUIModal'\nimport Image from 'next/image'\nimport NavLink from '../../components/NavLink'\nimport { SUPPORTED_NETWORKS } from '../../modals/NetworkModal'\nimport Typography from '../../components/Typography'\nimport cookie from 'cookie-cutter'\nimport { t } from '@lingui/macro'\nimport { useActiveWeb3React } from '../../services/web3'\n\ninterface NetworkGuardProps {\n networks: ChainId[]\n}\n\nconst Component: FC = ({ children, networks = [] }) => {\n const { i18n } = useLingui()\n const { chainId, library, account } = useActiveWeb3React()\n\n const link = (\n \n {i18n._(t`home page`)}\n \n )\n\n return (\n <>\n null}>\n
\n \n {i18n._(t`Roll it back - this feature is not yet supported on ${NETWORK_LABEL[chainId]}.`)}\n \n \n \n \n \n {i18n._(t`Available Networks`)}\n \n \n {networks.map((key: ChainId, idx: number) => (\n {\n const params = SUPPORTED_NETWORKS[key]\n cookie.set('chainId', key)\n if (key === ChainId.ETHEREUM) {\n library?.send('wallet_switchEthereumChain', [{ chainId: '0x1' }, account])\n } else {\n library?.send('wallet_addEthereumChain', [params, account])\n }\n }}\n >\n
\n \n
\n {NETWORK_LABEL[key]}\n \n ))}\n
\n \n
\n {children}\n \n )\n}\n\nconst NetworkGuard = (networks: ChainId[]) => {\n return ({ children }) => {children}\n}\n\nexport default NetworkGuard\n","import { isAddress } from '../functions/validate'\nimport useENSAddress from './useENSAddress'\nimport useENSName from './useENSName'\n\n/**\n * Given a name or address, does a lookup to resolve to an address and name\n * @param nameOrAddress ENS name or address\n */\nexport default function useENS(nameOrAddress?: string | null): {\n loading: boolean\n address: string | null\n name: string | null\n} {\n const validated = isAddress(nameOrAddress)\n const reverseLookup = useENSName(validated ? validated : undefined)\n const lookup = useENSAddress(nameOrAddress)\n\n return {\n loading: reverseLookup.loading || lookup.loading,\n address: validated ? validated : lookup.address,\n name: reverseLookup.ENSName ? reverseLookup.ENSName : !validated && lookup.address ? nameOrAddress || null : null,\n }\n}\n","import { useENSRegistrarContract, useENSResolverContract } from './useContract'\n\nimport { isZero } from '../functions'\nimport { namehash } from '@ethersproject/hash'\nimport useDebounce from './useDebounce'\nimport { useMemo } from 'react'\nimport { useSingleCallResult } from '../state/multicall/hooks'\n\n/**\n * Does a lookup for an ENS name to find its address.\n */\nexport default function useENSAddress(ensName?: string | null): {\n loading: boolean\n address: string | null\n} {\n const debouncedName = useDebounce(ensName, 200)\n const ensNodeArgument = useMemo(() => {\n if (!debouncedName) return [undefined]\n try {\n return debouncedName ? [namehash(debouncedName)] : [undefined]\n } catch (error) {\n return [undefined]\n }\n }, [debouncedName])\n const registrarContract = useENSRegistrarContract(false)\n const resolverAddress = useSingleCallResult(registrarContract, 'resolver', ensNodeArgument)\n const resolverAddressResult = resolverAddress.result?.[0]\n const resolverContract = useENSResolverContract(\n resolverAddressResult && !isZero(resolverAddressResult) ? resolverAddressResult : undefined,\n false\n )\n const addr = useSingleCallResult(resolverContract, 'addr', ensNodeArgument)\n\n const changed = debouncedName !== ensName\n return {\n address: changed ? null : addr.result?.[0] ?? null,\n loading: changed || resolverAddress.loading || addr.loading,\n }\n}\n","import { contenthashToUri, uriToHttp } from '../functions/convert'\n\nimport { parseENSAddress } from '../functions/ens'\nimport useENSContentHash from './useENSContentHash'\nimport { useMemo } from 'react'\n\nexport default function useHttpLocations(uri: string | undefined): string[] {\n const ens = useMemo(() => (uri ? parseENSAddress(uri) : undefined), [uri])\n const resolvedContentHash = useENSContentHash(ens?.ensName)\n return useMemo(() => {\n if (ens) {\n return resolvedContentHash.contenthash ? uriToHttp(contenthashToUri(resolvedContentHash.contenthash)) : []\n } else {\n return uri ? uriToHttp(uri) : []\n }\n }, [ens, resolvedContentHash.contenthash, uri])\n}\n","import { useENSRegistrarContract, useENSResolverContract } from './useContract'\n\nimport { isZero } from '../functions'\nimport { namehash } from '@ethersproject/hash'\nimport { useMemo } from 'react'\nimport { useSingleCallResult } from '../state/multicall/hooks'\n\n/**\n * Does a lookup for an ENS name to find its contenthash.\n */\nexport default function useENSContentHash(ensName?: string | null): {\n loading: boolean\n contenthash: string | null\n} {\n const ensNodeArgument = useMemo(() => {\n if (!ensName) return [undefined]\n try {\n return ensName ? [namehash(ensName)] : [undefined]\n } catch (error) {\n return [undefined]\n }\n }, [ensName])\n const registrarContract = useENSRegistrarContract(false)\n const resolverAddressResult = useSingleCallResult(registrarContract, 'resolver', ensNodeArgument)\n const resolverAddress = resolverAddressResult.result?.[0]\n const resolverContract = useENSResolverContract(\n resolverAddress && isZero(resolverAddress) ? undefined : resolverAddress,\n false\n )\n const contenthash = useSingleCallResult(resolverContract, 'contenthash', ensNodeArgument)\n\n return {\n contenthash: contenthash.result?.[0] ?? null,\n loading: resolverAddressResult.loading || contenthash.loading,\n }\n}\n","import { ChainId, Currency, CurrencyAmount, Price, Token, USD } from '@sushiswap/core-sdk'\n\nimport { useActiveWeb3React } from '../services/web3'\nimport { useMemo } from 'react'\nimport { useV2TradeExactOut } from './useV2Trades'\n\n// import { wrappedCurrency } from \"../functions/currency/wrappedCurrency\";\n\n// Stablecoin amounts used when calculating spot price for a given currency.\n// The amount is large enough to filter low liquidity pairs.\nconst STABLECOIN_AMOUNT_OUT: { [chainId: number]: CurrencyAmount } = {\n [ChainId.ETHEREUM]: CurrencyAmount.fromRawAmount(USD[ChainId.ETHEREUM], 100_000e6),\n [ChainId.ROPSTEN]: CurrencyAmount.fromRawAmount(USD[ChainId.ROPSTEN], 100_000e6),\n [ChainId.KOVAN]: CurrencyAmount.fromRawAmount(USD[ChainId.KOVAN], 100_000e6),\n [ChainId.MATIC]: CurrencyAmount.fromRawAmount(USD[ChainId.MATIC], 100_000e6),\n [ChainId.FANTOM]: CurrencyAmount.fromRawAmount(USD[ChainId.FANTOM], 100_000e6),\n [ChainId.BSC]: CurrencyAmount.fromRawAmount(USD[ChainId.BSC], 100_000e18),\n [ChainId.HARMONY]: CurrencyAmount.fromRawAmount(USD[ChainId.HARMONY], 100_000e6),\n [ChainId.HECO]: CurrencyAmount.fromRawAmount(USD[ChainId.HECO], 100_000e6),\n [ChainId.OKEX]: CurrencyAmount.fromRawAmount(USD[ChainId.OKEX], 100_000e18),\n [ChainId.XDAI]: CurrencyAmount.fromRawAmount(USD[ChainId.XDAI], 100_000e6),\n [ChainId.ARBITRUM]: CurrencyAmount.fromRawAmount(USD[ChainId.ARBITRUM], 100_000e6),\n [ChainId.CELO]: CurrencyAmount.fromRawAmount(USD[ChainId.CELO], 100_000e18),\n [ChainId.MOONRIVER]: CurrencyAmount.fromRawAmount(USD[ChainId.MOONRIVER], 100_000e6),\n}\n\n/**\n * Returns the price in USDC of the input currency\n * @param currency currency to compute the USDC price of\n */\nexport default function useUSDCPrice(currency?: Currency): Price | undefined {\n const { chainId } = useActiveWeb3React()\n\n const amountOut = chainId ? STABLECOIN_AMOUNT_OUT[chainId] : undefined\n const stablecoin = amountOut?.currency\n\n const v2USDCTrade = useV2TradeExactOut(currency, amountOut, {\n maxHops: 3,\n })\n\n return useMemo(() => {\n if (!currency || !stablecoin) {\n return undefined\n }\n\n // handle usdc\n if (currency?.wrapped.equals(stablecoin)) {\n return new Price(stablecoin, stablecoin, '1', '1')\n }\n\n // use v2 price if available\n if (v2USDCTrade) {\n const { numerator, denominator } = v2USDCTrade.route.midPrice\n return new Price(currency, stablecoin, denominator, numerator)\n }\n\n return undefined\n }, [currency, stablecoin, v2USDCTrade])\n}\n\nexport function useUSDCValue(currencyAmount: CurrencyAmount | undefined | null) {\n const price = useUSDCPrice(currencyAmount?.currency)\n\n return useMemo(() => {\n if (!price || !currencyAmount) return null\n try {\n return price.quote(currencyAmount)\n } catch (error) {\n return null\n }\n }, [currencyAmount, price])\n}\n","import { Currency, CurrencyAmount, FACTORY_ADDRESS, Pair, computePairAddress } from '@sushiswap/core-sdk'\n\nimport IUniswapV2PairABI from '@sushiswap/core/abi/IUniswapV2Pair.json'\nimport { Interface } from '@ethersproject/abi'\nimport { useMemo } from 'react'\nimport { useMultipleContractSingleData } from '../state/multicall/hooks'\n\nconst PAIR_INTERFACE = new Interface(IUniswapV2PairABI)\n\nexport enum PairState {\n LOADING,\n NOT_EXISTS,\n EXISTS,\n INVALID,\n}\n\nexport function useV2Pairs(currencies: [Currency | undefined, Currency | undefined][]): [PairState, Pair | null][] {\n const tokens = useMemo(\n () => currencies.map(([currencyA, currencyB]) => [currencyA?.wrapped, currencyB?.wrapped]),\n [currencies]\n )\n\n const pairAddresses = useMemo(\n () =>\n tokens.map(([tokenA, tokenB]) => {\n return tokenA &&\n tokenB &&\n tokenA.chainId === tokenB.chainId &&\n !tokenA.equals(tokenB) &&\n FACTORY_ADDRESS[tokenA.chainId]\n ? computePairAddress({\n factoryAddress: FACTORY_ADDRESS[tokenA.chainId],\n tokenA,\n tokenB,\n })\n : undefined\n }),\n [tokens]\n )\n\n const results = useMultipleContractSingleData(pairAddresses, PAIR_INTERFACE, 'getReserves')\n\n return useMemo(() => {\n return results.map((result, i) => {\n const { result: reserves, loading } = result\n const tokenA = tokens[i][0]\n const tokenB = tokens[i][1]\n if (loading) return [PairState.LOADING, null]\n if (!tokenA || !tokenB || tokenA.equals(tokenB)) return [PairState.INVALID, null]\n if (!reserves) return [PairState.NOT_EXISTS, null]\n const { reserve0, reserve1 } = reserves\n const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA]\n return [\n PairState.EXISTS,\n new Pair(\n CurrencyAmount.fromRawAmount(token0, reserve0.toString()),\n CurrencyAmount.fromRawAmount(token1, reserve1.toString())\n ),\n ]\n })\n }, [results, tokens])\n}\n\nexport function useV2Pair(tokenA?: Currency, tokenB?: Currency): [PairState, Pair | null] {\n const inputs: [[Currency | undefined, Currency | undefined]] = useMemo(() => [[tokenA, tokenB]], [tokenA, tokenB])\n return useV2Pairs(inputs)[0]\n}\n","import { Currency, CurrencyAmount, Pair, Trade, TradeType } from '@sushiswap/core-sdk'\nimport { PairState, useV2Pairs } from './useV2Pairs'\n\nimport { BETTER_TRADE_LESS_HOPS_THRESHOLD } from '../constants'\nimport { isTradeBetter } from '../functions/trade'\nimport { useAllCurrencyCombinations } from './useAllCurrencyCombinations'\nimport { useMemo } from 'react'\n\nfunction useAllCommonPairs(currencyA?: Currency, currencyB?: Currency): Pair[] {\n const allCurrencyCombinations = useAllCurrencyCombinations(currencyA, currencyB)\n\n const allPairs = useV2Pairs(allCurrencyCombinations)\n\n // only pass along valid pairs, non-duplicated pairs\n return useMemo(\n () =>\n Object.values(\n allPairs\n // filter out invalid pairs\n .filter((result): result is [PairState.EXISTS, Pair] => Boolean(result[0] === PairState.EXISTS && result[1]))\n // filter out duplicated pairs\n .reduce<{ [pairAddress: string]: Pair }>((memo, [, curr]) => {\n memo[curr.liquidityToken.address] = memo[curr.liquidityToken.address] ?? curr\n return memo\n }, {})\n ),\n [allPairs]\n )\n}\n\nconst MAX_HOPS = 3\n\n/**\n * Returns the best trade for the exact amount of tokens in to the given token out\n */\nexport function useV2TradeExactIn(\n currencyAmountIn?: CurrencyAmount,\n currencyOut?: Currency,\n { maxHops = MAX_HOPS } = {}\n): Trade | null {\n const allowedPairs = useAllCommonPairs(currencyAmountIn?.currency, currencyOut)\n\n return useMemo(() => {\n if (currencyAmountIn && currencyOut && allowedPairs.length > 0) {\n if (maxHops === 1) {\n return (\n Trade.bestTradeExactIn(allowedPairs, currencyAmountIn, currencyOut, {\n maxHops: 1,\n maxNumResults: 1,\n })[0] ?? null\n )\n }\n // search through trades with varying hops, find best trade out of them\n let bestTradeSoFar: Trade | null = null\n for (let i = 1; i <= maxHops; i++) {\n const currentTrade: Trade | null =\n Trade.bestTradeExactIn(allowedPairs, currencyAmountIn, currencyOut, {\n maxHops: i,\n maxNumResults: 1,\n })[0] ?? null\n // if current trade is best yet, save it\n if (isTradeBetter(bestTradeSoFar, currentTrade, BETTER_TRADE_LESS_HOPS_THRESHOLD)) {\n bestTradeSoFar = currentTrade\n }\n }\n return bestTradeSoFar\n }\n\n return null\n }, [allowedPairs, currencyAmountIn, currencyOut, maxHops])\n}\n\n/**\n * Returns the best trade for the token in to the exact amount of token out\n */\nexport function useV2TradeExactOut(\n currencyIn?: Currency,\n currencyAmountOut?: CurrencyAmount,\n { maxHops = MAX_HOPS } = {}\n): Trade | null {\n const allowedPairs = useAllCommonPairs(currencyIn, currencyAmountOut?.currency)\n\n return useMemo(() => {\n if (currencyIn && currencyAmountOut && allowedPairs.length > 0) {\n if (maxHops === 1) {\n return (\n Trade.bestTradeExactOut(allowedPairs, currencyIn, currencyAmountOut, {\n maxHops: 1,\n maxNumResults: 1,\n })[0] ?? null\n )\n }\n // search through trades with varying hops, find best trade out of them\n let bestTradeSoFar: Trade | null = null\n for (let i = 1; i <= maxHops; i++) {\n const currentTrade =\n Trade.bestTradeExactOut(allowedPairs, currencyIn, currencyAmountOut, {\n maxHops: i,\n maxNumResults: 1,\n })[0] ?? null\n if (isTradeBetter(bestTradeSoFar, currentTrade, BETTER_TRADE_LESS_HOPS_THRESHOLD)) {\n bestTradeSoFar = currentTrade\n }\n }\n return bestTradeSoFar\n }\n return null\n }, [currencyIn, currencyAmountOut, allowedPairs, maxHops])\n}\n","import { ADDITIONAL_BASES, BASES_TO_CHECK_TRADES_AGAINST, CUSTOM_BASES } from '../config/routing'\nimport { Currency, Token } from '@sushiswap/core-sdk'\n\nimport flatMap from 'lodash/flatMap'\nimport { useActiveWeb3React } from '../services/web3'\nimport { useMemo } from 'react'\n\nexport function useAllCurrencyCombinations(currencyA?: Currency, currencyB?: Currency): [Token, Token][] {\n const { chainId } = useActiveWeb3React()\n\n const [tokenA, tokenB] = chainId ? [currencyA?.wrapped, currencyB?.wrapped] : [undefined, undefined]\n\n const bases: Token[] = useMemo(() => {\n if (!chainId) return []\n\n const common = BASES_TO_CHECK_TRADES_AGAINST[chainId] ?? []\n const additionalA = tokenA ? ADDITIONAL_BASES[chainId]?.[tokenA.address] ?? [] : []\n const additionalB = tokenB ? ADDITIONAL_BASES[chainId]?.[tokenB.address] ?? [] : []\n\n return [...common, ...additionalA, ...additionalB]\n }, [chainId, tokenA, tokenB])\n\n const basePairs: [Token, Token][] = useMemo(\n () => flatMap(bases, (base): [Token, Token][] => bases.map((otherBase) => [base, otherBase])),\n [bases]\n )\n\n return useMemo(\n () =>\n tokenA && tokenB\n ? [\n // the direct pair\n [tokenA, tokenB],\n // token A against all bases\n ...bases.map((base): [Token, Token] => [tokenA, base]),\n // token B against all bases\n ...bases.map((base): [Token, Token] => [tokenB, base]),\n // each base against all bases\n ...basePairs,\n ]\n .filter((tokens): tokens is [Token, Token] => Boolean(tokens[0] && tokens[1]))\n .filter(([t0, t1]) => t0.address !== t1.address)\n .filter(([tokenA, tokenB]) => {\n if (!chainId) return true\n const customBases = CUSTOM_BASES[chainId]\n\n const customBasesA: Token[] | undefined = customBases?.[tokenA.address]\n const customBasesB: Token[] | undefined = customBases?.[tokenB.address]\n\n if (!customBasesA && !customBasesB) return true\n\n if (customBasesA && !customBasesA.find((base) => tokenB.equals(base))) return false\n if (customBasesB && !customBasesB.find((base) => tokenA.equals(base))) return false\n\n return true\n })\n : [],\n [tokenA, tokenB, bases, basePairs, chainId]\n )\n}\n","import { AlertTriangle, ArrowUpCircle, CheckCircle } from 'react-feather'\nimport { ChainId, Currency } from '@sushiswap/core-sdk'\nimport React, { FC } from 'react'\nimport { Trans, t } from '@lingui/macro'\n\nimport Button from '../../components/Button'\nimport CloseIcon from '../../components/CloseIcon'\nimport ExternalLink from '../../components/ExternalLink'\nimport Image from '../../components/Image'\nimport Lottie from 'lottie-react'\nimport Modal from '../../components/Modal'\nimport ModalHeader from '../../components/ModalHeader'\nimport { RowFixed } from '../../components/Row'\nimport { getExplorerLink } from '../../functions/explorer'\nimport loadingRollingCircle from '../../animation/loading-rolling-circle.json'\nimport { useActiveWeb3React } from '../../services/web3'\nimport useAddTokenToMetaMask from '../../hooks/useAddTokenToMetaMask'\nimport { useLingui } from '@lingui/react'\n\ninterface ConfirmationPendingContentProps {\n onDismiss: () => void\n pendingText: string\n}\n\nexport const ConfirmationPendingContent: FC = ({ onDismiss, pendingText }) => {\n const { i18n } = useLingui()\n return (\n
\n
\n \n
\n
\n \n
\n
\n
{i18n._(t`Waiting for Confirmation`)}
\n
{pendingText}
\n
{i18n._(t`Confirm this transaction in your wallet`)}
\n
\n
\n )\n}\n\ninterface TransactionSubmittedContentProps {\n onDismiss: () => void\n hash: string | undefined\n chainId: ChainId\n currencyToAdd?: Currency | undefined\n inline?: boolean // not in modal\n}\n\nexport const TransactionSubmittedContent: FC = ({\n onDismiss,\n chainId,\n hash,\n currencyToAdd,\n}) => {\n const { i18n } = useLingui()\n const { library } = useActiveWeb3React()\n const { addToken, success } = useAddTokenToMetaMask(currencyToAdd)\n return (\n
\n
\n \n
\n
\n \n
\n
\n
{i18n._(t`Transaction Submitted`)}
\n {chainId && hash && (\n \n
View on explorer
\n
\n )}\n {currencyToAdd && library?.provider?.isMetaMask && (\n \n )}\n {/* */}\n
\n
\n )\n}\n\ninterface ConfirmationModelContentProps {\n title: string\n onDismiss: () => void\n topContent: () => React.ReactNode\n bottomContent: () => React.ReactNode\n}\n\nexport const ConfirmationModalContent: FC = ({\n title,\n bottomContent,\n onDismiss,\n topContent,\n}) => {\n return (\n
\n \n {topContent()}\n {bottomContent()}\n
\n )\n}\n\ninterface TransactionErrorContentProps {\n message: string\n onDismiss: () => void\n}\n\nexport const TransactionErrorContent: FC = ({ message, onDismiss }) => {\n const { i18n } = useLingui()\n\n return (\n
\n
\n
\n
{i18n._(t`Error`)}
\n \n
\n
\n \n
{message}
\n
\n
\n
\n \n
\n
\n )\n}\n\ninterface ConfirmationModalProps {\n isOpen: boolean\n onDismiss: () => void\n hash: string | undefined\n content: () => React.ReactNode\n attemptingTxn: boolean\n pendingText: string\n currencyToAdd?: Currency | undefined\n}\n\nconst TransactionConfirmationModal: FC = ({\n isOpen,\n onDismiss,\n attemptingTxn,\n hash,\n pendingText,\n content,\n currencyToAdd,\n}) => {\n const { chainId } = useActiveWeb3React()\n\n if (!chainId) return null\n\n // confirmation screen\n return (\n \n {attemptingTxn ? (\n \n ) : hash ? (\n \n ) : (\n content()\n )}\n \n )\n}\n\nexport default TransactionConfirmationModal\n","import { Currency, Token } from '@sushiswap/core-sdk'\nimport { useCallback, useState } from 'react'\n\nimport { getCurrencyLogoUrls } from './../components/CurrencyLogo'\nimport { useActiveWeb3React } from '../services/web3'\n\nexport default function useAddTokenToMetaMask(currencyToAdd: Currency | undefined): {\n addToken: () => void\n success: boolean | undefined\n} {\n const { chainId, library } = useActiveWeb3React()\n\n const token: Token | undefined = currencyToAdd?.wrapped\n\n const [success, setSuccess] = useState()\n\n const addToken = useCallback(() => {\n if (library && library.provider.isMetaMask && library.provider.request && token) {\n library.provider\n .request({\n method: 'wallet_watchAsset',\n params: {\n //@ts-ignore // need this for incorrect ethers provider type\n type: 'ERC20',\n options: {\n address: token.address,\n symbol: token.symbol,\n decimals: token.decimals,\n image: getCurrencyLogoUrls(token),\n },\n },\n })\n .then((success) => {\n setSuccess(success)\n })\n .catch(() => setSuccess(false))\n } else {\n setSuccess(false)\n }\n }, [library, token])\n\n return { addToken, success }\n}\n","import { Field, MeowshiState } from '../../pages/tools/meowshi'\nimport React, { FC } from 'react'\nimport { SUSHI, XSUSHI } from '../../config/tokens'\n\nimport { ChainId } from '@sushiswap/core-sdk'\nimport Image from 'next/image'\nimport Input from '../../components/Input'\nimport Typography from '../../components/Typography'\nimport { t } from '@lingui/macro'\nimport { tryParseAmount } from '../../functions'\nimport { useActiveWeb3React } from '../../services/web3'\nimport { useLingui } from '@lingui/react'\nimport { useTokenBalance } from '../../state/wallet/hooks'\nimport { useUSDCValue } from '../../hooks/useUSDCPrice'\n\ninterface CurrencyInputPanelProps {\n field: Field\n meowshiState: MeowshiState\n showMax: boolean\n}\n\nconst CurrencyInputPanel: FC = ({ field, meowshiState, showMax }) => {\n const { currencies, handleInput, setCurrency, fields } = meowshiState\n\n const { account } = useActiveWeb3React()\n const { i18n } = useLingui()\n const currency = currencies[field]\n const balance = useTokenBalance(account, currency)\n const inputUSDCValue = useUSDCValue(tryParseAmount(fields[field], currencies[field]))\n const balanceUSDCValue = useUSDCValue(balance)\n\n return (\n <>\n
\n
\n
\n
\n \n
\n \n {currency?.symbol}\n \n {(currency === SUSHI[ChainId.ETHEREUM] || currency === XSUSHI) && (\n setCurrency(currency === XSUSHI ? SUSHI[ChainId.ETHEREUM] : XSUSHI, field)}\n >\n {currencies[field] === SUSHI[ChainId.ETHEREUM] ? i18n._(t`Use xSUSHI`) : i18n._(t`Use SUSHI`)}\n \n )}\n
\n
\n
\n
\n
\n
\n handleInput(val, field)}\n />\n
\n {inputUSDCValue && (\n
\n ≈ {inputUSDCValue?.toSignificant(6, { groupSeparator: ',' })} USDC\n
\n )}\n
\n\n {showMax && (\n handleInput(balance?.toExact(), field)}\n className=\"flex items-center justify-center px-2 py-1 text-sm uppercase border border-opacity-50 cursor-pointer border-blue bg-blue text-blue bg-opacity-30 rounded-3xl hover:border-opacity-100\"\n >\n {i18n._(t`Max`)}\n \n )}\n
\n
\n
\n handleInput(balance?.toExact(), field)}\n className=\"cursor-pointer text-primary\"\n >\n Balance: {balance?.toSignificant(6, { groupSeparator: ',' }) || '0'} {currency?.symbol}\n \n {balanceUSDCValue && (\n <>\n \n {' ≈ '}\n \n \n ${balanceUSDCValue?.toSignificant(6, { groupSeparator: ',' })} USDC\n \n \n )}\n
\n
\n \n )\n}\n\nexport default CurrencyInputPanel\n","import React, { FC } from 'react'\n\nimport { MeowshiState } from '../../pages/tools/meowshi'\nimport { RadioGroup } from '@headlessui/react'\nimport Typography from '../../components/Typography'\nimport { classNames } from '../../functions'\n\ninterface HeaderToggleProps {\n meowshiState: MeowshiState\n}\n\nconst HeaderToggle: FC = ({ meowshiState }) => {\n const { meow, switchCurrencies } = meowshiState\n\n return (\n
\n \n \n classNames('px-8 py-2 rounded', `${checked ? 'bg-gradient-to-r from-blue to-pink' : ''}`)\n }\n >\n {({ checked }) => (\n \n Meow\n \n )}\n \n \n classNames('px-8 py-2 rounded', `${checked ? 'bg-gradient-to-r from-blue to-pink' : ''}`)\n }\n >\n {({ checked }) => (\n \n Un-Meow\n \n )}\n \n \n
\n 1 xSUSHI ≈ 100k MEOW\n
\n
\n )\n}\n\nexport default HeaderToggle\n","import { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useMeowshiContract, useSushiBarContract, useSushiContract } from './useContract'\n\nimport { ApprovalState } from './useApproveCallback'\nimport { BalanceProps } from './useTokenBalance'\nimport Fraction from '../entities/Fraction'\nimport { BigNumber } from '@ethersproject/bignumber'\nimport { MaxUint256 } from '@ethersproject/constants'\nimport { useActiveWeb3React } from '../services/web3'\nimport { useTransactionAdder } from '../state/transactions/hooks'\n\nconst useMeowshi = (sushi: boolean) => {\n const { account } = useActiveWeb3React()\n const addTransaction = useTransactionAdder()\n const sushiContract = useSushiContract(true)\n const barContract = useSushiBarContract(true)\n const meowshiContract = useMeowshiContract(true)\n const [pendingApproval, setPendingApproval] = useState(false)\n\n const [allowance, setAllowance] = useState('0')\n const fetchAllowance = useCallback(async () => {\n if (account) {\n try {\n let allowance\n if (sushi) {\n allowance = await sushiContract?.allowance(account, meowshiContract?.address)\n } else {\n allowance = await barContract?.allowance(account, meowshiContract?.address)\n }\n\n const formatted = Fraction.from(BigNumber.from(allowance), BigNumber.from(10).pow(18)).toString()\n setAllowance(formatted)\n } catch (error) {\n setAllowance('0')\n }\n }\n }, [account, sushi, sushiContract, meowshiContract?.address, barContract])\n\n useEffect(() => {\n if (account && meowshiContract) {\n if ((sushi && sushiContract) || (!sushi && barContract)) {\n fetchAllowance()\n }\n }\n\n const refreshInterval = setInterval(fetchAllowance, 10000)\n return () => clearInterval(refreshInterval)\n }, [account, meowshiContract, fetchAllowance, sushiContract, barContract, sushi])\n\n const approvalState: ApprovalState = useMemo(() => {\n if (!account) return ApprovalState.UNKNOWN\n if (pendingApproval) return ApprovalState.PENDING\n if (!allowance || Number(allowance) === 0) return ApprovalState.NOT_APPROVED\n\n return ApprovalState.APPROVED\n }, [account, allowance, pendingApproval])\n\n const approve = useCallback(async () => {\n try {\n setPendingApproval(true)\n\n let tx\n if (sushi) {\n tx = await sushiContract?.approve(meowshiContract?.address, MaxUint256.toString())\n } else {\n tx = await barContract?.approve(meowshiContract?.address, MaxUint256.toString())\n }\n\n addTransaction(tx, { summary: 'Approve' })\n await tx.wait()\n return tx\n } catch (e) {\n return e\n } finally {\n setPendingApproval(false)\n }\n }, [sushi, addTransaction, sushiContract, meowshiContract?.address, barContract])\n\n const meow = useCallback(\n async (amount: BalanceProps | undefined) => {\n if (amount?.value) {\n try {\n const tx = await meowshiContract?.meow(account, amount?.value)\n addTransaction(tx, { summary: 'Enter Meowshi' })\n return tx\n } catch (e) {\n return e\n }\n }\n },\n [account, addTransaction, meowshiContract]\n )\n\n const unmeow = useCallback(\n async (amount: BalanceProps | undefined) => {\n if (amount?.value) {\n try {\n const tx = await meowshiContract?.unmeow(account, amount?.value)\n addTransaction(tx, { summary: 'Leave Meowshi' })\n return tx\n } catch (e) {\n return e\n }\n }\n },\n [account, addTransaction, meowshiContract]\n )\n\n const meowSushi = useCallback(\n async (amount: BalanceProps | undefined) => {\n if (amount?.value) {\n try {\n const tx = await meowshiContract?.meowSushi(account, amount?.value)\n addTransaction(tx, { summary: 'Enter Meowshi' })\n return tx\n } catch (e) {\n return e\n }\n }\n },\n [account, addTransaction, meowshiContract]\n )\n\n const unmeowSushi = useCallback(\n async (amount: BalanceProps | undefined) => {\n if (amount?.value) {\n try {\n const tx = await meowshiContract?.unmeowSushi(account, amount?.value)\n addTransaction(tx, { summary: 'Leave Meowshi' })\n return tx\n } catch (e) {\n return e\n }\n }\n },\n [account, addTransaction, meowshiContract]\n )\n\n return {\n approvalState,\n approve,\n meow,\n unmeow,\n meowSushi,\n unmeowSushi,\n }\n}\n\nexport default useMeowshi\n","import { useActiveWeb3React } from '../../services/web3'\nimport { ApprovalState } from '../../hooks/useApproveCallback'\nimport { Field, MeowshiState } from '../../pages/tools/meowshi'\nimport React, { FC, useMemo, useState } from 'react'\nimport { SUSHI, XSUSHI } from '../../config/tokens'\nimport TransactionConfirmationModal, { ConfirmationModalContent } from '../../modals/TransactionConfirmationModal'\n\nimport Button from '../../components/Button'\nimport { ChainId } from '@sushiswap/core-sdk'\nimport Dots from '../../components/Dots'\nimport { parseUnits } from '@ethersproject/units'\nimport { t } from '@lingui/macro'\nimport { tryParseAmount } from '../../functions'\nimport { useLingui } from '@lingui/react'\nimport useMeowshi from '../../hooks/useMeowshi'\nimport { useTokenBalance } from '../../state/wallet/hooks'\n\ninterface MeowshiButtonProps {\n meowshiState: MeowshiState\n}\n\nconst MeowshiButton: FC = ({ meowshiState }) => {\n const { currencies, meow: doMeow, fields } = meowshiState\n const { i18n } = useLingui()\n const [modalState, setModalState] = useState({\n attemptingTxn: false,\n txHash: '',\n open: false,\n })\n const { account, chainId } = useActiveWeb3React()\n const sushiBalance = useTokenBalance(account, SUSHI[ChainId.ETHEREUM])\n const xSushiBalance = useTokenBalance(account, XSUSHI)\n const { approvalState, approve, meow, unmeow, meowSushi, unmeowSushi } = useMeowshi(\n currencies[Field.INPUT] === SUSHI[ChainId.ETHEREUM]\n )\n const balance = useTokenBalance(account, currencies[Field.INPUT])\n const parsedInputAmount = tryParseAmount(fields[Field.INPUT], currencies[Field.INPUT])\n const parsedOutputAmount = tryParseAmount(fields[Field.OUTPUT], currencies[Field.OUTPUT])\n\n const closeModal = () => {\n setModalState((prevState) => ({\n ...prevState,\n open: false,\n }))\n }\n\n const handleSubmit = async () => {\n setModalState({\n attemptingTxn: true,\n open: true,\n txHash: '',\n })\n\n let tx\n if (doMeow) {\n if (currencies[Field.INPUT]?.symbol === 'SUSHI') {\n tx = await meowSushi({\n value: parseUnits(fields[Field.INPUT], sushiBalance.currency.decimals),\n decimals: sushiBalance.currency.decimals,\n })\n }\n if (currencies[Field.INPUT]?.symbol === 'xSUSHI') {\n tx = await meow({\n value: parseUnits(fields[Field.INPUT], sushiBalance.currency.decimals),\n decimals: xSushiBalance.currency.decimals,\n })\n }\n } else {\n if (currencies[Field.OUTPUT]?.symbol === 'SUSHI') {\n tx = await unmeowSushi({\n value: parseUnits(fields[Field.INPUT], sushiBalance.currency.decimals),\n decimals: xSushiBalance.currency.decimals,\n })\n }\n if (currencies[Field.OUTPUT]?.symbol === 'xSUSHI') {\n tx = await unmeow({\n value: parseUnits(fields[Field.INPUT], sushiBalance.currency.decimals),\n decimals: xSushiBalance.currency.decimals,\n })\n }\n }\n\n if (tx?.hash) {\n setModalState((prevState) => ({\n ...prevState,\n attemptingTxn: false,\n txHash: tx.hash,\n }))\n } else {\n closeModal()\n }\n }\n\n const buttonDisabledText = useMemo(() => {\n if (!balance) return i18n._(t`Loading Balance`)\n if (parsedInputAmount?.greaterThan(balance)) return i18n._(t`Insufficient Balance`)\n if (!parsedInputAmount?.greaterThan(0)) return i18n._(t`Please enter an amount`)\n return null\n }, [balance, i18n, parsedInputAmount])\n\n if (!account)\n return (\n \n )\n\n if (chainId !== ChainId.ETHEREUM)\n return (\n \n )\n\n if (approvalState === ApprovalState.PENDING)\n return (\n \n )\n\n if (approvalState === ApprovalState.NOT_APPROVED)\n return (\n \n )\n\n if (approvalState === ApprovalState.APPROVED)\n return (\n <>\n (\n }\n bottomContent={() => }\n />\n )}\n pendingText={i18n._(\n t`Converting ${parsedInputAmount?.toSignificant(6, { groupSeparator: ',' })} ${\n meowshiState.currencies[Field.INPUT]?.symbol\n } for ${parsedOutputAmount?.toSignificant(6, { groupSeparator: ',' })} ${\n meowshiState.currencies[Field.OUTPUT]?.symbol\n }`\n )}\n />\n \n \n )\n}\n\nexport default MeowshiButton\n","import { ArrowDownIcon, InformationCircleIcon } from '@heroicons/react/solid'\nimport { ChainId, Currency, Token } from '@sushiswap/core-sdk'\nimport { MEOW, SUSHI, XSUSHI } from '../../config/tokens'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport Container from '../../components/Container'\nimport CurrencyInputPanel from '../../features/meowshi/CurrencyInputPanel'\nimport Head from 'next/head'\nimport HeaderToggle from '../../features/meowshi/HeaderToggle'\nimport Image from 'next/image'\nimport MeowshiButton from '../../features/meowshi/MeowshiButton'\nimport NetworkGuard from '../../guards/Network'\nimport Typography from '../../components/Typography'\nimport { e10 } from '../../functions'\nimport { t } from '@lingui/macro'\nimport { useLingui } from '@lingui/react'\nimport useMeowshiPerXSushi from '../../hooks/useMeowshiPerXSushi'\nimport useSushiPerXSushi from '../../hooks/useXSushiPerSushi'\n\nexport enum Field {\n INPUT = 'INPUT',\n OUTPUT = 'OUTPUT',\n}\n\nexport interface MeowshiState {\n currencies: {\n [Field.INPUT]: Token\n [Field.OUTPUT]: Token\n }\n setCurrency: (x: Token, field: Field) => void\n fields: {\n independentField: Field\n [Field.INPUT]: string | null\n [Field.OUTPUT]: string | null\n }\n handleInput: (x: string, field: Field) => void\n switchCurrencies: () => void\n meow: boolean\n}\n\nexport default function Meowshi() {\n const { i18n } = useLingui()\n const sushiPerXSushi = useSushiPerXSushi()\n const [meowshiPerXSushi, xSushiPerMeowshi] = useMeowshiPerXSushi()\n\n const [fields, setFields] = useState({\n independentField: Field.INPUT,\n [Field.INPUT]: '',\n [Field.OUTPUT]: '',\n })\n\n const [currencies, setCurrencies] = useState({\n [Field.INPUT]: SUSHI[ChainId.ETHEREUM],\n [Field.OUTPUT]: MEOW,\n })\n\n const handleInput = useCallback(\n async (val, field) => {\n setFields((prevState) => {\n const inputRate =\n currencies[Field.INPUT] === XSUSHI\n ? meowshiPerXSushi.mul(e10(5))\n : meowshiPerXSushi.mul(e10(5)).mulDiv(e10(18), sushiPerXSushi.toString().toBigNumber(18))\n const outputRate =\n currencies[Field.OUTPUT] === XSUSHI\n ? xSushiPerMeowshi.div(e10(5))\n : xSushiPerMeowshi.mulDiv(sushiPerXSushi.toString().toBigNumber(18), e10(18)).div(e10(5))\n\n if (field === Field.INPUT) {\n if (currencies[Field.OUTPUT] === MEOW) {\n return {\n independentField: Field.INPUT,\n [Field.INPUT]: val || prevState[Field.INPUT],\n [Field.OUTPUT]: inputRate.mulDiv((val || prevState[Field.INPUT]).toBigNumber(18), e10(18))?.toFixed(18),\n }\n } else {\n return {\n independentField: Field.INPUT,\n [Field.INPUT]: val || prevState[Field.INPUT],\n [Field.OUTPUT]: outputRate.mulDiv((val || prevState[Field.INPUT]).toBigNumber(18), e10(18))?.toFixed(18),\n }\n }\n } else {\n if (currencies[Field.OUTPUT] === MEOW) {\n return {\n independentField: Field.OUTPUT,\n [Field.INPUT]: (val || prevState[Field.OUTPUT]).toBigNumber(18).mulDiv(e10(18), inputRate)?.toFixed(18),\n [Field.OUTPUT]: val || prevState[Field.OUTPUT],\n }\n } else {\n return {\n independentField: Field.OUTPUT,\n [Field.INPUT]: (val || prevState[Field.OUTPUT]).toBigNumber(18).mulDiv(e10(18), outputRate)?.toFixed(18),\n [Field.OUTPUT]: val || prevState[Field.OUTPUT],\n }\n }\n }\n })\n },\n [currencies, meowshiPerXSushi, sushiPerXSushi, xSushiPerMeowshi]\n )\n\n const setCurrency = useCallback((currency: Currency, field: Field) => {\n setCurrencies((prevState) => ({\n ...prevState,\n [field]: currency,\n }))\n }, [])\n\n useEffect(() => {\n handleInput(null, fields.independentField)\n }, [fields.independentField, handleInput])\n\n const switchCurrencies = useCallback(() => {\n setCurrencies((prevState) => ({\n [Field.INPUT]: prevState[Field.OUTPUT],\n [Field.OUTPUT]: prevState[Field.INPUT],\n }))\n }, [])\n\n const meowshiState = useMemo(\n () => ({\n currencies,\n setCurrency,\n switchCurrencies,\n fields,\n meow: currencies[Field.OUTPUT]?.symbol === 'MEOW',\n handleInput,\n }),\n [currencies, fields, handleInput, setCurrency, switchCurrencies]\n )\n\n return (\n \n \n Meowshi | Sushi\n \n \n\n
\n \n\n
\n \n \n {i18n._(t`MEOW tokens wrap xSUSHI into BentoBox for double yields and can be\n used to vote in special MEOW governor contracts.`)}\n \n
\n
\n
\n \n \n
\n \n \n
\n \n {currencies[Field.INPUT]?.symbol} →{' '}\n {(currencies[Field.INPUT] === SUSHI[ChainId.ETHEREUM] ||\n currencies[Field.OUTPUT] === SUSHI[ChainId.ETHEREUM]) &&\n ' xSUSHI → '}\n {currencies[Field.OUTPUT]?.symbol}\n \n
\n \n \n \n
\n )\n}\n\nMeowshi.Guard = NetworkGuard([ChainId.ETHEREUM])\n","import { useEffect, useState } from 'react'\n\nimport { BigNumber } from '@ethersproject/bignumber'\nimport { XSUSHI } from '../config/tokens'\nimport { useBentoBoxContract } from './useContract'\n\nexport default function useMeowshiPerXSushi() {\n const bentoboxContract = useBentoBoxContract()\n const [state, setState] = useState<[BigNumber, BigNumber]>([BigNumber.from('0'), BigNumber.from('0')])\n\n useEffect(() => {\n if (!bentoboxContract) return\n ;(async () => {\n const toShare = await bentoboxContract.toShare(XSUSHI.address, '1'.toBigNumber(XSUSHI.decimals), false)\n const toAmount = await bentoboxContract.toAmount(XSUSHI.address, '1'.toBigNumber(XSUSHI.decimals), false)\n setState([toShare, toAmount])\n })()\n }, [bentoboxContract])\n\n return state\n}\n","\n (window.__NEXT_P = window.__NEXT_P || []).push([\n \"/tools/meowshi\",\n function () {\n return require(\"private-next-pages/tools/meowshi.tsx\");\n }\n ]);\n if(module.hot) {\n module.hot.dispose(function () {\n window.__NEXT_P.push([\"/tools/meowshi\"])\n });\n }\n "],"names":["props","className","MAX_WIDTH","full","xl","lg","md","sm","xs","children","maxWidth","rest","classNames","BLOCKCHAIN","ChainId","getCurrencyLogoUrls","currency","urls","chainId","push","address","AvalancheLogo","BinanceCoinLogo","EthereumLogo","FantomLogo","HarmonyLogo","HecoLogo","MaticLogo","OKExLogo","PalmLogo","LOGO","unknown","size","style","uriLocations","useHttpLocations","WrappedTokenInfo","logoURI","tokenInfo","undefined","srcs","useMemo","isNative","equals","WNATIVE","isToken","defaultUrls","width","height","alt","symbol","src","layout","loader","useBlur","parseInt","String","placeholder","blurDataURL","w","h","str","window","btoa","inputRegex","RegExp","AddressInput","React","value","onUserInput","align","fontSize","loading","useENS","onChange","event","nextUserInput","target","replace","test","escapeRegExp","Number","inputMode","title","autoComplete","autoCorrect","autoCapitalize","spellCheck","pattern","type","displayName","defaultClassName","Input","min","minLength","maxLength","Address","Percent","Numeric","BAD_SRCS","refresh","useState","find","cloudinaryLoader","onError","i","Row","justify","padding","border","borderRadius","alignItems","justifyContent","RowBetween","styled","AutoRow","gap","RowFixed","slice","normalize","isOpen","onDismiss","show","as","Fragment","static","open","onClose","enter","enterFrom","enterTo","leave","leaveFrom","leaveTo","Component","networks","i18n","useLingui","library","account","useActiveWeb3React","link","NavLink","href","_","includes","Typography","variant","weight","NETWORK_LABEL","id","values","components","Math","length","map","key","idx","onClick","params","SUPPORTED_NETWORKS","cookie","send","NETWORK_ICON","nameOrAddress","validated","isAddress","reverseLookup","useENSName","lookup","useENSAddress","name","ENSName","ensName","debouncedName","useDebounce","ensNodeArgument","namehash","error","registrarContract","useENSRegistrarContract","resolverAddress","useSingleCallResult","resolverAddressResult","result","resolverContract","useENSResolverContract","isZero","addr","changed","uri","ens","parseENSAddress","resolvedContentHash","contenthash","useENSContentHash","uriToHttp","contenthashToUri","STABLECOIN_AMOUNT_OUT","CurrencyAmount","USD","useUSDCPrice","amountOut","stablecoin","v2USDCTrade","useV2TradeExactOut","maxHops","wrapped","Price","numerator","denominator","route","midPrice","useUSDCValue","currencyAmount","price","quote","PAIR_INTERFACE","Interface","IUniswapV2PairABI","PairState","useV2Pairs","currencies","tokens","currencyA","currencyB","pairAddresses","tokenA","tokenB","FACTORY_ADDRESS","computePairAddress","factoryAddress","results","useMultipleContractSingleData","reserves","LOADING","INVALID","NOT_EXISTS","reserve0","reserve1","token0","token1","sortsBefore","EXISTS","Pair","toString","useV2Pair","useAllCommonPairs","allCurrencyCombinations","bases","BASES_TO_CHECK_TRADES_AGAINST","ADDITIONAL_BASES","basePairs","flatMap","base","otherBase","filter","Boolean","t0","t1","customBases","CUSTOM_BASES","customBasesA","customBasesB","useAllCurrencyCombinations","allPairs","Object","reduce","memo","curr","liquidityToken","useV2TradeExactIn","currencyAmountIn","currencyOut","allowedPairs","Trade","maxNumResults","bestTradeSoFar","currentTrade","isTradeBetter","BETTER_TRADE_LESS_HOPS_THRESHOLD","currencyIn","currencyAmountOut","ConfirmationPendingContent","pendingText","CloseIcon","animationData","loadingRollingCircle","autoplay","loop","TransactionSubmittedContent","hash","currencyToAdd","addToken","success","token","setSuccess","useCallback","provider","isMetaMask","request","method","options","decimals","image","then","catch","useAddTokenToMetaMask","strokeWidth","ExternalLink","getExplorerLink","Button","color","Image","ConfirmationModalContent","bottomContent","topContent","ModalHeader","TransactionErrorContent","message","attemptingTxn","content","Modal","maxHeight","field","meowshiState","showMax","handleInput","setCurrency","fields","balance","useTokenBalance","inputUSDCValue","tryParseAmount","balanceUSDCValue","SUSHI","XSUSHI","objectFit","val","toSignificant","groupSeparator","toExact","component","meow","switchCurrencies","checked","sushi","addTransaction","useTransactionAdder","sushiContract","useSushiContract","barContract","useSushiBarContract","meowshiContract","useMeowshiContract","pendingApproval","setPendingApproval","allowance","setAllowance","fetchAllowance","async","formatted","Fraction","BigNumber","pow","useEffect","refreshInterval","setInterval","clearInterval","approvalState","ApprovalState","approve","tx","MaxUint256","summary","wait","e","amount","unmeow","meowSushi","unmeowSushi","doMeow","modalState","setModalState","txHash","sushiBalance","xSushiBalance","useMeowshi","Field","INPUT","parsedInputAmount","parsedOutputAmount","OUTPUT","closeModal","prevState","buttonDisabledText","greaterThan","disabled","Dots","TransactionConfirmationModal","parseUnits","Meowshi","sushiPerXSushi","useSushiPerXSushi","meowshiPerXSushi","xSushiPerMeowshi","bentoboxContract","useBentoBoxContract","state","setState","toShare","toBigNumber","toAmount","useMeowshiPerXSushi","setFields","independentField","setCurrencies","MEOW","inputRate","mul","e10","mulDiv","outputRate","div","toFixed","Container","Guard","NetworkGuard","__NEXT_P"],"sourceRoot":""}