{"version":3,"file":"static/js/main.0fa9c7c9.js","mappings":"4FAAO,MAAMA,EAAaC,IAAmB,IAAlB,IAAEC,GAAUD,EACrC,MAAME,EAAOD,EAAIE,QAAQ,CACvBC,aAAcH,EAAII,IAAIJ,EAAIK,WAC1BC,qBAAsBN,EAAII,IAAIJ,EAAIK,WAClCE,SAAUP,EAAIQ,KACdC,oBAAqBT,EAAIQ,OAErBE,EAAcV,EAAIW,OAAO,CAC7BC,cAAeZ,EAAIa,IAAIb,EAAIK,WAC3BS,KAAMd,EAAIa,IAAIZ,GACdc,wBAAyBf,EAAIa,IAAIb,EAAIgB,OACrCC,wBAAyBjB,EAAIa,IAAIb,EAAIgB,OACrCE,kBAAmBlB,EAAIa,IAAIb,EAAImB,OAC/BC,QAASpB,EAAIa,IAAIb,EAAIgB,SAEjBK,EAAarB,EAAIE,QAAQ,CAC7BoB,QAAStB,EAAIQ,KACbe,QAASvB,EAAIQ,KACbgB,QAASxB,EAAIQ,OAETiB,EAAWzB,EAAIW,OAAO,CAC1BC,cAAeZ,EAAIa,IAAIb,EAAIK,WAC3BqB,eAAgB1B,EAAI2B,KACpBb,KAAMb,EACNc,wBAAyBf,EAAIgB,MAC7BY,UAAW5B,EAAIK,UACfY,wBAAyBjB,EAAIgB,MAC7Ba,YAAaR,EACbH,kBAAmBlB,EAAIa,IAAIb,EAAImB,OAC/BC,QAASpB,EAAIa,IAAIb,EAAIgB,SAMjBc,GAJY9B,EAAIE,QAAQ,CAC5B6B,QAAS/B,EAAIa,IAAIH,GACjBsB,KAAMP,IAEQzB,EAAIW,OAAO,CACzBsB,MAAOjC,EAAIK,UACX6B,WAAYlC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,UAE5BC,EAAOpC,EAAIW,OAAO,CACtB0B,OAAQrC,EAAImB,MACZmB,MAAOtC,EAAIgB,MACXuB,SAAUvC,EAAIW,OAAO,CAAE6B,KAAMxC,EAAII,IAAIJ,EAAImC,MAAOM,KAAMzC,EAAImB,UAEtDuB,EAAsB1C,EAAIE,QAAQ,CACtCyC,WAAY3C,EAAIQ,KAChBoC,mBAAoB5C,EAAIW,OAAO,CAC7BS,QAASpB,EAAIgB,MACb6B,aAAc7C,EAAIK,cAGhByC,EAAiB9C,EAAIE,QAAQ,CACjC6C,SAAU/C,EAAII,IAAIJ,EAAImC,MACtBa,QAAShD,EAAII,IAAIJ,EAAImC,MACrBc,KAAMjD,EAAII,IAAIJ,EAAImC,MAClBe,UAAWlD,EAAII,IAAIJ,EAAImC,MACvBgB,MAAOnD,EAAII,IAAIJ,EAAImC,QAEfiB,EAAQpD,EAAIE,QAAQ,CACxBmD,eAAgBrD,EAAIW,OAAO,CACzB2C,WAAYxB,EACZyB,UAAWvD,EAAIa,IAAIb,EAAIgB,OACvBwC,MAAOxD,EAAII,IAAIgC,KAEjBqB,+BAAgCzD,EAAIW,OAAO,CACzC+C,iBAAkB1D,EAAIgB,MACtB2C,QAAS7B,EACT8B,OAAQ5D,EAAIgB,MACZ6C,OAAQnB,IAEVoB,iBAAkB9D,EAAIW,OAAO,CAC3BoD,IAAK/D,EAAIa,IAAIb,EAAIgB,OACjBgD,cAAehE,EAAIa,IAAIb,EAAIW,OAAO,CAAE2B,MAAOtC,EAAIgB,MAAOyB,KAAMzC,EAAImB,SAChEqB,KAAMxC,EAAII,IAAIJ,EAAImC,MAClBqB,MAAOxD,EAAII,IAAIgC,GACf6B,SAAUjE,EAAII,IAAIJ,EAAIgB,OACtBkD,aAAclE,EAAIgB,QAEpBmD,oBAAqBnE,EAAIW,OAAO,CAC9ByD,YAAapE,EAAIgB,MACjB4C,OAAQ5D,EAAIgB,MACZ6B,aAAc7C,EAAIK,YAEpBgE,KAAM5C,EACN6C,QAAS5D,EACT6D,wBAAyBvE,EAAIW,OAAO,CAClCyD,YAAapE,EAAIgB,MACjBiB,MAAOjC,EAAIK,UACXmE,KAAMxE,EAAI2B,KACV8C,QAASzE,EAAI2B,KACbiC,OAAQ5D,EAAIgB,MACZ6B,aAAc7C,EAAIK,YAEpBqE,8BAA+B1E,EAAIW,OAAO,CACxCgE,YAAa3E,EAAIgB,MACjBoD,YAAapE,EAAIgB,MACjByD,QAAS3B,EACTc,OAAQ5D,EAAIgB,MACZ6B,aAAc7C,EAAIa,IAAIb,EAAIK,aAE5BuE,aAAc5E,EAAIW,OAAO,CACvBkE,MAAO7E,EAAI8E,KACXC,KAAM3C,EACNoC,KAAMxE,EAAI2B,KACVkB,aAAc7C,EAAIa,IAAIb,EAAIK,aAE5B2E,6BAA8BhF,EAAIW,OAAO,CAAEyD,YAAapE,EAAIgB,QAC5DiE,sBAAuBjF,EAAIW,OAAO,CAAE6B,KAAMxC,EAAII,IAAIJ,EAAImC,QACtD+C,qBAAsBlF,EAAIW,OAAO,CAC/BoD,IAAK/D,EAAIgB,MACTgD,cAAehE,EAAIW,OAAO,CAAE2B,MAAOtC,EAAIgB,MAAOyB,KAAMzC,EAAImB,QACxDgE,SAAUnF,EAAII,IAAIJ,EAAImC,MACtBiD,SAAUpF,EAAII,IAAIJ,EAAImC,MACtB+B,aAAclE,EAAIgB,QAEpBqE,aAAcrF,EAAIW,OAAO,CAAEoE,KAAM3C,IACjCkD,0BAA2BtF,EAAIW,OAAO,CACpC+C,iBAAkB1D,EAAIgB,MACtBuE,iBAAkBvF,EAAIgB,UAGpBwE,EAAaxF,EAAIW,OAAO,CAC5BI,wBAAyBf,EAAIgB,MAC7BE,kBAAmBlB,EAAImB,MACvBC,QAASpB,EAAIgB,QAETyE,EAAkBzF,EAAIW,OAAO,CACjC8D,QAASzE,EAAI2B,KACbiC,OAAQ5D,EAAIgB,QAER0E,EAAgB1F,EAAIW,OAAO,CAAEyD,YAAapE,EAAIgB,QAC9C2E,EAAmB3F,EAAIE,QAAQ,CACnC0F,iBAAkB5F,EAAI2B,KACtBkE,aAAc7F,EAAIW,OAAO,CACvBmF,cAAe9F,EAAI2B,KACnBoE,WAAY/F,EAAIgB,QAElBgF,uBAAwBhG,EAAI2B,KAC5BsE,kBAAmBjG,EAAIQ,KACvB0F,aAAclG,EAAIgB,MAClBmF,kBAAmBnG,EAAIW,OAAO,CAAEyF,QAASpG,EAAIgB,UAEzCqF,EAAoBrG,EAAIE,QAAQ,CACpCoG,QAAStG,EAAIQ,KACb+F,UAAWvG,EAAIW,OAAO,CAAE6B,KAAMxC,EAAII,IAAIJ,EAAImC,QAC1CqE,QAASxG,EAAIW,OAAO,CAAE6B,KAAMxC,EAAII,IAAIJ,EAAImC,QACxC+D,aAAclG,EAAIQ,KAClBiG,QAASzG,EAAIQ,KACbkG,UAAW1G,EAAIW,OAAO,CAAE6B,KAAMxC,EAAII,IAAIJ,EAAImC,QAC1CwE,QAAS3G,EAAIQ,OAEToG,EAA8B5G,EAAIW,OAAO,CAC7CkG,gBAAiB7G,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACrCsC,QAASzE,EAAI2B,KACbiC,OAAQ5D,EAAIgB,QAER8F,EAA+B9G,EAAIE,QAAQ,CAC/C0F,iBAAkB5F,EAAI2B,KACtBkE,aAAc7F,EAAIW,OAAO,CACvBmF,cAAe9F,EAAI2B,KACnBoE,WAAY/F,EAAIgB,QAElBgF,uBAAwBhG,EAAI2B,KAC5BoF,sBAAuB/G,EAAIW,OAAO,CAAEqG,UAAWhH,EAAIgB,QACnDiF,kBAAmBjG,EAAIQ,KACvB0F,aAAclG,EAAIgB,MAClBmF,kBAAmBnG,EAAIW,OAAO,CAAEyF,QAASpG,EAAIgB,UAEzCiG,EAAajH,EAAIE,QAAQ,CAC7BgH,cAAe9E,EACf+E,QAAS/E,EACTgF,OAAQpH,EAAIW,OAAO,CACjB0G,cAAerH,EAAIgB,MACnBoD,YAAapE,EAAIgB,MACjB+D,KAAM3C,IAERkF,QAASlF,IAELmF,EAAqBvH,EAAIE,QAAQ,CACrC2F,aAAc7F,EAAIW,OAAO,CACvBmF,cAAe9F,EAAI2B,KACnBoE,WAAY/F,EAAIgB,QAElBgF,uBAAwBhG,EAAI2B,KAC5BsE,kBAAmBjG,EAAIQ,KACvBgH,WAAYxH,EAAIW,OAAO,CACrB8G,uBAAwBzH,EAAImB,MAC5BuG,sBAAuB1H,EAAIa,IAAIb,EAAImB,WAGvC,OAAOnB,EAAI2H,QAAQ,CACjBC,wBAAyB5H,EAAI6H,KAC3B,CAAC7H,EAAIW,OAAO,CAAEiD,OAAQ5D,EAAIa,IAAIb,EAAIgB,UAClC,CAAChB,EAAIW,OAAO,CAAEmH,WAAY9H,EAAIgB,MAAO+G,YAAa/H,EAAIgB,SACtD,CAAC,UAEHgH,gBAAiBhI,EAAI6H,KACnB,CACE7H,EAAIW,OAAO,CACTsB,MAAOjC,EAAIa,IAAIb,EAAIK,WACnB6B,WAAYlC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,UAGpC,CAACnC,EAAI2B,MACL,IAEFsG,gBAAiBjI,EAAI6H,KAAK,GAAI,CAAC7H,EAAIgB,OAAQ,CAAC,UAC5CkH,WAAYlI,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAEwH,MAAOnI,EAAIgB,MAAOoH,OAAQpI,EAAIgB,SAAW,CAAChB,EAAII,IAAIgD,IAAS,CAAC,UAC/FiF,gBAAiBrI,EAAI6H,KAAK,GAAI,CAACrC,GAAa,CAAC,UAC7C8C,uBAAwBtI,EAAI6H,KAAK,GAAI,CAAC/F,GAAU,IAChDyG,aAAcvI,EAAI6H,KAAK,CAACpC,GAAkB,CAACzF,EAAIE,QAAQ,CAAEsI,GAAI9C,EAAe+C,IAAK9C,KAAsB,IACvG+C,oBAAqB1I,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAEyD,YAAapE,EAAIgB,SAAW,CAACqF,GAAoB,CAAC,UAC9FsC,2BAA4B3I,EAAI6H,KAC9B,CAACjB,GACD,CACE5G,EAAIE,QAAQ,CACVsI,GAAI9C,EACJ+C,IAAK3B,KAGT,IAEF8B,eAAgB5I,EAAI6H,KAClB,CACE7H,EAAIW,OAAO,CACTsB,MAAOjC,EAAIa,IAAIb,EAAIK,WACnB6B,WAAYlC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,UAGpC,CACEnC,EAAIE,QAAQ,CACVsI,GAAIxI,EAAII,IAAI6G,GACZwB,IAAKlB,KAGT,KAEF,ECvOSsB,EAAeC,GAC1BC,EAAAA,GAAMC,OAAiB,CACrBC,WAAYC,EAAAA,GACZJ,WACAhJ,WACF,IAEWqJ,EAAaC,eAA0CC,EAAAA,EAAAA,IAAMC,EAAAA,GAAUR,E,8DCb7E,MAAMhJ,EAAaC,IAAmB,IAAlB,IAAEC,GAAUD,EACrC,MAAMwJ,EAAQvJ,EAAIW,OAAO,CAAE8D,QAASzE,EAAI2B,KAAM6H,SAAUxJ,EAAI2B,OACtD8H,EAAiBzJ,EAAIW,OAAO,CAChCoD,IAAK/D,EAAI0J,IACTC,aAAc3J,EAAI2B,KAClBiI,OAAQL,EACRM,OAAQN,IAEJO,EAAW9J,EAAIW,OAAO,CAC1BoD,IAAK/D,EAAI0J,IACTK,IAAK/J,EAAI2B,KACTqI,YAAahK,EAAIiK,IACjBL,OAAQL,EACRM,OAAQN,EACRN,WAAYjJ,EAAIK,YAEZ6J,EAAQlK,EAAIE,QAAQ,CACxBiK,YAAanK,EAAIQ,KACjB4J,cAAepK,EAAI2B,KACnB0I,iBAAkBrK,EAAI2B,KACtBwE,kBAAmBnG,EAAIQ,OAEnB8J,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIT,EAAUU,IAAKN,IAC5CO,EAAYzK,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,IAAKgB,UAAW1K,EAAI0J,MAC1DiB,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAIE,EAAWD,IAAKN,IAC7CU,EAAc5K,EAAIW,OAAO,CAC7BoD,IAAK/D,EAAI0J,IACTE,OAAQL,EACRM,OAAQN,IAEJsB,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAI0J,GAAWU,IAAKN,IAmCzD,OAlCoBlK,EAAI2H,QAAQ,CAC9BmD,WAAY9K,EAAI6H,KAAK,CAAC4B,GAAiB,CAACa,GAAW,IACnDS,WAAY/K,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,GAAI,IACrCqJ,sBAAuBhL,EAAI6H,KACzB,GACA,CACE7H,EAAIW,OAAO,CACTsK,OAAQjL,EAAII,IAAIJ,EAAIK,WACpB6K,QAASlL,EAAII,IAAIJ,EAAIK,cAGzB,IAEF8K,qBAAsBnL,EAAI6H,KACxB,GACA,CACE7H,EAAIW,OAAO,CACTyK,UAAWpL,EAAII,IAAIJ,EAAIK,WACvBqK,UAAW1K,EAAI8E,QAGnB,IAEFuG,aAAcrL,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,IACvCW,QAAStL,EAAI6H,KAAK,CAAC+C,GAAc,CAACN,GAAW,IAC7CiB,SAAUvL,EAAI6H,KAAK,GAAI,CAACgD,GAAS,CAAC,UAClCW,gBAAiBxL,EAAI6H,KAAK,GAAI,CAACgD,GAAS,CAAC,UACzCY,WAAYzL,EAAI6H,KAAK,CAAC+C,GAAc,GAAI,IACxCc,aAAc1L,EAAI6H,KAAK,CAAC7H,EAAI8E,MAAO,GAAI,IACvC6G,WAAY3L,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IACnDuL,eAAgB5L,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IACjEwL,UAAW7L,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClDyL,aAAc9L,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,KAErC,EC5DP0L,EAA0BA,IACrChD,EAAAA,GAAMC,OAAgC,CACpCgD,UAAWC,EAAAA,GAAUC,YACrBpM,WAAYqM,G,0ECND,SAASC,EAAgBC,GACtC,OACEC,EAAAA,EAAAA,MAACC,EAAAA,EAAO,CAACC,QAAQ,eAAgBH,EAAKI,SAAA,EACpCC,EAAAA,EAAAA,KAAA,QACEC,QAAQ,MACRC,EAAE,gNAEJF,EAAAA,EAAAA,KAAA,QAAME,EAAE,6SAGd,C,+HCNA,MAAMC,GAAYC,EAAAA,EAAAA,GAAW,CAC3BC,KAAM,CACJC,QAAS,eACTC,OAAQ,UACR5K,OAAQ,iBAQZ,GAAe6K,EAAAA,EAAAA,aACb,CAAAnN,EAEEoN,KACI,IAFJ,QAAEC,EAAO,SAAEX,EAAQ,KAAEY,GAAO,GAAkEtN,EAG9F,MAAMuN,EAAUT,KACTU,IAAYC,EAAAA,EAAAA,MAEbT,EAAOA,KACXU,IAAgBL,GAChBG,EAAS,eAAgBG,EAAAA,GAAY,EAWvC,OARAC,EAAAA,EAAAA,qBACER,GACA,MACEJ,UAEF,CAACA,IAGIM,EAAO,MACZX,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACC,UAAWP,EAAQP,KAAMe,QAASf,EAAKN,SACzCA,GAEJ,G,mQCXE,SAASsB,EAAShO,GAUL,IAVM,WACxBkJ,EAAU,QACV6E,EAAO,wBACPE,EAAuB,WACvBC,EAAU,YACVC,EAAW,YACXC,EAAW,SACXC,EAAQ,WACRC,EAAU,OACVC,GACevO,EACf,MAAMwO,GAAQC,EAAAA,EAAAA,MACRC,GAAYC,EAAAA,EAAAA,MACZC,GAAcC,EAAAA,EAAAA,GAAcL,EAAMM,YAAYC,KAAK,OAEnDC,GAAeC,EAAAA,EAAAA,UAAQ,KAC3B,GAAId,EAAa,OAAOjF,CACR,GACf,CAACiF,EAAajF,KAEV,CAAEgG,IAASC,EAAAA,EAAAA,IAASjG,IACnBkG,OAAQ/I,EAAO,QAAEgJ,IAAYC,EAAAA,EAAAA,IAAgBN,EAAcN,GAC7Da,GAAiBC,EAAAA,EAAAA,IAAgBR,IAEjC,aAAES,EAAY,mBAAEC,EAAkB,mBAAEC,IAAuBC,EAAAA,EAAAA,MAE3DC,GAAqBZ,EAAAA,EAAAA,UAAQ,KACjC,GAAKC,QAAqBY,IAAZzJ,EACd,OAAO0J,EAAAA,EAAAA,GAAiB1J,EAAS6I,EAAMc,UAAUC,UAAU,GAC1D,CAACf,EAAO7I,KAOX6J,EAAAA,EAAAA,YAAU,KACJhH,GAAc7C,GACZ4H,GAAyBA,EAAwB/E,EAAY7C,EAAQ4J,WAC3E,GACC,CAAC/G,EAAY7C,IAEhB,MAAM8J,EAAWV,EAAaW,SAASlH,GAYjCmH,GAAWpB,EAAAA,EAAAA,UAAQ,MACnBV,KACCL,KACAgB,KAEDoB,EAAAA,EAAAA,GAAiBpC,IACP,OAALgB,QAAK,IAALA,OAAK,EAALA,EAAOxK,WAAYwJ,GAIzBgB,EAAMqB,OAAOC,oBAAoBJ,SAASlC,EAAWsC,uBACrDtB,EAAMuB,KAAKD,oBAAoBJ,SAASlC,EAAWsC,wBAErD,CAACtC,EAAYgB,EAAOX,IAQvB,OANA2B,EAAAA,EAAAA,YAAU,KACJ9B,GAAelF,GACjBkF,EAAYlF,EAAYmH,EAC1B,GACC,CAACA,EAAUnH,EAAYkF,KAGxB7B,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFzD,QAASoD,EAAW,OAAS,OAC7B/N,OAAQ,OACR4K,OAAQ,UACRyD,QAAS/B,EAAc,SAAW,SAClCgC,oBAAqB,iBACrBC,IAAK,QACLC,WAAY,SACZ,aAAc,CACZlE,QAAS,GACTM,OAAQ,WAEV,WAAY,CACV6D,WAAYvC,EAAMwC,QAAQD,WAAWE,OACrC/D,OAAQ,WAEV,UAAW,CACT6D,WAAYvC,EAAMwC,QAAQD,WAAWE,QAEvC,4BAA6B,CAC3BL,oBAAqB,mBAGzB7C,QArEoBmD,KACjBhC,GACDnB,GAASA,EAAQmB,EAAM,EAoEzBpB,UAAW,GAAGQ,EAAa,WAAa,KAAKD,EAAW,UAAY,KAAK3B,SAAA,EAEzEC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFH,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAASD,IAAI,SAAQnE,SAAA,EAC9CC,EAAAA,EAAAA,KAAC0E,EAAAA,GAAU,CAACC,KAAW,OAALpC,QAAK,IAALA,OAAK,EAALA,EAAOoC,KAAMC,KAAM3C,EAAc,OAAS,OAAQ4C,QAAc,OAALtC,QAAK,IAALA,OAAK,EAALA,EAAOxK,WAEpFiI,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACM,MAAI,EAACC,IAAE,EAAChB,GAAI,CAAEiB,SAAU,UAAWjF,UACvCC,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAAQpE,UACjCH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEkB,MAAO,QAASlF,SAAA,EACzBC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTC,MAAM,eACNpB,GAAI,CACFqB,WAAY,SACZJ,SAAU,SACVK,aAAc,WACdC,SAAU,OACVC,WAAY,IACZ,4BAA6B,CAC3BD,SAAU,SAEZvF,SAEI,OAALwC,QAAK,IAALA,OAAK,EAALA,EAAOqB,UAEV5D,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTI,SAAS,OACTvB,GAAI,CAAEqB,WAAY,SAAUJ,SAAU,SAAUK,aAAc,WAAYG,OAAQ,aAAczF,SAE1F,OAALwC,QAAK,IAALA,OAAK,EAALA,EAAOuB,oBAQpB9D,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFC,EAAAA,EAAAA,KAACyF,EAAAA,GAAkB,CACjB3I,SAAUyF,GAASA,EAAMzF,SAAYyF,EAAMzF,SAA8B,KACzE4I,aAAa,OACb/P,OAAO,OACP2P,SAAS,YAIbtF,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFH,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CAACC,WAAS,EAACkB,eAAe,WAAWxB,WAAW,SAAQpE,SAAA,CACzDyB,EAAqBkB,GACrB1C,EAAAA,EAAAA,KAAC4F,EAAAA,GAAU,CAAClD,SAAO,KAEnB9C,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAAnB,SAAA,EACFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTC,MAAM,eACNU,MAAM,QACN9B,GAAI,CACF+B,SAAU,QACVR,SAAU,OACV,4BAA6B,CAC3BA,SAAU,SAGdC,WAAY,IAAIxF,SAEfmD,GAAqB6C,EAAAA,EAAAA,IAAa7C,GAAsB,QAE3DlD,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTW,MAAM,QACN9B,GAAI,CACFyB,OAAQ,YACR,4BAA6B,CAC3BF,SAAU,SAEZvF,UAEDiG,EAAAA,EAAAA,GAAYpD,KAAmBoD,EAAAA,EAAAA,GAAYtM,KAAYsM,EAAAA,EAAAA,GAAYzD,IAChE0D,EAAAA,EAAAA,IACE,IAAIC,EAAAA,EAAUtD,GAAgBuD,cAAa/C,EAAAA,EAAAA,GAAiB1J,EAAS6I,EAAMc,WAAWC,YAExF,UA/BM,KAoCf9B,GAAegC,EAAW,MACzBxD,EAAAA,EAAAA,KAACoG,EAAAA,EAAU,CAACjB,MAAOtD,EAAMwE,YAAYC,cAAe1B,KAAK,OAAOxD,QA7IhDmF,IACxBA,EAAMC,kBAEFhD,EACFR,EAAmB,CAACzG,IAEpBwG,EAAmB,CAACxG,GACtB,WA4IJ,C,oSCzNA,MAAMkK,EAAc,CAACC,EAAAA,GAAKC,EAAAA,GAAKC,EAAAA,GAAQC,EAAAA,GAAOC,EAAAA,GAAOC,EAAAA,EAAQC,EAAAA,GAAKC,EAAAA,IAO3D,SAASC,EAAS7T,GAA2C,IAA1C,MAAEkP,EAAK,aAAE4E,GAA8B9T,EAC/D,MAAMwO,GAAQC,EAAAA,EAAAA,MAERsF,GAAcC,EAAAA,EAAAA,cAAY,KAC1B9E,GACF4E,EAAa5E,EACf,GACC,CAAC4E,EAAc5E,IAElB,OACE3C,EAAAA,EAAAA,MAAC0H,EAAAA,GAAI,CACHvD,GAAI,CACFC,QAAS,mBACTuD,OAAQ,oBACR7B,aAAc,OACdnF,OAAQ,UACR,UAAW,CACT6D,WAAYvC,EAAMwC,QAAQD,WAAWoD,SAGzCtD,IAAI,QACJ9C,QAASgG,EAAYrH,SAAA,EAErBC,EAAAA,EAAAA,KAAC0E,EAAAA,GAAU,CAACC,KAAMpC,EAAMoC,KAAMC,KAAK,UACnC5E,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFoB,MAAO,eACPI,WAAY,IACZD,SAAU,OACV,2BAA4B,CAC1BA,SAAU,SAEZvF,SAEDwC,EAAMqB,WAIf,CAMO,SAAS6D,EAAUC,GAAqC,IAApC,aAAEP,GAA+BO,EAC1D,OACE1H,EAAAA,EAAAA,KAACsH,EAAAA,GAAI,CACHvD,GAAI,CACFyB,OAAQ,aACRxB,QAAS,SACT,2BAA4B,CAC1B2B,eAAgB,aAChB3B,QAAS,WAGbE,IAAI,OACJyD,KAAK,OAAM5H,SAEV0G,EAAYmB,KAAKC,IAChB7H,EAAAA,EAAAA,KAACkH,EAAS,CAA0B3E,MAAOsF,EAAYV,aAAcA,GAArDU,EAAW9P,YAInC,CCxDA,MAAMoI,GAAYC,EAAAA,EAAAA,IAAW,KACpB,CACL0H,QAAS,CACP9D,QAAS,SACT,2BAA4B,CAC1BA,QAAS,eAcF,SAAS+D,EAAQ1U,GAMb,IANc,KAC/B2U,EAAI,SACJC,EAAQ,QACRC,EAAO,oBACPC,EAAsB,GAAE,kBACxBC,EAAoB,IACN/U,EACd,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MACRzG,GAAQC,EAAAA,EAAAA,MACRyG,GAASC,EAAAA,EAAAA,IAAY3G,GACrBjB,EAAUT,IAEV8B,GAAcC,EAAAA,EAAAA,GAAcL,EAAMM,YAAYC,KAAK,QAClDqG,EAAeC,IAAoBC,EAAAA,EAAAA,UAAS,KAC5CC,EAAqBC,IAA0BF,EAAAA,EAAAA,WAAS,IACxDG,EAAmBC,IAAwBJ,EAAAA,EAAAA,UAAmB,KAE7DlG,OAAQuG,IAAqBC,EAAAA,EAAAA,KAC/BC,GAAkBC,EAAAA,EAAAA,OAElB,aAAErG,IAAiBG,EAAAA,EAAAA,MAEnBmG,GAAuB9G,EAAAA,EAAAA,UAAQ,IAC5B,IAAI,IAAI+G,IAAIC,EAAAA,GAAyB1B,KAAK2B,GAAMA,EAAExR,UAASyR,OAAO1G,MACxE,CAACwG,EAAAA,GAA0BxG,KAExB,UAAE2G,EAAS,cAAEC,IAAkBpH,EAAAA,EAAAA,UAAQ,KAC3C,IAAK0G,EAAkB,MAAO,CAAC,EAE/B,MAAMS,EAAiC,GACjCC,EAAqC,GAgB3C,OAdAR,EACGS,QAAQpH,IACC6G,EAAW3F,SAASlB,EAAMhG,cAEnCqN,SAASrH,IACR,MAAMsH,EAAeb,EAAiBc,MAAMP,GAAMA,EAAEQ,aAAaC,qBAAuBzH,EAAMhG,aAE9E,OAAZsN,QAAY,IAAZA,GAAAA,EAAcE,aAAaE,iBAC7BR,EAAUS,KAAK3H,GAEfmH,EAAcQ,KAAK3H,EACrB,IAGG,CAAEkH,UAAWA,EAAU7B,KAAK2B,GAAMA,EAAEhN,aAAamN,cAAeA,EAAc9B,KAAK2B,GAAMA,EAAEhN,aAAa,GAC9G,CAAC2M,EAAiBE,EAAYJ,IAE3BmB,GAAmB9C,EAAAA,EAAAA,cACtB9E,IACK4F,EAAoB1E,SAAc,OAALlB,QAAK,IAALA,OAAK,EAALA,EAAOxK,QAAQuL,aAC5C2E,GAAUA,EAAS1F,EAAM,GAE/B,CAAC4F,IAGGiC,GAAoB/C,EAAAA,EAAAA,cAAazR,IACrCiT,GAAuB,GACvBH,EAAiB9S,EAAM,GACtB,KAEI,CAAEyU,IAAmBC,EAAAA,EAAAA,GAA0B7B,EAAe2B,EAAmB,KAElFG,GAAkBjI,EAAAA,EAAAA,UAAQ,OACzBmG,GAAkBW,GAAeM,GAAkBD,QAEpD9F,EAAAA,EAAAA,GAAiB8E,KACXW,EAAWI,OAAOE,GAAeF,OAAOC,GAAWhG,SAASgF,KAIrE,CAACA,EAAeW,EAAYM,EAAeD,IAExCe,EAAoBA,CAACjO,EAAoBqF,KAC7C,MAAM6I,EAAQ3B,EAAkB4B,QAAQnO,IAEzB,IAAXkO,EAWA7I,GACFmH,GAAsB4B,GAEb,IADgB,IAAIA,EAAWpO,MAZnCqF,GACHmH,GAAsB4B,IACpB,MAAMC,EAAiB,IAAID,GAE3B,OADAC,EAAeC,OAAOJ,EAAO,GACtB,IAAIG,EAAe,GAWhC,EAGIE,GAAsBxI,EAAAA,EAAAA,UAAQ,IAC3B,IAAI,IAAI+G,IAAI,IAAID,KAAyB,OAATK,QAAS,IAATA,EAAAA,EAAa,MAAsB,OAAbC,QAAa,IAAbA,EAAAA,EAAiB,OAC7E,CAACN,EAAYK,EAAWC,IAErBqB,GAASzI,EAAAA,EAAAA,UAAQ,IACdwG,EAAkBpN,SAAWoP,EAAoBpP,SAA8B,IAApB6O,GACjE,CAACzB,EAAmBgC,EAAqBP,IAE5C,OACEvK,EAAAA,EAAAA,KAAAgL,EAAAA,SAAA,CAAAjL,UACEC,EAAAA,EAAAA,KAACiL,EAAAA,EAAS,CACRjD,KAAMA,EACNkD,MAAO7C,EAAE,yBACTH,QAASA,EACTiD,YAAa,CACXpH,GAAI,CACF,qBAAsB,CACpBC,QAAS,IACTiB,MAAO,QACPmG,gBAAiB7C,EAAS1G,EAAMwC,QAAQD,WAAWiH,OAASxJ,EAAMyJ,OAAOC,cAE3E,2BAA4B,CAC1BvH,QAAS,OAGbjE,UAEFH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFyH,SAAU,YACVzL,SAAA,EAEFC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEC,QAAS/B,EAAc,SAAW,SAAUuD,OAAQ,cAAezF,UAC5EC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAEuB,SAAU,OAAQmG,WAAY,WAAY1L,SACzDsI,EAAE,uCAIPrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFyH,SAAU,WACVhG,OAAQ,aACRxB,QAAS/B,EAAc,SAAW,UAClClC,UAEFC,EAAAA,EAAAA,KAAC0L,EAAAA,GAAe,CACdC,WAAS,EACTjG,aAAa,MACbtB,WAAYvC,EAAMwC,QAAQD,WAAWwH,OACrCC,gBAAgB,OAChBC,WAAS,EACTC,YAAa1D,CAAC,6BACd2D,eAAgB,CACdC,UAAW,CACTC,MAAO,CACLC,gBACEnM,EAAAA,EAAAA,KAACoM,EAAAA,EAAc,CAACZ,SAAS,QAAOzL,UAC9BC,EAAAA,EAAAA,KAACqM,EAAAA,EAAU,CAAClH,MAAOtD,EAAMwE,YAAYC,cAAe1B,KAAK,WAG7D0H,UAAW,MAIjBrE,SAAUoC,OAIdrK,EAAAA,EAAAA,KAACyH,EAAU,CAACN,aAAcgD,KAE1BnK,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEyB,OAAQ,SAAUP,MAAO,OAAQtP,OAAQ,MAAOyO,WAAYvC,EAAMwC,QAAQD,WAAWE,WAEhG1E,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEpO,OAAQ,QAASqP,SAAU,eAAgBjF,SAAA,CACnDgL,GAAS/K,EAAAA,EAAAA,KAACuM,EAAAA,GAAM,IAAM,KAEtBhC,GAAmB9B,IAAiB9E,EAAAA,EAAAA,GAAiB8E,KAAmBG,GACvE5I,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACC,UAAWP,EAAQkH,QAAQ/H,UAC9BC,EAAAA,EAAAA,KAACwM,EAAAA,EAAW,CAACjQ,WAAYkM,EAAegE,SAAUA,IAAM5D,GAAuB,OAE/E,MAEJjJ,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAAnB,SAAA,CACD0I,EAAgB,MACfzI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACC,UAAWP,EAAQkH,QAAQ/H,UAC9BC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACI,SAAS,OAAMvF,SAAEsI,EAAE,2CAInCrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAIjE,EAAgB,MAAQ,OAAO1I,UAC1B,OAAVqJ,QAAU,IAAVA,EAAAA,EAAc,IAAIxB,KAAK/C,IACvB7E,EAAAA,EAAAA,KAACqB,EAAAA,EAAS,CAER9E,WAAYsI,EACZzD,QAAS+I,EACT5I,WAAYkH,EACZjH,aAAW,EACXC,YAAa+I,EACb9I,SAAU0G,EAAkB3E,SAASoB,GACrClD,WAAYwG,EAAoB1E,SAASoB,IAPpCA,WAabjF,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAACwL,GAAIjE,GAA0E,KAA/C,OAATgB,QAAS,IAATA,EAAAA,EAAa,IAAID,OAAoB,OAAbE,QAAa,IAAbA,EAAAA,EAAiB,IAAIhO,OAAe,MAAQ,OAAOqE,SAAA,CACnG0I,GAA0E,KAA/C,OAATgB,QAAS,IAATA,EAAAA,EAAa,IAAID,OAAoB,OAAbE,QAAa,IAAbA,EAAAA,EAAiB,IAAIhO,OAAe,MAC7EsE,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAAC/D,UAAWP,EAAQkH,QAASxC,SAAS,OAAMvF,SACpDsI,EAAE,wBAIPzI,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAACwL,GAAIjE,GAA8C,KAAnB,OAATgB,QAAS,IAATA,EAAAA,EAAa,IAAI/N,OAAe,MAAQ,OAAOqE,SAAA,CACvE0I,GAA8C,KAAnB,OAATgB,QAAS,IAATA,EAAAA,EAAa,IAAI/N,OAAe,MACjDsE,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAAC/D,UAAWP,EAAQkH,QAASxC,SAAS,OAAOC,WAAY,IAAIxF,SACrEsI,EAAE,wBAIPrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAIjE,GAA8C,KAAnB,OAATgB,QAAS,IAATA,EAAAA,EAAa,IAAI/N,OAAe,MAAQ,OAAOqE,UAC7D,OAAT0J,QAAS,IAATA,EAAAA,EAAa,IAAI7B,KAAK/C,IACtB7E,EAAAA,EAAAA,KAACqB,EAAAA,EAAS,CAER9E,WAAYsI,EACZzD,QAAS+I,EACT5I,WAAYkH,EACZhH,YAAa+I,EACb9I,SAAU0G,EAAkB3E,SAASoB,GACrClD,WAAYwG,EAAoB1E,SAASoB,IANpCA,WAYbjF,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAACwL,GAAIjE,GAAkD,KAAnB,OAAbiB,QAAa,IAAbA,EAAAA,EAAiB,IAAIhO,OAAe,MAAQ,OAAOqE,SAAA,CAC3E0I,GAAkD,KAAnB,OAAbiB,QAAa,IAAbA,EAAAA,EAAiB,IAAIhO,OAAe,MACrDsE,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAAC/D,UAAWP,EAAQkH,QAASxC,SAAS,OAAOC,WAAY,IAAIxF,SACrEsI,EAAE,0BAIPrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAIjE,GAAkD,KAAnB,OAAbiB,QAAa,IAAbA,EAAAA,EAAiB,IAAIhO,OAAe,MAAQ,OAAOqE,UAC7D,OAAb2J,QAAa,IAAbA,EAAAA,EAAiB,IAAI9B,KAAK/C,IAC1B7E,EAAAA,EAAAA,KAACqB,EAAAA,EAAS,CAER9E,WAAYsI,EACZzD,QAAS+I,EACT5I,WAAYkH,EACZhH,YAAa+I,EACb9I,SAAU0G,EAAkB3E,SAASoB,GACrClD,WAAYwG,EAAoB1E,SAASoB,IANpCA,sBAiB3B,C,0ECrSe,SAAS8H,EAAYhN,GAAqB,IAADiN,EACtD,OACE5M,EAAAA,EAAAA,KAAC6M,EAAAA,EAAM,IAAKlN,EAAOoE,GAAI,CAAEK,WAAY,aAAuB,QAAZwI,EAAIjN,EAAMoE,UAAE,IAAA6I,EAAAA,EAAI,CAAC,GAAK7M,SAAC,QAI3E,C,qFCIO,SAAS2E,EAAUrR,GAAyD,IAAxD,QAAEwR,EAAO,KAAEF,EAAI,GAAEZ,EAAE,KAAEa,EAAO,QAAyBvR,EAC9E,MAAM4W,GAAmB6C,EAAAA,EAAAA,GAAkBjI,GAE3C,OAAO7E,EAAAA,EAAAA,KAAC+M,EAAAA,EAAY,CAACnI,KAAMA,EAAMD,KAAMA,EAAMZ,GAAIA,EAAIiJ,MAAO/C,GAC9D,C,gICdO,SAASgD,EAAMtN,GAAqB,IAADiN,EACxC,OACE5M,EAAAA,EAAAA,KAAC6M,EAAAA,EAAM,IAAKlN,EAAOoE,GAAI,CAAEK,WAAY,iBAA2B,QAAZwI,EAAIjN,EAAMoE,UAAE,IAAA6I,EAAAA,EAAI,CAAC,GAAK7M,SAAC,QAI/E,C,qCCEO,SAASmN,EAAc7Z,GAA0C,IAAzC,KAAEuR,EAAO,QAA6BvR,EACnE,MAAM8Z,GAAYC,EAAAA,EAAAA,MAEZC,GAAW/K,EAAAA,EAAAA,UAAQ,KAAO,IAADgL,EAC7B,OAAKH,EACqD,QAA1DG,EAAOC,EAAAA,GAAiBzD,MAAMP,GAAMA,EAAE3T,QAAUuX,WAAU,IAAAG,OAAA,EAAnDA,EAAqD3I,KADrC,IACyC,GAC/D,CAACwI,IAEJ,OAAOA,GAAaE,GAAWrN,EAAAA,EAAAA,KAACiN,EAAK,CAAClJ,GAAI,CAAEkB,MAAOL,EAAMjP,OAAQiP,GAAQ4I,IAAKH,IAAe,IAC/F,C,sLCXA,MAAMlN,GAAYC,EAAAA,EAAAA,IAAYyB,IACrB,CACL4L,OAAQ,CACNnN,QAAS,OACT6D,WAAY,SACZwB,eAAgB,SAChBV,MAAO,QACPtP,OAAQ,OACR+P,aAAc,MACdtB,WAAYvC,EAAMwC,QAAQD,WAAWwH,OACrCrL,OAAQ,eAWP,SAASmN,EAAcra,GAA6C,IAA5C,WAAEkJ,EAAU,KAAEoR,GAA2Bta,EACtE,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MACRzG,GAAQC,EAAAA,EAAAA,MACRlB,EAAUT,IACVyN,GAAsBC,EAAAA,EAAAA,OAErBC,EAAYC,IAAiBpF,EAAAA,EAAAA,WAAS,IACtCjG,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,GAEjCsF,GAAe5G,EAAAA,EAAAA,cAAY3K,UAC/B,GAAIgG,EAAS,OACbsL,GAAW,GACX,MAAMlR,QAAiBoR,EAAAA,EAAAA,IAAiB,CAAE3R,gBAEtC4R,EAAAA,EAAAA,GAAWrR,GACbiR,GAAc,IAEdH,EAAoB,CAAC,CAAErR,aAAYO,eACnCsR,EAAAA,EAAAA,IAAe,CAAC,CAAE7R,aAAYO,cAC9B6Q,KAEFK,GAAW,EAAM,GAChB,CAACzR,EAAYqR,EAAqBlL,IAErC,OACE9C,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFyH,SAAU,WACV9F,aAAc,OACdtB,WAAYvC,EAAMwC,QAAQD,WAAWE,OACrCN,QAAS,QACTjE,SAAA,EAEFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACW,MAAM,SAAQ9F,SAAEsI,EAAE,qBAE7ByF,GACC9N,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CAAEuB,SAAU,OAAQC,WAAY,IAAKJ,MAAO,cAAeK,OAAQ,SAAU6I,UAAW,UAAWtO,SAEtGsI,EAAE,uBAEH,MAEJrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAG,OAAO3I,GAAI,CAAEzD,QAAS,OAAQqF,eAAgB,SAAUzB,IAAK,UAAWnE,UAC9EH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAACC,UAAWP,EAAQ6M,OAAQrM,QAAS6M,EAAalO,SAAA,EACpDC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeI,WAAY,IAAIxF,SAC9CsI,EAAE,gBAEJ3F,GAAU1C,EAAAA,EAAAA,KAACsO,EAAAA,EAAgB,CAACnJ,MAAM,UAAUP,KAAM,GAAIb,GAAI,CAAEyB,OAAQ,eAAoB,YAKnG,C,uGCtEO,SAAS+I,IACd,OACE3O,EAAAA,EAAAA,MAAA,OAAKqF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,SAAA,EAC5FH,EAAAA,EAAAA,MAAA,KAAG8O,SAAS,0BAAyB3O,SAAA,EACnCC,EAAAA,EAAAA,KAAA,QACEE,EAAE,kNACFsO,KAAK,aAEPxO,EAAAA,EAAAA,KAAA,QACEE,EAAE,urBACFsO,KAAK,aAEPxO,EAAAA,EAAAA,KAAA,QACEE,EAAE,4eACFsO,KAAK,gBAGTxO,EAAAA,EAAAA,KAAA,QAAAD,UACEC,EAAAA,EAAAA,KAAA,YAAU2O,GAAG,oBAAmB5O,UAC9BC,EAAAA,EAAAA,KAAA,QAAMiF,MAAM,KAAKtP,OAAO,KAAK6Y,KAAK,QAAQI,UAAU,gCAK9D,CASO,SAASC,EAAaxb,GAA8E,IAADyb,EAAA,IAA5E,WAAEvS,EAAU,KAAEyL,EAAI,QAAEE,EAAO,qBAAE6G,GAA6C1b,EACtG,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MACRzG,GAAQC,EAAAA,EAAAA,OACPkN,EAAaC,IAAkBtG,EAAAA,EAAAA,WAAS,IAEzC,mBAAE5F,IAAuBE,EAAAA,EAAAA,OACxBiM,IAAkBC,EAAAA,EAAAA,OAElB,CAAE5M,IAASC,EAAAA,EAAAA,IAASjG,GAW3B,IAAI6S,EAAQ,GAGZ,OAFKlB,EAAAA,EAAAA,IAAiB3R,KAAa6S,EAAQ/G,CAAC,uBAG1CzI,EAAAA,EAAAA,MAACyP,EAAAA,GAAK,CACJrH,KAAMA,EACNE,QAASA,EACTgD,MAAO7C,EAAE,uBACT8C,YAAa,CACXpH,GAAI,CACF,mBAAoB,CAClBkB,MAAO,QACPa,SAAU,QACV1B,WAAYvC,EAAMwC,QAAQD,WAAWiH,UAGzCtL,SAAA,EAEFH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAAnB,SAAA,EACFH,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CACHwE,WAAS,EACT/H,GAAI,CAAEK,WAAYvC,EAAMwC,QAAQD,WAAWoD,OAAQxD,QAAS,OAAQ0B,aAAc,QAClFG,MAAM,aAAY9F,SAAA,EAElBC,EAAAA,EAAAA,KAAC6M,EAAAA,EAAM,CAAC9I,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,OAAQ2Z,YAAa,QAAU9B,IAAgB,QAAbsB,EAAO,OAALvM,QAAK,IAALA,OAAK,EAALA,EAAOoC,YAAI,IAAAmK,EAAAA,EAAI,GAAG/O,SAAC,UAI5FH,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACiI,UAAQ,EAAC1J,MAAM,aAAY9F,SAAA,EAC/BH,EAAAA,EAAAA,MAACsF,EAAAA,EAAU,CAACI,SAAS,OAAOC,WAAW,MAAMiK,UAAU,OAAOrK,MAAM,UAASpF,SAAA,CACrE,OAALwC,QAAK,IAALA,OAAK,EAALA,EAAOqB,OAAO,IAAO,OAALrB,QAAK,IAALA,OAAK,EAALA,EAAOuB,KAAK,QAE/B9D,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACI,SAAS,OAAOoH,GAAG,MAAK3M,SACjCxD,KAGHyD,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAG,MAAM3I,GAAI,CAAEkB,MAAO,eAAgBlF,UACzCC,EAAAA,EAAAA,KAACyF,EAAAA,GAAkB,CAAC3I,SAAe,OAALyF,QAAK,IAALA,OAAK,EAALA,EAAOzF,SAA4B4I,aAAa,YAGhF1F,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAG,OAAM3M,UACZC,EAAAA,EAAAA,KAACyP,EAAAA,GAAU,CAACC,KAAM,GAAGC,EAAAA,0BAAgCpT,cAA4B,OAALgG,QAAK,IAALA,OAAK,EAALA,EAAOzF,WAAWiD,SAC3FsI,EAAE,+BAMXzI,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CACHwE,WAAS,EACT/H,GAAI,CACFK,WAAY,0BACZmD,OAAQ,oBACR7B,aAAc,OACd1B,QAAS,YACTwB,OAAQ,cAEVtB,IAAI,SACJ2B,MAAM,aAAY9F,SAAA,EAElBC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEyH,SAAU,WAAYoE,IAAK,OAAQ7P,UAC5CC,EAAAA,EAAAA,KAACuO,EAAW,OAEd3O,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAAnB,SAAA,EACFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,UAAUpB,GAAI,CAAE0H,WAAY,QAAS1L,SACpDsI,EAAE,2BAGLrI,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,UAAUuH,GAAG,OAAO3I,GAAI,CAAE0H,WAAY,QAAS1L,SAC9DsI,EAAE,kCAKTzI,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACwE,WAAS,EAAC5H,IAAI,QAAQH,GAAI,CAAEyB,OAAQ,cAAezF,SAAA,EACvDC,EAAAA,EAAAA,KAAC6P,EAAAA,EAAQ,CACPC,QAASd,EACT/G,SAAUP,IAA8B,IAA3BqI,QAAQ,QAAED,IAAWpI,EAChCuH,EAAea,EAAQ,EAEzB/L,GAAI,CACFC,QAAS,QAIbhE,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAExD,OAAQ,UAAW+E,SAAU,QAAUlE,QAASA,IAAM6N,GAAgBD,GAAajP,SAClGsI,EAAE,oCAKTrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAG,OAAM3M,UACZC,EAAAA,EAAAA,KAACgQ,EAAAA,EAAM,CAACC,QAAQ,YAAYrL,KAAK,QAAQkH,WAAS,EAACoE,WAAYd,IAAUJ,EAAa5N,QArGtE+O,KACf5N,IAEL2M,EAAe7G,CAAC,yBAChBtF,EAAmB,CAACxG,IAChBwS,GAAsBA,IAC1B7G,IAAS,EA+FwGnI,SAC1GqP,GAAS/G,EAAE,wBAKtB,CCvJO,SAASmE,EAAWnZ,GAAoE,IAAnE,WAAEkJ,EAAU,SAAEkQ,EAAQ,qBAAEsC,GAAwC1b,EAC1F,MAAO+c,EAAMC,IAAW1H,EAAAA,EAAAA,UAAS,GAEjC,OACE/I,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,CACY,IAATqQ,GAAapQ,EAAAA,EAAAA,KAAC0N,EAAc,CAACnR,WAAYA,EAAYoR,KAAMA,IAAM0C,EAAQ,GAAIC,KAAM7D,IAAe,KACzF,IAAT2D,GACCpQ,EAAAA,EAAAA,KAAC6O,EAAa,CACZtS,WAAYA,EACZyL,KAAe,IAAToI,EACNlI,QAASA,IAAMmI,EAAQ,GACvBtB,qBAAsBA,IAEtB,OAGV,C,oLCuEO,SAASwB,EAAoB7I,GAAsE,IAArE,MAAE8I,EAAK,SAAEC,EAAQ,UAAEC,EAAY,QAAmChJ,EACrG,OACE9H,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAAnB,SAAA,CACD0Q,IACCzQ,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAEoB,MAAO,WAAaG,SAAUoL,EAAWlB,UAAU,OAAMzP,SAAC,OAK9EC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACsK,UAAU,OAAOlK,SAAUoL,EAAU3Q,SAC9CyQ,MAIT,CASA,SAASG,EAAKC,GAAyD,IAADC,EAAAC,EAAA,IAAvD,OAAEC,EAAM,MAAEnb,EAAK,MAAEob,EAAQ,GAAE,WAAEC,GAAwBL,EAClE,OACEhR,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFiB,SAAU,SACVK,aAAc,WACdD,WAAY,UAEdD,MAAM,cAAapF,SAElBgR,GAA+D,QAAzDF,EAAkD,QAAlDC,EAAGE,EAAMrH,QAAQuH,GAASA,EAAKtb,QAAUA,IAAO,UAAE,IAAAkb,OAAA,EAA/CA,EAAiDN,aAAK,IAAAK,EAAAA,EAAYjb,IAE7Eqb,GACCjR,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFiB,SAAU,SACVK,aAAc,WACdD,WAAY,SACZ+L,UAAW,OACXpR,SAEDkR,IAED,OAGV,CAEA,SAASvF,EAAe0F,EAsBtB3Q,GACC,IAAD4Q,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAtBA,MACE7b,EAAK,OACLmb,EAAM,SACN9I,EAAQ,MACR+I,EAAQ,GAAE,SACVlL,EAAQ,WACR4L,EAAU,SACVxB,EAAQ,aACRxK,EAAe,MAAK,UACpBiG,GAAY,EAAK,aACjBgG,EAAY,aACZC,EAAY,WACZX,EAAU,UACVY,EAAS,QACTC,EAAO,OACPvK,EAAM,WACNnD,EAAU,aACV2N,EAAY,eACZ/F,KACGrM,GACkByR,EAGvB,MAAMxQ,EA/JUvN,KAQK,IARJ,aACjB0e,EAAY,UACZpG,EAAS,WACTvH,EAAU,WACVsN,EAAU,UACVG,EAAS,aACTnM,EAAY,OACZ6B,GACelU,EACf,OAAO+M,EAAAA,EAAAA,IAAYyB,IACV,CACLmQ,SAAU,CACR1R,QAAS,OACT6D,WAAY,SACZoD,OAAQoE,EACE,OAANpE,QAAM,IAANA,EAAAA,EAAU1F,EAAMwC,QAAQkD,OAAO0K,QACpB,IAAX1K,EACA1F,EAAMwC,QAAQkD,OAAO0K,OACV,YAAX1K,EACA1F,EAAMwC,QAAQkD,OAAO2K,QACrB,OACJ9N,WAAYA,EACO,WAAfA,EACEvC,EAAMwC,QAAQD,WAAWoD,OACzBpD,EACFvC,EAAMwC,QAAQD,WAAWE,OAC7BoB,eACA1B,QAAqB,OAAZ+N,QAAY,IAAZA,EAAAA,EAAiBpG,EAAY,WAAa,WACnDzH,IAAK,QACLvO,OAAQgW,GAAakG,EAAY,OAASH,EAAa,OAAS,UAC5DG,EAAY,CAAEM,UAAW,QAAW,CAAC,EACzC3M,OAAQ,MACR,2BAA4B,CAC1BxB,SAAqB,OAAZ+N,QAAY,IAAZA,EAAAA,EAAgBpG,GAAY,UAAY,UAEnD,UAAW,CACTxG,MAAOtD,EAAMwC,QAAQ+N,KAAKC,SAE5B,UAAW,CACTC,YAAa,eAInB,EAoHcnS,CAAU,CACxB4R,eACApG,YACAvH,aACAsN,aACAhM,eACA6B,SACAsK,aAPc1R,IASToS,EAAUC,IAAe7J,EAAAA,EAAAA,UAAS,MACnC8J,GAAWC,EAAAA,EAAAA,QAA2B,MACtCC,GAAcD,EAAAA,EAAAA,QAA2B,OACxCE,EAAWC,IAAgBlK,EAAAA,EAAAA,eAA6BxF,GAWzD2P,EAAQA,KAAO,IAADC,EACV,OAARN,QAAQ,IAARA,GAAiB,QAATM,EAARN,EAAUO,eAAO,IAAAD,GAAjBA,EAAmBD,OAAO,GAG5B7R,EAAAA,EAAAA,qBACER,GACA,MACEqS,WAEF,CAACA,KAOHvP,EAAAA,EAAAA,YAAU,KAAO,IAAD0P,EACd,MAAMhO,EAAmB,OAAX0N,QAAW,IAAXA,GAAoB,QAATM,EAAXN,EAAaK,eAAO,IAAAC,OAAT,EAAXA,EAAsBC,YACpCL,EAAkB,OAAL5N,QAAK,IAALA,EAAAA,OAAS9B,EAAU,GAC/B,IAOH,OACEvD,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACFT,IAAKkS,EACLxR,UAAWP,EAAQoR,SACnBjO,GAAI,IACE2N,EAAa,CAAE/b,OAAQ,QAAW,CAAC,KACnCob,EAAS,CAAExQ,OAAQ,WAAc,CAAC,KAClCuF,EAAW,CAAEA,SAAU,GAAGA,OAAiB,CAAC,GAElD1E,QA7CuBmF,IAInB,IAAD4M,EAHHjD,IACAa,EACFyB,EAAYjM,EAAM6M,eAEV,OAARX,QAAQ,IAARA,GAAiB,QAATU,EAARV,EAAUO,eAAO,IAAAG,GAAjBA,EAAmBL,QACrB,EAuCiC/S,UAE7BC,EAAAA,EAAAA,KAAAgL,EAAAA,SAAA,CAAAjL,UACEH,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACwE,WAAS,EAAC/H,GAAI,CAAEsP,KAAM,GAAKC,QAAQ,gBAAevT,SAAA,CACpDgR,EAsCEnb,GACFoK,EAAAA,EAAAA,KAAC2Q,EAAK,CAACK,MAAOA,EAAOpb,MAAOA,EAAOqb,WAAYA,EAAYF,OAAQA,KAEnE/Q,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFiB,SAAU,SACVK,aAAc,WACdD,WAAY,UAEdD,MAAM,UAASpF,SAEdJ,EAAMoM,eAhDT/L,EAAAA,EAAAA,KAACuT,EAAAA,EAAS,CACRxP,GAAI,CACF,UAAW,CACT0H,WAAY,UACZnG,SAAwB,QAAhB+L,EAAE1R,EAAM2F,gBAAQ,IAAA+L,EAAAA,EAAI,QAE9B,aAAc,CACZ5F,WAAY,UACZnG,SAAwB,QAAhBgM,EAAE3R,EAAM2F,gBAAQ,IAAAgM,EAAAA,EAAI,QAE9B,uBAAwB,CACtBhM,SAA+B,QAAvBiM,EAAE5R,EAAMkM,uBAAe,IAAA0F,EAAAA,EAAI,QAErC,0BAA2B,CACzBjM,SAA+B,QAAvBkM,EAAE7R,EAAMkM,uBAAe,IAAA2F,EAAAA,EAAI,WAEpB,OAAdxF,QAAc,IAAdA,OAAc,EAAdA,EAAgBjI,IAErBkI,UAAW,CACTC,MAAO,CACLsH,kBAAkB,KACD,OAAdxH,QAAc,IAAdA,GAAyB,QAAXyF,EAAdzF,EAAgBC,iBAAS,IAAAwF,OAAX,EAAdA,EAA2BvF,QAGlCuG,SAAUA,KACN9S,EACJsQ,QAAQ,WACRhI,SAAUwL,IAAA,IAAG1D,QAAQ,MAAEna,IAAS6d,EAAA,OAAKxL,GAAYA,EAASrS,EAAM,EAChEA,MAAOA,EACPic,UAAWA,EACX/F,WAAS,EACToE,SAAUA,EACVe,WAAYA,EACZa,QAASA,EACT4B,aAAa,MACbC,YAAY,IAgBf5C,IAAU/Q,EAAAA,EAAAA,KAAC4T,EAAAA,EAAqB,CAAC7P,GAAI,CAAExD,OAAQ,oBAKrDsT,QAAQtB,KACP3S,EAAAA,EAAAA,MAACkU,EAAAA,EAAI,CACH3S,UAAU,gBACVoR,SAAUA,EACVvK,KAAM6L,QAAQtB,GACdrK,QA1FY6L,KAClBvB,EAAY,KAAK,EA0FXwB,aAAc,CACZzE,SAAU,SACV0E,WAAY,QAEdC,WAAY,CACVC,MAAO,CACLlP,MAAO2N,EACPhE,UAAW,qBAEb7O,SAAA,CAEDiR,EAAMpJ,KAAI,CAACsJ,EAAMzG,KAChBzK,EAAAA,EAAAA,KAACoU,EAAAA,EAAQ,CAEPjT,UAAW,IAAKyQ,GAAgBA,EAAaV,GAAQ,WAAa,IAClE9P,QAASA,KACDwQ,GAAgBA,EAAaV,IAlGrBmD,KAAgC,IAA/B,MAAEze,GAAuBye,EAChDpM,GAAUA,EAASrS,GACvB4c,EAAY,KAAK,EAiGL8B,CAAoBpD,EAAK,EACzBnR,SAEDmR,EAAKV,OAPDU,EAAKtb,MAAQ6U,KAUJ,IAAjBuG,EAAMtV,OAAeiW,IAAgB3R,EAAAA,EAAAA,KAACuM,EAAAA,EAAM,IAAM,UAK7D,CAEA,SAAe/L,EAAAA,EAAAA,YAAWkL,E,qFCvUX,SAAS6I,EAASC,GAC/B,OAAQ7U,IACNK,EAAAA,EAAAA,KAACyU,EAAAA,SAAQ,CAACC,UAAU1U,EAAAA,EAAAA,KAAC2U,EAAAA,EAAY,IAAI5U,UACnCC,EAAAA,EAAAA,KAACwU,EAAS,IAAK7U,KAGrB,C,kFCuKA,MACA,EAAe,IAA0B,gE,+CC5KlC,SAASiV,IACd,MAAM,EAAEvM,IAAMC,EAAAA,EAAAA,MAEd,OACEtI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEkB,MAAO,OAAQO,OAAQ,cAAezF,UAC/CC,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CAACwE,WAAS,EAACwH,QAAQ,SAASvP,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,QAASoK,UACrEH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQ6D,WAAY,SAAU0Q,cAAe,SAAUlP,eAAgB,UAAW5F,SAAA,EACpGC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeU,MAAM,SAAS9B,GAAI,CAAEuB,SAAU,OAAQE,OAAQ,cAAezF,SAC5FsI,EAAE,wBAELrI,EAAAA,EAAAA,KAAA,OAAKwN,IAAKsH,EAAgBC,IAAI,MAC9B/U,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFkB,MAAO,QACPb,WAAY,wBACZsB,aAAc,MACd1B,QAAS,QACTjE,UAEFH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEiB,SAAU,SAAU1E,QAAS,OAAQuU,cAAe,SAAU3Q,IAAK,UAAWnE,SAAA,EACvFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeG,SAAS,OAAOvB,GAAI,CAAEiR,UAAW,cAAejV,SAAC,sEAGlFH,EAAAA,EAAAA,MAACsF,EAAAA,EAAU,CAACC,MAAM,eAAeG,SAAS,OAAOvB,GAAI,CAAEiR,UAAW,cAAejV,SAAA,CAAC,8DAEhFC,EAAAA,EAAAA,KAACyP,EAAAA,GAAU,CAAC1L,GAAI,CAAEuB,SAAU,QAAUoK,KAAK,8BAA6B3P,SAAC,4BAI3EC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeG,SAAS,OAAOvB,GAAI,CAAEiR,UAAW,cAAejV,SAAC,uFAShG,C,+DCGO,SAAS+B,IACd,OAAOmT,EAAAA,EAAAA,IACT,C,2GCnCO,SAASC,EAAW7hB,GAA0E,IAAzE,QAAE8hB,EAAO,eAAEC,EAAc,OAAEC,EAAM,OAAEC,EAAM,QAAEzQ,GAA2BxR,EAChG,MAAMkiB,GAAUC,EAAAA,EAAAA,MAEVC,GAAYC,EAAAA,EAAAA,MAEZtO,EAAcA,KAClB,MAAMuO,EAAKL,EACP,mCAAmCA,IACnCzQ,EACA,qCAAqCA,IACrC,iBAEJ0Q,EAAQrL,KAAKyL,GACTP,GAAgBA,IACpBK,EAAUJ,EAAO,EAGbO,EAAa,OAAPT,QAAO,IAAPA,GAAAA,EAAS1R,SAAS,sCAC5B7D,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,CACGoV,EAAQU,QAAQ,oCAAqC,IAAI,eAAe,KACzE7V,EAAAA,EAAAA,KAACyP,EAAAA,GAAU,CAACrO,QAASgG,EAAYrH,SAAC,wCAAgD,gEAIpFH,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,CACGoV,EAAQ,iBAAenV,EAAAA,EAAAA,KAACyP,EAAAA,GAAU,CAACrO,QAASgG,EAAYrH,SAAC,wCAAgD,+DAK9G,OAAOC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACsK,UAAU,OAAMzP,SAAE6V,GACvC,C,sHC/BO,SAASE,EAASziB,GAQL,IARM,WACxB0iB,EAAU,SACVC,EAAQ,SACRC,EAAQ,aACRC,EAAY,WACZC,EAAU,aACVC,EAAY,MACZjR,GACe9R,EACf,OACEuM,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQ4D,IAAK,QAASC,WAAY,UAAWpE,SAAA,EAC/DC,EAAAA,EAAAA,KAAC0E,EAAAA,GAAU,CAACC,KAAMoR,EAAYlR,QAASoR,EAAUrR,KAAK,UACtD5E,EAAAA,EAAAA,KAAC0E,EAAAA,GAAU,CAACC,KAAMwR,EAAYtR,QAASmR,EAAUpR,KAAK,OAAOb,GAAI,CAAEyB,OAAQ,iBAC3ExF,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAiB,YAAVA,EAAsB,eAAiB,iBAAiBpF,SACxEmW,GAAgBE,EAAe,GAAGF,KAAgBE,IAAiB,SAI5E,C,0DClBA,SAASC,EAAYC,EAAoCC,GACvD,QAAKA,KACAD,IAGFA,EAAU1S,OAAOC,oBAAoBJ,SAAS8S,EAAO1S,uBACrDyS,EAAUxS,KAAKD,oBAAoBJ,SAAS8S,EAAO1S,qBAKxD,CAUA,SAAS2S,EAAYnjB,GAAoD,IAAnD,OAAE6J,EAAM,OAAEC,EAAM,OAAE4T,EAAM,MAAE5L,GAAsB9R,EACpE,MAAM0iB,GAAaU,EAAAA,EAAAA,GAAmB,OAANvZ,QAAM,IAANA,OAAM,EAANA,EAAQhI,UAAUoO,YAC5C6S,GAAaM,EAAAA,EAAAA,GAAmB,OAANtZ,QAAM,IAANA,OAAM,EAANA,EAAQjI,UAAUoO,YAElD,OACEtD,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GACEgN,EACI,KACA,CACExQ,OAAQ,UACR,UAAW,CACT6D,WAAY,YAGrBrE,UAEDC,EAAAA,EAAAA,KAAC8V,EAAS,CACRC,WAAYA,EACZI,WAAYA,EACZD,aAAoB,OAANhZ,QAAM,IAANA,OAAM,EAANA,EAAQ0G,OACtBwS,aAAoB,OAANjZ,QAAM,IAANA,OAAM,EAANA,EAAQyG,OACtBqS,SAAgB,OAAN/Y,QAAM,IAANA,OAAM,EAANA,EAAQhI,UAAUoO,WAC5B0S,SAAgB,OAAN7Y,QAAM,IAANA,OAAM,EAANA,EAAQjI,UAAUoO,WAC5B6B,MAAOA,KAIf,CAkBO,SAASuR,EAAUhP,GAcL,IAbnB9R,MAAO0f,EAAM,aACbqB,EAAY,OACZpP,EAAM,OACNoC,EACA4M,OAAQK,EAAS,OACjBC,EAAM,WACNnF,EAAU,eACVoF,GAAiB,EAAI,UACrBC,GAAY,EAAI,aAChBC,EAAY,aACZC,EAAY,YACZC,EAAW,QACXC,GACgBzP,EAChB,MAAM,EAAEW,IAAMC,EAAAA,EAAAA,OACP1S,EAAOwhB,IAAYzO,EAAAA,EAAAA,UAAoC,OACvD4N,EAAQc,IAAa1O,EAAAA,EAAAA,eAA6BxF,GAEnDmU,GAAkBC,EAAAA,EAAAA,MAClBC,GAAYC,EAAAA,EAAAA,OAElBlU,EAAAA,EAAAA,YAAU,KACJ+R,GACF8B,EAAS9B,EACX,GACC,CAACA,IAEJ,MAAMtE,GAAQ1O,EAAAA,EAAAA,UAAQ,KACpB,GAAIkV,GAAaF,EAAiB,CAChC,MAeMtG,EAfOwG,EAAU5P,KAAK8P,IAC1B,MAAMxa,EAASoa,EAAgBxN,MAAMvH,GAAUA,EAAMrN,UAAUoO,aAAeoU,EAAIxa,OAAOnF,UACnFoF,EAASma,EAAgBxN,MAAMvH,GAAUA,EAAMrN,UAAUoO,aAAeoU,EAAIva,OAAOpF,UAEzF,MAAO,CACLud,OAAQoC,EAAInb,WAAW+G,WACvBpG,OAAQwa,EAAIxa,OAAOnF,QACnBoF,OAAQua,EAAIva,OAAOpF,QACnB4f,WAAY,CACVza,SACAC,UAEH,IAIAyK,KAAK8P,IAAG,CACP9hB,MAAO8hB,EAAIpC,OACX9E,OAAOxQ,EAAAA,EAAAA,KAACwW,EAAY,CAACtZ,OAAQwa,EAAIC,WAAWza,OAAQC,OAAQua,EAAIC,WAAWxa,SAC3Ewa,WAAYC,KAAKC,UAAUH,EAAIC,gBAEhChO,QAAQ+N,KAAUA,EAAIlH,QAUzB,OARI2G,GACFnG,EAAM8G,QAAQ,CACZliB,MAAO,WACP4a,OAAOxQ,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,UAASpF,SAAC,aACnC4X,WAAY,KAIT3G,CACT,CAEgB,GACf,CAACwG,EAAWF,EAAiBH,IAwBhC,OACEnX,EAAAA,EAAAA,KAAC+X,EAAAA,EAAM,CACLhM,YAAa1D,EAAE,wBACf2I,MAAOA,EACPgH,aAAa,QACbC,cAAc,QACdhQ,SA5BuBrS,IACzBwhB,EAASxhB,GAEL+gB,GACFA,EAAa/gB,EACf,EAwBEA,MAAOA,EACP2R,OAAQA,EACR2Q,SAAUb,EACVd,OAAQK,EACRuB,WAzBsBjH,IACxB,IAAKA,EAAKyG,WAAY,OAAO,EAE7B,MAAMA,EAAaC,KAAKQ,MAAMlH,EAAKyG,YAKnC,OACGtB,EAAYsB,EAAWza,OAAQqZ,IAAWF,EAAYsB,EAAWxa,OAAQoZ,MACvE5M,GAAUA,EAAOgO,EAAWza,OAAQ,EAgBvC2Z,OAAQA,EACRnF,WAAYA,EACZoF,eAAgBA,EAChBC,UAAWA,EACXC,aAAcA,EACdqB,MAAQnH,IACN,IAAKA,EAAM,OAAO+F,EAClB,IAAK/F,EAAKyG,WAAY,OAAOzG,EAAKV,MAElC,GAAI0G,EAAa,OAAOA,EAAYhG,GAEpC,MAAMyG,EAAaC,KAAKQ,MAAMlH,EAAKyG,YAKnC,IAAKA,EAAWza,SAAWya,EAAWxa,OAAQ,OAAO+T,EAAKV,MAE1D,MAAMtT,EAAS,IACVya,EAAWza,OACdhI,UAAWvB,EAAAA,UAAU2kB,SAASX,EAAWza,OAAOhI,UAAUqjB,gBAGtDpb,EAAS,IACVwa,EAAWxa,OACdjI,UAAWvB,EAAAA,UAAU2kB,SAASX,EAAWxa,OAAOjI,UAAUqjB,gBAG5D,OAAOvY,EAAAA,EAAAA,KAACwW,EAAY,CAACtZ,OAAQA,EAAQC,OAAQA,EAAQ4T,QAAM,EAAC5L,MAAM,WAAY,GAItF,C,4KChMA,SAASkR,EAAYC,EAAoCC,GACvD,SAAMA,KAAU5S,EAAAA,EAAAA,GAAiB4S,IAAWD,EAAUphB,UAAUoO,aAAeiT,OAE3EA,IACAD,GACDA,EAAU1S,OAAOC,oBAAoBJ,SAAS8S,EAAO1S,sBACrDyS,EAAUxS,KAAKD,oBAAoBJ,SAAS8S,EAAO1S,qBAIxD,CAEA,SAAS2U,EAAanlB,GAAmE,IAADqU,EAAA,IAAjE,UAAE4O,EAAS,OAAE1S,EAAM,OAAE2S,EAAM,MAAEpR,EAAK,MAAEkT,GAA2BhlB,EAKpF,OAJaiP,EAAAA,EAAAA,UAAQ,IACZ+T,EAAYC,EAAWC,IAC7B,CAACA,EAAQD,IAEE,MACZ1W,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQ4D,IAAKmU,EAAQ,QAAU,QAASlU,WAAY,UAAWpE,SAAA,EACjFC,EAAAA,EAAAA,KAAC0E,EAAAA,GAAU,CACTC,MAAM8T,EAAAA,EAAAA,GAAgBnC,EAAUphB,UAAUoO,YAC1CsB,KAAK,OACLC,QAASyR,EAAUphB,UAAUoO,cAE/BtD,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAiB,YAAVA,EAAsB,eAAiB,iBAAkBqK,UAAU,OAAMzP,SAC9D,QAD8D2H,EACnF,OAAN9D,QAAM,IAANA,EAAAA,EAAmB,OAAT0S,QAAS,IAATA,OAAS,EAATA,EAAW1S,cAAM,IAAA8D,EAAAA,EAAI,SAIxC,CAgBO,SAASgR,EAAW9H,GAYL,IAXpBhb,MAAOiP,EAAO,cACd8T,EAAa,OACbpR,EAAM,OACNoC,EACA4M,OAAQK,EAAS,OACjBC,EAAM,WACNnF,EAAU,eACVoF,EAAc,UACdC,EAAS,aACTC,EAAY,aACZC,GACiBrG,EACjB,MAAM,EAAEvI,IAAMC,EAAAA,EAAAA,OACP1S,EAAOwhB,IAAYzO,EAAAA,EAAAA,UAAwB,OAC3C4N,EAAQc,IAAa1O,EAAAA,EAAAA,eAA6BxF,GAEnDmU,GAAkBC,EAAAA,EAAAA,OAExBhU,EAAAA,EAAAA,YAAU,KACJsB,GACFuS,EAASvS,EACX,GACC,CAACA,IAEJ,MAAMmM,GAAQ1O,EAAAA,EAAAA,UAAQ,KACpB,GAAKgV,EAEL,OAAOA,EAAgB1P,KAAK0O,IACnB,CACL1gB,MAAO0gB,EAAUphB,UAAUoO,WAC3BkN,OAAOxQ,EAAAA,EAAAA,KAACwY,EAAa,CAAClC,UAAWA,IACjCqB,WAAYC,KAAKC,UAAUvB,MAE7B,GACD,CAACgB,IAiBJ,OACEtX,EAAAA,EAAAA,KAAC+X,EAAAA,EAAM,CACLhM,YAAa1D,EAAE,yBACf2I,MAAOA,EACPgH,aAAa,QACbC,cAAc,QACdhQ,SArBuBrS,IACzBwhB,EAASxhB,GACL+iB,GACFA,EAAc/iB,EAChB,EAkBEA,MAAOA,EACP2R,OAAQA,EACR2Q,SAAUb,EACVd,OAAQK,EACRuB,WAnBsBjH,IACxB,IAAKA,EAAKyG,WAAY,OAAO,EAE7B,MAAMrB,EAAYsB,KAAKQ,MAAMlH,EAAKyG,YAElC,OAAOtB,EAAYC,EAAWC,MAAc5M,GAAUA,EAAO2M,EAAW,EAetEO,OAAQA,EACRnF,WAAYA,EACZoF,eAAgBA,EAChBC,UAAWA,EACXC,aAAcA,EACdqB,MAAQnH,IACN,IAAKA,EAAM,OAAO+F,EAClB,IAAK/F,EAAKyG,WAAY,OAAO,KAE7B,MAAMA,EAAaC,KAAKQ,MAAMlH,EAAKyG,YAE7BrB,EAAY,IACbqB,EACHziB,UAAWvB,EAAAA,UAAU2kB,SAASX,EAAWziB,UAAUqjB,gBAGrD,OAAOvY,EAAAA,EAAAA,KAACwY,EAAa,CAAClC,UAAWA,EAAWnR,MAAM,UAAUkT,OAAK,GAAG,GAI5E,C,mMChJA,MAAMlY,EAAYA,CAACwL,EAAoB+F,KAC9BtR,EAAAA,EAAAA,IAAYyB,IACV,CACLmQ,SAAU,CACR5N,WAAYvC,EAAMwC,QAAQD,WAAWE,OACrCoB,aAAc,MACd1B,QAAS2H,EAAY,aAAiB+F,EAAa,MAAQ,QAAxB,QACnC,UAAW,CACTvM,MAAOtD,EAAMwC,QAAQ+N,KAAKC,cA8C7B,SAAS1B,EAAKjJ,GAA2F,IAADmJ,EAAAC,EAAA,IAAzF,MAAElb,EAAK,MAAEob,EAAQ,GAAE,WAAEC,GAAkEvJ,EAC3G,OACE9H,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFiB,SAAU,SACVK,aAAc,WACdD,WAAY,UAEdD,MAAM,OACNqK,UAAU,MAAKzP,SAEwC,QAFxC8Q,EAEiC,QAFjCC,EAEdE,EAAMrH,QAAQuH,GAASA,EAAKtb,QAAUA,IAAO,UAAE,IAAAkb,OAAA,EAA/CA,EAAiDN,aAAK,IAAAK,EAAAA,EAAIjb,IAE5Dqb,GACCjR,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFiB,SAAU,SACVK,aAAc,WACdD,WAAY,SACZ+L,UAAW,OACXpR,SAEDkR,IAED,OAGV,CAEO,SAAS8G,EAAMnH,GAaL,IAbM,MACrBhb,EAAK,SACLqS,EAAQ,MACR+I,EAAQ,GAAE,SACVlL,EAAQ,WACR4L,EAAU,SACVxB,EAAQ,UACRvE,GAAY,EAAI,MAChB1G,EAAK,aACL0M,EAAY,aACZC,EAAY,WACZX,KACGtR,GACSiR,EACZ,MAAMhQ,EAAUT,EAAUwL,EAAW+F,EAArBvR,IACToS,EAAUC,IAAe7J,EAAAA,EAAAA,UAAS,MACnCgK,GAAcD,EAAAA,EAAAA,QAA2B,OACxCE,EAAWC,IAAgBlK,EAAAA,EAAAA,eAA6BxF,GACzDtB,GAAQC,EAAAA,EAAAA,OAWdyB,EAAAA,EAAAA,YAAU,KAAO,IAAD0P,EACd,MAAMhO,EAAmB,OAAX0N,QAAW,IAAXA,GAAoB,QAATM,EAAXN,EAAaK,eAAO,IAAAC,OAAT,EAAXA,EAAsBC,YACpCL,EAAkB,OAAL5N,QAAK,IAALA,EAAAA,OAAS9B,EAAU,GAC/B,IAEH,MAKMoF,GAASC,EAAAA,EAAAA,IAAY3G,GAE3B,OACEjC,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACFT,IAAKkS,EACL5O,GAAI,IACEkB,EAAQ,CAAEA,MAAO,GAAGA,OAAc,CAAC,KACnCyM,EAAa,CAAE/b,OAAQ,QAAW,CAAC,GAEzCyL,QA7BuBmF,IACvB2J,GACJsC,EAAYjM,EAAM6M,cAAc,EA2BCrT,UAE7BC,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CACHrD,UAAWP,EAAQoR,SACnBjO,GAAI,IACE2N,EAAa,CAAE/b,OAAQ,QAAW,CAAC,KACnCmQ,EAAW,CAAEA,SAAU,GAAGA,OAAiB,CAAC,EAChDvF,OAAQ,UACRqY,SAAU,SAEZnU,WAAS,EACTN,WAAW,SAAQpE,UAEnBC,EAAAA,EAAAA,KAAAgL,EAAAA,SAAA,CAAAjL,UACEH,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAAQpE,SAAA,EACjCC,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACM,MAAI,EAACC,IAAE,EAAChB,GAAI,CAAEuL,YAAa,QAASvP,SACvCnK,GACCoK,EAAAA,EAAAA,KAAC2Q,EAAK,CAACK,MAAOA,EAAOpb,MAAOA,EAAOqb,WAAYA,KAE/CjR,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFiB,SAAU,SACVK,aAAc,WACdD,WAAY,UAEdD,MAAOoD,EAAS,OAAS,UAAUxI,SAElCJ,EAAMoM,iBAKb/L,EAAAA,EAAAA,KAAC4T,EAAAA,EAAqB,CAAC7P,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,OAAQ4K,OAAQ,UAAW4E,MAAO,sBAM7F0O,QAAQtB,KACP3S,EAAAA,EAAAA,MAACkU,EAAAA,EAAI,CACH3S,UAAU,gBACVoR,SAAUA,EACVvK,KAAM6L,QAAQtB,GACdrK,QAnEY6L,KAClBvB,EAAY,KAAK,EAmEXwB,aAAc,CACZzE,SAAU,SACV0E,WAAY,QAEdC,WAAY,CACVC,MAAO,CACLlP,MAAO2N,EACPgG,SAAU,QACVhK,UAAW,mBACXiK,UAAW,UAEb9Y,SAAA,CAEDiR,EAAMpJ,KAAI,CAACsJ,EAAMzG,KAChBzK,EAAAA,EAAAA,KAACoU,EAAAA,EAAQ,CAEPjT,UAAW,IAAKyQ,GAAgBA,EAAaV,GAAQ,WAAa,IAClE9P,QAASA,KACDwQ,GAAgBA,EAAaV,IA7ErBE,KAAgC,IAA/B,MAAExb,GAAuBwb,EAChDnJ,GAAUA,EAASrS,GACvB4c,EAAY,KAAK,EA4EL8B,CAAoBpD,EAAK,EACzBnR,SAEDmR,EAAKV,OAPDU,EAAKtb,MAAQ6U,KAUJ,IAAjBuG,EAAMtV,OAAeiW,IAAgB3R,EAAAA,EAAAA,KAACuM,EAAAA,GAAM,IAAM,UAK7D,C,kGClNe,SAASuM,EAAczlB,GAAmD,IAAlD,KAAE+c,GAA6C/c,EACpF,MAAM,KAAE2U,IAAS+Q,EAAAA,EAAAA,MAEjB,OAAO/Y,EAAAA,EAAAA,KAACyP,EAAAA,GAAU,CAACrO,QAASA,IAAM4G,EAAS,OAAJoI,QAAI,IAAJA,OAAI,EAAJA,EAAM9M,YAAYvD,SAAC,gBAC5D,C,gICUO,SAASiZ,EAAc3lB,GASL,IATM,OAC7B4lB,EAAM,OACNC,EAAM,OACNC,EAAM,OACNC,EAAM,UACNC,EAAS,WACTjV,EAAa,SAAQ,SACrBkB,EAAW,OAAM,QACjBlE,GACoB/N,EACpB,MAAMwO,GAAQC,EAAAA,EAAAA,MAEd,OAAOsX,GAAUD,GACfvZ,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFzD,QAAS,OACT6D,WAAY,SACZC,WAA2B,WAAfA,EAA0BvC,EAAMwC,QAAQD,WAAWE,OAAS,OACxE/D,OAAQ,aACL8Y,GAELjY,QAASA,EAAQrB,SAAA,EAEjBC,EAAAA,EAAAA,KAAC0E,EAAAA,GAAU,CAACC,KAAY,OAANsU,QAAM,IAANA,OAAM,EAANA,EAAQtU,KAAME,QAAe,OAANoU,QAAM,IAANA,OAAM,EAANA,EAAQlhB,QAAS6M,KAAK,OAAOb,GAAI,CAAEyB,OAAQ,gBAEpF5F,EAAAA,EAAAA,MAACsF,EAAAA,EAAU,CAACC,MAAM,eAAeG,SAAUA,EAASvF,SAAA,CAAC,KAC1C,OAANkZ,QAAM,IAANA,OAAM,EAANA,EAAQrV,OAAO,OAAImC,EAAAA,EAAAA,IAAa,IAAIG,EAAAA,EAAUkT,GAAQE,UAAUH,GAAQI,YAAY,IAAQ,OAANL,QAAM,IAANA,OAAM,EAANA,EAAQtV,WAEnGhE,EAAAA,EAAAA,MAACsF,EAAAA,EAAU,CAACC,MAAM,eAAeG,SAAUA,EAASvF,SAAA,CAAC,UAC1CyZ,EAAAA,EAAAA,IAAuBJ,SAGlC,IACN,C,gDCvBA,SAAeK,E,SAAAA,eAAkC,CAC/CC,eAAgB,CAAC,G,mHCpBJ,SAASC,EAAgBha,GACtC,MAAM,EAAE0I,IAAMC,EAAAA,EAAAA,OACR,cAAEsR,IAAkBC,EAAAA,EAAAA,MACpBC,GAAcC,EAAAA,EAAAA,MAQpB,OACE/Z,EAAAA,EAAAA,KAACgQ,EAAAA,EAAM,IACIrQ,EAAO+C,aAASS,EACzB/B,QATmBmF,IAChBuT,EAEMna,EAAMyB,SAASzB,EAAMyB,QAAQmF,GADtCqT,GAAc,EAC8B,EAO5C3J,QAAU6J,EAA4Bna,EAAMsQ,QAApB,YACxBC,WAAW4J,KAAwBna,EAAMuQ,SACzC8J,UACEra,EAAMqa,UAAYra,EAAMqa,UAAYra,EAAM+C,SAAU1C,EAAAA,EAAAA,KAACsO,EAAAA,EAAgB,CAACnJ,MAAM,UAAUP,KAAM,KAAS,KACtG7E,SAEA+Z,EAAcna,EAAMI,SAAWsI,EAAE,0BAGxC,C,onBC1BA,MAAMlI,GAAYC,EAAAA,EAAAA,IAAYyB,IAAY,CACxCoY,KAAM,CACJzO,SAAU,QACVoE,IAAK,EACLsK,KAAM,EACNC,OAAQ,KACRlV,MAAO,OACP,YAAa,CACXkM,UAAWtP,EAAMuY,QAAQ,KAG7BC,SAAU,CACRF,OAAQ,IACRhV,MAAO,YAII,SAASmV,EAAiBjnB,GAMrC,IANsC,aACxCknB,EAAY,YACZC,GAIDnnB,EACC,MAAMuN,EAAUT,IACVsa,GAAWC,EAAAA,EAAAA,OACV1S,EAAM2S,IAAWhS,EAAAA,EAAAA,WAAS,GAC3BiS,GAAiBC,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMpY,UAcvD,OAJAa,EAAAA,EAAAA,YAAU,KACRoX,EAAQC,EAAe5S,KAAK,GAC3B,CAAC4S,EAAe5S,QAGjBhI,EAAAA,EAAAA,KAAC+a,EAAAA,EAAQ,CAAC5Z,UAAWP,EAAQyZ,SAAUrS,KAAMA,EAAM5G,QAbrCA,KACVmZ,GACFE,GAASO,EAAAA,EAAAA,OAGPR,GAAaA,GAAa,EAQsCza,UAClEC,EAAAA,EAAAA,KAAA,OAAKiF,MAAM,OAAOtP,OAAO,OAAO6X,IAAKyN,EAAclG,IAAI,MAG7D,C,0BCjDA,MAAM5U,GAAYC,EAAAA,EAAAA,IAAYyB,IACrB,CACLqZ,iBAAkB,CAChB1P,SAAU,WACVoE,IAAK,EACLsK,KAAM,EACNjV,MAAO,OACPtP,OAAQ,OACRwc,UAAW,QACXgJ,WAAY,OACZnW,SAAU,UAEZoW,KAAM,CACJ5P,SAAU,WACVoE,IAAK,OACLsK,KAAM,EACNjV,MAAO,OACPtP,OAAQ,OACRyO,WAAYvC,EAAMwC,QAAQ3B,QAAQ0B,WAClCnE,QAAS,QAKT,SAAUob,EAAWhoB,GAA+D,IAA9D,QAAEqP,EAAO,KAAE0Y,GAAO,GAA4C/nB,EACxF,MAAMuN,EAAUT,IAEhB,OAAOuC,GACL9C,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CAACrD,UAAWP,EAAQsa,iBAAkBzW,WAAS,EAACkB,eAAe,SAAS2V,aAAa,SAAQvb,SAAA,EAChGC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACC,UAAWia,EAAOxa,EAAQwa,KAAO,MACtCpb,EAAAA,EAAAA,KAAA,OAAKmU,MAAO,CAAEgG,OAAQ,GAAKlV,MAAM,OAAOtP,OAAO,OAAO6X,IAAKyN,EAAclG,IAAI,QAE7E,IACN,CC7BA,MAAM5U,EAAY9M,IAAiC,IAAhC,MAAE8R,EAAK,KAAEP,GAAmBvR,EAC7C,OAAO+M,EAAAA,EAAAA,IAAW,KAGT,CACLmb,IAAK,CACHjb,QAAS,eACT2E,MAAW,OAAJL,QAAI,IAAJA,EAAAA,EAAQ,MACfjP,OAAY,OAAJiP,QAAI,IAAJA,EAAAA,EAAQ,MAChBwG,gBAAsB,OAALjG,QAAK,IAALA,EAAAA,EAAS,2BAC1BO,aAAc,MACd8V,kBAAmB,QACnBC,wBAAyB,YAE3B,2BAA4B,CAC1B,KAAM,CACJ7M,UAAW,sBAEb,MAAO,CACLA,UAAW,oBAGf,2BAA4B,CAC1B,KAAM,CACJA,UAAW,mBAEb,MAAO,CACLA,UAAW,sBAEb,MAAO,CACLA,UAAW,oBAGf,2BAA4B,CAC1B,KAAM,CACJA,UAAW,mBAEb,MAAO,CACLA,UAAW,uBAGf8M,KAAM,CACJC,cAAe,iBACfrM,YAAa,OAEfsM,KAAM,CACJD,cAAe,iBACfrM,YAAa,OAEfuM,KAAM,CACJF,cAAe,qBAGnB,EASE,SAAU/V,EAAU8B,GAA0C,IAAzC,QAAEhF,EAAO,KAAEkC,EAAI,MAAEO,GAAwBuC,EAClE,MAAM9G,EAAUT,EAAU,CAAEgF,QAAOP,QAAnBzE,GAEhB,OAAOuC,GACL9C,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFzD,QAAS,eACT3K,OAAQ,MACR8V,WAAY,OACb1L,SAAA,EAEDC,EAAAA,EAAAA,KAAA,QAAMmB,UAAW,GAAGP,EAAQ2a,OAAO3a,EAAQ8a,UAC3C1b,EAAAA,EAAAA,KAAA,QAAMmB,UAAW,GAAGP,EAAQ2a,OAAO3a,EAAQgb,UAC3C5b,EAAAA,EAAAA,KAAA,QAAMmB,UAAW,GAAGP,EAAQ2a,OAAO3a,EAAQib,YAE3C,IACN,C,iFC5EO,SAASC,EAAOzoB,GAAkC,IAAjC,SAAE0M,EAAQ,GAAEgE,GAAkB1Q,EACpD,OACE2M,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CAACwE,WAAS,EAACwH,QAAQ,SAAQvT,UAC9BC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFkB,MAAO,OACPa,SAAU,SACV0F,SAAU,WACVxH,QAAS,gBACND,GACHhE,SAEDA,KAIT,CCfO,SAASgc,EAAW1oB,GAA4C,IAA3C,SAAE0M,EAAQ,KAAE6E,EAAI,GAAEb,GAAsB1Q,EAClE,OACE2M,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CAACwE,WAAS,EAACwH,QAAQ,SAAQvT,UAC9BC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFkB,MAAO,OACPa,SAAU,SACV0F,SAAU,WACVxH,QAAkB,UAATY,EAAmB,QAAU,SACtC,2BAA4B,CAC1BZ,QAAkB,UAATY,EAAmB,MAAQ,gBAEnCb,GACHhE,SAEDA,KAIT,C,oEC1Be,SAASic,EAAQ3oB,GAAmE,IAAlE,QAAEqP,EAAO,QAAEtB,GAAoD/N,EAC9F,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MACRzG,GAAQC,EAAAA,EAAAA,MAEd,OACElC,EAAAA,EAAAA,MAACoQ,EAAAA,EAAM,CACLC,QAAQ,WACRrL,KAAK,QACLb,GAAI,CACF,iDAAkD,CAChDoB,MAAOtD,EAAMwC,QAAQ+N,KAAK6J,UAC1B3J,YAAazQ,EAAMwC,QAAQ+N,KAAK6J,UAChCtmB,OAAQ,OACRijB,SAAU,UAGdxX,QAASA,EAAQrB,SAAA,CAEhB2C,GAAU1C,EAAAA,EAAAA,KAACsO,EAAAA,EAAgB,CAAC1J,KAAM,GAAIO,MAAM,UAAUpB,GAAI,CAAEyB,OAAQ,eAAoB,MACzFxF,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACK,WAAY,IAAIxF,SAAEsI,EAAE,wBAGtC,C,gJCZA,SAAS6T,IACP,OACElc,EAAAA,EAAAA,KAAA,OAAKiF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,UAC5FC,EAAAA,EAAAA,KAAA,QACEmc,SAAS,UACTC,SAAS,UACTlc,EAAE,gQACFsO,KAAK,aAIb,CAEA,SAAS6N,IACP,OACEzc,EAAAA,EAAAA,MAAA,OAAKqF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,KAAG0O,SAAS,0BAAyB3O,UACnCC,EAAAA,EAAAA,KAAA,QAAME,EAAE,qFAAqFsO,KAAK,eAEpGxO,EAAAA,EAAAA,KAAA,QAAAD,UACEC,EAAAA,EAAAA,KAAA,YAAU2O,GAAG,oBAAmB5O,UAC9BC,EAAAA,EAAAA,KAAA,QAAMiF,MAAM,KAAKtP,OAAO,KAAK6Y,KAAK,gBAK5C,CAOA,SAAS8N,EAAajpB,GAA2D,IAA1D,iBAAEkpB,EAAgB,cAAE5D,GAAmCtlB,EAC5E,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MACRzG,GAAQC,EAAAA,EAAAA,OAEPS,EAAOia,IAAY7T,EAAAA,EAAAA,UAAuB,OAC1C8T,EAAcC,IAAmB/T,EAAAA,EAAAA,WAAS,GAYjD,OACE/I,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFzD,QAAS,OACT3K,OAAQ,OACRsP,MAAO,OACPb,WAAYvC,EAAMwC,QAAQD,WAAWoD,OACrC9B,aAAc,OACdvB,WAAY,SACZwB,eAAgB,gBAChBpF,OAAQ,UACRyD,QAAS,UAEX5C,QAlBoBub,KACxBD,GAAgB,EAAK,EAiBU3c,SAAA,CAE1BwC,GACC3C,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQ6D,WAAY,SAAUD,IAAK,SAAUnE,SAAA,EAC/DC,EAAAA,EAAAA,KAAC6M,EAAAA,EAAM,CAAC9I,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,QAAU6X,IAAU,OAALjL,QAAK,IAALA,OAAK,EAALA,EAAOoC,KAAK5E,SAAC,UAGjEC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAEuB,SAAU,OAAQC,WAAY,KAAOJ,MAAM,eAAcpF,SACnE,OAALwC,QAAK,IAALA,OAAK,EAALA,EAAOqB,aAIZ5D,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAcpF,SAAEsI,EAAE,8BAGxCrI,EAAAA,EAAAA,KAACqc,EAAS,QAGZrc,EAAAA,EAAAA,KAAC4c,EAAAA,EAAgB,CACf5U,KAAMyU,EACNvU,QAASA,IAAMwU,GAAgB,GAC/BzU,SA9CqB1F,IACzBoW,EAAcpW,GACdia,EAASja,GACTma,GAAgB,EAAM,EA4ClBvU,oBAAqBoU,MAI7B,CAOe,SAASM,EAAkBnV,GAA8C,IAA7C,KAAEM,EAAI,QAAEE,GAAkCR,EACnF,MAAM,EAAEW,IAAMC,EAAAA,EAAAA,MACRzG,GAAQC,EAAAA,EAAAA,OACPgb,IAAWhc,EAAAA,EAAAA,MAEZiB,GAAYC,EAAAA,EAAAA,OAEXoN,EAAO2N,IAAYpU,EAAAA,EAAAA,UAAiB,KACpCjG,EAASsL,IAAcrF,EAAAA,EAAAA,WAAkB,IAEzCsQ,EAAQ+D,IAAarU,EAAAA,EAAAA,UAAuB,OAC5CuQ,EAAQ+D,IAAatU,EAAAA,EAAAA,UAAuB,MAY7CoL,GAAc1M,EAAAA,EAAAA,cAAY,KAC9Ba,IACA8U,EAAU,MACVC,EAAU,KAAK,GACd,CAAC/U,EAAS8U,EAAWC,IAElBV,GAAmBja,EAAAA,EAAAA,UAAQ,IACxB,CAAO,OAAN2W,QAAM,IAANA,OAAM,EAANA,EAAQlhB,QAAe,OAANmhB,QAAM,IAANA,OAAM,EAANA,EAAQnhB,SAAS4R,QAAQ+N,KAAUA,KAC3D,CAACuB,EAAQC,IAENgE,GAA8BC,EAAAA,EAAAA,MAkCpC,OACEnd,EAAAA,EAAAA,KAACqP,EAAAA,EAAK,CACJrH,KAAMA,EACNkD,MAAO7C,CAAC,wBACRH,QAAS6L,EACT3P,WAAYvC,EAAMwC,QAAQD,WAAWwH,OACrCT,YAAa,CACXpH,GAAI,CACF,qBAAsB,CACpBC,QAAS,IACTiB,MAAO,QACPmG,gBAAiBvJ,EAAMwC,QAAQD,WAAWiH,QAE5C,2BAA4B,CAC1BrH,QAAS,OAGbjE,UAEFH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFC,QAAS,YACT1D,QAAS,OACT6D,WAAY,SACZ0Q,cAAe,SACf3Q,IAAK,UACLnE,SAAA,EAEFC,EAAAA,EAAAA,KAACsc,EAAa,CAAC3D,cAlFOM,IAC1B+D,EAAU/D,GACV8D,EAAS,GAAG,EAgF0CR,iBAAkBA,KAEpEvc,EAAAA,EAAAA,KAACkc,EAAO,KAERlc,EAAAA,EAAAA,KAACsc,EAAa,CAAC3D,cAjFOO,IAC1B+D,EAAU/D,GACV6D,EAAS,GAAG,EA+E0CR,iBAAkBA,KAEpEvc,EAAAA,EAAAA,KAACgQ,EAAAA,EAAM,CACLC,QAAQ,YACRrL,KAAK,QACLkH,WAAS,EACT1K,QAtEa1E,UACnB,IAAKuc,IAAWC,GAAUxW,IAAYX,EAAW,OAEjDiM,GAAW,GAEX,MAAMoP,QAAiBxe,EAAAA,EAAAA,IAAQqa,EAAOlhB,QAASmhB,EAAOnhB,SAEtD,IAAKqlB,EAGH,OAFAL,EAAS1U,CAAC,2BACV2F,GAAW,GAIb,MAAMsH,EAAS8H,EAAS7gB,WAAW+G,WAC7B+Z,QAAoBC,EAAAA,EAAAA,GAAmBhI,EAAQvT,EAAUuB,YAE/D,IAAK+Z,GAAsC,IAAvBA,EAAY3hB,OAG9B,OAFAqhB,EAAS1U,CAAC,2CACV2F,GAAW,GAIbkP,EAA4B,CAAC5H,KAC7BiI,EAAAA,EAAAA,IAAyBjI,GAAQ,GAEjCwH,EAAQ,wBAAyB9b,EAAAA,IAEjCgN,GAAW,GAEX+F,GAAa,EA0CP7D,WAAYd,EACZ4K,UAAWtX,GAAU1C,EAAAA,EAAAA,KAACsO,EAAAA,EAAgB,CAACnJ,MAAM,UAAUP,KAAM,KAAS,KAAK7E,SAE1EqP,GAAS/G,EAAE,uBAKtB,C,qCC/MO,MAAMmV,IAA2Bhd,EAAAA,EAAAA,aAA2C,CAACb,EAAOc,KACzF,MAAM,SAAEwH,KAAawV,GAAU9d,EAE/B,OACEK,EAAAA,EAAAA,KAAC0d,EAAAA,GAAa,IACRD,EACJE,KAAK,OACLC,UAAU,UACVC,YAAapd,EACbqd,cAAgBC,IAEVA,EAAOnoB,QAAU+J,EAAM/J,OAE3BqS,EAAS,CACP8H,OAAQ,CAENna,MAAwB,MAAjBmoB,EAAOnoB,MAAgB,KAAOmoB,EAAOnoB,QAE9C,GAEJ,IAMS,SAASooB,GAAgBre,GAA8B,IAADse,EAAAC,EACnE,MAAM,aAAEC,KAAiBC,GAAeze,EAExC,OACEK,EAAAA,EAAAA,KAACuT,EAAAA,EAAS,IACJ6K,EACJT,KAAK,OACL1R,UAAW,CACTC,MAAO,IAC2B,QAAhC+R,EAAc,OAAVG,QAAU,IAAVA,GAAqB,QAAXF,EAAVE,EAAYnS,iBAAS,IAAAiS,OAAX,EAAVA,EAAuBhS,aAAK,IAAA+R,EAAAA,EAAI,CAAC,EACrCzK,kBAAkB,EAClB6K,eAAgBb,GAChBc,WAAY,CACVC,aAAcJ,EAAaI,aAC3BC,cAAeL,EAAaK,cAC5BlS,UAAW,GACXmS,kBAAmBN,EAAaM,kBAChC7oB,MAAO+J,EAAM/J,OAEf8d,aAAc,SAKxB,C,eC9DO,SAASgL,GAAsB/e,GAAoC,IAADgf,EAAAC,EAAAC,EAAAC,EAAAC,EACvE,MAAM,aAAEZ,KAAiBC,GAAeze,EAExC,OACEK,EAAAA,EAAAA,KAAC0L,GAAAA,EAAe,IACV0S,EACJxoB,MAAO+J,EAAM/J,MACboW,eAAgB,CACdC,UAAW,CACTC,MAAO,IAC2C,QAAhDyS,EAAc,OAAVP,QAAU,IAAVA,GAA0B,QAAhBQ,EAAVR,EAAYpS,sBAAc,IAAA4S,GAAW,QAAXC,EAA1BD,EAA4B3S,iBAAS,IAAA4S,OAA3B,EAAVA,EAAuC3S,aAAK,IAAAyS,EAAAA,EAAI,CAAC,EACrDN,eAAgBb,GAChBc,WAAY,CACVC,aAAcJ,EAAaI,aAC3BC,cAAyC,QAA5BM,EAAEX,EAAaK,qBAAa,IAAAM,GAAAA,EACzCxS,UAAW,GACXmS,kBAAiD,QAAhCM,EAAEZ,EAAaM,yBAAiB,IAAAM,GAAAA,EACjDnpB,MAAO+J,EAAM/J,WAO3B,C,oDCDO,SAASopB,GAAQ3rB,GAcL,IAdM,KACvB4rB,EAAI,SACJhX,EAAQ,OACRiX,EAAM,UACNpT,EAAS,WACTqT,EAAU,iBACVC,EAAgB,SAChB9Z,EAAW,OAAM,IACjB+Z,EAAG,IACHC,EAAG,KACH1a,EAAI,aACJc,EAAY,SACZ6Z,EAAQ,SACRC,GACcnsB,EACd,MAAMwO,GAAQC,EAAAA,EAAAA,MACRyT,GAAUC,EAAAA,GAAAA,MACViK,GAAWC,EAAAA,GAAAA,OAEVC,EAAiBC,IAAsBjX,EAAAA,EAAAA,UAAwB,MAgBhEjH,EAAYme,GACZA,EAAIC,KACU,UAAZD,EAAIxiB,KAA+B,aAAZwiB,EAAIxiB,IACzBwiB,EAAIxiB,MAAQoiB,EAASM,UAAY,GAAGF,EAAIxiB,SAAWoiB,EAASM,SAAiB,SAC1E,GAGLX,EACKK,EAASlJ,OAAO9S,SAASoc,EAAIxiB,KAG/BoiB,EAASM,SAAStc,SAASoc,EAAIxiB,KAEpC6hB,EAAeA,IAAWW,EAAIxiB,IAC7BsiB,EACEA,IAAoBE,EAAIxiB,IADF4hB,EAAK,GAAG5hB,MAAQwiB,EAAIxiB,IAInD,OACE2C,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACC,WAAS,EAACkB,eAAe,SAAQ5F,UACrCC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFzD,QAAS,OACT2E,MAAO6G,EAAY,OAAS,OAC5BV,gBAAoB,OAAHiU,QAAG,IAAHA,EAAAA,EAAOxd,EAAMyJ,OAAO0U,WACrCta,aAA0B,OAAZA,QAAY,IAAZA,EAAAA,EAA0B,UAATd,EAAmB,MAAQ,OAC1DZ,QAAiB,OAARub,QAAQ,IAARA,EAAAA,EAAY,MACrBtb,oBAAqB6H,EAAY,UAAUmT,EAAKvjB,eAAiB,UAAUujB,EAAKvjB,iBAChFqE,SAEDkf,EAAKrX,KAAKiY,IACT7f,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAEFC,UAAW,GAAGge,EAAa,cAAgB,MAAMzd,EAASme,GAAO,SAAW,KAC5Eze,QAASA,IAhDDye,KAChB,IAAIA,EAAInQ,KAKR,OAAKmQ,EAAIC,UAKTvK,EAAQrL,KAAK2V,EAAIC,OAJfF,EAAmBC,EAAIxiB,UACnB4K,GAAUA,EAAS4X,MANvBI,EAAAA,GAAAA,GAAiBJ,EAAInQ,KAAM,cASP,EAqCCwQ,CAASL,GACxB9b,GAAI,CACFuB,WACAsT,SAAmB,UAAThU,EAAmB,OAAS,OACtCZ,QAAiB,OAARwb,QAAQ,IAARA,EAAAA,EAAsB,UAAT5a,EAAmB,SAAW,SACpDjP,OAAiB,UAATiP,EAAmB,OAAS,OACpCO,MAAOtD,EAAMwE,YAAYC,cACzB/F,OAAQ,UACRmF,aAA0B,OAAZA,QAAY,IAAZA,EAAAA,EAA0B,UAATd,EAAmB,MAAQ,OAC1DW,WAAY4Z,EAAa,IAAM,IAC/B,WAAY,CACVha,MAAOtD,EAAMwE,YAAY8Z,YACzB/b,WAAe,OAAHkb,QAAG,IAAHA,EAAAA,EAAOzd,EAAMyJ,OAAO8U,WAChC7a,WAAY,KAEd,4BAA6B,CAC3BqT,SAAmB,UAAThU,EAAmB,OAAS,OACtCZ,QAAkB,UAATY,EAAmB,SAAW,SACvCU,SAAU,SAEZvF,UAEFC,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CAACgM,QAAQ,SAASvP,GAAI,CAAEpO,OAAQ,OAAQ0qB,WAAY,QAAStgB,SAC/D8f,EAAIjqB,SAzBFiqB,EAAIxiB,UAgCrB,C,wCCtHO,SAASijB,GAAYjtB,GAA6C,IAA5C,MAAEmd,EAAK,YAAE+P,GAAgCltB,EACpE,MAAO2U,EAAM2S,IAAWhS,EAAAA,EAAAA,WAAS,GAMjC,OACE/I,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAAnB,SAAA,EACFH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQ4D,IAAK,QAASC,WAAY,UAAWpE,SAAA,CAC9DyQ,GACDxQ,EAAAA,EAAAA,KAACwgB,GAAAA,EAAW,CAAC5b,KAAK,OAAOrE,OAAO,UAAUa,QAR3Bqf,KACnB9F,GAAS3S,EAAK,QASZhI,EAAAA,EAAAA,KAAC0gB,GAAAA,EAAQ,CAACC,QAAQ,EAAOC,GAAI5Y,EAAKjI,SAC/BwgB,MAIT,C,gBC1BA,MAAMpgB,IAAYC,EAAAA,EAAAA,IAAYyB,IAC5B,MAAMgf,EACyB,SAA7Bhf,EAAMif,cAAc1sB,KAAkB,aAAayN,EAAMyJ,OAAOyV,oBAAsB,oBAElFC,EACyB,SAA7Bnf,EAAMif,cAAc1sB,KAAkB,aAAayN,EAAMyJ,OAAO2V,oBAAsB,oBAExF,MAAO,CACLhH,KAAM,CACJtkB,OAAQ,GACRqO,QAAS,EACTwB,OAAQ,GAEV0b,WAAY,CACVld,QAAS,EACTmB,MAAOtD,EAAMwC,QAAQ8c,KAAKC,MAC1BxR,IAAK,MACLsK,KAAM,MACN/I,UAAW,OACX,YAAa,CACXvC,UAAW,mBACXzJ,MAAOtD,EAAMwC,QAAQ8c,KAAKC,MAC1B,qBAAsB,CACpBhd,WAAmC,SAAvBvC,EAAMwC,QAAQjQ,KAAkByN,EAAMyJ,OAAO2V,kBAAoBpf,EAAMyJ,OAAO+V,kBAE5F,aAAc,CACZjW,gBAA8C,SAA7BvJ,EAAMif,cAAc1sB,KAAkByN,EAAMyJ,OAAO8U,WAAa,UACjFngB,QAAS,EACTsH,OAAQyZ,IAGZ,wBAAyB,CACvB7b,MAAO,UACPoC,OAAQ,mBAGZ+Z,MAAO,CACLrc,MAAO,GACPtP,OAAQ,GACR4rB,UAAW,QAEbC,MAAO,CACL9b,aAAc,GACd6B,OAAQsZ,EACRzc,WAAmC,SAAvBvC,EAAMwC,QAAQjQ,KAAkByN,EAAMyJ,OAAO8U,WAAa,UACtEngB,QAAS,EACTwhB,WAAY5f,EAAM6f,YAAYplB,OAAO,CAAC,mBAAoB,YAE5DwT,QAAS,CAAC,EACV6R,aAAc,CAAC,EAChB,IAGY,SAASC,GAAQjiB,GAC9B,MAAMiB,EAAUT,KAEhB,OACEH,EAAAA,EAAAA,KAAC6hB,GAAAA,EAAM,CACLC,sBAAuBlhB,EAAQ+gB,aAC/BI,eAAa,EACbnhB,QAAS,CACPqZ,KAAMrZ,EAAQqZ,KACdiH,WAAYtgB,EAAQsgB,WACpBI,MAAO1gB,EAAQ0gB,MACfE,MAAO5gB,EAAQ4gB,MACf1R,QAASlP,EAAQkP,YAEfnQ,GAGV,C,wCC5DO,SAASqiB,GAAW3uB,GAA2C,IAA1C,QAAEwR,EAAO,SAAE9E,GAA4B1M,EAGjE,OAFuB4uB,EAAAA,GAAAA,IAAoBpd,KAElBmB,EAAAA,GAAAA,GAAYnB,IAAW7E,EAAAA,EAAAA,KAACkiB,EAAAA,EAAI,CAACxS,MAAMyS,EAAAA,GAAAA,GAAoBtd,GAAS9E,SAAEA,IAAmB,IAChH,C,2CCLO,SAASqiB,GAAa/uB,GAAmD,IAAlD,QAAE0E,EAAO,GAAEgM,EAAE,OAAErI,EAAS,GAAuBrI,EAC3E,MAAMgvB,GAAU3P,EAAAA,EAAAA,QAAgB,MAQhC,OACE9S,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEC,EAAAA,EAAAA,KAACsiB,GAAAA,EAAI,CAAC5hB,QAAS3I,EAAS4I,MAAI,EAACF,IAAK4hB,EAAQtiB,UACvCwiB,EAAAA,GAAAA,GAAQxqB,EAAS,MAEpBiI,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTC,MAAM,eACNpB,GAAI,CACFxD,OAAQ,aACLwD,GAEL3C,QAjBaohB,KACH,IAADC,EAATJ,IACa,QAAfI,EAAAJ,EAAQrP,eAAO,IAAAyP,GAAfA,EAAiBpiB,OACnB,EAcwBN,UAEnBwiB,EAAAA,GAAAA,GAAQxqB,EAAS2D,OAI1B,C,gBC3BO,SAASgnB,GAAYrvB,GAA0D,IAAzD,QAAEsvB,EAAO,QAAEC,EAAO,KAAEhe,EAAO,QAA2BvR,EACjF,OAAOsvB,EACLC,GACE5iB,EAAAA,EAAAA,KAAC6iB,EAAAA,EAAO,CAACC,KAAMF,EAAQ7iB,UACrBC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFC,EAAAA,EAAAA,KAACiN,GAAAA,EAAK,CAACO,IAAI,oBAAoBuH,IAAI,GAAGZ,MAAO,CAAElP,MAAOL,EAAMjP,OAAQiP,UAIxE5E,EAAAA,EAAAA,KAACiN,GAAAA,EAAK,CAACO,IAAI,oBAAoBuH,IAAI,GAAGZ,MAAO,CAAElP,MAAOL,EAAMjP,OAAQiP,KAEpE,IACN,CCTO,SAASme,GAAe1vB,GAOL,IAPM,SAC9B0M,EAAQ,YACRijB,EAAc,mBAAkB,WAChCC,EAAa,kBAAiB,MAC9BtjB,EAAK,iBACLujB,EAAgB,kBAChBC,GACqB9vB,EACrB,MAAM+vB,GAAS1Q,EAAAA,EAAAA,QAAuB,OAE/B2Q,EAAYC,IAAiB3a,EAAAA,EAAAA,WAAS,GAuC7C,OArCApF,EAAAA,EAAAA,YAAU,KACR,IAAIggB,EAAwC,KA6B5C,OANAA,EAAW,IAAIC,sBArByCC,IACtDA,EAAQ7Z,SAAS8Z,IACf,GAAIA,EAAMC,gBAAkBD,EAAM3T,SAAWqT,EAAOpQ,QAGlD,OAFAsQ,GAAc,QACVJ,GAAkBA,KAIpBC,GACFA,GACF,GACA,GAGY,CACdlJ,KAAM,KAEN2J,WAAY,oBACZC,UAAW,IAKTT,EAAOpQ,SAAWuQ,GACpBA,EAASO,QAAQV,EAAOpQ,SAGnB,KACDuQ,GACFA,EAASQ,YACX,CACD,GACA,KAGD/jB,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACT,IAAK2iB,EAAQjiB,UAAW,GAAG6hB,KAAeK,EAAaJ,EAAa,KAAMlf,GAAS,OAALpE,QAAK,IAALA,OAAK,EAALA,EAAOoE,GAAGhE,SAC1FA,GAGP,C,gBCxDO,SAASikB,GAAS3wB,GAAoE,IAAnE,OAAE0c,EAAM,oBAAEkU,EAAmB,gBAAEC,GAAiC7wB,EACxF,MAAO8wB,EAAeC,IAAoBzb,EAAAA,EAAAA,WAAS,IAC5C0b,EAAuBC,IAA4B3b,EAAAA,EAAAA,UAAwB,MAE5E9G,GAAQC,EAAAA,EAAAA,MACRG,GAAcC,EAAAA,GAAAA,GAAcL,EAAMM,YAAYC,KAAK,OAEnDmiB,GAAkBld,EAAAA,EAAAA,cAAY,KAClC,IAAIuI,EAAM,EAEV,GAAIsU,EAAiB,CACnB,MAAMnU,EAASyU,SAASC,cAAc,IAAIP,KAE3B,OAAXnU,IACFH,EAAMG,EAAO2U,UAEjB,CAEAC,OAAOC,SAAS,CACdhV,MACAsK,KAAM,EACN2K,SAAU,UACV,GACD,CAACX,IA+BJ,OA7BA3gB,EAAAA,EAAAA,YAAU,KACR,MAAMuhB,EAAWA,KACXN,SAASO,gBAAgBC,UAAYf,EACvCG,GAAiB,GAEjBA,GAAiB,EACnB,EAKF,OAFAO,OAAOM,iBAAiB,SAAUH,GAE3B,KACLH,OAAOO,oBAAoB,SAAUJ,EAAS,CAC/C,GACA,CAACb,KAEJ1gB,EAAAA,EAAAA,YAAU,KACR,MAAMuE,EAAU0c,SAASC,cAAc,IAAI1U,KAC3C,GAAIjI,EAAS,CACX,MAAMqd,EAAqBrd,EAAQsd,wBAGjCd,EADEriB,EACuBkjB,EAAmBE,MAAQ,GAAK,GAEhCF,EAAmBE,MAAQ,GAExD,IACC,CAACpjB,EAAa8N,IAEVoU,GACLnkB,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACFyN,GAAG,aACH5K,GAAI,CAAEuhB,OAAQ,OAAQ9Z,SAAU,QAAS0O,KAAM,GAAGmK,MAA2B9jB,OAAQ,UAAW4Z,OAAQ,GACxG/Y,QAASmjB,EAAgBxkB,UAEzBC,EAAAA,EAAAA,KAACiN,GAAAA,EAAK,CAACO,IAAI,yBAAyBzJ,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,YAEjE,IACN,C,wLClDA,MAAMwK,IAAYC,EAAAA,EAAAA,IAAYyB,IACrB,CACL0jB,YAAa,CACXpgB,MAAOtD,EAAMwC,QAAQmhB,QAAQrE,UAUnC,SAASsE,GAAqB5gB,EAAiB/H,GAC7C,OAAQA,EAAS2G,SAAS,UAAY3G,EAAS2G,SAAS,UAAYoB,IAAY6B,GAAAA,GAAI3O,OACtF,CAEA,SAAS2tB,GAAmB7gB,EAAiB/H,GAC3C,OAAQ2oB,GAAqB5gB,EAAS/H,EACxC,CAUO,SAAS6oB,GAAkBtyB,GAA+E,IAADuyB,EAAA,IAA7E,KAAE5d,EAAI,QAAEE,EAAO,kBAAE2d,EAAiB,MAAEtjB,EAAK,WAAEujB,GAAgCzyB,EAC5G,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MACR1H,EAAUT,KACVlJ,GAAU8uB,EAAAA,EAAAA,MACVC,GAAkBC,EAAAA,EAAAA,MAClBlkB,GAAYC,EAAAA,EAAAA,OACX8a,IAAWhc,EAAAA,GAAAA,OACXolB,EAAiBC,IAAoBC,EAAAA,GAAAA,OAEtC,oBAAEC,EAAmB,uBAAEC,IAA2BC,EAAAA,EAAAA,YAAWC,GAAAA,IAE3D/jB,OAAQ/I,IAAYiJ,EAAAA,GAAAA,IAAgBJ,EAAMxK,QAASgK,GACrD0kB,GAAgB5jB,EAAAA,GAAAA,IAAgBN,EAAMxK,UAErC2K,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,GAEjC+d,EAAgB,CACpB/Q,GAAc,OAAVmQ,QAAU,IAAVA,EAAAA,EAAc,GAClB5uB,OAAQ,KAGH6mB,EAAQ4I,IAAahe,EAAAA,EAAAA,UAAiB+d,GAEvCE,EAAoBA,CAAChxB,EAAeixB,KACxCF,EAAU,IACL5I,EACH,CAAC8I,GAAQjxB,GACT,EA+DEkxB,GAAuBxkB,EAAAA,EAAAA,UAAQ,KAAO,IAADykB,EACzC,MAAM7vB,EAAS,IAAIgP,GAAAA,EAAuB,QAAd6gB,EAAChJ,EAAO7mB,cAAM,IAAA6vB,EAAAA,EAAI,GAAGC,OAAM5jB,EAAAA,GAAAA,GAAiBb,EAAM0kB,SAAU1kB,EAAMc,WAC9F,OAAOnM,EAAOgwB,cAAc,GAAKhwB,EAAOoM,WAAa,CAAC,GACrD,CAACya,EAAQxb,IAcN4kB,EA7EkBC,MAAO,IAADC,EAC5B,IAAKtJ,EAAOpI,GAAI,OAAOtN,EAAE,4BAEzB,GAAIod,GAAqBljB,EAAMxK,QAASwK,EAAMzF,UAC5C,IACEnJ,GAAAA,UAAU2kB,SAASyF,EAAOpI,GAC5B,CAAE,MAAOvG,GACP,OAAO/G,CAAC,sBACV,MACK,KAAKif,EAAAA,GAAAA,GAAevJ,EAAOpI,OAAQhS,EAAAA,GAAAA,GAAiBoa,EAAOpI,IAAK,OAAOtN,CAAC,qCAE/E,OAAK0V,EAAO7mB,OAEV6mB,EAAO7mB,QACP,IAAIgP,GAAAA,EAAuB,QAAdmhB,EAACtJ,EAAO7mB,cAAM,IAAAmwB,EAAAA,EAAI,GAAGH,eAAc9jB,EAAAA,GAAAA,GAAwB,OAAP1J,QAAO,IAAPA,EAAAA,EAAW,EAAG6I,EAAMc,WAE9EgF,EAAE,qCACN,IAAInC,GAAAA,EAAU6X,EAAO7mB,QAAQ8vB,OAAM5jB,EAAAA,GAAAA,GAAiBb,EAAM0kB,SAAU1kB,EAAMc,WAAW6jB,cAAc,QAAxG,EACS7e,CAAC,iCAPiBA,EAAE,4BASb,EAyDG+e,GAUrB,OACEpnB,EAAAA,EAAAA,KAACqP,EAAAA,EAAK,CAACrH,KAAMA,EAAME,QAASA,EAASgD,MAAO7C,CAAC,WAAWtI,UACtDH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQuU,cAAe,SAAU3Q,IAAK,UAAWnE,SAAA,EACnEC,EAAAA,EAAAA,KAAC0L,GAAAA,EAAe,CAAC9V,MAAO2M,EAAMqB,OAAQkI,WAAS,EAACoE,UAAQ,KACxDlQ,EAAAA,EAAAA,KAAC0L,GAAAA,EAAe,CACd9V,MAAOmoB,EAAOpI,GACd5J,YACE0Z,GAAqBljB,EAAMxK,QAASwK,EAAMzF,UACtCuL,CAAC,yBACDA,EAAE,2CAERJ,SAAWrS,GAAkBgxB,EAAkBhxB,EAAO,MACtDqb,WAlCgBsW,MACtB,GACG9B,GAAqBljB,EAAMxK,QAASwK,EAAMzF,WAAakpB,IAAoBjI,EAAOpI,IAClF+P,GAAmBnjB,EAAMxK,QAASwK,EAAMzF,WAAa7F,IAAY8mB,EAAOpI,IACxE+P,GAAmBnjB,EAAMxK,QAASwK,EAAMzF,YACvC6G,EAAAA,GAAAA,GAAiBoa,EAAOpI,KACxBqQ,IAAoBjI,EAAOpI,GAE7B,OAAO3V,EAAAA,EAAAA,KAAA,QAAMmB,UAAWP,EAAQ2kB,YAAYxlB,SAAEsI,EAAE,4BAClD,EAyBkBkf,GACZzb,WAAS,EACT4H,aAAa,KACb7B,WAAS,KAGX7R,EAAAA,EAAAA,KAAC0e,GAAqB,CACpB3S,YAAY,mBACZnW,MAAOmoB,EAAO7mB,OACd+Q,SAAWrS,GAAkBgxB,EAAkBhxB,EAAO,UACtDkW,WAAS,EACTqS,aAAc,CACZK,eAAe,EACfD,aAAchc,EAAMc,UAEtBqQ,aAAa,MACb1H,eAAgB,CACdC,UAAW,CACTC,MAAO,CACLsb,cACExnB,EAAAA,EAAAA,KAACoM,GAAAA,EAAc,CAACZ,SAAS,MAAKzL,UAC5BC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAcpF,SAC7B0mB,GAAiB1I,EAAO7mB,OACrB,MAAKuwB,EAAAA,GAAAA,GACH,IAAIvhB,GAAAA,EAAU6X,EAAO7mB,QAAQiP,aAAasgB,GAAenjB,WACzD,KAEF,eASlB1D,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACwE,WAAS,EAAC5H,IAAI,QAAOnE,SAAA,EACzBC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAAAnF,SACRsI,EAAE,8BAA+B,CAChCnR,OAAQ,GACNwC,EACI,IAAIwM,GAAAA,GACF9C,EAAAA,GAAAA,GAAiB1J,EAAS6I,EAAMc,UAAUqkB,QAAQnlB,EAAMc,SAAW,EAAI,EAAId,EAAMc,WACjFskB,WACF,YAKV3nB,EAAAA,EAAAA,KAAC4nB,EAAAA,EAAS,CAACxmB,QArEAmF,IACjBA,EAAMC,kBAEF9M,GACFktB,GAAkBxjB,EAAAA,GAAAA,GAAiB1J,EAAS6I,EAAMc,UAAUC,WAAY,SAC1E,QAmEItD,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAAAnF,SACRsI,EAAE,0BAA2B,CAC5BnR,OAAQ,IAAGkM,EAAAA,GAAAA,GAAsB,OAALb,QAAK,IAALA,GAAe,QAAVqjB,EAALrjB,EAAO0kB,gBAAQ,IAAArB,OAAV,EAALA,EAAiBtiB,WAAYf,EAAMc,UAAUskB,cAAcplB,EAAMqB,WAC3F6iB,GAAiBlkB,EACb,KAAIklB,EAAAA,GAAAA,IACFrkB,EAAAA,GAAAA,GAAiBb,EAAM0kB,SAAS3jB,WAAYf,EAAMc,UAAU8C,aAAasgB,GAAenjB,WACxF,KAEF,aAIVtD,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAAAnF,SACRsI,EAAE,yBAA0B,CAC3BnR,OAAQ,IAAGuwB,EAAAA,GAAAA,GAAgCX,EAAsB,OAAOvkB,EAAMqB,WAC5E6iB,GAAiBlkB,EACb,KAAIklB,EAAAA,GAAAA,GACF,IAAIvhB,GAAAA,EAAU4gB,GAAsB3gB,aAAasgB,GAAenjB,WAChE,KAEF,aAIVtD,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,cAAapF,SAAEsI,EAAE,+CAEnCrI,EAAAA,EAAAA,KAACgQ,EAAAA,EAAM,CACLC,QAAQ,YACRnE,WAAS,EACT3G,MAAM,UACNP,KAAK,QACLsL,SAAUxN,KAAaykB,EACvB/lB,QAhKa1E,UACnB,IACE,IAAKzF,EAAS,OAEdivB,IACAlY,GAAW,GAEX,MAAM,OAAE6Z,EAAM,QAAE1S,SAAkB2S,EAAAA,GAAAA,IAAc,CAC9CvrB,WAAYgG,EAAMxK,QAAQuL,WAC1BqS,GAAIoI,EAAOpI,GACXze,QAAQ6wB,EAAAA,GAAAA,GACN,IAAI7hB,GAAAA,EAAU6X,EAAO7mB,QAAQ8vB,OAAM5jB,EAAAA,GAAAA,GAAiBb,EAAM0kB,SAAU1kB,EAAMc,WAC1Ed,EAAMc,UAER2kB,KAAM/wB,EACNI,IAAKkL,EAAM0kB,SACX5jB,SAAUd,EAAMc,WAUV,IAAD4kB,EAPP,GAAe,OAAXJ,EACF/K,EAAQzU,CAAC,2BAA4B6f,GAAAA,GAAaC,SAClDxB,EAAUD,GACNb,GAAmBA,IACnBtjB,EAAMxK,QAAQuL,aAAeoD,GAAAA,GAAI3O,SAAWwK,EAAMxK,QAAQuL,aAAe8kB,GAAAA,GAAYrwB,SACnFuuB,GAAwBA,GAAwBD,QAGtDvJ,EAAiC,QAA1BmL,GAACI,EAAAA,GAAAA,IAAiBlT,UAAQ,IAAA8S,EAAAA,EAAI5f,CAAC,qBAAsB6f,GAAAA,GAAa9Y,MAE7E,CAAE,MAAOA,GACPkZ,QAAQlZ,MAAMA,EAChB,CAEA+W,IACAnY,GAAW,EAAM,EA8HWjO,SAErBonB,IAAkBzkB,GAAgC1C,EAAAA,EAAAA,KAACsO,EAAAA,EAAgB,CAAC1J,KAAM,GAAIO,MAAM,YAAxDkD,EAAE,yBAKzC,C,gBC9QO,MAAMkgB,GAAe,CAC1B,CAACC,GAAAA,GAAeC,OAAQ,QACxB,CAACD,GAAAA,GAAeE,YAAa,QAC7B,CAACF,GAAAA,GAAeG,WAAY,QAC5B,CAACH,GAAAA,GAAeI,KAAM,MACtB,CAACJ,GAAAA,GAAe9hB,KAAM,KACtB,CAAC8hB,GAAAA,GAAeK,OAAQ,SACxB,CAACL,GAAAA,GAAeM,OAAQ,UAGbC,GAAkB,CAC7B,CAACP,GAAAA,GAAeC,OAAQ,UACxB,CAACD,GAAAA,GAAeE,YAAa,UAC7B,CAACF,GAAAA,GAAeG,WAAY,UAC5B,CAACH,GAAAA,GAAeI,KAAM,UACtB,CAACJ,GAAAA,GAAe9hB,KAAM,cACtB,CAAC8hB,GAAAA,GAAeK,OAAQ,UACxB,CAACL,GAAAA,GAAeM,OAAQ,WAWnB,SAASrjB,GAAkBpS,GAML,IANM,SACjCyJ,EAAQ,OACRnH,EAAM,SACN2P,EAAW,OAAM,aACjBI,EAAe,MAAK,MACpBT,GACwB5R,EACxB,OACE2M,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFkB,QACA2T,SAAU,OACVtY,QAAS,OACTqF,eAAgB,SAChBxB,WAAY,SACZxO,OAAc,OAANA,QAAM,IAANA,EAAAA,EAAU,cAClBqO,QAAS,MACToH,gBAAiBtO,EAAWisB,GAAgBjsB,GAAY,GACxD4I,gBACA3F,UAEFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFuB,WACAH,MAAO,eACPI,WAAY,IACZ8I,UAAW,UAEXtO,SAEDjD,EAAWyrB,GAAazrB,GAAY,UAK/C,C,qFC9DO,SAASksB,EAAU31B,GAAyC,IAAxC,SAAE0M,GAAmC1M,EAC9D,OACEuM,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEC,EAAAA,EAAAA,KAACipB,EAAAA,EAAU,KAEXjpB,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,SAAEA,MAGZ,C,4KCJO,MAAMmpB,EAAkB,CAC7B,CACE7rB,IAAK,gBACLyG,KAAM,WACNgc,KAAM,kBAER,CACEhc,KAAM,OACNgc,KAAM,aACNziB,IAAK,aAEP,CACEA,IAAK,cACLyG,KAAM,SACNgc,KAAM,gBAER,CACEziB,IAAK,aACLyG,KAAM,QACNgc,KAAM,eAER,CACEziB,IAAK,YACLyG,KAAM,OACNgc,KAAM,cAER,CACEziB,IAAK,aACLyG,KAAM,QACNgc,KAAM,eAER,CACEziB,IAAK,aACLyG,K,SAAMqlB,EAAK9gB,EAAE,mBACbyX,KAAM,eAER,CACEziB,IAAK,YACLyG,KAAM,OACNgc,KAAM,cAER,CACEziB,IAAK,YACLyG,KAAM,OACNgc,KAAM,e,eC9CV,MAAMsJ,EAAiB,4DAEjBjpB,GAAYC,EAAAA,EAAAA,IAAYyB,IACrB,CACL4C,UAAW,CACTL,WAAYvC,EAAMwC,QAAQD,WAAWiH,OACrCge,aAAc,aAAaxnB,EAAMwC,QAAQD,WAAWE,SACpDN,QAAS,OACT,CAACnC,EAAMM,YAAYC,KAAK,OAAQ,CAC9B4B,QAAS,SAGbslB,QAAS,CACP3zB,OAAQ,OACR+P,aAAc,OACdnF,OAAQ,UACRyD,QAAS,SACTI,WAAYvC,EAAMwC,QAAQD,WAAWE,OACrC,CAACzC,EAAMM,YAAYC,KAAK,OAAQ,CAC9BzM,OAAQ,OACRqO,QAAS,UAEX,UAAW,CACTI,WAAYglB,EACZ,wBAAyB,CACvBjkB,MAAO,YAGX,WAAY,CACVf,WAAYglB,IAGhBG,KAAM,CACJvlB,QAAS,SACTI,WAAYvC,EAAMwC,QAAQD,WAAWE,OACrCoB,aAAc,OACdnF,OAAQ,UACR,UAAW,CACT6D,WAAYglB,IAGhB7N,IAAK,CACHtW,MAAO,MACPtP,OAAQ,MACRyO,WAAY,OACZsB,aAAc,MACd4J,YAAa,MACb,eAAgB,CACdA,YAAa,YAMd,SAAS2Z,IACd,MAAMroB,EAAUT,IACVsf,GAAWC,EAAAA,EAAAA,MACX7d,GAAQC,EAAAA,EAAAA,MACRyT,GAAUC,EAAAA,EAAAA,MACV/U,GAAMiS,EAAAA,EAAAA,QAAO,MACb8W,EAAW/J,EAASM,SAEpB0J,GAAYvnB,EAAAA,EAAAA,GAAcL,EAAMM,YAAYunB,GAAG,OAC/CC,GAAcznB,EAAAA,EAAAA,GAAcL,EAAMM,YAAYC,KAAK,OACnDH,GAAcC,EAAAA,EAAAA,GAAcL,EAAMM,YAAYC,KAAK,OAEnDwnB,EAAeD,EAAe1nB,EAAc,EAAI,EAAKwnB,EAAY,EAAI,GAEpEzhB,EAAM2S,IAAWhS,EAAAA,EAAAA,WAAS,GAU3BoL,EAAcA,KAClB4G,GAAQ,EAAM,EAahB,SAASjZ,EAASmoB,GAChB,QAAUA,EAAM/J,MAAQ+J,EAAMxsB,MAAQmsB,EAASM,MAAM,KAAK,IAAqB,MAAbN,GAAmC,MAAfK,EAAM/J,IAC9F,CAMA,OACE9f,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACC,UAAWP,EAAQ6D,UAAWV,GAAI,CAAEzD,QAJlCkpB,EAAS/lB,SAAS,oBAAsB+lB,EAAS/lB,SAAS,uBAIJ,OAAS,SAAU1D,UAC9EH,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACwE,WAAS,EAAC5H,IAAI,SAAQnE,SAAA,CACzBmpB,EAAOthB,KAAI,CAACiiB,EAAOpf,IAClBA,GAASmf,EAAe,MACtB5pB,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CAEHlG,QAASA,KAAM2oB,OAzBJC,EAyBkBH,OAxBvCtU,EAAQrL,KAAK8f,EAAIlK,MADIkK,KAyByB,EACpC7oB,UAAW,GAAGP,EAAQ0oB,WAAW5nB,EAASmoB,GAAS,SAAW,KAAK9pB,UAEnEC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAKlC,IAAK,CACRyD,SAAU,OACV,CAACzD,EAAMM,YAAYC,KAAK,OAAQ,CAC9BkD,SAAU,UAGdH,MAAOzD,EAASmoB,GAAS,eAAiB,iBAAiB9pB,SAE1D8pB,EAAM/lB,QAbJ+lB,EAAM/J,QAmBhB8J,EAAeV,EAAOxtB,QACrBkE,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACFT,IAAKA,EAELU,UAAW,GAAGP,EAAQ2oB,QAAQ3oB,EAAQ0oB,UACtCW,aA5DeC,KACvBvP,GAAQ,EAAK,EA4DLwP,aAzDeC,KACvBzP,GAAQ,EAAM,EAwDyB5a,SAAA,EAE/BH,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACwE,WAAS,EAACwH,QAAQ,SAASvP,GAAI,CAAEpO,OAAQ,QAASoK,SAAA,EACtDC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACsO,UAAU,OAAOrO,UAAWP,EAAQ2a,OACzCvb,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACsO,UAAU,OAAOrO,UAAWP,EAAQ2a,OACzCvb,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACsO,UAAU,OAAOrO,UAAWP,EAAQ2a,UAG3Cvb,EAAAA,EAAAA,KAACqqB,EAAAA,EAAW,CAACriB,KAAMA,EAAMsiB,OAAW,OAAH7pB,QAAG,IAAHA,OAAG,EAAHA,EAAKuS,QAASuX,UAAU,eAAeC,YAAazW,EAAYhU,SAC9FmpB,EAAOthB,KAAI,CAACiiB,EAAOpf,KAAK,IAAAggB,EAAA,OACvBhgB,EAAQmf,GAAgBnf,IAAUmf,GAChC5pB,EAAAA,EAAAA,KAACkiB,EAAAA,GAAI,CAA2BvM,GAAIkU,EAAM/J,KAAMpQ,KAAMma,EAAMna,KAAK3P,UAC/DC,EAAAA,EAAAA,KAACoU,EAAAA,EAAQ,CAACxe,MAAOi0B,EAAOrZ,MAAOqZ,EAAM/lB,KAAM4mB,YAAaA,IAzDjDb,KAClBA,EAAM/J,OACX/L,IACAwB,EAAQrL,KAAK2f,EAAM/J,MAAK,EAsDsD6K,CAAgBd,MAD3D,QACqEY,EAD/EZ,EAAM/J,YAAI,IAAA2K,EAAAA,EAAIhgB,GAGvB,IAAI,QAjBR,QAqBJ,SAIZ,C,kMC/IA,MAAMtK,GAAYC,EAAAA,EAAAA,IAAYyB,IAAY,CACxC+oB,eAAgB,CACdpf,SAAU,YAEZN,MAAO,CACL5F,SAAU,OACVC,WAAY,IACZ,4BAA6B,CAC3BD,SAAU,QAEZ,YAAa,CACXH,MAAO,YAGX0lB,WAAY,CACVC,aAAc,QAEhBl1B,MAAO,CACLyY,UAAW,QACX2G,UAAW,aAEb+V,YAAa,CACXvf,SAAU,WACV6Z,MAAO,EACPzV,IAAK,MACLhB,UAAW,qBACXrO,OAAQ,UACR,UAAW,CACT4E,MAAOtD,EAAMyJ,OAAO0f,aAEtB,YAAa,CACX7lB,MAAO,UACP,UAAW,CACTA,MAAO,aAIb8lB,aAAc,CACZzf,SAAU,WACV6Z,MAAO,MACPzV,IAAK,MACLrP,OAAQ,UACR,UAAW,CACT4E,MAAOtD,EAAMyJ,OAAO0f,aAEtB,YAAa,CACX7lB,MAAO,UACP,UAAW,CACTA,MAAO,iBA4BA,SAASkK,EAAKhc,GAmBb,IAnBc,MAC5B6X,EAAK,SACLnL,EAAQ,KACRiI,EAAI,YACJkjB,EAAc/B,EAAAA,EAAK9gB,EAAE,kBAAiB,WACtC8iB,EAAahC,EAAAA,EAAK9gB,EAAE,iBAAgB,QACpCH,EAAO,UACPkjB,EAAS,SACT3e,EAAQ,YACR4e,GAAc,EAAK,WACnBC,GAAa,EAAK,UAClBC,GAAY,EAAI,gBAChBC,EAAe,UACf1f,GAAY,EAAI,SAChBhG,EAAW,KAAI,KACf6X,EAAI,WACJvZ,EAAU,YACV+G,EAAW,eACXsgB,GACWp4B,EACX,MAAMuN,EAAUT,IACV0B,GAAQC,EAAAA,EAAAA,MACR6nB,GAAcznB,EAAAA,EAAAA,GAAcL,EAAMM,YAAYC,KAAK,OAEnDspB,GAAUxpB,EAAAA,EAAAA,GAAc,qBAE9B,OACEtC,EAAAA,EAAAA,MAAC+rB,EAAAA,EAAM,CACLzjB,QAASA,EACTF,KAAMA,EACNlC,SAAUA,EACVgG,UAAWA,KACPX,EACJpH,GAAI,CACF,uCAAwC,CACtCC,QAAS,KAEX,yBAA0B,CACxBA,QAAS,sBACL2lB,EAAc,CAAE3lB,QAAS,oBAAuB,CAAC,GAEvD,2BAA4B,CAC1BwH,SAAU,WACVxH,QAASynB,EAAiB,GAAGA,cAA6B,oBACtD9B,EAAc,CAAE3lB,QAAS,OAAQmX,WAAY,kBAAqB,CAAC,MAEtE,CACD,oBAAqB,IACf/W,EACA,CAAEgH,gBAAgC,WAAfhH,EAA0BvC,EAAMwC,QAAQD,WAAWwH,OAASxH,GAC/E,CAAEgH,gBAAiBvJ,EAAMwC,QAAQD,WAAWiH,aAEnC,OAAXF,QAAW,IAAXA,OAAW,EAAXA,EAAapH,KAAM,CAAC,IAE1BhE,SAAA,CAEDmL,GACC0gB,EAAAA,EAAAA,WAAU1gB,GACRA,GAEAlL,EAAAA,EAAAA,KAAC6rB,EAAAA,EAAW,CAAA9rB,UACVH,EAAAA,EAAAA,MAACsF,EAAAA,EAAU,CAAC/D,UAAWP,EAAQgqB,eAAgBpb,UAAU,MAAKzP,SAAA,EAC5DC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAAC/D,UAAW,GAAGP,EAAQsK,SAASyS,GAAQ,KAAMnO,UAAU,OAAOrK,MAAM,cAAapF,SAC1FmL,IAEFqgB,GACCvrB,EAAAA,EAAAA,KAACN,EAAAA,EAAe,CAAC0B,QAAS8G,EAAS/G,UAAW,GAAGP,EAAQmqB,eAAepN,GAAQ,OAC9E,UAIR,MACJ/d,EAAAA,EAAAA,MAACksB,EAAAA,EAAa,CAAA/rB,SAAA,CACXwrB,IAAcrgB,GACblL,EAAAA,EAAAA,KAACN,EAAAA,EAAe,CAAC0B,QAAS8G,EAAS/G,UAAW,GAAGP,EAAQqqB,gBAAgBtN,GAAQ,QAC/E,KACH5d,EAEAsrB,GAAeC,GACd1rB,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACFwL,GAAG,OACH3I,GAAI,CACFzD,QAAS,OACT2D,oBAAqBynB,EAAU,MAAQL,GAAeC,EAAa,UAAY,MAC/EpnB,IAAKwnB,EAAU,SAAW,UAC1B3rB,SAAA,CAEDurB,GACCtrB,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFC,EAAAA,EAAAA,KAACgQ,EAAAA,EAAM,CAAClE,WAAS,EAAClH,KAAK,QAAQxD,QAASqL,EAAUwD,QAAQ,WAAUlQ,SACjEorB,MAGH,KACHE,GACCrrB,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFC,EAAAA,EAAAA,KAACgQ,EAAAA,EAAM,CAACE,SAAUsb,EAAiB1f,WAAS,EAAClH,KAAK,QAAQqL,QAAQ,YAAY7O,QAASgqB,EAAUrrB,SAC9FmrB,MAGH,QAEJ,UAIZ,C,wGC1LA,QAAe73B,IAAoE,IAAD04B,EAAA,IAAlE,MAAE9mB,EAAQ,QAAO,KAAE+C,EAAI,SAAEjI,KAAaJ,GAAuBtM,EAC3E,MAAMwO,GAAQC,EAAAA,EAAAA,MAEd,OACE9B,EAAAA,EAAAA,KAACqP,EAAAA,EAAK,CACJrH,KAAMA,EACNlC,SAAS,QACLnG,EACJwL,YAAa,CACXpH,GAAI,CACF,qBAAsB,CACpBkB,QACAmG,iBAAiB5C,EAAAA,EAAAA,IAAY3G,GAASA,EAAMwC,QAAQD,WAAWwH,OAAS/J,EAAMyJ,OAAOC,kBAElE,QAAjBwgB,EAAApsB,EAAMwL,mBAAW,IAAA4gB,OAAA,EAAjBA,EAAmBhoB,KAAM,CAAC,IAEhChE,SAEDA,GAGN,C,+FC/BD,QAAeisB,EAAAA,cAAqC,CAAC,GCDxC7pB,EACH,8BADGA,EAEL,2BAGF8pB,EAAc7Z,GAAyBA,EAAK8Z,OAAO,GAAGC,cAAgB/Z,EAAKga,MAAM,GAE1EC,EAAsB/B,GACjC,GAAG2B,EAAW3B,EAAO/a,YAAY0c,EAAW3B,EAAOrW,cAExCqY,EAAa12B,KAAyDA,GAAmB,IAAVA,E,0BCT5F,SAASiK,EAAQF,GACf,OACEK,EAAAA,EAAAA,KAAA,OACEF,QAAQ,YACRysB,UAAU,QACVpY,MAAO,CACL7O,SAAU,GACV+a,WAAY,OACZpb,MAAO,MACPtP,OAAQ,MACR2K,QAAS,eACTkO,KAAM,eACNge,WAAY,MAEV7sB,GAGV,CAEA,SAAS8sB,IACP,OACE7sB,EAAAA,EAAAA,MAACC,EAAO,CAAAE,SAAA,EACNC,EAAAA,EAAAA,KAAA,QACEE,EAAE,m9BACFsO,KAAK,aAEPxO,EAAAA,EAAAA,KAAA,QACEmc,SAAS,UACTC,SAAS,UACTlc,EAAE,kHACFsO,KAAK,cAIb,CAEA,MAAMD,EAAwBA,KAC5BvO,EAAAA,EAAAA,KAACH,EAAO,CAAAE,UACNC,EAAAA,EAAAA,KAAA,QAAME,EAAE,wDAINwsB,EAAsBA,KAC1B1sB,EAAAA,EAAAA,KAACH,EAAO,CAAAE,UACNC,EAAAA,EAAAA,KAAA,QACEE,EAAE,y0DACFsO,KAAK,cAKLme,EAAqBA,KACzB3sB,EAAAA,EAAAA,KAACH,EAAO,CAAAE,UACNC,EAAAA,EAAAA,KAAA,QACEE,EAAE,gHAeR,EAT6D,CAC3D0sB,aAASzpB,EACTglB,SAASnoB,EAAAA,EAAAA,KAACysB,EAAS,IACnBjH,SAASxlB,EAAAA,EAAAA,KAACuO,EAAW,IACrBa,OAAOpP,EAAAA,EAAAA,KAAC0sB,EAAS,IACjBG,MAAM7sB,EAAAA,EAAAA,KAAC2sB,EAAQ,IACfjqB,SAAS1C,EAAAA,EAAAA,KAACsO,EAAAA,EAAgB,CAAC1J,KAAM,GAAIb,GAAI,CAAEoB,MAAO,cCrE7C,IAAK2nB,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,sBAAhBA,EAAgB,gBAAhBA,EAAgB,oBAAhBA,EAAgB,kBAAhBA,EAAgB,kBAAhBA,CAAgB,MCM5B,MAAMC,UAAmBf,EAAAA,UACvBgB,WAAAA,CAAYrtB,GACVstB,MAAMttB,GAEN,MAAM,OAAEghB,GAAWhhB,EAEnB,IAAIutB,EAEJC,KAAKC,aAAe,KAEhBztB,EAAMihB,GACJD,GACFuM,EAAgBJ,EAAiBO,OACjCF,KAAKC,aAAeN,EAAiBQ,UAErCJ,EAAgBJ,EAAiBS,QAGnCL,EADSvtB,EAAM6tB,eAAiB7tB,EAAM8tB,aACtBX,EAAiBY,UAEjBZ,EAAiBO,OAGnCF,KAAKrS,MAAQ,CAAE+M,OAAQqF,GAEvBC,KAAKQ,aAAe,IACtB,CAEA,+BAAOC,CAAwBv6B,EAAiBsX,GAAY,IAA1BiW,GAAIiN,GAAQx6B,EAC5C,OAAIw6B,GAAUljB,EAAUkd,SAAWiF,EAAiBY,UAC3C,CAAE7F,OAAQiF,EAAiBO,QAE7B,IACT,CAEAS,iBAAAA,GACEX,KAAKY,cAAa,EAAMZ,KAAKC,aAC/B,CAEAY,kBAAAA,CAAmBC,GACjB,IAAIC,EAAa,KACjB,GAAID,IAAcd,KAAKxtB,MAAO,CAC5B,MAAM,OAAEkoB,GAAWsF,KAAKrS,MAEpBqS,KAAKxtB,MAAMihB,GACTiH,IAAWiF,EAAiBQ,UAAYzF,IAAWiF,EAAiBS,UACtEW,EAAapB,EAAiBQ,UAEvBzF,IAAWiF,EAAiBQ,UAAYzF,IAAWiF,EAAiBS,UAC7EW,EAAapB,EAAiBqB,QAElC,CACAhB,KAAKY,cAAa,EAAOG,EAC3B,CAEAE,oBAAAA,GACEjB,KAAKkB,oBACP,CAEAC,WAAAA,GACE,MAAM,QAAEC,GAAYpB,KAAKxtB,MACzB,IAAI6uB,EAAQD,EACRE,EAAOF,EAMX,OAJe,MAAXA,GAAsC,kBAAZA,IAC5BE,EAAOF,EAAQE,KACfD,EAAQD,EAAQC,OAEX,CAAEC,OAAMD,QACjB,CAEAT,YAAAA,GAA4C,IAA/BW,EAAQC,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,IAAAA,UAAA,GAAUT,EAAUS,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EACpB,OAAf+qB,GACFf,KAAKkB,qBAEDH,IAAepB,EAAiBQ,SAClCH,KAAKyB,aAAaF,GAElBvB,KAAK0B,eAEE1B,KAAKxtB,MAAM6tB,eAAiBL,KAAKrS,MAAM+M,SAAWiF,EAAiBO,QAC5EF,KAAK2B,SAAS,CAAEjH,OAAQiF,EAAiBY,WAE7C,CAEA,QAAIqB,GACF,MAAMA,EAAO5B,KAAKxtB,MAAMqvB,QAAQhc,QAChC,IAAK+b,EACH,MAAM,IAAIvxB,MAAM,oDAElB,OAAOuxB,CACT,CAEAH,YAAAA,CAAaF,GACX,MAAM,MAAEF,EAAK,GAAE7f,GAAOwe,KAAKxtB,MACrBsvB,EAAcP,EAEdQ,EAAW/B,KAAKmB,cAEjBI,GAAaF,GAOlBrB,KAAKxtB,MAAMwvB,QAAQhC,KAAK4B,KAAME,EAAatgB,GAE3Cwe,KAAKiC,aAAa,CAAEvH,OAAQiF,EAAiBQ,WAAY,KACvDH,KAAKxtB,MAAM0vB,WAAWlC,KAAK4B,KAAME,EAAatgB,GAE9Cwe,KAAKmC,gBAAgBJ,EAASV,OAAO,KACnCrB,KAAKiC,aAAa,CAAEvH,OAAQiF,EAAiBS,UAAW,KACtDJ,KAAKxtB,MAAM4vB,UAAUpC,KAAK4B,KAAME,EAAatgB,EAAG,GAChD,GACF,KAfFwe,KAAKiC,aAAa,CAAEvH,OAAQiF,EAAiBS,UAAW,KACtDJ,KAAKxtB,MAAM4vB,UAAUpC,KAAK4B,KAAME,EAAatgB,EAAG,GAgBtD,CAEAkgB,WAAAA,GACE,MAAM,KAAEJ,EAAI,GAAE9f,GAAOwe,KAAKxtB,MACpBuvB,EAAW/B,KAAKmB,cAGjBG,GAOLtB,KAAKxtB,MAAM6vB,OAAOrC,KAAK4B,KAAMpgB,GAE7Bwe,KAAKiC,aAAa,CAAEvH,OAAQiF,EAAiBqB,UAAW,KACtDhB,KAAKxtB,MAAM8vB,UAAUtC,KAAK4B,KAAMpgB,GAEhCwe,KAAKmC,gBAAgBJ,EAAST,MAAM,KAClCtB,KAAKiC,aAAa,CAAEvH,OAAQiF,EAAiBO,SAAU,KACrDF,KAAKxtB,MAAM+vB,SAASvC,KAAK4B,KAAMpgB,EAAG,GAClC,GACF,KAfFwe,KAAKiC,aAAa,CAAEvH,OAAQiF,EAAiBO,SAAU,KACrDF,KAAKxtB,MAAM+vB,SAASvC,KAAK4B,KAAMpgB,EAAG,GAgBxC,CAEA0f,kBAAAA,GAC4B,OAAtBlB,KAAKQ,eACPR,KAAKQ,aAAagC,SAClBxC,KAAKQ,aAAe,KAExB,CAEAyB,YAAAA,CAAaQ,EAAWC,GACtBA,EAAW1C,KAAK2C,gBAAgBD,GAChC1C,KAAK2B,SAASc,EAAWC,EAC3B,CAEAC,eAAAA,CAAgBD,GACd,IAAI3Q,GAAS,EAeb,OAbAiO,KAAKQ,aAAgBpnB,IACf2Y,IACFA,GAAS,EACTiO,KAAKQ,aAAe,KAEpBkC,EAAStpB,GACX,EAGF4mB,KAAKQ,aAAagC,OAAS,KACzBzQ,GAAS,CAAK,EAGTiO,KAAKQ,YACd,CAEA2B,eAAAA,CAAgBf,EAASwB,GACvB5C,KAAK2C,gBAAgBC,GACrB,MAAMC,EAA0C,MAAXzB,IAAoBpB,KAAKxtB,MAAMswB,eAC/D9C,KAAK4B,OAAQiB,GAKd7C,KAAKxtB,MAAMswB,gBACb9C,KAAKxtB,MAAMswB,eAAe9C,KAAK4B,KAAM5B,KAAKQ,cAG7B,MAAXY,GACF2B,WAAW/C,KAAKQ,aAAcY,IAT9B2B,WAAW/C,KAAKQ,aAAc,EAWlC,CAEAwC,MAAAA,GACE,MAAM,OAAEtI,GAAWsF,KAAKrS,MAExB,GAAI+M,IAAWiF,EAAiBY,UAC9B,OAAO,KAGT,MAAM,SACJ3tB,EAEA4O,GAAIyhB,EACJxP,GAAIyP,EACJ5C,aAAc6C,EACd9C,cAAe+C,EACf5P,OAAQ6P,EACRhC,MAAOiC,EACPhC,KAAMiC,EACNnC,QAASoC,EACTV,eAAgBW,EAChBzB,QAAS0B,EACTxB,WAAYyB,EACZvB,UAAWwB,EACXvB,OAAQwB,EACRvB,UAAWwB,EACXvB,SAAUwB,EACVlC,QAASmC,KACNC,GACDjE,KAAKxtB,MAET,OAAOI,EAAS8nB,EAAQuJ,EAC1B,EAGF,SAASC,IAAQ,CAEjBtE,EAAWuE,aAAe,CACxB1Q,IAAI,EACJ6M,cAAc,EACdD,eAAe,EACf7M,QAAQ,EACR6N,OAAO,EACPC,MAAM,EAENU,QAASkC,EACThC,WAAYgC,EACZ9B,UAAW8B,EAEX7B,OAAQ6B,EACR5B,UAAW4B,EACX3B,SAAU2B,GAGZ,UChPA,SAASE,EACP9wB,EACA7K,GAEmB,oBAAR6K,EACTA,EAAI7K,GACK6K,IACTA,EAAIuS,QAAUpd,EAElB,CAEe,SAAS47B,EACtBC,EACAC,GAOA,OAAO1F,EAAAA,SAAc,IACP,MAARyF,GAAwB,MAARC,EACX,KAEDC,IACNJ,EAAOE,EAAME,GACbJ,EAAOG,EAAMC,EAAS,GAEvB,CAACF,EAAMC,GACZ,CCpBe,SAASE,EAAmBjyB,GAAmD,IAADkyB,EAC3F,MAAM,QAAEtD,EAAO,MAAEpa,EAAQ,CAAC,EAAC,KAAE/f,GAASuL,EACtC,MAAO,CACLmyB,SAAkC,QAA1BD,EAAE1d,EAAM4d,0BAAkB,IAAAF,EAAAA,EAAwB,kBAAZtD,EAAuBA,EAAQn6B,IAAS,EAAIm6B,EAC1FyD,OAAQ7d,EAAM8d,yBACdC,MAAO/d,EAAMge,gBAEjB,CCzBO,MAAMC,EAAgB,CAE3BC,UAAW,+BAGXC,QAAS,+BAETC,OAAQ,6BAERC,MAAO,gCCFHC,EAAYC,GAAyB,GAAGC,KAAKC,MAAMF,OAE1C,SAASG,IAGb,IAFTlzB,EAAwBgvB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,CAAC,OAC5BmE,EAAiCnE,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EAEjC,MAAM,SAAE2uB,EAAW,IAAG,OAAEE,EAASI,EAAcC,UAAS,MAAEH,EAAQ,GAAMY,GAAW,CAAC,EAIpF,OAFmBC,MAAMC,QAAQrzB,GAASA,EAAQ,CAACA,IAGhDiI,KAAKqrB,IACJ,MAAMC,EAAwC,kBAAbpB,EAAwBA,EAAWW,EAASX,GACvEqB,EAAkC,kBAAVjB,EAAqBA,EAAQO,EAASP,GACpE,MAAO,GAAGe,KAAgBC,KAAqBlB,KAAUmB,GAAgB,IAE1EC,KAAK,IACV,CCrBO,SAASC,EAAYtE,GAC1B,MAAMuE,EALD,SAAuBvE,GAC5B,OAAQA,GAAQA,EAAKwE,eAAkB/O,QACzC,CAGc+O,CAAcxE,GAC1B,OAAOuE,EAAIE,aAAe7O,MAC5B,CCmEA,SAAS8O,EAAkBC,EAAqC3E,GAC9D,IAAKA,EAAM,OACX,MAAMngB,EAvCR,SACE8kB,EACA3E,GAEA,MAAM4E,EAAO5E,EAAK3J,wBACZwO,EAAkBP,EAAYtE,GACpC,IAAIngB,EAEJ,GAAImgB,EAAK8E,cACPjlB,EAAYmgB,EAAK8E,kBACZ,CACL,MAAMC,EAAgBF,EAAgBG,iBAAiBhF,GACvDngB,EAAYklB,EAAcE,iBAAiB,sBAAwBF,EAAcE,iBAAiB,YACpG,CAEA,IAAIC,EAAU,EACVC,EAAU,EAEd,GAAItlB,GAA2B,SAAdA,GAA6C,kBAAdA,EAAwB,CACtE,MAAMulB,EAAkBvlB,EAAUkb,MAAM,KAAK,GAAGA,MAAM,KAAK,GAAGA,MAAM,KACpEmK,EAAUG,SAASD,EAAgB,GAAI,IACvCD,EAAUE,SAASD,EAAgB,GAAI,GACzC,CAEA,OAAQT,GACN,IAAK,OACH,MAAO,cAAcE,EAAgBS,WAAaJ,EAAUN,EAAKzZ,UACnE,IAAK,QACH,MAAO,eAAeyZ,EAAKzZ,KAAOyZ,EAAK1uB,MAAQgvB,OACjD,IAAK,KACH,MAAO,cAAcL,EAAgBU,YAAcJ,EAAUP,EAAK/jB,SACpE,QAEE,MAAO,eAAe+jB,EAAK/jB,IAAM+jB,EAAKh+B,OAASu+B,OAErD,CAIoBK,CAAkBb,EAAW3E,GAC3CngB,IACFmgB,EAAK5a,MAAMqgB,gBAAkB5lB,EAC7BmgB,EAAK5a,MAAMvF,UAAYA,EAE3B,CAEO,MAAM6lB,EAAQzI,EAAAA,YAA2C,CAACrsB,EAAOc,KACtE,MAAM,SACJV,EAAQ,UACR2zB,EAAY,OACZ9S,GAAI8T,EAAM,MACVvgB,EAAK,QACLoa,EAAU,EAAC,QACXY,EAAO,UACPI,EAAS,OACTC,EAAM,SACNE,KACGjS,GACD9d,EAEEqvB,EAAUhD,EAAAA,OAAa,MACvB2I,EAAwBnD,EAAWzxB,EAASU,IAAKuuB,GACjD4F,EAAYpD,EAAWmD,EAAuBl0B,GAsD9Co0B,EAAiB7I,EAAAA,aAAkB,KACnCgD,EAAQhc,SACVygB,EAAkBC,EAAW1E,EAAQhc,QACvC,GACC,CAAC0gB,IA8BJ,OA5BA1H,EAAAA,WAAgB,KAEd,GAAI0I,GAAwB,SAAdhB,GAAsC,UAAdA,EACpC,OAGF,MAAMoB,EArJV,SAAkBC,GAAmB,IAC/BxG,EADkByG,EAAIrG,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,IAE7B,SAASsG,IAA2B,IAAD,IAAAC,EAAAvG,UAAAjzB,OAAby5B,EAAI,IAAApC,MAAAmC,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAzG,UAAAyG,GAIxBC,aAAa9G,GACbA,EAAU2B,YAJIoF,KACZP,EAAKQ,MAAMpI,KAAMgI,EAAK,GAGIH,EAC9B,CAMA,OAJAC,EAAUO,MAAQ,KAChBH,aAAa9G,EAAQ,EAGhB0G,CACT,CAsIyBQ,EAAS,KACxBzG,EAAQhc,SACVygB,EAAkBC,EAAW1E,EAAQhc,QACvC,IAGI4gB,EAAkBP,EAAYrE,EAAQhc,SAE5C,OADA4gB,EAAgB3O,iBAAiB,SAAU6P,GACpC,KACLA,EAAaU,QACb5B,EAAgB1O,oBAAoB,SAAU4P,EAAa,CAC5D,GACA,CAACpB,EAAWgB,IAEf1I,EAAAA,WAAgB,KACT0I,GAGHG,GACF,GACC,CAACH,EAAQG,KAGV70B,EAAAA,EAAAA,KAAC01B,EAAmB,CAClB/U,QAAM,EACNqO,QAASA,EACTG,QA1FmDwG,CAAC5G,EAAME,EAAa2G,KACzEnC,EAAkBC,EAAW3E,GHtFVA,KAIrBA,EAAK/J,UAAY+J,EAAK/J,SAAS,EGmF7B6Q,CAAO9G,GAEHI,GACFA,EAAQJ,EAAME,EAAa2G,EAC7B,EAqFErG,UAAWA,EACXF,WAnFoBN,IACtB,MAAMiD,GAAc,OAAL7d,QAAK,IAALA,OAAK,EAALA,EAAO8d,2BAA4BG,EAAcE,QAC1DwD,EAAkBlE,EAAmB,CACzCrD,UACAn6B,KAAM,QACN+f,MAAO,IAAKA,EAAO8d,yBAA0BD,KAG/CjD,EAAK5a,MAAM4hB,iBAAmBlD,EAAiB,oBAAqBiD,GACpE/G,EAAK5a,MAAMsN,WAAaoR,EAAiB,YAAaiD,GAEtD/G,EAAK5a,MAAMqgB,gBAAkB,OAC7BzF,EAAK5a,MAAMvF,UAAY,MAAM,EAwE3B4gB,OArEiDwG,CAACjH,EAAM6G,KAC1D,MAAM5D,GAAc,OAAL7d,QAAK,IAALA,OAAK,EAALA,EAAO8d,2BAA4BG,EAAcI,MAC1DsD,EAAkBlE,EAAmB,CACzCrD,UACAn6B,KAAM,OACN+f,MAAO,IAAKA,EAAO8d,yBAA0BD,KAG/CjD,EAAK5a,MAAM4hB,iBAAmBlD,EAAiB,oBAAqBiD,GACpE/G,EAAK5a,MAAMsN,WAAaoR,EAAiB,YAAaiD,GAEtDrC,EAAkBC,EAAW3E,GAEzBS,GACFA,EAAOT,EAAM6G,EACf,EAuDElG,SApDqDuG,CAAClH,EAAM6G,KAE9D7G,EAAK5a,MAAM4hB,iBAAmB,GAC9BhH,EAAK5a,MAAMsN,WAAa,GAEpBiO,GACFA,EAASX,EAAM6G,EACjB,EA8CEhV,GAAI8T,EACJnG,QAASA,KACL9Q,EAAK1d,SAERA,CAAC+a,EAAyBsW,IACzBpF,EAAAA,aAAmBjsB,EAAU,CAC3BU,IAAKm0B,EACLzgB,MAAO,CACL+hB,WAAsB,WAAVpb,GAAuB4Z,OAAoBvxB,EAAX,YACzCgR,KACApU,EAASJ,MAAMwU,UAEjBid,KAGa,IC/Mb+E,EAAW,CACtBC,SAAU,EACVC,SAAS,EACTC,iBAAiB,EACjBC,2BAA2B,EAC3BtmB,QAAS,UACTumB,iBAAkB,IAClBC,YAAaC,EACb1iB,aAAc,CAAEzE,SAAU,MAAO0E,WAAY,SAC7CyhB,oBAAqBjB,EACrB1C,mBAAoB,CAClBvD,MAAO,IACPC,KAAM,MAiDGkI,EACXA,CAAC7D,EAAcnzB,IACf,SAACmE,GACC,OAD2C6qB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,IAAAA,UAAA,GAElC,IAEFwH,EAASryB,MACTnE,EAAMmE,MACNgvB,EAAQhvB,IAIF,qBAATA,EArDoB8yB,EAACC,EAAsBC,KACjD,MAAMC,EAAkBC,GAAkD,kBAAdA,GAAwC,OAAdA,EAEtF,OAAID,EAAeF,GAAyBA,EACxCE,EAAeD,GAAuBA,EACnCX,EAASK,gBAAgB,EAiDrBI,CAAoB9D,EAAQ0D,iBAAkB72B,EAAM62B,kBAGhD,uBAAT1yB,EA7CsBmzB,EAACJ,EAAsBC,KACnD,MAAMI,EAAKA,CAACpyB,EAAWqyB,IAAoBA,EAAMC,MAAM/uB,UAAavD,IAASuD,IAE7E,OAAI6uB,EAAGL,EAAiB,CAAC,SAAU,WAC1BA,EAGLK,EAAGL,EAAiB,CAAC,WAChB,IACFV,EAASpE,sBACRmF,EAAGJ,EAAe,CAAC,YAAcA,KAClCD,GAIHK,EAAGJ,EAAe,CAAC,SAAU,WACxBA,EAGLI,EAAGJ,EAAe,CAAC,WACd,IACFX,EAASpE,sBACT+E,GAIAX,EAASpE,kBAAkB,EAoBvBkF,CAAsBnE,EAAQf,mBAAoBpyB,EAAMoyB,oBAI1De,EAAQhvB,IAASnE,EAAMmE,IAASqyB,EAASryB,EAClD,E,eCpFa,SAASuzB,EAAsB1hC,GAC5C,IAAKA,EACH,OAAO,EAGT,MAAM2hC,EAAW3hC,EAAS,GAE1B,OAAOg9B,KAAKC,MAAmD,IAA5C,EAAI,GAAK0E,GAAY,IAAOA,EAAW,GAC5D,CCXO,MAAMC,EACQ,8BADRA,EAED,qBAFCA,EAGM,4BAHNA,EAIC,uBCaRp3B,GAAYC,EAAAA,EAAAA,GAAW,CAC3B6Z,KAAM,CACJtkB,OAAQ,GAEV6hC,QAAS,CACP7hC,OAAQ,UAIN8hC,EAAgB,MAiJtB,EA/IiBzL,EAAAA,YAAyD,CAACrsB,EAAOc,KAChF,MAAM,SAAEV,EAAQ,MAAEoU,EAAK,QAAEoa,EAAU,IAAK3N,GAAI8T,EAAM,QAAEvF,EAAO,UAAEI,EAAS,OAAEC,EAAM,SAAEE,KAAajS,GAAU9d,EAEjGiB,EAAUT,IAEVu3B,EAAQ1L,EAAAA,SACR2L,EAAa3L,EAAAA,OAA6B,MAC1C4L,EAAyB5L,EAAAA,SAE/BA,EAAAA,WACE,IAAM,KACA0L,EAAM1kB,SACRqiB,aAAaqC,EAAM1kB,QACrB,GAEF,IAGF,MAAMgc,EAAUhD,EAAAA,OAAa,MACvB4I,EAAYpD,EAA2B/wB,EAAKuuB,GAE5C6I,EAAiBA,IAAOF,EAAW3kB,QAAU2kB,EAAW3kB,QAAQ8kB,aAAe,EAwErF,OAEE93B,EAAAA,EAAAA,KAAC01B,EACC,CACA9U,GAAI8T,EACJvF,QA3EmDwG,CAAC5G,EAAME,EAAa2G,KACzE7G,EAAK5a,MAAMxe,OAAS8hC,EAChBtI,GACFA,EAAQJ,EAAME,EAAa2G,EAC7B,EAwEErG,UA/CuDwI,CAAChJ,EAAME,EAAa2G,KAC7E7G,EAAK5a,MAAMxe,OAAS,OAChB45B,GACFA,EAAUR,EAAME,EAAa2G,EAC/B,EA4CEvG,WAtEoBN,IACtB,MAAMiJ,EAAcH,KAEZ/F,SAAUC,EAAkB,OAAEC,GAAWJ,EAAmB,CAClEzd,QACAoa,UACAn6B,KAAM,UAGR,GAAgB,SAAZm6B,EAAoB,CACtB,MAAM0J,EAAYZ,EAAsBW,GACxCjJ,EAAK5a,MAAM4d,mBAAqB,GAAGkG,MACnCL,EAAuB5kB,QAAUilB,CACnC,MACElJ,EAAK5a,MAAM4d,mBACqB,kBAAvBA,EAAkCA,EAAqB,GAAGA,MAGrEhD,EAAK5a,MAAMxe,OAAS,GAAGqiC,MACvBjJ,EAAK5a,MAAM8d,yBAA2BD,GAAU,EAAE,EAoDhDxC,OA1CiDwG,CAACjH,EAAM6G,KAC1D7G,EAAK5a,MAAMxe,OAAS,GAAGkiC,QACnBrI,GACFA,EAAOT,EAAM6G,EACf,EAuCElG,SAAUA,EACVD,UArCmBV,IACrB,MAAMiJ,EAAcH,KACZ/F,SAAUC,EAAkB,OAAEC,GAAWJ,EAAmB,CAClEzd,QACAoa,UACAn6B,KAAM,SAGR,GAAgB,SAAZm6B,EAAoB,CACtB,MAAM0J,EAAYZ,EAAsBW,GACxCjJ,EAAK5a,MAAM4d,mBAAqB,GAAGkG,MACnCL,EAAuB5kB,QAAUilB,CACnC,MACElJ,EAAK5a,MAAM4d,mBACqB,kBAAvBA,EAAkCA,EAAqB,GAAGA,MAGrEhD,EAAK5a,MAAMxe,OAAS8hC,EACpB1I,EAAK5a,MAAM8d,yBAA2BD,GAAU,EAAE,EAoBhD/B,eAjB0BiI,IACZ,SAAZ3J,IACFmJ,EAAM1kB,QAAUkd,WAAWgI,EAAMN,EAAuB5kB,SAAW,GACrE,EAeEgc,QAASA,EACTT,QAAqB,SAAZA,EAAqB,KAAOA,KACjC9Q,EAAK1d,SAERA,CAAC+a,EAAyBsW,KACzBpxB,EAAAA,EAAAA,KAAA,OACES,IAAKm0B,EACLzzB,WAAWg3B,EAAAA,EAAAA,GAAKv3B,EAAQqZ,KAAM,CAAE,CAACrZ,EAAQ42B,SAAoB,YAAV1c,IACnD3G,MAAO,CACLikB,cAAe,MACfpzB,SAAU,SACVmN,UAAWslB,EACXhW,WAAYoR,EAAiB,aACf,YAAV/X,GAAuB,CACzB9V,SAAU,cAEE,WAAV8V,IACD4Z,GAAU,CACTwB,WAAY,aAEb/hB,MAEDid,EAAUrxB,UAEdC,EAAAA,EAAAA,KAAA,OACES,IAAKk3B,EACLx2B,UAAWo2B,EAEXpjB,MAAO,CAAE7T,QAAS,QAASP,UAE3BC,EAAAA,EAAAA,KAAA,OAAKmU,MAAO,CAAElP,MAAO,QAASlF,SAAEA,SAIlB,IC5JpB2zB,EAAsD,CAC1DrO,MAAO,OACPnL,KAAM,QACNoL,OAAQ,KACR1V,IAAK,QAWMyoB,EAA0BrkB,GACrC,eAAeqY,EAAmBrY,KCzBrB,SAASskB,EAAsBC,GAC5C,OAAOA,EAAMC,QACX,CAACC,EAAK1D,IACQ,MAARA,EAAqB0D,EASlB,WAAmC,IAAD,IAAAvD,EAAAvG,UAAAjzB,OAANy5B,EAAI,IAAApC,MAAAmC,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAzG,UAAAyG,GACrC,MAAMsD,EAAS,IAAIvD,GACnBsD,EAAIlD,MAAMpI,KAAMuL,GAChB3D,EAAKQ,MAAMpI,KAAMuL,EACnB,IAEF,QAEJ,C,aCdA,MAAMC,EAAsC,qBAAXhU,OAAyBqH,EAAAA,gBAAwBA,EAAAA,UAEnE,SAAS4M,EAAiBC,GACvC,MAAMp4B,EAAMurB,EAAAA,OAAa6M,GAMzB,OAJAF,GAAkB,KAChBl4B,EAAIuS,QAAU6lB,CAAE,IAGX7M,EAAAA,aAAkB,kBAAa,EAAIvrB,EAAIuS,YAAS2b,UAAQ,GAAE,GACnE,CCEA,MAoHA,EApHiB3C,EAAAA,YAAgD,CAACrsB,EAAOc,KACvE,MAAM,SACJV,EAAQ,UACRoB,EAAS,iBACTq1B,EAAgB,0BAChBD,GAA4B,EAAK,QACjCruB,EAAO,GACPyG,EAAE,KACF3G,EAAI,cACJ8wB,EAAgB,CAAC,GACfn5B,EAEEo5B,EAAgB/M,EAAAA,SAEhBjY,EAAc6kB,GAAiB,WAC/B1wB,GACFA,KAAQymB,UAEZ,IAEMqK,EAAmBJ,GAAkBK,IACpC/wB,GAAoC,MAAzB+wB,IAIZF,EAAc/lB,SAChBqiB,aAAa0D,EAAc/lB,SAE7B+lB,EAAc/lB,QAAUkd,YAAW,KACjCnc,EAAY,KAAM,UAAWpF,EAAG,GAC/BsqB,GAAsB,IAG3BjN,EAAAA,WAAgB,KACVhkB,GACFgxB,EAAiBxC,GAGZ,KACDuC,EAAc/lB,SAChBqiB,aAAa0D,EAAc/lB,QAC7B,IAED,CAAChL,EAAMwuB,EAAkBwC,IAM5B,MAAME,EAAcA,KACdH,EAAc/lB,SAChBqiB,aAAa0D,EAAc/lB,QAC7B,EAOImmB,EAAenN,EAAAA,aAAkB,KACb,MAApBwK,GACFwC,EAAoC,GAAnBxC,EACnB,GACC,CAACA,EAAkBwC,IAqCtB,OAdAhN,EAAAA,WAAgB,KACd,IAAKuK,GAA6BvuB,EAIhC,OAHA2c,OAAOM,iBAAiB,QAASkU,GACjCxU,OAAOM,iBAAiB,OAAQiU,GAEzB,KACLvU,OAAOO,oBAAoB,QAASiU,GACpCxU,OAAOO,oBAAoB,OAAQgU,EAAY,CAInC,GACf,CAAC3C,EAA2B4C,EAAcnxB,KAG3ChI,EAAAA,EAAAA,KAACo5B,EAAAA,EAAiB,CAAC5O,YAtBIjkB,IACnB2B,GAEFA,EAAQ3B,EAAO,YAAaoI,EAC9B,EAkBgD5O,UAE9CC,EAAAA,EAAAA,KAAA,OACES,IAAKA,KACDq4B,EACJ33B,WAAWg3B,EAAAA,EAAAA,GAAKZ,EAA2Bp2B,GAC3C8oB,aA1C6D1jB,IAC7DuyB,EAAc7O,cAChB6O,EAAc7O,aAAa1jB,GAE7B2yB,GAAa,EAuCT/O,aApC6D5jB,IAC7DuyB,EAAc3O,cAChB2O,EAAc3O,aAAa5jB,GAE7B4yB,GAAc,EAgCqBp5B,SAE9BA,KAEe,I,0BC7HxB,MAAMI,GAAYC,EAAAA,EAAAA,GAAW,CAC3B6Z,KAAM,CACJ3Z,QAAS,OACT+4B,SAAU,OACVC,SAAU,EACV,CAACn3B,GAAmB,CAClBm3B,SAAU,UACV1gB,SAAU,YAUhB,IALwBpY,EAAAA,EAAAA,aAAiD,CAAAnN,EAA0BoN,KAAS,IAAlC,UAAEU,KAAcxB,GAAOtM,EAC/F,MAAMuN,EAAUT,IAChB,OAAOH,EAAAA,EAAAA,KAAA,OAAKS,IAAKA,EAAKU,WAAWg3B,EAAAA,EAAAA,GAAKv3B,EAAQqZ,KAAM9Y,MAAgBxB,GAAS,ICZzEQ,IAAYC,EAAAA,EAAAA,IAAYyB,IACrB,CACLoY,KAAM,CACJ7O,gBAAiBvJ,EAAMwC,QAAQD,WAAWoD,OAC1ClC,SAAU,WACVmG,WAAY,KACZ8tB,cAAe,YACfp0B,MAAO,OACPhB,WAAY,SACZH,QAAS,YACT0B,aAAc,MACd6b,UACE,kHACF/V,SAAU,WACVguB,aAAc,OACdx0B,SAAU,SACV1E,QAAS,QACT,YAAa,CACXk5B,aAAc,SAGlBC,YAAa,CACXx0B,MAAO,QAETkQ,QAAS,CACP7U,QAAS,OACT6D,WAAY,cAEdu1B,eAAgB,CACd5zB,SAAU,QACVN,OAAQ,IACRwP,UAAW,aACXzP,WAAY,KAEdo0B,aAAc,CACZC,YAAa,OACbzoB,UAAW,OAEb0oB,OAAQ,CACNv5B,QAAS,OACT6D,WAAY,SACZ21B,WAAY,OACZF,YAAa,OACbtqB,YAAa,QAEfyqB,MAAO,CACLvuB,SAAU,WACV6Z,MAAO,OACPzV,IAAK,OACLrP,OAAQ,UACR4E,MAAO,WAET60B,KAAM,CACJxuB,SAAU,WACVvG,MAAO,OACPtP,OAAQ,MACR2vB,OAAQ,EACRpL,KAAM,EACNxU,aAAc,cACd,SAAU,CACRT,MAAO,MACPS,aAAc,aAEhB,YAAa,CACX0F,gBAAiBvJ,EAAMyJ,OAAO2uB,aAEhC,UAAW,CACT7uB,gBAAiBvJ,EAAMyJ,OAAO4uB,aAMhCC,IAAwB35B,EAAAA,EAAAA,aAA+C,CAACb,EAAOy6B,KACnF,MAAM,GAAEzrB,EAAE,QAAEwG,EAAS0kB,OAAQQ,EAAyB,YAAE5D,EAAW,QAAExmB,EAAO,gBAAEqmB,EAAe,MAAEniB,GAAUxU,GAElG26B,EAAMC,IAAW5xB,EAAAA,EAAAA,WAAS,GAE3B/H,EAAUT,KAEVq6B,EAAO/D,EAAYxmB,GAEzB,IAAI4pB,EAASQ,EACS,oBAAXR,IACTA,EAASA,EAAOlrB,IAGlB,MAAM8rB,EAAwB,YAAZxqB,EAMlB,OAJA1M,EAAAA,EAAAA,YAAU,KACRg3B,GAAQ,EAAK,GACZ,CAACA,KAGF36B,EAAAA,EAAAA,MAAC86B,GAAe,CACdj6B,IAAK25B,EACLO,KAAK,QACLxmB,MAAOA,EACPhT,WAAWg3B,EAAAA,EAAAA,GAAKZ,EAA6B32B,EAAQqZ,KAAMhK,GAASlQ,SAAA,EAEpEH,EAAAA,EAAAA,MAAA,OAAK+O,GAAG,qBAAqBxN,UAAW,GAAGP,EAAQuU,WAAWlF,IAAUlQ,SAAA,CACpEu2B,EAAsE,MAApDt2B,EAAAA,EAAAA,KAAA,OAAKmB,UAAWP,EAAQ64B,YAAY15B,SAAEy6B,KAC1Dx6B,EAAAA,EAAAA,KAAA,OAAKmB,UAAWP,EAAQ84B,eAAe35B,SAAEoV,IAEvCslB,EAAyF,IAA7Ez6B,EAAAA,EAAAA,KAACN,EAAAA,EAAe,CAACyB,UAAW,GAAGP,EAAQm5B,QAAS34B,QAASzB,EAAMuI,aAG9EvI,EAAMg6B,cAAe35B,EAAAA,EAAAA,KAAA,OAAKmB,UAAW,GAAGP,EAAQ+4B,eAAe55B,SAAEJ,EAAMg6B,eAAsB,KAE7FE,IAAU75B,EAAAA,EAAAA,KAAA,OAAKmB,UAAWP,EAAQi5B,OAAO95B,SAAE85B,IAE1CY,EAKE,MAJFz6B,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACFC,WAAWg3B,EAAAA,EAAAA,GAAKv3B,EAAQo5B,KAAM/pB,EAASqqB,EAAO,OAAS,IACvDv2B,GAAI,CAAE0d,WAAY,SAAS9hB,EAAM62B,iCAGrB,IAItB,IAAeoE,EAAAA,EAAAA,MAAKT,ICjHdh6B,IAAYC,EAAAA,EAAAA,GAAW,CAC3By6B,YAAa,CACXrvB,SAAU,WACVoD,UAAW,gBACXgB,IAAK,EACLyV,MAAO,EACPC,OAAQ,EACRpL,KAAM,EACNtB,SAAU,QACVpT,OAAQ,WAYG,SAASs1B,GAAan7B,GACnC,MAAMo7B,EAAS56B,KAETouB,GAAU7b,EAAAA,EAAAA,WACTsoB,EAAWC,IAAgBtyB,EAAAA,EAAAA,WAAS,GAErCoL,EAAmDukB,EAAsB,CAAC34B,EAAMu7B,MAAMhzB,QAASvI,EAAMuI,UAQrGizB,GAAqB9zB,EAAAA,EAAAA,cAAY,KACrCknB,EAAQvb,QAAUkd,YAAW,KAC3B+K,GAAcG,IAASA,GAAI,GAC1B,IAAI,GACN,KAEH73B,EAAAA,EAAAA,YACE,IAAM,KACAgrB,EAAQvb,SACVqiB,aAAa9G,EAAQvb,QACvB,GAEF,IAGF,MAAM,MAAEkoB,EAAOt6B,QAASy6B,EAAU,UAAE7mB,EAAY2lB,IAA0Bx6B,EAEpEiB,GAAU0B,EAAAA,EAAAA,UAAQ,INrCW,WAEU,IAD7C1B,EAAyC+tB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,CAAC,EAE7C,MAAM2M,EAAoD,CACxDC,eAAe,EACfC,gCAAgC,EAChCC,mCAAmC,EACnCC,+BAA+B,EAC/BC,kCAAkC,EAClCC,8BAA8B,EAC9BC,iCAAiC,GAEnC,OAAQC,OAAOC,KAAKn7B,GACjB+I,QAAQtM,IAASi+B,EAAiBj+B,KAClCm7B,QAAO,CAACwD,EAAK3+B,KAAG,IAAW2+B,EAAK,CAAC3+B,GAAMuD,EAAQvD,MAAS,CAAC,EAC9D,CMsBgC4+B,CAAsBZ,IAAa,CAACA,KAE5D,KACJrzB,EAAI,cACJ8wB,EAAa,oBACbpD,EAAmB,gBACnBwG,EAAe,mBACfnK,EAAkB,0BAClBwE,EACA71B,QAASy7B,KACNC,GACDlB,EAEEpF,EAAkB,CACtBpC,WNjE8B1f,EMiEDooB,EAAWpoB,aNhEV,WAA5BA,EAAaC,WACRyf,EAAU1f,EAAaC,YAEzByf,EAAU1f,EAAazE,WM8D5Bgf,QAASwD,KACNmK,GNnE2BloB,MMsEhC,IAAItT,EAAUy7B,EACS,oBAAZz7B,IACTA,EAAUA,EAAQ07B,EAAWztB,GAAIytB,EAAWjnB,UAG9C,MAAMknB,EACJ,CAAC,UAAW,YAAa,SAAU,YACnC7D,QACA,CAACC,EAAK6D,KAAM,IACP7D,EACH,CAAC6D,GAAShE,EAAsB,CAAC34B,EAAMu7B,MAAMoB,GAAS38B,EAAM28B,QAE9D,CAAC,GAGH,OACEt8B,EAAAA,EAAAA,KAAC0gB,EAAQ,CAAC/R,GAAIytB,EAAWztB,GAAI6e,eAAa,EAACe,QAAS,IAAK3N,GAAIoa,EAAWtL,SAAU2M,EAAU3M,SAAS3vB,UACnGC,EAAAA,EAAAA,KAACu8B,EAAQ,CACPv0B,KAAMA,EACN2G,GAAIytB,EAAWztB,GACf4nB,0BAA2BA,EAC3BC,iBAAkB4F,EAAW5F,iBAC7Br1B,WAAWg3B,EAAAA,EAAAA,GAAK4C,EAAOF,YAAaj6B,EAAQqZ,KAAMrZ,EAAQy3B,EAAuB+D,EAAWpoB,gBAC5F8kB,cAAeA,EACf5wB,QAAS6L,EAAYhU,UAErBC,EAAAA,EAAAA,KAAC01B,EAAmB,IACdI,EACJnnB,GAAIytB,EAAWztB,GACfiS,GAAI5Y,EACJwnB,OAAQ6M,EAAU7M,OAClBE,SAAUyL,EACVhM,QAASkN,EAAUlN,QAGnBI,UAAW+I,EAAsB,CAAC+D,EAAU9M,UA7EOwI,KACrDp4B,EAAMu7B,MAAMsB,cACdzoB,EAAY,KAAM,aAAcpU,EAAMu7B,MAAMvsB,GAC9C,IA0E6E5O,SAGtEW,IAAWV,EAAAA,EAAAA,KAACwU,EAAS,IAAK0mB,EAAOhzB,QAASA,IAAM6L,EAAY,KAAM,aAAcpU,EAAMu7B,MAAMvsB,WAKvG,CC1HA,MAAM8tB,GACE,CAAE7P,QAAS,GAAI8P,MAAO,GADxBD,GAEM,CAAE7P,QAAS,EAAG8P,MAAO,GAG3BC,GAAkB,IAAIpF,IAItBp3B,IAAYC,EAAAA,EAAAA,GAAW,CAC3B6Z,KAAM,CACJ2iB,UAAW,aACXt8B,QAAS,OACTuY,UAAW,OACXrN,SAAU,QACV2O,OAAQ,KACRxkB,OAAQ,OACRsP,MAAO,OACPwc,WAAYoR,EAAiB,CAAC,MAAO,QAAS,SAAU,OAAQ,aAAc,CAAEf,SAAU,IAAKE,OAAQ,SAGvGoG,cAAe,OACf,CAACuE,IAAkB,CACjB34B,QAAS,GAAGy4B,GAAiB7P,gBAC7BnL,WAAY,0BAEd3b,SAAU,eAAsC,EAAvB22B,GAAa7P,aACtC,CAACzqB,GAAqB,CACpB8C,MAAO,OACPa,SAAU,sBAGd+2B,UAAW,CACT,CAACF,IAAkB,CACjB34B,QAAS,GAAGy4B,GAAiBC,gBAGjC9sB,IAAK,CACHA,IAAK,OACLiF,cAAe,UAEjByQ,OAAQ,CACNA,OAAWmX,GAAa7P,QAAU6P,GAAiB7P,QAA3C,KACR/X,cAAe,kBAEjBqF,KAAM,CACJA,KAAM,GAAGuiB,GAAa7P,YACtB,CAACzqB,GAAmB,CAClBgC,WAAY,cAEd,CAAChC,GAAqB,CACpB+X,KAAM,SAGVmL,MAAO,CACLA,MAAO,GAAGoX,GAAa7P,YACvB,CAACzqB,GAAmB,CAClBgC,WAAY,YAEd,CAAChC,GAAqB,CACpBkjB,MAAO,SAGXyX,OAAQ,CACN5iB,KAAM,MACNtL,UAAW,mBACX,CAACzM,GAAmB,CAClBgC,WAAY,aAYZ44B,GAAuDp9B,IAC3D,MAAM,QAAEiB,EAAU,CAAC,EAAC,aAAEoT,EAAY,MAAE0oB,EAAK,SAAE38B,GAAaJ,EAClDo7B,EAAS56B,KAET68B,GAAoB7E,EAAAA,EAAAA,GACxBZ,EACAwD,EAAO/mB,EAAazE,UACpBwrB,EAAO/mB,EAAaC,YACpB,CAAE,CAAC8mB,EAAO8B,WAAYH,GACtB3B,EAAO9gB,KACPrZ,EAAQ26B,cACR36B,EAAQ,wBAAwByrB,EAAmBrY,OAGrD,OAAOhU,EAAAA,EAAAA,KAAA,OAAKmB,UAAW67B,EAAkBj9B,SAAEA,GAAe,EAG5D,IAAe66B,EAAAA,EAAAA,MAAKmC,IC5EpB,MAAME,WAAyBzoB,EAAAA,UAC7BwY,WAAAA,CAAYrtB,GAA+B,IAADu9B,EACxCjQ,MAAMttB,GAAMu9B,EAAA/P,KAed,KAIAgQ,gBAAkB,SAAChoB,GACjB,MAAMioB,EAD4EzO,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,CAAC,GAGhF,IAAEtxB,EAAG,iBAAEggC,KAAqBvK,GAAYsK,EAExCE,EAAkBhR,EAAUjvB,GAC5BsR,EAAK2uB,EAAmBjgC,GAAsB,IAAIkgC,MAAOC,UAAY7K,KAAK8K,SAE1EC,EAAS/G,EAAM7D,EAASoK,EAAKv9B,OAC7Bu7B,EAAuB,CAC3BvsB,QACGmkB,EACH3d,UACAnN,MAAM,EACNwvB,SAAS,EACTgF,cAAc,EACdnG,QAASqH,EAAO,WAChB7D,OAAQ6D,EAAO,UACfh9B,QAASg9B,EAAO,WAChBztB,QAASytB,EAAO,WAChB1pB,aAAc0pB,EAAO,gBACrBnH,0BAA2BmH,EAAO,6BAClClH,iBAAkBkH,EAAO,oBACzBpH,gBAAiBoH,EAAO,mBACxBhI,oBAAqBgI,EAAO,uBAC5B3L,mBAAoB2L,EAAO,sBAC3BxB,gBAAiBwB,EAAO,mBAAmB,GAC3CjH,YAAaiH,EAAO,eAAe,GACnCvpB,MAAOupB,EAAO,SAAS,GACvB5E,cAAe4E,EAAO,iBAAiB,GACvCv8B,WAAWg3B,EAAAA,EAAAA,GAAK+E,EAAKv9B,MAAMwB,UAAW2xB,EAAQ3xB,YAyBhD,OAtBI+5B,EAAM7E,UACR6E,EAAM1E,sBAAmBrzB,GAG3B+5B,EAAKpO,UAAUhU,IACb,QAA0B3X,IAArBk6B,GAAkCH,EAAKv9B,MAAM09B,kBAAqBA,EAAkB,CACvF,MAAMM,EAAmB74B,GACvBw4B,EAAkBx4B,EAAK6J,KAAOA,EAAK7J,EAAKqQ,UAAYA,EAEhDyoB,EAAU9iB,EAAM+iB,MAAMC,UAAUH,IAAoB,EACpDI,EAASjjB,EAAMkjB,OAAOF,UAAUH,IAAoB,EAC1D,GAAIC,GAAWG,EACb,OAAOjjB,CAEX,CAEA,OAAOoiB,EAAKe,mBAAmB,IAC1BnjB,EACH+iB,MAAO,IAAI/iB,EAAM+iB,MAAO3C,IACxB,IAGGvsB,CACT,EAEA,KAIAsvB,mBAA+BnjB,IAC7B,MAAM,OAAEkjB,GAAWljB,EACnB,OAAIkjB,EAAOtiC,QAAUyxB,KAAKiJ,SACjBjJ,KAAK+Q,oBAAoBpjB,GAE3BqS,KAAKgR,aAAarjB,EAAM,EAGjC,KAGAqjB,aAAyBrjB,IACvB,MAAM,MAAE+iB,EAAK,OAAEG,GAAWljB,EAC1B,OAAI+iB,EAAMniC,OAAS,EACV,IACFof,EACHkjB,OAAQ,IAAIA,EAAQH,EAAM,IAC1BA,MAAOA,EAAMzR,MAAM,EAAGyR,EAAMniC,SAGzBof,CAAK,EAGd,KAQAojB,oBAAgCpjB,IAC9B,GAAIA,EAAMkjB,OAAO5G,MAAMtyB,IAAUA,EAAKkD,MAAQlD,EAAK03B,eACjD,OAAO1hB,EAGT,IAAIsjB,GAAS,EACTC,GAAS,EAEWvjB,EAAMkjB,OAAOxF,QAAO,CAACC,EAAKzlB,IAAYylB,GAAOzlB,EAAQhL,MAAQgL,EAAQqjB,QAAU,EAAI,IAAI,KAEvFlJ,KAAKiJ,WAE3BiI,GAAS,GAGX,MAAML,EAASljB,EAAMkjB,OAAOp2B,KAAK9C,GAC1Bs5B,GAAYt5B,EAAKuxB,UAAWgI,EAwB1B,IAAKv5B,IAvBVs5B,GAAS,EAEJt5B,EAAK0yB,SAON1yB,EAAKoD,SACPpD,EAAKoD,QAAQ,KAAM,WAAYpD,EAAK6J,IAGlCwe,KAAKxtB,MAAMuI,SACbilB,KAAKxtB,MAAMuI,QAAQ,KAAM,WAAYpD,EAAK6J,IAGrC,IACF7J,EACHkD,MAAM,IAhBC,IACFlD,EACH03B,cAAc,MAqBtB,MAAO,IAAK1hB,EAAOkjB,SAAQ,EAG7B,KAGAM,mBAA0D,CAACvP,EAAME,EAAa5xB,KAC5E,IAAKivB,EAAUjvB,GACb,MAAM,IAAIG,MAAM,0DAGlB2vB,KAAK2B,UAASz7B,IAAA,IAAC,OAAE2qC,GAAQ3qC,EAAA,MAAM,CAC7B2qC,OAAQA,EAAOp2B,KAAK9C,GAAUA,EAAK6J,KAAOtR,EAAM,IAAKyH,EAAM0yB,SAAS,GAAS,IAAK1yB,KACnF,GAAE,EAGL,KAGAy5B,iBAAwD,CAACh4B,EAAOpP,EAAQkG,KAOtE,GAJI8vB,KAAKxtB,MAAMuI,SACbilB,KAAKxtB,MAAMuI,QAAQ3B,EAAOpP,EAAQkG,GAGrB,cAAXlG,EACF,OAGF,MAAMqnC,OAAyBr7B,IAAR9F,EAEvB8vB,KAAK2B,UAASpnB,IAAA,IAAC,OAAEs2B,EAAM,MAAEH,GAAOn2B,EAAA,MAAM,CACpCs2B,OAAQA,EAAOp2B,KAAK9C,GACb05B,GAAkB15B,EAAK6J,KAAOtR,EAI5ByH,EAAK0yB,QAAU,IAAK1yB,EAAMkD,MAAM,GAAU,IAAKlD,EAAM03B,cAAc,GAHjE,IAAK13B,KAKhB+4B,MAAOA,EAAMl0B,QAAQ7E,GAASA,EAAK6J,KAAOtR,IAC3C,GAAE,EAGL,KAGAohC,cAAmDphC,IAEjD,MAAMqhC,EAAavR,KAAKrS,MAAMkjB,OAAOl0B,MAAMhF,GAASA,EAAK6J,KAAOtR,IAC5DivB,EAAUjvB,IAAQqhC,GAAcA,EAAWx2B,SAC7Cw2B,EAAWx2B,QAAQ,KAAM,aAAc7K,GAGzC8vB,KAAKoR,iBAAiB,KAAM,aAAclhC,EAAI,EAGhD,KAOAshC,kBAAwD,CAAC5P,EAAM1xB,KAC7D,IAAKivB,EAAUjvB,GACb,MAAM,IAAIG,MAAM,yDAGlB2vB,KAAK2B,UAAUhU,IACb,MAAM8jB,EAAWzR,KAAKgR,aAAa,IAC9BrjB,EACHkjB,OAAQljB,EAAMkjB,OAAOr0B,QAAQ7E,GAASA,EAAK6J,KAAOtR,MAGpD,OAA8B,IAA1BuhC,EAASf,MAAMniC,OACVkjC,EAGFzR,KAAK+Q,oBAAoBU,EAAS,GACzC,EA1OFzR,KAAKrS,MAAQ,CACXkjB,OAAQ,GACRH,MAAO,GACPgB,aAAc,CACZ1B,gBAAiBhQ,KAAKgQ,gBACtBsB,cAAetR,KAAKsR,eAG1B,CAEA,YAAIrI,GACF,OAAOjJ,KAAKxtB,MAAMy2B,UAAYD,EAASC,QACzC,CAiOAjG,MAAAA,GACE,MAAM,aAAE0O,GAAiB1R,KAAKrS,OACxB,QAAEgkB,EAAO,SAAE/+B,EAAQ,MAAE28B,GAAQ,EAAK,WAAEqC,EAAa,CAAC,EAAC,QAAEn+B,GAAYusB,KAAKxtB,MAEtEq/B,EAAQ7R,KAAKrS,MAAMkjB,OAAOxF,QAAyB,CAACC,EAAKzlB,KAC7D,MAAMisB,EAAW5S,EAAmBrZ,EAAQgB,cACtCkrB,EAAqBzG,EAAIwG,IAAa,GAC5C,MAAO,IACFxG,EACH,CAACwG,GAAW,IAAIC,EAAoBlsB,GACrC,GACA,CAAC,GAEEmsB,EAAYrD,OAAOC,KAAKiD,GAAOp3B,KAAKw3B,IACxC,MAAMpB,EAASgB,EAAMI,IACdC,GAAgBrB,EAEvB,OACEh+B,EAAAA,EAAAA,KAAC+8B,GAAiB,CAAcL,MAAOA,EAAO1oB,aAAcqrB,EAAarrB,aAAcpT,QAASA,EAAQb,SACrGi+B,EAAOp2B,KAAKszB,IACXl7B,EAAAA,EAAAA,KAAC86B,GAAY,CAEXI,MAAOA,EACPt6B,QAASA,EACT4T,UAAWuqB,EAAW7D,EAAMjrB,SAC5B/H,QAASilB,KAAKoR,iBACdpP,QAAShC,KAAKxtB,MAAMwvB,QACpBK,OAAQrC,KAAKxtB,MAAM6vB,OACnBE,SAAU4I,EAAsB,CAACnL,KAAKwR,kBAAmBxR,KAAKxtB,MAAM+vB,WACpEH,UAAW+I,EAAsB,CAACnL,KAAKmR,mBAAoBnR,KAAKxtB,MAAM4vB,aARjE2L,EAAMvsB,OAHOywB,EAcJ,IAIxB,OACEx/B,EAAAA,EAAAA,MAAC0/B,EAAgBC,SAAQ,CAAC3pC,MAAOipC,EAAa9+B,SAAA,CAC3CA,EACA++B,GAAUU,EAAAA,EAAAA,cAAaL,EAAWL,GAAWK,IAGpD,EAGF,YCtTA,QAAsC5Y,EAAAA,EAAAA,YAAW+Y,E,4ICCjD,MAAMG,EAAe,CAAC,GAAI,GAAI,KAgB9B,EAAepsC,IAOS,IAPR,MACdqsC,EAAK,aACLC,EAAY,iBACZC,EAAgB,gBAChBC,EAAkB,GAAE,QACpBC,EAAO,aACPC,GAAe,GACC1sC,EAChB,MAAO2sC,EAASC,GAAcjU,EAAAA,SAAe,IACtCkU,EAAUC,GAAenU,EAAAA,SAAe6T,IACxCttB,EAAUC,GAAewZ,EAAAA,SAAe,MAMzCjY,EAAcA,KAClBvB,EAAY,KAAK,EAyBnB,OACExS,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACC,WAAS,EAACK,MAAI,EAACC,GAAI,GAAIhB,GAAI,CAAE2I,GAAI,QAAS3M,UAC9CH,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CAACC,WAAS,EAACkB,eAAgBm6B,EAAU,WAAa,GAAG//B,SAAA,EACxDC,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACM,MAAI,EAACC,IAAE,EAACN,WAAS,EAAA1E,UACrBC,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACM,MAAI,EAAA/E,UACRC,EAAAA,EAAAA,KAACogC,EAAAA,GAAQ,CAACC,MAAO,EAAGr8B,QAAQ,OAAMjE,UAChCC,EAAAA,EAAAA,KAACsgC,EAAAA,EAAmB,CAClBZ,MAAO/M,KAAK4N,KAAKC,OAAOd,GAAS,IAAMQ,GACvCO,KAAMT,EACN76B,MAAM,UACNu7B,MAAM,UACNz4B,SAjCW04B,CAACp3B,EAAQy2B,KAChCC,EAAWD,GACPL,GACFA,EAAa,CACXK,UACAE,YAEJ,UA+BKH,IACCngC,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CAACM,MAAI,EAAA/E,SAAA,EACRC,EAAAA,EAAAA,KAACogC,EAAAA,GAAQ,CAACC,MAAO,EAAGj/B,QAhDTmF,IACnBiM,EAAYjM,EAAM6M,cAAc,EA+CkBpP,QAAQ,OAAMjE,UACtDH,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAAQpE,SAAA,CAChCmgC,EAAS,UAAMlgC,EAAAA,EAAAA,KAAC4gC,EAAAA,EAAqB,CAAC78B,GAAI,CAAEuB,SAAU,gBAG3DtF,EAAAA,EAAAA,KAAC8T,EAAAA,EAAI,CACHnF,GAAG,wBACH4D,SAAUA,EACVsuB,aAAW,EACX74B,KAAM6L,QAAQtB,GACdrK,QAAS6L,EACT9D,QAAQ,eACR+D,aAAc,CACZzE,SAAU,SACV0E,WAAY,SAEd6sB,gBAAiB,CACfvxB,SAAU,MACV0E,WAAY,SACZlU,SAED0/B,EAAa73B,KAAKs4B,IACjBtgC,EAAAA,EAAAA,MAACwU,EAAAA,EAAQ,CAAgBhT,QAASA,IApDxB8+B,KACtBnsB,IACAosB,EAAYD,GACZD,EAAW,GACPL,GACFA,EAAiB,CACfI,QAAS,EACTE,YAEJ,EA2CoDa,CAAeb,GAAUngC,SAAA,CAC9DmgC,EAAS,UADGA,cAU9B,C,4KC5GD,IAAIc,EAAiE,CAAC,EAEtE,IACE,MAAMj3B,EAAek3B,EAAQ,OACvBC,EAAoBD,EAAQ,OAElCD,EAAkB,IACbj3B,KACAm3B,EAEP,CAAE,MAAO9xB,GACPkZ,QAAQlZ,MAAMA,EAChB,CAEA,MAAM+xB,EAAyC,CAAC,EAChDrF,OAAOC,KAAKiF,GAAiBp3B,SAASw3B,IACpCD,EAAYC,GAAYJ,EAAgBI,GAAUC,EAAAA,GAAQ,IAGrD,MAAMC,EAAiBC,GACrBJ,EAAYI,GAGRC,EAAiB,CAC5BC,0BAA2B,0BAC3BC,cAAe,QACfC,sBAAuB,sBACvBC,KAAMP,EAAAA,KAAYQ,EAAAA,GAAQC,GAAK,OAAS,SACxCC,KAAM,aACNC,sBAAuB,0BACvBC,gBAAiB,oBACjBC,cAAe,qBACfC,YAAa,cACbC,SAAU,kBACVC,aAAc,eACdC,oBAAqB,uBACrBC,gBAAiB,kBACjBC,WAAY,aACZC,KAAM,OACNC,UAAW,OACXC,WAAY,oBACZC,cAAe,QACfC,UAAW,YAEXC,cAAe,cACfC,WAAY,WACZC,UAAW,UACXC,gBAAiB,kBAEjBC,aAAc,eAEdC,mBAAoB,qBACpBC,eAAgB,iBAChBC,uBAAwB,yBACxBC,WAAY,aAEZC,UAAW,aACXC,YAAa,gBAGFC,EAAiBnC,EAAcE,EAAeO,MAC9C2B,EAAiBpC,EAAcE,EAAeI,MAE9C+B,GADgCrC,EAAcE,EAAeG,uBACzCL,EAAcE,EAAeS,kBACjDD,EAAwBV,EAAcE,EAAeQ,uBAGrD4B,GAFiBtC,EAAcE,EAAekB,WAC7BpB,EAAcE,EAAe0B,cACpBQ,GAC1BG,EAAsBvC,EAAcE,EAAewB,WACnDc,EAAuBxC,EAAcE,EAAe2B,oBACpDY,EAAmBzC,EAAcE,EAAe4B,gBAGhDY,GAFc1C,EAAcE,EAAe+B,WAChCjC,EAAcE,EAAegC,aACpBlC,EAAcE,EAAeyB,kBAE9DgB,EAAAA,GAAMC,oBAAoB/C,GAC1B9kC,EAAAA,GAAM8nC,QAAQC,EAAAA,IAEP,MAAMC,EAAmB,IAAIvI,OAAO/d,OAAOojB,G,4ECnF3C,MAAMvkC,EAAW,8BAEXJ,EAAkB,8BAElB8nC,EAAkB,iDAElBC,EAAe,W,+GCH5B,MAAMC,EAAY,CAChB,CAACC,EAAAA,GAAQC,SAAU,8BACnB,CAACD,EAAAA,GAAQE,SAAU,+BAGRC,EAAqBJ,EAAUK,EAAAA,IAI/BC,IAFyBC,EAAAA,EAAAA,IAAmBP,EAAUK,EAAAA,KAExB3vC,GACzC,mDAAmDA,KAExC8vC,EAAmBC,EAAAA,GAAkBJ,EAAAA,IAIrCK,GAFsBC,EAAAA,GAAqBN,EAAAA,IAEnBO,EAAAA,GAAcP,EAAAA,KAE5C,IAAKQ,EAAe,SAAfA,GAAe,OAAfA,EAAe,0BAAfA,EAAe,gBAAfA,EAAe,sBAAfA,EAAe,kBAAfA,CAAe,K,4ECrBpB,MAIMC,EAA6B,6B,4nBCJnC,IAAKC,EAAY,SAAZA,GAAY,OAAZA,EAAY,YAAZA,EAAY,QAAZA,CAAY,M,gDCGjB,MAAMC,EAAuB,CAACC,EAAAA,GAAUC,MAElCC,EAAgB,CAC3B,CAACF,EAAAA,GAAU3D,IAAK8D,EAAAA,GAAiBj3B,GACjC,CAAC82B,EAAAA,GAAUC,MAAOG,EAAAA,GAAMl3B,GACxB,CAAC82B,EAAAA,GAAUK,MAAOC,EAAAA,GAAKp3B,ICNlB,MAAMq3B,EAAgC,CAC3Cx1B,MAAO,WACP5a,M,SAAOqwC,EAAUC,UCKNC,EAAoB,KACpBC,EAAyB,QAEzBC,EAAoB,KAGpBC,EAAuB,iBAKvBC,EAAmB,CAC9B,QACA,QACA,QACA,MACA,KACA,KACA,MACA,OACA,MACA,OACA,MACA,OACA,OACA,OAGWC,EAAgCnjC,IACvC8K,EAAAA,EAAAA,GAAW9K,IACXm9B,OAAOn9B,GA5BgC,IA6BpCm9B,OAAOn9B,GAOHsM,EAJe,CAC1B,CAACkyB,EAAAA,GAAQC,IAAK,IAGqBT,EAAAA,IAExBoF,EAAU,0BAEVC,EAAe,sBAMfC,EAAqB,YAKrBC,IAHY,GAAK,GAAK,GAAGtjC,WACJk9B,OAAOqG,UAEN,IACtBC,EAAuB,EACvBC,EAAwB,GAExBC,EAAgB,kEAChBC,EAAyB,EAGzBC,EAA6BC,OAAO,OAAaA,OAAO,I,0HClE9D,MAAMC,EAAwB,CACnC,8BACA,8BACA,8BACAC,EAAAA,GAAAA,GACAxD,EAAAA,IAIWyD,EAAmB,CAC9B,8BACA,8BACA,8BACA,8BACA,8BACAD,EAAAA,GAAAA,GACAxD,EAAAA,IASW0D,EAAmC,CAC9C,CACE/2B,MAAO,UACP7B,GAAI,UACJ/Y,MAAO,WAET,CACE4a,MAAO,SACP7B,GAAI,SACJ/Y,MAAO,UAET,CACE4a,MAAO,UACP7B,GAAI,UACJ/Y,MAAO,WAET,CACE4a,MAAO,UACP7B,GAAI,UACJ/Y,MAAO,WAET,CACE4a,MAAO,WACP7B,GAAI,WACJ/Y,MAAO,YAET,CACE4a,MAAO,YACP7B,GAAI,YACJ/Y,MAAO,aAET,CACE4a,MAAO,SACP7B,GAAI,SACJ/Y,MAAO,UAET,CACE4a,MAAO,QACP7B,GAAI,QACJ/Y,MAAO,SAET,CACE4a,MAAO,WACP7B,GAAI,WACJ/Y,MAAO,YAGT,CACE4a,MAAO2Y,EAAAA,EAAK9gB,EAAE,gBACdsG,GAAI,QACJ/Y,MAAO,UAIE4xC,EAAc,IAEdC,EAAsB,G,2ECrF5B,IAAK5F,EAAO,SAAPA,GAAO,OAAPA,EAAO,QAAPA,EAAO,cAAPA,CAAO,MAKZ,MAAM6F,EAAU,CACrB,CAAC7F,EAAQ8F,OAAQ,wBACjB,CAAC9F,EAAQC,IAAK,mBAGHT,EAAUuG,KAEVC,EAAgBxG,IAAYQ,EAAQC,GAGpCsC,GAF+BvC,EAAQ8F,MAEhCD,EAAQrG,IAEEQ,EAAQC,GAELD,EAAQ8F,K,uWCjBlC,IAAKG,EAAK,SAALA,GAAK,OAALA,EAAK,cAALA,EAAK,cAALA,CAAK,MAKLC,EAAK,SAALA,GAAK,OAALA,EAAK,wBAALA,EAAK,wBAALA,CAAK,MAKV,MAAMC,EAAc,IAEpB,IAAKC,EAAS,SAATA,GAAS,OAATA,EAAAA,EAAS,eAATA,EAAAA,EAAS,qBAATA,EAAAA,EAAS,iBAATA,CAAS,MAOlBA,EAAUC,IACVD,EAAUE,OACVF,EAAUG,KAGN,IAAKC,EAAU,SAAVA,GAAU,OAAVA,EAAU,sCAAVA,EAAU,sBAAVA,EAAU,wBAAVA,EAAU,wBAAVA,CAAU,MAOf,MAAMC,EAAwB,IAExBC,EAAwB,IAExBC,EAAwB,IAExBC,EAAsD,CACjE,CAAE95B,GAAI,OAAQ/Y,MAAO,KACrB,CAAE+Y,GAAI,OAAQ/Y,MAAO,KACrB,CAAE+Y,GAAI,OAAQ/Y,MAAO,MAGV8yC,EAAyB,IAIzBC,EAA+BhrB,IAAY,IAAAirB,EAAA,OACE,QAAxDA,EAAAH,EAAmB9+B,QAAQ7E,GAASA,EAAK6J,KAAOgP,IAAM,UAAE,IAAAirB,OAAA,EAAxDA,EAA0DhzC,QAAS,GAAG,EAE3DizC,EAAqBC,GAAwB,IAAIC,EAAAA,EAAQD,EAAU,KAGnEE,EAAgC,GAEhCC,EAA2B,IAE3BC,EAA6B,CACxC,CAACjB,EAAUC,KAAM,CACfiB,IAAK,KACLC,IAAK,OAEP,CAACnB,EAAUE,QAAS,CAClBgB,IAAK,GACLC,IAAK,GAEP,CAACnB,EAAUG,MAAO,CAChBe,IAAK,GACLC,IAAK,IAIIC,EAA4B,eAC5BC,EAAiC,oBCrEvC,IAAKC,EAAU,SAAVA,GAAU,OAAVA,EAAU,cAAVA,EAAU,gBAAVA,CAAU,MAKf,MAAMC,EAAwB3B,EAAAA,GAAOnhC,EAAAA,GAAI3O,QAAUqwB,EAAAA,GAAYrwB,QACzD0xC,GAAyB5B,EAAAA,GAAOlhC,EAAAA,GAAI5O,SAEpC2xC,EAAmB,OAEnBC,EAA8B,8BAE9BC,EAAiC,UACjCC,EAA+B,UAE/BC,EAA8B,UAC9BC,EAA+B,UAC/BC,EAA8B,UAE9BC,EAAiB,CAACzhB,EAAAA,EAAeK,MAAOL,EAAAA,EAAeM,OAEvDohB,EAA4B,CAACjE,EAAAA,EAAUkE,MAAOlE,EAAAA,EAAUC,SAAUD,EAAAA,EAAUmE,Y,wJCnBlF,MAEMC,EAAsC,CACjDC,aAAc9hB,EAAAA,EAAeI,IAC7B2hB,SAAU,GACVzmC,KAAM,cACNT,SAAU,EACVO,OAAQ,OACRrH,WAAY5I,EAAAA,UAAU2kB,SAAuB,OAAdorB,EAAAA,SAAc,IAAdA,EAAAA,GAAAA,EAAAA,GAAkB,aAGtC8G,EAAoC,IAC5CH,EACH1lC,KAAM,kBAAkB0lC,EAAqB9tC,WAAW+G,kBACxD2jB,SAAUkgB,OAAO,GACjB5qC,WAAY8tC,EAAqB9tC,WAAW+G,WAC5CmnC,YAAatD,OAAO,IAGT/e,EAAc,IAAIvrB,EAAAA,EAAM,CACnC9E,QAASyyC,EAAuBjuC,WAChC8G,SAAUmnC,EAAuBnnC,SACjCO,OAAQ4mC,EAAuB5mC,OAC/BE,KAAM0mC,EAAuB1mC,KAC7Ba,KAAM6lC,EAAuB7lC,KAC7B7H,SAAU0rB,EAAAA,EAAeI,IACzB3B,SAAUuZ,OAAOgK,EAAuBvjB,YAG7ByjB,EAAM,IAAI7tC,EAAAA,EAAM,CAC3B9E,QA9B2B,8BA+B3BsL,SAAU,GACVO,OAAQ,MACRE,KAAM,SACNa,KAAM,GACN7H,SAAU0rB,EAAAA,EAAeG,UACzB1B,SAAU,IAuBC0jB,GApBO,IAAI9tC,EAAAA,EAAM,CAC5B9E,QAAS,8BACTsL,SAAU,EACVO,OAAQ,OACRE,KAAM,OACNa,KAAM,GACN7H,SAAU0rB,EAAAA,EAAeK,MACzB5B,SAAU,IAGQ,IAAIpqB,EAAAA,EAAM,CAC5B9E,QAAS,8BACTsL,SAAU,EACVO,OAAQ,OACRE,KAAM,OACNa,KAAM,GACN7H,SAAU0rB,EAAAA,EAAeK,MACzB5B,SAAU,IAGO,IAAIpqB,EAAAA,EAAM,CAC3B9E,QAAS,8BACTsL,SAAU,EACVO,OAAQ,MACRE,KAAM,cACNa,KAAM,GACN7H,SAAU0rB,EAAAA,EAAeK,MACzB5B,SAAU,KAGC2jB,EAAM,IAAI/tC,EAAAA,EAAM,CAC3B9E,QAAS,8BACTsL,SAAU,EACVO,OAAQ,MACRE,KAAM,UACNa,KAAM,GACN7H,SAAU0rB,EAAAA,EAAeK,MACzB5B,SAAU,MAGC4jB,EAAU,IAAIhuC,EAAAA,EAAM,CAC/B9E,QAAS,8BACTsL,SAAU,EACVO,OAAQ,OACRE,KAAM,UACNa,KAAM,GACN7H,SAAU0rB,EAAAA,EAAeK,MACzB5B,SAAU,MAGO,IAAIpqB,EAAAA,EAAM,CAC3B9E,QAAS,8BACTsL,SAAU,EACVO,OAAQ,MACRE,KAAM,OACNa,KAAM,GACN7H,SAAU0rB,EAAAA,EAAeK,MACzB5B,SAAU,MAGO,IAAIpqB,EAAAA,EAAM,CAC3B9E,QAAS,8BACTsL,SAAU,EACVO,OAAQ,MACRE,KAAM,SACNa,KAAM,GACN7H,SAAU0rB,EAAAA,EAAeK,MACzB5B,SAAU,MAGS,IAAIpqB,EAAAA,EAAM,CAC7B9E,QAAS,8BACTsL,SAAU,EACVO,OAAQ,QACRE,KAAM,QACNa,KAAM,GACN7H,SAAU0rB,EAAAA,EAAeK,MACzB5B,SAAU,K,4HCzHL,MAAM6jB,EAA4B,CACvCpkC,EAAAA,GAAI3O,QACJqwB,EAAAA,GAAYrwB,QACZ4O,EAAAA,GAAI5O,QACJ6O,EAAAA,GAAO7O,QACP8O,EAAAA,GAAM9O,QACN+O,EAAAA,GAAM/O,SAGKgzC,EAAmB,CAACrkC,EAAAA,GAAI3O,QAASqwB,EAAAA,GAAYrwB,SAE7CuR,EAA2B,CAAC5C,EAAAA,GAAKC,EAAAA,GAAKC,EAAAA,GAAQC,EAAAA,GAAOC,EAAAA,IAUrDyG,EAAsC,CACjD,CACEiD,MAAO,oBACP5a,MAAO6vC,EAAAA,GAAU3D,GACjBn9B,KAAM,wCAER,CAAE6L,MAAO,OAAQ5a,MAAO6vC,EAAAA,GAAUK,KAAMnhC,KAAM,4BAC9C,CACE6L,MAAO,eACP5a,MAAO6vC,EAAAA,GAAUuF,MACjBrmC,KAAM,6BAER,CACE6L,MAAO,iBACP5a,MAAO6vC,EAAAA,GAAUwF,QACjBtmC,KAAM,+BAER,CAAE6L,MAAO,OAAQ5a,MAAO6vC,EAAAA,GAAUC,KAAM/gC,KAAM,4BAC9C,CACE6L,MAAO,mBACP5a,MAAO6vC,EAAAA,GAAUyF,SACjBvmC,KAAM,gCAER,CACE6L,MAAO,YACP5a,MAAO6vC,EAAAA,GAAU0F,GACjBxmC,KAAM,8BAER,CACE6L,MAAO,WACP5a,MAAO6vC,EAAAA,GAAU2F,SACjBzmC,KAAM,gCAER,CACE6L,MAAO,OACP5a,MAAO6vC,EAAAA,GAAU4F,KACjB1mC,KAAM,4B,iJC1DH,MAAMkgC,EAAiBJ,EAAAA,GAAQC,QAIzB4G,EAAmB,EAEnBC,EAAmB,CAAC9G,EAAAA,GAAQC,QAASD,EAAAA,GAAQE,SAE7C6G,EAAkD,CAC7D,EAAG,mBACH,EAAG,UACH,EAAG,UACH,GAAI,QACJ,GAAI,SACJ,IAAK,UACL,MAAO,SACP,MAAO,YACP,MAAO,OACP,SAAU,WAGCpG,EAAgB,CAC3B,CAACX,EAAAA,GAAQC,SAAU,+BACnB,CAACD,EAAAA,GAAQE,SAAU,wCAGR8G,EAAsB1zC,GAC1B,GAAGqtC,EAAcP,MAAU9sC,IAGvBgtC,EAAsB2G,GAC1B,WAAWA,0BAGPC,EAAkB9mC,GACtB,mDAAmDA,IAG/CogC,EAAoB,CAC/B,CAACR,EAAAA,GAAQC,SAAU,0BACnB,CAACD,EAAAA,GAAQE,SAAU,mCAGRQ,EAAuB,CAClC,CAACV,EAAAA,GAAQC,SAAU,6BACnB,CAACD,EAAAA,GAAQE,SAAU,qC,gKCrCd,SAASiH,EAAmBC,GACjC,MAAMl9B,GAAKrM,EAAAA,EAAAA,UAAQ,IACVupC,OAAe1oC,EAAYyhC,EAAAA,IACjC,CAACiH,KAEIppC,OAAQqpC,IAAeC,EAAAA,EAAAA,IAAsBp9B,GAE/Cq9B,GAAuB1pC,EAAAA,EAAAA,UAAQ,KAAO,IAADjP,EAAA44C,EACzC,OAAkC,QAAlC54C,EAAoB,OAAZw4C,QAAY,IAAZA,EAAAA,EAAgBC,SAAU,IAAAz4C,GAA8B,QAA9B44C,EAA3B54C,EAA8B64C,yBAAyB,UAAE,IAAAD,OAA9B,EAA3BA,EAA2DrkC,KAAK2B,GAAMA,EAAES,mBAAmB1G,YAAW,GAC5G,CAACwoC,EAAYD,IAEhB,MAAO,CAAChlC,EAAAA,GAAM9O,QAAS+O,EAAAA,GAAM/O,WAAiC,OAApBi0C,QAAoB,IAApBA,EAAAA,EAAwB,GACpE,C,gDCNO,SAASG,EAAqB94C,GAA+D,IAA9D,MAAEkP,EAAK,WAAEupC,EAAU,MAAEjH,EAAK,QAAEuH,GAA+B/4C,EAC/F,MAAM0O,GAAYC,EAAAA,EAAAA,MAEZqqC,GAAwB/pC,EAAAA,EAAAA,UAAQ,KAAO,IAADgqC,EAC1C,IAAK/pC,EAAO,OAEZ,MAAM8pC,EAAkC,OAAVP,QAAU,IAAVA,GAAuC,QAA7BQ,EAAVR,EAAYI,yBAAyB,UAAE,IAAAI,OAA7B,EAAVA,EAAyCxiC,MACpEgiC,GAAeA,EAAW9hC,mBAAmB1G,aAAef,EAAMxK,UAGrE,OAAOs0C,CAAqB,GAC3B,CAACP,EAAYvpC,KAERE,OAAQ8pC,IAAeC,EAAAA,EAAAA,OACvB/pC,OAAQgqC,IAAsBC,EAAAA,EAAAA,IAAqC,OAArBL,QAAqB,IAArBA,OAAqB,EAArBA,EAAuBM,uBAAwBP,IAC7F3pC,OAAQmqC,IAAiBC,EAAAA,EAAAA,IAA0B,OAALtqC,QAAK,IAALA,OAAK,EAALA,EAAOxK,QAAkB,OAATgK,QAAS,IAATA,OAAS,EAATA,EAAWuB,WAAY8oC,GAE7F,OAAO9pC,EAAAA,EAAAA,UAAQ,KACb,GAAKC,EACL,OAAIsiC,IAAUiI,EAAAA,GAAcC,IAAYH,EACpC/H,IAAUiI,EAAAA,GAAcE,KAAOzqC,EAAMxK,UAAY+O,EAAAA,GAAM/O,QAAgBw0C,EACvE1H,IAAUiI,EAAAA,GAAcE,IAAYP,OAAxC,CACgB,GACf,CAAC5H,EAAO0H,EAAYE,EAAmBlqC,EAAOqqC,GACnD,CC9BO,SAASK,EAAc55C,GAA+C,IAA9C,MAAEkP,EAAK,YAAE2qC,GAAkC75C,EACxE,OAAOiP,EAAAA,EAAAA,UAAQ,KACb,GAAKC,GAAU2qC,EACf,OAAOA,IAAgBJ,EAAAA,GAAcC,IAAMxqC,EAAMqB,OAASrB,EAAMqB,OAAOiS,QAAQ,KAAM,GAAG,GACvF,CAACtT,EAAO2qC,GACb,C,8ECIO,SAASC,EAAaryB,GAC3B,QAAmB,cAAVA,GAAmC,iBAAVA,EACpC,CAEO,SAASsyB,EAAqBrrC,EAA+BvM,GAClE,MAAOuC,EAASs1C,IAAc1kC,EAAAA,EAAAA,UAAwB,OAC/CjG,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,GAEjC2kC,GAA0BC,EAAAA,EAAAA,IAAyBxrC,GACnDyrC,GAAuBC,EAAAA,EAAAA,MAgC7B,OA9BAlqC,EAAAA,EAAAA,YAAU,MACR7G,iBACE,IAAKqF,EAAW,OAChB,GAAIurC,EAEF,YADAD,EAAWC,GAIbt/B,GAAW,GAEX,MAAMjW,GAAU21C,EAAAA,EAAAA,gBAENvxC,EAAAA,EAAAA,IAAY,IAClBb,gBAAgB,CAChB/F,OAAOo4C,EAAAA,EAAAA,GAAkBh6C,EAAAA,UAAU2kB,SAASvW,IAC5CvM,YAAYm4C,EAAAA,EAAAA,GAA8Bn4C,MAE5Co4C,KAEE71C,GAAWgK,GACbyrC,EAAqBzrC,EAAWhK,GAGlCs1C,EAAWt1C,GACXiW,GAAW,EACb,CAEA6/B,EAAM,GACL,CAAC9rC,EAAWvM,EAAY83C,KAEpBhrC,EAAAA,EAAAA,UAAQ,MAASG,OAAQ1K,EAAS2K,aAAY,CAAC3K,EAAS2K,GACjE,CAEO,SAASorC,IACd,OAAOzmC,EAAAA,EAAAA,cAAY3K,MAAOqF,EAAmBvM,gBAEnC2G,EAAAA,EAAAA,IAAY,IAClBD,eAAe,CACf3G,OAAOo4C,EAAAA,EAAAA,GAA6Bh6C,EAAAA,UAAU2kB,SAASvW,IACvDvM,YAAYm4C,EAAAA,EAAAA,GAA8Bn4C,MAE3C,GACL,CA+DO,SAASu4C,EAAmBh2C,EAAoCq0C,GACrE,OAAO4B,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY3K,UACV,GAAK3E,EAEL,IACE,MAAM0K,QAAewrC,MAAM,wCAAwCl2C,SACnE,aAAc0K,EAAOyrC,MACvB,CAAE,MAAO9+B,GACP,MACF,IACC,CAACrX,IACJq0C,EAEJ,CAmBO,SAAS+B,IACd,MAAMpsC,GAAYkkB,EAAAA,EAAAA,MACZmoB,GAAMC,EAAAA,EAAAA,IAAWtsC,GACjBusC,GAAeC,EAAAA,EAAAA,OAErBhrC,EAAAA,EAAAA,YAAU,KAcR,MAAMm0B,EAAQ8W,aAAY,MAb1B9xC,iBACE,GAAI0xC,GAAOA,EAAI1yC,QAAYqG,EACzB,IAAK,IAAI0sC,EAAI,EAAGA,EAAIL,EAAI1yC,OAAQ+yC,IAAK,CACnC,MAAM/2C,EAAcyvC,OAAOiH,EAAIK,GAAG/2C,cAC5B,MAAEojB,GAAUszB,EAAIK,GACtB,IAAKtB,EAAaryB,GAAQ,CACxB,MAAM4zB,cAAmBvyC,EAAAA,EAAAA,MAAeH,oBAAoB,CAAEtE,gBAC9D42C,EAAavsC,EAAWrK,EAAag3C,OAAKvrC,EAC5C,CACF,CAEJ,CAGE0qC,EAAM,GACL,KAEH,MAAO,KACLc,cAAcjX,EAAM,CACrB,GACA,CAAC0W,EAAKrsC,GACX,CAEO,SAAS6sC,IACd,MASMC,GAAQC,EAAAA,EAAAA,IATDpyC,UACX,IACE,MAAM+F,QAAewrC,MAAM,2CAC3B,aAAcxrC,EAAOyrC,MACvB,CAAE,MAAO9+B,GACP,MACF,SAGmCjM,EAAW,KAEhD,OAAOb,EAAAA,EAAAA,UAAQ,IAAMusC,GAAO,CAACA,GAC/B,C,sPC7MO,SAASE,IACd,MAAM,EAAE1mC,IAAMC,EAAAA,EAAAA,OACPwU,IAAWhc,EAAAA,EAAAA,MAElB,OAAOuG,EAAAA,EAAAA,cAAY,KACjByV,EAAQzU,EAAE,uBAAwB6f,EAAAA,GAAaC,QAAQ,GACtD,GACL,C,8NCVO,MAAM6mB,EAAS,CACpBC,UAAW,UACXC,KAAM,UACNC,SAAU,UACVC,OAAQ,UACRC,QAAS,WAGJ,SAASC,EAAex0B,GAC7B,OAAOk0B,EAAY,OAALl0B,QAAK,IAALA,EAAAA,EAAS,UACzB,C,gDCIO,SAASy0B,EAAQl8C,GAA6E,IAA5E,YAAEm8C,EAAW,aAAEC,EAAY,cAAEC,EAAa,OAAEC,EAAM,MAAEC,GAAqBv8C,EAChG,MAAM0O,GAAYC,EAAAA,EAAAA,OACXU,EAASsL,IAAcrF,EAAAA,EAAAA,WAAkB,IACzCknC,EAAOC,IAAYnnC,EAAAA,EAAAA,UAAsD,MAuChF,OArCApF,EAAAA,EAAAA,YAAU,MACR7G,iBACE,KAAKqzC,EAAAA,EAAAA,GAAoBJ,EAAQC,GAAQ,OAEzC,MAAM90B,GAAQk1B,EAAAA,EAAAA,GAA2BR,GAGzC,GAFAM,EAAS,MAELN,IAAgBS,EAAAA,EAAYC,KAAM,CAAC,IAADC,EACpC,IAAKpuC,EAAW,OAEhBiM,GAAW,GAEX,MAAMoiC,QAAoBC,EAAAA,EAAAA,IAAkBtuC,EAAUuB,WAAYqsC,EAAQC,EAAOH,EAAcC,GACzFG,EAA4B,QAAvBM,EAAc,OAAXC,QAAW,IAAXA,OAAW,EAAXA,EAAa1vC,eAAO,IAAAyvC,EAAAA,EAAI,GAEhCG,SACEC,QAAQC,IACZX,EAAMjoC,KAAIlL,eACK+zC,EAAAA,EAAAA,IAA6BC,EAAKC,YAAYrtC,gBAG/DstC,OAEFd,EAASQ,EACX,KAAO,CACLtiC,GAAW,GACX,MAAMvL,QAAeouC,EAAAA,EAAAA,IAAc,CAAE/1B,QAAO60B,SAAQC,QAAOH,eAAcC,kBACnEG,EAAc,OAANptC,QAAM,IAANA,OAAM,EAANA,EAAQ/B,QACtBovC,EAASD,EACX,CAEA7hC,GAAW,EACb,CAEA6/B,EAAM,GACL,CAAC2B,EAAaztC,EAAW4tC,EAAQC,EAAOH,EAAcC,KAElDptC,EAAAA,EAAAA,UAAQ,MAASI,UAASD,OAAQotC,KAAU,CAACntC,EAASmtC,GAC/D,CCrDO,SAASiB,EACdx7B,EACAy7B,EACAC,GAEA,MAAOtuC,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,IAChCilC,EAAMqD,IAAWtoC,EAAAA,EAAAA,UACtB,MAEI5G,GAAYC,EAAAA,EAAAA,MAuBlB,OArBAuB,EAAAA,EAAAA,YAAU,KACK7G,WACX,GAAI4Y,GAAUvT,GAAagvC,EAAgB,CACzC,MAAMtuC,QAAeyuC,EAAAA,EAAAA,IACnBH,EACAp9C,EAAAA,UAAU2kB,SAAShD,GACnB67B,EAAAA,GAAWC,cAAcrvC,GAAWsvC,gBAGtCJ,EAAQ,CACNv3C,QAAS+I,EAAOmrC,KAChBt4B,SACAy7B,mBAEF/iC,GAAW,EACb,GAGF6/B,EAAM,GACL,CAACv4B,EAAQvT,EAAWivC,EAAQD,KAExBzuC,EAAAA,EAAAA,UAAQ,KACN,CACLI,UACAD,OAAQmrC,KAET,CAAClrC,EAASkrC,GACf,CC1BOlxC,eAAe40C,IAKpB,OAAOC,EAAAA,EAAAA,KAJM70C,MAAOizC,EAAgBC,UACrB4B,EAAAA,EAAAA,SAAgBruC,EAAWwsC,EAAQC,IAGhB,IACpC,CAwEO,SAAS6B,EACdn8B,EACAvT,EACAqqC,GAEA,MAAMvc,GAAWxoB,EAAAA,EAAAA,cAAY3K,UAC3B,GAAK4Y,GAAWvT,EAChB,aAAa2vC,EAAAA,EAAAA,IAAwBp8B,EAAQvT,EAAU,GACtD,CAACuT,EAAQvT,IAEZ,OAAO+sC,EAAAA,EAAAA,GAAkDjf,EAAUuc,EACrE,CAEO,SAASuF,EAA2Br8B,GACzC,MAAOs8B,EAAaC,IAAkBlpC,EAAAA,EAAAA,UAAiB,GAEjDmpC,GAASzqC,EAAAA,EAAAA,cAAY,KACzBwqC,GAAgBlnC,GAAcA,EAAY,GAAE,GAC3C,IAEGklB,GAAWxoB,EAAAA,EAAAA,cAAY3K,UAC3B,GAAK4Y,EACL,aAAay8B,EAAAA,EAAAA,IAAoBz8B,EAAO,GACvC,CAACA,IAIJ,MAAO,EAFU08B,EAAAA,EAAAA,GAAyCniB,EAAU+hB,GAElDE,EACpB,C,iaCpHO,SAASG,IACd,MAAOC,IAAgBC,EAAAA,EAAAA,MAEjBpwC,GAAYC,EAAAA,EAAAA,MAElB,OAAOqF,EAAAA,EAAAA,cACL3K,MAAO6F,EAAcrL,EAAgBoe,EAAgBwd,KAA2B,IAADsf,EAC7E,IAAKrwC,EAEH,OADAmwC,EAAa,qCACN,EAGT,MAAM,OAAErqB,EAAM,QAAE1S,SAAkB2S,EAAAA,EAAAA,IAAc,CAC9CnS,GAAIL,EACJ/Y,WAAYgG,EAAMxK,QAClBb,OAAQ,IAAIgP,EAAAA,EAAUhP,GACtB8wB,KAA2B,QAAvBoqB,EAAW,OAATrwC,QAAS,IAATA,OAAS,EAATA,EAAWuB,kBAAU,IAAA8uC,EAAAA,EAAI,GAC/B58C,WAAY,IAAI27C,EAAAA,GAAWC,cAAcrvC,GAAWsvC,gBACpDh6C,IAAKkL,EAAM0kB,SACX5jB,SAAUd,EAAMc,WAGlB,MAAe,QAAXwkB,IACFqqB,EAAa,sBAAsB3vC,EAAMqB,WAAWuR,IAAW2d,IACxD,EAGE,GAEb,CAAC/wB,GAEL,C,gDCtBO,SAASswC,IACd,MAAMtwC,GAAYC,EAAAA,EAAAA,OACXkwC,IAAgBC,EAAAA,EAAAA,OACjB,gBAAEG,IAAoBC,EAAAA,EAAAA,MAE5B,OAAOlrC,EAAAA,EAAAA,cACL3K,UAA6E,IAAtE,MAAE6F,EAAK,OAAErL,EAAM,OAAEoe,EAAM,QAAEwd,EAAO,SAAEh2B,GAA8BzJ,EACrE,IAAK0O,EAAW,OAAO,EAEvB,MAAMywC,QAAuBl4C,EAAAA,EAAAA,GAAU,CACrCiC,WAAYgG,EAAMxK,QAClBxC,MAAOwM,EAAUuB,WACjBmvC,QAASn9B,IAGLo9B,GAAyBvL,OAAOjwC,GAAUiwC,OAAOmL,IAAkBhvC,WAEzE,IAAKkvC,GAAkBA,IAAmBrL,OAAO,IAAMA,OAAOjwC,GAAUs7C,EAAgB,CACtF,MAAM,OAAE3qB,EAAM,QAAE1S,SAAkBw9B,EAAAA,EAAAA,GAAQ,CACxCp2C,WAAYgG,EAAMxK,QAClB06C,QAASn9B,EACT1f,MAAO88C,EACPz7C,QAAS8K,EACTjF,aAGF,MAAe,QAAX+qB,IACFqqB,EAAa,qBAAqB3vC,EAAMqB,WAAWuR,IAAW2d,IACvD,EAIX,CAEA,OAAO,CAAI,GAEb,CAAC6f,EAAAA,EAAS5wC,EAAWuwC,GAEzB,C,8CCtCO,SAASM,EAAqBzd,GACnC,MAAM,SAAE0d,IAAavwC,EAAAA,EAAAA,UAAQ,KAC3B,MAAMuwC,EAAqB,GAc3B,OAZA1d,EAAKvrB,SAAQvW,IAAmB,IAAlB,SAAEk3C,GAAUl3C,EACpBk3C,IACGsI,EAASpvC,SAAS8mC,EAASrtC,OAAOnF,UACrC86C,EAAS3oC,KAAKqgC,EAASrtC,OAAOnF,SAG3B86C,EAASpvC,SAAS8mC,EAASptC,OAAOpF,UACrC86C,EAAS3oC,KAAKqgC,EAASptC,OAAOpF,SAElC,IAGK,CAAE86C,WAAU,GAClB,CAACj7B,KAAKC,UAAUsd,KAEb2d,GAASC,EAAAA,EAAAA,GAAUF,GAEnBG,GAAW1wC,EAAAA,EAAAA,UAAQ,IAChB6yB,EAAKvtB,KAAIF,IAAmB,IAAlB,SAAE6iC,GAAU7iC,EAC3B,IAAK6iC,EAAU,MAAO,MAACpnC,OAAWA,OAAWA,GAE7C,MAAM8V,EAAS65B,EAAOhpC,MAAMP,IAAO,IAAD0pC,EAChC,OAAW,QAAJA,EAAA1pC,EAAE,UAAE,IAAA0pC,OAAA,EAAJA,EAAMl7C,WAAYwyC,EAASrtC,OAAOnF,OAAO,IAG5CmhB,EAAS45B,EAAOhpC,MAAMP,IAAO,IAAD2pC,EAChC,OAAW,QAAJA,EAAA3pC,EAAE,UAAE,IAAA2pC,OAAA,EAAJA,EAAMn7C,WAAYwyC,EAASptC,OAAOpF,OAAO,IAGlD,MAAO,CAACkhB,EAASA,EAAO,QAAK9V,EAAW+V,EAASA,EAAO,QAAK/V,EAAWq9B,OAAO+J,EAASlzC,KAAK,KAE9F,CAACugB,KAAKC,UAAUsd,GAAO2d,IAEpBjD,GAAQN,EAAAA,EAAAA,IAASyD,GAEvB,OAAO1wC,EAAAA,EAAAA,UAAQ,IACK6yB,EAAKvtB,KAAI,CAACurC,EAAK1oC,KAAW,IAAD2oC,EACzC,MAAM9C,EAAQ6C,EAAIE,cACZ3C,EAAmB,QAAf0C,EAAGvD,EAAMplC,UAAM,IAAA2oC,OAAA,EAAZA,EAAe,GAE5B,GAAK9C,EAEL,OAAOA,EAAM1oC,KAAKilB,IAChB,GAAK6jB,EAEL,OAAO,IAAI4C,EAAAA,EAAS,CAClB5C,OACA6C,UAAW1mB,EAAK0mB,UAAUjwC,WAC1BkwC,UAAWhT,OAAO3T,EAAK2mB,WACvBC,UAAWjT,OAAO3T,EAAK4mB,YACvB,GACF,KAIH,CAAC77B,KAAKC,UAAUsd,GAAO0a,GAC5B,CC9BO,SAAS6D,EAAiBrgD,GAAkD,IAAjD,SAAEk3C,EAAQ,cAAE8I,GAAkChgD,EAC9E,OArCK,SAAoC8hC,GACzC,MAAMwe,GAAgBC,EAAAA,EAAAA,MAEhBC,EAAYjB,EAAqBzd,GAEvC,OAAO7yB,EAAAA,EAAAA,UAAQ,KACb,IAAKqxC,IAAkBE,EAAW,OAClC,GAA6B,IAAzBF,EAAcj4C,QAAqC,IAArBm4C,EAAUn4C,OAAc,OAE1D,MAAMo4C,EAAOD,EAAUjD,OAAOhpC,KAAK4D,IACjC,GAAIA,EAAU,CAAC,IAADuoC,EAAAC,EACZ,MAAMC,EAAezoC,EAAS0oC,QAAQC,UAChCC,EAAe5oC,EAAS6oC,QAAQF,UAEhCG,EAAyF,QAA9EP,EAAGJ,EAAc7pC,MAAM+iB,GAASA,EAAK90B,UAAYyT,EAASklC,KAAKxzC,OAAOnF,iBAAQ,IAAAg8C,OAAA,EAA3EA,EAA6EQ,SAC3FC,EAAyF,QAA9ER,EAAGL,EAAc7pC,MAAM+iB,GAASA,EAAK90B,UAAYyT,EAASklC,KAAKvzC,OAAOpF,iBAAQ,IAAAi8C,OAAA,EAA3EA,EAA6EO,SAEjG,QAAoBpxC,IAAhBmxC,QAA6CnxC,IAAhBqxC,EAC/B,OAAO,IAAItuC,EAAAA,EAAU+tC,GAClB9tC,aAAamuC,GACbG,KAAK,IAAIvuC,EAAAA,EAAUkuC,GAAcjuC,aAAaquC,GAErD,CAEA,OAAO,IAAI,IAGb,OAAOV,CAAI,GACV,CAACl8B,KAAKC,UAAUg8B,GAAYF,GACjC,CAQSe,CAA2B,CAAC,CAAEnK,WAAU8I,kBACjD,CAOO,SAASsB,EAAgCxf,GAC9C,MAAMwe,GAAgBC,EAAAA,EAAAA,MAEhBC,EAAYjB,EAAqBzd,GAEvC,OAAO7yB,EAAAA,EAAAA,UAAQ,KAAO,IAADsyC,EACnB,IAAKjB,IAAkBE,EAAW,OAClC,GAA6B,IAAzBF,EAAcj4C,QAAqC,IAArBm4C,EAAUn4C,OAAc,OAE1D,IAAIm5C,EAkBJ,OAhBAhB,EAAUjD,OAAOhnC,SAAS4B,IACxB,GAAIA,EAAU,CAAC,IAADspC,EAAAC,EACZ,MAAMd,EAAezoC,EAAS0oC,QAAQC,UAChCC,EAAe5oC,EAAS6oC,QAAQF,UAEhCG,EAAyF,QAA9EQ,EAAGnB,EAAc7pC,MAAM+iB,GAASA,EAAK90B,UAAYyT,EAASklC,KAAKxzC,OAAOnF,iBAAQ,IAAA+8C,OAAA,EAA3EA,EAA6EP,SAC3FC,EAAyF,QAA9EO,EAAGpB,EAAc7pC,MAAM+iB,GAASA,EAAK90B,UAAYyT,EAASklC,KAAKvzC,OAAOpF,iBAAQ,IAAAg9C,OAAA,EAA3EA,EAA6ER,SAEpC,IAADS,EAA5D,QAAoB7xC,IAAhBmxC,QAA6CnxC,IAAhBqxC,EAC/BK,GAAwB,QAAXG,EAACH,SAAU,IAAAG,EAAAA,EAAI,IAAI9uC,EAAAA,EAAU,IACvCuuC,KAAK,IAAIvuC,EAAAA,EAAU+tC,GAAc9tC,aAAamuC,IAC9CG,KAAK,IAAIvuC,EAAAA,EAAUkuC,GAAcjuC,aAAaquC,GAErD,KAGe,QAAjBI,EAAOC,SAAU,IAAAD,OAAA,EAAVA,EAAYtxC,UAAU,GAC5B,CAACsU,KAAKC,UAAUg8B,GAAYF,GACjC,CAOO,SAASsB,EAAsBvtC,GAAuD,IAAtD,SAAE6iC,EAAQ,cAAE8I,GAAuC3rC,EACxF,OAAOitC,EAAgC,CAAC,CAAEpK,WAAU8I,kBACtD,C,0BC7EO,SAAS6B,IACd,MAAOp4B,EAASq4B,IAAYr0C,EAAAA,EAAAA,OACrB4B,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,GAEjCknB,GAAWxoB,EAAAA,EAAAA,cAAY3K,eACd6zC,QAAQC,IACnBrb,EAAKvtB,KAAIlL,UAA0D,IAAnD,MAAE6F,EAAK,KAAEuB,EAAI,KAAE6Z,EAAI,KAAEy3B,EAAMl+C,OAAQm+C,GAAUhiD,EAC3D,MAAM6D,EAASiwC,OAAOkO,GAChBC,EAAgBnO,OAAO5kC,EAAM0kB,UAInC,GAFE/vB,IAAWiwC,OAAO,KAAgB,SAATxpB,EAAkBzmB,EAASo+C,EAAgBnO,OAAO,GAAKjwC,EAASo+C,GAErE,OAEtBtnC,GAAW,GAEX,MAAMunC,EAAaz4B,EACjB,kBAAiB1Z,EAAAA,EAAAA,GAAiBlM,EAAQqL,EAAMc,UAAUskB,cAAcplB,EAAMqB,SAC9EskB,EAAAA,GAAaxlB,SAGf,GAAa,SAATib,GAAqBy3B,EAAM,CAC7B,MAAM3yC,QAAe+yC,EAAAA,EAAAA,IAAgBJ,EAAKl4C,OAAOoG,WAAY8xC,EAAKj4C,OAAOmG,WAAY8xC,EAAK/9C,KAE1F,GAAIoL,EAAOolB,SAAW0d,EAAAA,EAAakQ,GAAI,CACrC,MAAMhzC,QAAeizC,EAAAA,EAAAA,IAAmBx+C,EAAQo+C,GAC5C7yC,EAAOolB,SAAW0d,EAAAA,EAAakQ,GACjC34B,EAAQ,YAAYhZ,iBAAqBokB,EAAAA,GAAaC,SAEtDrL,EAAQ,sBAAsBhZ,MAASrB,EAAO0S,UAAW+S,EAAAA,GAAa9Y,MAE1E,KAAO,CAAC,IAADumC,EACL74B,EAAQ,uBAAqC,QAArC64B,EAAuBlzC,EAAO0S,eAAO,IAAAwgC,EAAAA,EAAI,KAAMztB,EAAAA,GAAa9Y,MACtE,CACF,KAAO,CACL,MAAM3M,QAAeizC,EAAAA,EAAAA,IAAmBx+C,EAAQo+C,GAE5C7yC,EAAOolB,SAAW0d,EAAAA,EAAakQ,GACjC34B,EAAQ,YAAYhZ,iBAAqBokB,EAAAA,GAAaC,SAEtDrL,EAAQra,EAAO0S,QAAU1S,EAAO0S,QAAU,sBAAsBrR,IAAQokB,EAAAA,GAAa9Y,MAEzF,CAEA+lC,EAASI,GACTvnC,GAAW,EAAM,MAGpB,IAEH,OAAO1L,EAAAA,EAAAA,UAAQ,MAASI,UAASmtB,cAAa,CAACntB,EAASmtB,GAC1D,C,eCzDO,SAAS+lB,EAAkBviD,GAAkF,IAA9E,UAAEwgD,EAAS,KAAEgC,EAAI,UAAEC,EAAS,cAAEC,GAAwC1iD,EAC1G,OAAOiP,EAAAA,EAAAA,UAAQ,IACRuxC,EAEDgC,IAASG,EAAAA,GAAaC,QAAgB,IAAIpC,GAE1CgC,IAASG,EAAAA,GAAaE,UACnBJ,EAEDha,OAAOC,KAAK+Z,GAAWp6C,OAASm4C,EAAUn4C,OAAem4C,EAEtD,IAAIA,GAAWgC,MAAK,CAACM,EAAGC,KAC7B,MAAMC,EAAUva,OAAOC,KAAK+Z,GAEtBQ,EAAOD,EAAQvsC,MAAMzM,GAAQA,EAAIoG,SAAS0yC,EAAExnC,KAAOtR,EAAIoG,SAAS0yC,EAAE1rC,MAAMnH,cACxEizC,EAAOF,EAAQvsC,MAAMzM,GAAQA,EAAIoG,SAAS2yC,EAAEznC,KAAOtR,EAAIoG,SAAS2yC,EAAE3rC,MAAMnH,cAE9E,GAAIgzC,GAAQC,EAAM,CAChB,MAAMC,EAASV,EAAUQ,GACnBG,EAASX,EAAUS,GAEzB,GAAIC,GAAUC,EACZ,OAAOD,EAAOtvB,cAAcuvB,IAAW,EAAI,CAE/C,CAEA,OAAO,CAAC,IAnBa5C,EAuBrBgC,IAASG,EAAAA,GAAaU,cACnBX,EACDja,OAAOC,KAAKga,GAAer6C,OAASm4C,EAAUn4C,OAAem4C,EAE1D,IAAIA,GAAWgC,MAAK,CAACM,EAAGC,KAC7B,MAAMC,EAAUva,OAAOC,KAAKga,GAEtBO,EAAOD,EAAQvsC,MAAMzM,GAAQA,EAAIoG,SAAS0yC,EAAExnC,KAAOtR,EAAIoG,SAAS0yC,EAAE1rC,MAAMnH,cACxEizC,EAAOF,EAAQvsC,MAAMzM,GAAQA,EAAIoG,SAAS2yC,EAAEznC,KAAOtR,EAAIoG,SAAS2yC,EAAE3rC,MAAMnH,cAE9E,GAAIgzC,GAAQC,EAAM,CAChB,MAAMC,EAAST,EAAcO,GACvBG,EAASV,EAAcQ,GAE7B,GAAIC,GAAUC,EACZ,OAAOD,EAAOtvB,cAAcuvB,IAAW,EAAI,CAE/C,CAEA,OAAO,CAAC,IAlBiB5C,EAsBtB,GAnDgB,IAoDtB,CAACiC,EAAWC,EAAeF,EAAMhC,GACtC,C,eCpDO,SAAS8C,EAAoBtjD,GAOL,IAPM,MACnCkP,EAAK,kBACLq0C,EAAiB,cACjBC,EAAa,QACbn9C,EAAO,kBACPquB,EAAiB,UACjBztB,GAC0BjH,EAC1B,MACE8a,EAAAA,EAAAA,GAAW5L,KACX4L,EAAAA,EAAAA,GAAWyoC,KACXzoC,EAAAA,EAAAA,GAAW0oC,KACX1oC,EAAAA,EAAAA,GAAWzU,KACXyU,EAAAA,EAAAA,GAAW4Z,IAUb,OAAK,IAAI7hB,EAAAA,EAAU2wC,EAAcvzC,YAAYwzC,WAAW/uB,GAGrD,IAAI7hB,EAAAA,EAAU2wC,EAAcvzC,YAC1BmxC,KAAKmC,GACLE,WAAW,IAAI5wC,EAAAA,EAAU6hB,GAAmB0sB,KAAKlyC,EAAM0kB,WAKzD,IAAI/gB,EAAAA,EAAU2wC,EAAcvzC,YAC1BmxC,KAAKmC,GACLnC,KAAK/6C,GACLo9C,WACC,IAAI5wC,EAAAA,EAAU6hB,GAAmB0sB,MAC/BsC,EAAAA,EAAAA,IAAcx0C,KAAWjI,GAItB,IAAI4L,EAAAA,EAAmB,OAAT5L,QAAS,IAATA,OAAS,EAATA,EAAWgJ,YAAYwzC,WAAWp9C,GAH9B,EAAjB6I,EAAM0kB,SAIN1kB,EAAM0kB,WAOX,eAFE,wBAlBA,eAP0E,qBA4BrF,CCbO,SAAS+vB,EAA6BC,EAAgC7K,GAC3E,MAAMrqC,GAAYC,EAAAA,EAAAA,OACXU,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,IAChCkrC,EAAWqD,IAAgBvuC,EAAAA,EAAAA,eAA4CxF,GAgC9E,OA9BAI,EAAAA,EAAAA,YAAU,MACR7G,iBACE,IAAIyR,EAAAA,EAAAA,GAAW8oC,KAAU9oC,EAAAA,EAAAA,GAAWpM,IAA+B,IAAjBk1C,EAAMv7C,OAEtD,YADAw7C,EAAa,IAIflpC,GAAW,GAEX,MAAM6lC,QAAkBtD,QAAQC,IAC9ByG,EACGze,QACC,CAAC2e,EAAMC,IACED,EAAK3tC,OAAO4tC,EAAK/5B,YAAYzV,KAAKyvC,GAAe,CAACD,EAAK1G,KAAKptC,WAAY+zC,EAAYD,OAE7F,IAEDxvC,KAAIlL,UAAuC,IAA/B4Y,EAAQ+hC,EAAYC,GAAK5vC,EAEpC,MAAO,UADgB6vC,EAAAA,EAAAA,IAAgBjiC,EAAOhS,WAAY+zC,GACpC1oC,GAAI2G,EAAOhS,WAAYmH,MAAO+1B,OAAO6W,GAAaC,OAAM,KAIpFJ,EAAarD,EAAUlqC,QAAQ6B,KAAeA,KAC9CwC,GAAW,EACb,CAEA6/B,EAAM,GACL,CAACoJ,EAAOl1C,EAAWqqC,KAEf9pC,EAAAA,EAAAA,UAAQ,MAASI,UAASD,OAAQoxC,KAAc,CAACA,EAAWnxC,GACrE,C,eCrFO,SAAS80C,EAAiBxG,GAC/B,MAAMjvC,GAAYC,EAAAA,EAAAA,MAClB,OAAOy1C,EAAAA,EAAAA,GAAqB,OAAT11C,QAAS,IAATA,OAAS,EAATA,EAAWuB,WAAY0tC,EAC5C,CCQO,SAAS0G,EAAmBrkD,GAML,IANM,MAClCkP,EAAK,aACLqqC,EAAY,kBACZgK,EAAiB,cACjBC,EAAa,OACb3/C,GACyB7D,EACzB,OAAOiP,EAAAA,EAAAA,UAAQ,KACb,IACE6L,EAAAA,EAAAA,GAAW5L,KACX4L,EAAAA,EAAAA,GAAWy+B,KACXz+B,EAAAA,EAAAA,GAAWyoC,KACXzoC,EAAAA,EAAAA,GAAW0oC,KACX1oC,EAAAA,EAAAA,GAAWjX,GAEX,OAEF,MAAMygD,EAAoBhB,EAAqB,CAC7Cp0C,QACAq0C,oBACAl9C,QAASkzC,EACT7kB,kBAAmB7wB,EACnB2/C,kBAGF,MAA0B,wBAAtBc,EAAoD,IAC9B,iBAAtBA,EAA6Cp1C,EAAM0kB,SAAS3jB,WACtC,0BAAtBq0C,GAAwE,EAAjBp1C,EAAM0kB,UAAc3jB,WAExE,GAAG,GACT,CAACf,EAAOqqC,EAAcgK,EAAmBC,GAC9C,C,eCzCO,SAASe,EAAuB9zC,EAA0B+zC,GAC/D,MAMMhuC,ECRD,SAAqCiuC,GAC1C,MAAMC,GAAmBC,EAAAA,EAAAA,KAEzB,OAAO11C,EAAAA,EAAAA,UAAQ,IACNy1C,EAAiBjuC,MAAMP,GAAMA,EAAEQ,aAAakuC,yBAA2BH,KAC7E,CAACA,EAAcC,GACpB,CDEuBG,EANA51C,EAAAA,EAAAA,UAAQ,KAC3B,GAAKwB,GAAS+zC,EACd,OAAI/zC,EAAKL,SAAS,cAAsBo0C,OAAxC,CACgB,GACf,CAAC/zC,EAAM+zC,KAIJhzC,GAAUvC,EAAAA,EAAAA,UAAQ,KACtB,GAAKwB,GAAS+zC,EACd,OAAI/zC,EAAKL,SAAS,cACG,OAAZoG,QAAY,IAAZA,OAAY,EAAZA,EAAcE,aAAaC,wBADpC,CAIgB,GACf,CAAClG,EAAM+zC,EAAahuC,KAEhB,CAAEtH,IAASC,EAAAA,EAAAA,IAASqC,GAE3B,OAAOvC,EAAAA,EAAAA,UAAQ,KACb,IAAKuC,EACH,OAAQf,GACN,IAAK,cACH,MAAO,oCACT,IAAK,aACH,MAAO,wCACT,IAAK,iBACH,MAAO,mCACT,QACE,OAIN,OAAY,OAALvB,QAAK,IAALA,OAAK,EAALA,EAAOoC,IAAI,GACjB,CAACpC,EAAOsC,EAASf,EAAM+zC,GAC5B,C,yBEjCO,SAASM,IACd,MAAOjG,IAAgBC,EAAAA,EAAAA,MAEvB,OAAO9qC,EAAAA,EAAAA,cAAY3K,MAAO6F,EAAc+S,EAAgBpe,EAAgBkhD,KACtE,MAAM,OAAEvwB,EAAM,QAAE1S,SAAkBkjC,EAAAA,EAAAA,IAAS/iC,EAAQ/S,EAAMxK,QAASovC,OAAO5kC,EAAM0kB,UAAWkgB,OAAOjwC,IAEjG,MAAe,QAAX2wB,IACEuwB,EACFA,EAAgB,CAAEjjC,YAElB+8B,EAAa/oB,EAAAA,EAAK9gB,EAAE,+CAAgD,CAAEzE,OAAQrB,EAAMqB,OAAQuR,cAGvF,EAGE,GACV,GACL,CAUO,SAASmjC,IACd,MAAOpG,IAAgBC,EAAAA,EAAAA,MAEvB,OAAO9qC,EAAAA,EAAAA,cAAY3K,UAAkG,IAA3F,SAAE67C,EAAQ,QAAE1zC,EAAO,OAAEyQ,EAAM,OAAEpe,EAAM,gBAAEkhD,GAAgD/kD,EAC7G,MAAM,OAAEw0B,EAAM,QAAE1S,SAAkBkjC,EAAAA,EAAAA,IAAS/iC,EAAQzQ,EAASsiC,OAAOoR,GAAWpR,OAAOjwC,IAErF,MAAe,QAAX2wB,IACEuwB,EACFA,EAAgB,CAAEjjC,YAElB+8B,EAAa/oB,EAAAA,EAAK9gB,EAAE,+CAAgD,CAAEzE,OAAQ,GAAIuR,cAG7E,EAGE,GACV,GACL,C,gDC5CO,SAASqjC,EAAmBnlD,GAAyC,IAAxC,QAAEwR,GAAmCxR,EACvE,MAAQoP,OAAQg2C,IAAiBC,EAAAA,EAAAA,MAEjC,OAAOp2C,EAAAA,EAAAA,UAAQ,KACb,IAAKuC,IAAY4zC,EAAc,OAAO,KAEtC,MAAME,EAAWF,EAAa3uC,MAAM8uC,IAClCA,EAAQ3iC,WAAapR,GAAW+zC,EAAQ3iC,WAAapR,KACjD+zC,EAAQ3iC,WAAapR,EACnB+zC,EAAQ5iC,WAAatP,EAAAA,GAAI3O,QACzB6gD,EAAQ3iC,WAAavP,EAAAA,GAAI3O,WAIjC,OAAe,OAAR4gD,QAAQ,IAARA,OAAQ,EAARA,EAAUjI,IAAI,GACpB,CAAC7rC,EAAS4zC,GACf,CCGO,SAASI,EAAgCC,EAAuBv2C,GACrE,MAAMlL,EAAMkL,EAAM0kB,SAKlB,OAAO8vB,EAAAA,EAAAA,IAAcx0C,GAAS,IAAI2D,EAAAA,EAAU4yC,EAAUx1C,YAAYmxC,KAAKp9C,GAAKiM,WAAaw1C,EAAUx1C,UACrG,CAWO,SAASy1C,EAA+BD,EAAuBv2C,GACpE,MAAMlL,EAAMkL,EAAM0kB,SAElB,OAAO8vB,EAAAA,EAAAA,IAAcx0C,GACjB,IAAI2D,EAAAA,EAAU4yC,EAAUx1C,YAAYmxC,KAAKp9C,GAAKiM,WAC9C,IAAI4C,EAAAA,EAAU4yC,EAAUx1C,YAAYA,UAC1C,CAEO,SAAS01C,EACdC,EACAC,EACA7hD,GAEA,MAAMgG,GAAMiF,EAAAA,EAAAA,UAAQ,IACX22C,GAAoBC,GAAoB7hD,EAC3C,GAAG4hD,KAAoBC,KAAoBC,OAAO9hD,UAClD8L,GACH,CAAC81C,EAAkBC,EAAkB7hD,KAEjCsX,EAAIyqC,IAAwBC,EAAAA,EAAAA,IAAyBh8C,GAe5D,OAbAkG,EAAAA,EAAAA,YAAU,KACK7G,WACX,GAAIu8C,GAAoBC,GAAoB7hD,GAAOgG,IAAQsR,EAAI,CAC7D,MAAMyhB,QAAYkpB,EAAAA,EAAAA,IAAkBL,EAAkBC,EAAkB7hD,GACpE+4B,GACFgpB,EAAqB,CAAE/7C,MAAKsR,GAAIyhB,GAEpC,GAGFyd,EAAM,GACL,CAACl/B,EAAIsqC,EAAkBC,EAAkB7hD,EAAKgG,KAE1CiF,EAAAA,EAAAA,UAAQ,IAAMqM,GAAI,CAACA,GAC5B,CA4FO,SAAS4qC,IACd,MAAOrH,IAAgBC,EAAAA,EAAAA,MAEvB,OAAO9qC,EAAAA,EAAAA,cAAY3K,UAAqF,IAA9E,MAAE6F,EAAK,OAAErL,EAAM,OAAEoe,EAAM,gBAAE8iC,EAAe,SAAEt7C,GAA8BzJ,EAChG,MAAMmmD,GAAcC,EAAAA,EAAAA,IAAwB38C,GAE5C,IAAI+qB,EAAuB0d,EAAAA,EAAamU,MACpCvkC,EAAU,GAEd,GAAIqkC,EAAa,CACf,MAAQ3xB,OAAQ8xB,EAASxkC,QAASykC,SAAmBC,EAAAA,EAAAA,IACnDvkC,EACA/S,EAAMxK,QACNovC,OAAOjwC,GACPiwC,OAAO5kC,EAAM0kB,WAEfY,EAAS8xB,EACTxkC,EAAUykC,CACZ,KAAO,CACL,MAAQ/xB,OAAQ8xB,EAASxkC,QAASykC,SAAmBE,EAAAA,EAAAA,IACnDxkC,EACA/S,EAAMxK,QACNovC,OAAOjwC,GACPiwC,OAAO5kC,EAAM0kB,WAEfY,EAAS8xB,EACTxkC,EAAUykC,CACZ,CAEA,MAAe,QAAX/xB,IACEuwB,EACFA,EAAgB,CAAEjjC,YAElB+8B,EACE,qBAAqB3vC,EAAMqB,WAAWuR,2GAInC,EAGE,GACV,GACL,C,mJC1MO,SAAS4kC,EAAsB1mD,GAAqE,IAApE,MAAEkP,EAAK,WAAEy3C,EAAU,cAAEnD,GAA4CxjD,EACtG,OAAOiP,EAAAA,EAAAA,UAAQ,KACb,IAAKC,IAAS4L,EAAAA,EAAAA,GAAW0oC,KAAkB1oC,EAAAA,EAAAA,GAAW6rC,GAAa,OAInE,OAFyB,IAAI9zC,EAAAA,EAAU2wC,EAAcvzC,YAAYmxC,KAAKuF,GAEjDC,UAAU,GAAWC,EAAAA,EAAeC,cAAc53C,EAAO,IAI1Ew0C,EAAAA,EAAAA,IAAcx0C,GAEZy3C,EAAWC,UAAU,GAChBC,EAAAA,EAAeC,cAAc53C,EAAOs0C,EAAcvzC,YAGpD42C,EAAAA,EAAeC,cACpB53C,EACA,IAAI2D,EAAAA,EAAU2wC,EAAcvzC,YAAYmxC,KAAKuF,GAAYhzB,MAAMzkB,EAAM0kB,UAAU3jB,YAM5E42C,EAAAA,EAAeC,cACpB53C,EACA,IAAI2D,EAAAA,EAAU2wC,EAAcvzC,YAAYmxC,KAAKuF,EAAW12C,YAAYA,WACrE,GACA,CAACuzC,EAAemD,GACrB,CASO,SAASI,EAAkB1yC,GAA8E,IAA7E,MAAEnF,EAAK,QAAE7I,EAAO,OAAE4b,EAAQhb,UAAW+/C,GAAqC3yC,EAC3G,MAAM3F,GAAYkkB,EAAAA,EAAAA,MAEZq0B,GAAsBh4C,EAAAA,EAAAA,UAAQ,KAClC,GAAKC,KAASyD,EAAAA,EAAAA,GAAYq0C,GAC1B,OAAOtD,EAAAA,EAAAA,IAAcx0C,QAASY,EAAYZ,EAAMxK,OAAO,GACtD,CAACwK,EAAO83C,KAEH53C,OAAQnI,IAAcigD,EAAAA,EAAAA,IAAa,CAAEh+C,WAAY+9C,EAAqB/kD,MAAOwM,EAAW0wC,QAASn9B,IAEzG,OAAOhT,EAAAA,EAAAA,UAAQ,KACb,IAAI6L,EAAAA,EAAAA,GAAWzU,KAAYyU,EAAAA,EAAAA,GAAW5L,GAAQ,OAE9C,GAAI,IAAI2D,EAAAA,EAAUxM,GAASugD,UAAU,GAAI,OAAOC,EAAAA,EAAeC,cAAc53C,EAAO,GAIpF,IAAIw0C,EAAAA,EAAAA,IAAcx0C,GAChB,OAAO23C,EAAAA,EAAeC,cAAc53C,EAAO,IAAI2D,EAAAA,EAAUxM,GAASstB,MAAuB,EAAjBzkB,EAAM0kB,UAAc3jB,YAI9F,MAAMk3C,EAA2B,OAATlgD,QAAS,IAATA,EAAAA,EAAa+/C,EAIrC,YAAuBl3C,IAAnBq3C,GAKA,IAAIt0C,EAAAA,EAAUs0C,EAAel3C,YAAYwzC,WAAWp9C,GAJ/CwgD,EAAAA,EAAeC,cAAc53C,EAAO,IAAI2D,EAAAA,EAAUxM,GAASstB,MAAuB,EAAjBzkB,EAAM0kB,UAAc3jB,YAQvF42C,EAAAA,EAAeC,cAAc53C,EAAO,IAAI2D,EAAAA,EAAUxM,GAASstB,MAAMzkB,EAAM0kB,UAAU3jB,WAAW,GAClG,CAAChJ,EAAW+/C,EAAa93C,EAAO7I,EAAS4gD,GAC9C,CAWO,SAASG,EAAqB7pC,GAOV,IAPW,OACpC0E,EAAM,WACN0kC,EAAU,cACVnD,EACAv8C,UAAW+/C,EAAW,MACtB93C,EAAK,QACL7I,GACsBkX,EACtB,MAAM8pC,EAAkBN,EAAmB,CAAE73C,QAAO7I,UAAS4b,SAAQhb,UAAW+/C,IAC1EM,EAAsBZ,EAAuB,CAAEx3C,QAAOy3C,aAAYnD,kBAExE,OAAOv0C,EAAAA,EAAAA,UAAQ,KACb,MAAI6L,EAAAA,EAAAA,GAAWusC,KAAoBvsC,EAAAA,EAAAA,GAAWwsC,KAAwBxsC,EAAAA,EAAAA,GAAW5L,KAC5Em4C,EAAgBE,SAASC,OAAOF,EAAoBC,UAEzD,OAAOF,EAAgBI,IAAIH,EAAoB,GAC9C,CAACD,EAAiBC,GACvB,C,0NC1GOj+C,eAAeq+C,EAAsB/H,GAC1C,MAAMgI,EAA4DhI,EAASprC,KACzEvU,IAAwC,IAAtC4nD,EAAWC,EAAWC,GAAU9nD,EAChC,IAAK4nD,IAAcC,IAAcC,EAAW,OAAO,KAEnD,MAAMliC,EAAkB,OAATgiC,QAAS,IAATA,OAAS,EAATA,EAAWG,QACpBliC,EAAkB,OAATgiC,QAAS,IAATA,OAAS,EAATA,EAAWE,QAC1B,IAAKniC,IAAWC,GAAUD,EAAO4hC,OAAO3hC,GAAS,OAAO,KAExD,MAAOhc,EAAQC,GAAU8b,EAAOoiC,YAAYniC,GAAU,CAACD,EAAQC,GAAU,CAACA,EAAQD,GAElF,MAAO,CAAC/b,EAAQC,EAAQg+C,EAAU,IAItC,aAAa5K,QAAQC,IACnBwK,EAAoBpzC,KAAIlL,UACtB,IAAIyR,EAAAA,EAAAA,GAAWuJ,GAAM,OAAO,KAE5B,MAAOxa,EAAQC,EAAQ9F,GAAOqgB,EAGxByd,EAAO,CACXj4B,OAAQ,CAAEnF,QAASmF,EAAOk+C,QAAQrjD,QAAS+E,SAAUI,EAAOJ,UAC5DK,OAAQ,CAAEpF,QAASoF,EAAOi+C,QAAQrjD,QAAS+E,SAAUK,EAAOL,UAC5DzF,IAAK8vC,OAAO9vC,GACZ4F,aAAc,KAGVq+C,QAAqBC,EAAAA,EAAAA,IAAYpmB,GAEvC,GAAImmB,EAAc,CAChB,MAAMhmC,EAASgmC,EAAa/+C,WAAW+G,WAGvC,MAAO,CACLgS,SACAi1B,eAJyBiR,EAAAA,EAAAA,IAAoBlmC,GAMjD,CAEA,OAAO,IAAI,IAGjB,C,eCzCA,MAAMmmC,EAAgC,IAWtC,SAASC,EAAoBC,GAC3B,MAAO,GAAGA,EAAez+C,UAAUy+C,EAAex+C,UAAUw+C,EAAetkD,KAC7E,CAIO,SAASk4C,EAASyD,GAAyE,IAApD4I,EAAajtB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,IAAAA,UAAA,GACzD,MAAOkhB,EAAOC,IAAYnnC,EAAAA,EAAAA,UAAmD,CAAC,IACvEjG,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,GAEjCkzC,GAA4Bv5C,EAAAA,EAAAA,UAAQ,IACjC0wC,EAASprC,KAAIvU,IAA4B,IAA1B6J,EAAQC,EAAQ9F,GAAIhE,EACxC,IAAI8a,EAAAA,EAAAA,GAAWjR,KAAWiR,EAAAA,EAAAA,GAAWhR,KAAWgR,EAAAA,EAAAA,GAAW9W,GAAM,MAAO,CAAC6F,EAAQC,EAAQ9F,GAEzF,MAAMykD,EAAW5+C,EAAOm+C,YAAYl+C,GAAUD,EAASC,EACjD4+C,EAAWD,EAASjB,OAAO39C,GAAUC,EAASD,EAEpD,MAAO,CAAC4+C,EAAUC,EAAU1kD,EAAI,KAEjC,CAACugB,KAAKC,UAAUm7B,KAiHnB,OA/GAzvC,EAAAA,EAAAA,YAAU,MACR7G,iBACE,GAAIm/C,GAAkBA,EAAengD,OAAS,EAAG,CAC/CsS,GAAW,GAEX,MAAMguC,QAAsBjB,EAAsBc,GAC5ChM,EAA0C,CAAC,EAEjDgM,EAAejyC,SAAQ,CAACqyC,EAASxxC,KAC/B,MAAOvN,EAAQC,EAAQ9F,GAAO4kD,EAE9B,IAAI9tC,EAAAA,EAAAA,GAAWjR,KAAWiR,EAAAA,EAAAA,GAAWhR,KAAWgR,EAAAA,EAAAA,GAAW9W,GAAM,OAEjE,MAAMgG,EAAMq+C,EAAoB,CAAEx+C,OAAQA,EAAOnF,QAASoF,OAAQA,EAAOpF,QAASV,QAE5E6kD,EAAiBF,EAAcvxC,IAEjC0D,EAAAA,EAAAA,GAAW+tC,KAEfrM,EAAMxyC,GAAO,CACXsR,GAAIutC,EAAe5mC,OACnBi1B,SAAU2R,EAAe3R,SACzBltC,MACAyS,UAAW8rC,GACZ,IAGH9L,EAASD,GACT7hC,GAAW,IAGW,IAAlB4tC,GACFC,EAAej0C,KAAIlL,MAAOu/C,EAASxxC,KACjC,MAAOvN,EAAQC,EAAQ9F,GAAO4kD,EAE9B,IAAI9tC,EAAAA,EAAAA,GAAWjR,KAAWiR,EAAAA,EAAAA,GAAWhR,KAAWgR,EAAAA,EAAAA,GAAW9W,GAAM,OAAO,KAExE,MAAMq5C,QAAayL,EAAAA,EAAAA,IAAoBj/C,EAAOnF,QAASoF,EAAOpF,QAASV,GAEjEgG,EAAMq+C,EAAoB,CAAEx+C,OAAQA,EAAOnF,QAASoF,OAAQA,EAAOpF,QAASV,QAElF,GAAKq5C,EAKE,CACL,MAAMwL,EAAiBF,EAAcvxC,IAEjCzE,EAAAA,EAAAA,GAAYk2C,IACdpM,GAAUnlC,IAAS,IACdA,EACH,CAACtN,GAAM,CACLA,MACAsR,GAAI+hC,EAAKn0C,WAAW+G,WACpBinC,SAAU2R,EAAe3R,SACzBz6B,SAAS,MAIjB,MAlBEggC,GAAUnlC,IAAS,IACdA,EACH,CAACtN,GAAM,QAgBX,GAGN,CACF,CAEAwwC,EAAM,GACL,CAACj2B,KAAKC,UAAUgkC,GAAiBD,KAGpCr4C,EAAAA,EAAAA,YAAU,KACR,IAAIm0B,EAAuB,KAgC3B,OAFAA,EAAQ8W,aAAY,IA5BpB9xC,iBACMmzC,GACF/T,OAAO/d,OAAO8xB,GAAOjmC,SAAQlN,UAC3B,GAAI0/C,EAAY,CACd,MAAM,GAAEztC,EAAE,IAAEtR,EAAG,SAAEktC,EAAQ,QAAEz6B,GAAYssC,EAEvC,IAAK7R,IAAasF,EAAMxyC,GAAM,QAE9Bm+C,EAAAA,EAAAA,IAAoB7sC,GAAI0tC,MAAM55C,IACxBA,IACEA,EAAO8wC,YAAchJ,EAASgJ,WAAa9wC,EAAOxF,eAAiBstC,EAASttC,cAC9E6yC,GAAUnlC,IAAS,IACdA,EACH,CAACtN,GAAM,CACLA,MACAsR,KACA47B,SAAU9nC,EACVqN,eAIR,GAEJ,IAGN,CAE0B+9B,IAAQ4N,GAE3B,KACD/jB,IACFiX,cAAcjX,GACdA,EAAQ,KACV,CACD,GACA,CAAC9f,KAAKC,UAAUg4B,MAEZvtC,EAAAA,EAAAA,UAAQ,IACNu5C,EAAej0C,KAAI,CAACq0C,EAASxxC,KAClC,MAAOvN,EAAQC,EAAQ9F,GAAO4kD,EAE9B,IAAI9tC,EAAAA,EAAAA,GAAWjR,KAAWiR,EAAAA,EAAAA,GAAWhR,KAAWgR,EAAAA,EAAAA,GAAW9W,GAAM,MAAO,CAACilD,EAAAA,EAAUC,QAAS,MAE5F,GAAI75C,EAAS,MAAO,CAAC45C,EAAAA,EAAUE,QAAS,MAExC,MAAMn/C,EAAMq+C,EAAoB,CAAEx+C,OAAQA,EAAOnF,QAASoF,OAAQA,EAAOpF,QAASV,QAE5EoL,EAA4CotC,EAAMxyC,GAExD,IAAKoF,EAAQ,MAAO,CAAC65C,EAAAA,EAAUG,WAAY,MAE3C,MAAM,SAAElS,EAAQ,GAAE57B,EAAE,QAAEmB,GAAYrN,EAElC,IACE0L,EAAAA,EAAAA,GAAWo8B,KACXp8B,EAAAA,EAAAA,GAAWo8B,EAASrtC,UACpBiR,EAAAA,EAAAA,GAAWo8B,EAASptC,UACpBgR,EAAAA,EAAAA,GAAWo8B,EAASlzC,OACpB8W,EAAAA,EAAAA,GAAWQ,GAEX,MAAO,CAAC2tC,EAAAA,EAAUG,WAAY,MAEhC,IACE,MAAM,IAAEplD,EAAG,aAAE4F,EAAY,UAAEs2C,EAAS,KAAEjZ,GAASiQ,GAExCrtC,EAAQC,GAAU61C,EAASvoC,GAElC,IAAI0D,EAAAA,EAAAA,GAAWjR,KAAWiR,EAAAA,EAAAA,GAAWhR,GAAS,MAAO,CAACm/C,EAAAA,EAAUG,WAAY,MAG5E,MAAMX,EAAW,IAAIj/C,EAAAA,EAAM,CACzB9E,QAASmF,EAAOnF,QAChBsL,SAAUnG,EAAOmG,SACjBO,OAAQ1G,EAAO0G,OACfE,KAAM5G,EAAO4G,KACbhH,SAAUI,EAAOnF,UAAYwyC,EAASrtC,OAAOnF,QAAUwyC,EAASrtC,OAAOJ,SAAWytC,EAASptC,OAAOL,SAClG6H,KAAMzH,EAAOyH,KACbsiB,SAAU/pB,EAAO+pB,WAGb80B,EAAW,IAAIl/C,EAAAA,EAAM,CACzB9E,QAASoF,EAAOpF,QAChBsL,SAAUlG,EAAOkG,SACjBO,OAAQzG,EAAOyG,OACfE,KAAM3G,EAAO2G,KACbhH,SAAUK,EAAOpF,UAAYwyC,EAASptC,OAAOpF,QAAUwyC,EAASptC,OAAOL,SAAWytC,EAASrtC,OAAOJ,SAClG6H,KAAMxH,EAAOwH,KACbsiB,SAAU9pB,EAAO8pB,WAGnB,MAAO,CACLnX,EAAUwsC,EAAAA,EAAUI,OAASJ,EAAAA,EAAUK,UACvC,IAAIC,EAAAA,EACFjuC,EACAmtC,EACAC,EACAvb,OAAOnpC,IACPwlD,EAAAA,EAAAA,GAAe5/C,IACf4/C,EAAAA,EAAAA,GAAetJ,GACf/S,OAAOlG,IAGb,CAAE,MAAOlrB,GAEP,OADAkZ,QAAQlZ,MAAM,mCAAoCA,GAC3C,CAACktC,EAAAA,EAAUG,WAAY,KAChC,MAED,CAAC7kC,KAAKC,UAAUg4B,GAAQntC,EAAQ,CAAGkV,KAAKC,UAAUgkC,IACvD,CAEO,SAASiB,EACd7B,EACAC,EACAC,GAEC,IADDS,EAAajtB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,IAAAA,UAAA,GAOb,OAAO4gB,GALiEjtC,EAAAA,EAAAA,UACtE,IAAM,CAAC,CAAC24C,EAAWC,EAAWC,KAC9B,CAACF,EAAWC,EAAWC,IAGCS,GAAe,EAC3C,CAEO,SAASmB,EAAkBjK,GAChC,MAAQrwC,OAAQu6C,IAAaC,EAAAA,EAAAA,MAE7B,OAAO36C,EAAAA,EAAAA,UAAQ,KACb,GAAKwwC,GAAWkK,EAEhB,OAAOlK,EAAOlrC,KAAKrF,GACVy6C,EAASrzC,QAAQ+mC,GACfA,EAAKvzC,OAAOpF,UAAYwK,GAASmuC,EAAKxzC,OAAOnF,UAAYwK,KAElE,GACD,CAACy6C,EAAUlK,GAChB,CAYO,SAASoK,EAA8BpK,GAC5C,MAAMqK,EAAaJ,EAAkBjK,GAErC,OAAOxwC,EAAAA,EAAAA,UAAQ,KACb,GAAK66C,GAAeA,EAAW,IAAOrK,EAEtC,OAAIzR,EAAAA,KAAYQ,EAAAA,GAAQ8F,UAEpBmL,EAAOhpC,MAAMvH,GAAUA,IAAUmE,EAAAA,GAAI3O,WAElC+6C,EAAOta,QAAO,CAAC2e,EAAMC,EAAM3sC,KAChC,MAAM2yC,IAAyBD,EAAW1yC,GAAOX,MAC9C4mC,GAASA,EAAKxzC,OAAOnF,UAAY2O,EAAAA,GAAI3O,SAAW24C,EAAKvzC,OAAOpF,UAAY2O,EAAAA,GAAI3O,UAG/E,OAAOo/C,GAAQiG,CAAoB,IAClC,GAAM,GACR,CAACD,GACN,CAEO,SAASE,EAAgB9gD,GAC9B,MAAOm0C,EAAM4M,IAAW30C,EAAAA,EAAAA,eAAmCxF,IACpDT,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,IAEvCpF,EAAAA,EAAAA,YAAU,KACK7G,WACX,GAAIH,EAAY,CACdyR,GAAW,GACX,MAAMuvC,QAAiB/B,EAAAA,EAAAA,IAAoBj/C,GAC3C+gD,EAAQC,GACRvvC,GAAW,EACb,GAGF6/B,EAAM,GACL,CAACtxC,IAEJ,MAAO,CAAEW,IAAUsF,EAAAA,EAAAA,IAAa,OAAJkuC,QAAI,IAAJA,OAAI,EAAJA,EAAMxzC,OAAOnF,UAClC,CAAEoF,IAAUqF,EAAAA,EAAAA,IAAa,OAAJkuC,QAAI,IAAJA,OAAI,EAAJA,EAAMvzC,OAAOpF,SAEzC,OAAOuK,EAAAA,EAAAA,UAAQ,KACb,GAAII,EAAS,MAAO,CAAC45C,EAAAA,EAAUE,QAAS,MACxC,IAAK9L,GAAa,OAAJA,QAAI,IAAJA,IAAAA,EAAMxzC,QAAe,OAAJwzC,QAAI,IAAJA,IAAAA,EAAMvzC,QAAe,OAAJuzC,QAAI,IAAJA,IAAAA,EAAMr5C,MAAQ6F,IAAWC,IAAWZ,EAClF,MAAO,CAAC+/C,EAAAA,EAAUG,WAAY,MAEhC,MAAM,IAAEplD,EAAG,aAAE4F,EAAY,UAAEs2C,EAAS,KAAEjZ,GAASoW,EAE/C,IACE,MAAO,CACL4L,EAAAA,EAAUI,OACV,IAAIE,EAAAA,EACFrgD,EACAW,EAAOk+C,QACPj+C,EAAOi+C,QACP5a,OAAOnpC,IACPwlD,EAAAA,EAAAA,GAAe5/C,IACf4/C,EAAAA,EAAAA,GAAetJ,GACf/S,OAAOlG,IAGb,CAAE,MAAOlrB,GAEP,OADAkZ,QAAQlZ,MAAM,mCAAoCA,GAC3C,CAACktC,EAAAA,EAAUG,WAAY,KAChC,IACC,CAAC/L,EAAMhuC,EAASxF,EAAQC,EAAQZ,GACrC,C,wGCjUO,SAASihD,EAAYC,GAC1B,MAAOC,EAAWhN,IAAQ2M,EAAAA,EAAAA,IAA4B,OAAZI,QAAY,IAAZA,OAAY,EAAZA,EAAcnoC,QAExD,IAAI9J,EAiBJ,OAdEklC,GACA+M,QAC2Bt6C,IAA3Bs6C,EAAajK,gBACcrwC,IAA3Bs6C,EAAahK,gBACctwC,IAA3Bs6C,EAAalK,YAEb/nC,EAAW,IAAI8nC,EAAAA,EAAS,CACtB5C,OACA6C,UAAWkK,EAAalK,UAAUjwC,WAClCkwC,UAAWhT,OAAOid,EAAajK,WAC/BC,UAAWjT,OAAOid,EAAahK,cAI5B,CACL/wC,QAASg7C,IAAcpB,EAAAA,EAAUE,QACjCmB,SAAUD,IAAcpB,EAAAA,EAAUK,UAClCnxC,WACAklC,KAAU,OAAJA,QAAI,IAAJA,EAAAA,OAAQvtC,EAElB,CASO,SAASy6C,EAAmBvqD,GAAuE,IACpGmY,GAD8B,UAAEgoC,EAAS,UAAEC,EAAS,UAAEF,EAAS,KAAE7C,GAAgCr9C,EAYrG,OATIq9C,IAAQ1qC,EAAAA,EAAAA,GAAYutC,KAAcvtC,EAAAA,EAAAA,GAAYwtC,KAAcxtC,EAAAA,EAAAA,GAAYytC,KAC1EjoC,EAAW,IAAI8nC,EAAAA,EAAS,CACtB5C,OACA6C,UAAWA,EAAUjwC,WACrBkwC,UAAWhT,OAAOgT,GAClBC,UAAWjT,OAAOiT,OAIfnxC,EAAAA,EAAAA,UAAQ,IAAMkJ,GAAU,CAACA,GAClC,C,0ECzDO,SAASqyC,EACdthD,EACA86C,EACAjL,GAEA,MAAM,OAAE3pC,IAAWq7C,EAAAA,EAAAA,GAAevhD,EAAY86C,EAAalQ,OAAOkQ,QAAcl0C,EAAWipC,GAE3F,OAAO9pC,EAAAA,EAAAA,UAAQ,KACN,CACL4xC,QAAe,OAANzxC,QAAM,IAANA,OAAM,EAANA,EAAQs7C,YACjB1J,QAAe,OAAN5xC,QAAM,IAANA,OAAM,EAANA,EAAQu7C,eAElB,CAACv7C,GACN,C,qFCZO,SAASw7C,IACd,MAAM1oC,GAAUC,EAAAA,EAAAA,MACV0oC,GAAgBC,EAAAA,EAAAA,MAEtB,OAAO92C,EAAAA,EAAAA,cAAY,KACjBkO,EAAQrL,KAAK,kBACbg0C,GAAe,GACd,CAAC3oC,EAAS2oC,GACf,C,mJCRM,SAAUE,EAAgBC,EAAYvD,EAAQwD,EAAiBC,GAMnE,IALAC,EAAAA,EAAAA,GAAUF,EAAU,EAAG,kBAEvBE,EAAAA,EAAAA,GAAUH,EAAM3iD,QAAU4iD,EAAS,cAGd,IAAjBD,EAAM3iD,OAER,OADA2iD,EAAMn0C,KAAK4wC,GACJ,KACF,CACL,MAAM2D,EAASJ,EAAM3iD,SAAW4iD,EAEhC,GAAIG,GAAUF,EAAWF,EAAMA,EAAM3iD,OAAS,GAAIo/C,IAAQ,EACxD,OAAOA,EAGT,IAAI4D,EAAK,EACPC,EAAKN,EAAM3iD,OAEb,KAAOgjD,EAAKC,GAAI,CACd,MAAMC,EAAOF,EAAKC,IAAQ,EACtBJ,EAAWF,EAAMO,GAAM9D,IAAQ,EACjC4D,EAAKE,EAAM,EAEXD,EAAKC,CAET,CAEA,OADAP,EAAMxzC,OAAO6zC,EAAI,EAAG5D,GACb2D,EAASJ,EAAMQ,MAAS,IACjC,CACF,C,yBCzBM,MAAOC,EAiBX9xB,WAAAA,CAAmB6iB,EAAe3jC,EAAe6yC,GARzC,KAAAC,UAA2C,MASjDR,EAAAA,EAAAA,GAAU3O,EAAMn0C,OAAS,EAAG,SAE5B,MAAMujD,EAAe/yC,EAAMkvC,SAC3BoD,EAAAA,EAAAA,GAAU3O,EAAM,GAAGqP,cAAcD,GAAe,UAEhDT,EAAAA,EAAAA,GAAU3O,EAAMA,EAAMn0C,OAAS,GAAGwjD,cAAcH,EAAO3D,SAAU,UAKjE,MAAM+D,EAAqB,CAACF,GAC5B,IAAK,MAAOxQ,EAAGiC,KAASb,EAAMpsB,UAAW,CACvC,MAAM27B,EAAoBD,EAAU1Q,IACpC+P,EAAAA,EAAAA,GAAUY,EAAkBvE,OAAOnK,EAAKxzC,SAAWkiD,EAAkBvE,OAAOnK,EAAKvzC,QAAS,QAC1F,MAAMkiD,EAAYD,EAAkBvE,OAAOnK,EAAKxzC,QAAUwzC,EAAKvzC,OAASuzC,EAAKxzC,OAC7EiiD,EAAUj1C,KAAKm1C,EACjB,CAEAlyB,KAAK0iB,MAAQA,EACb1iB,KAAKgyB,UAAYA,EACjBhyB,KAAKjhB,MAAQA,EACbihB,KAAK4xB,OAAe,OAANA,QAAM,IAANA,EAAAA,EAAWI,EAAUA,EAAUzjD,OAAS,EACxD,CAKA,YAAW4jD,GACT,GAAuB,OAAnBnyB,KAAK6xB,UAAoB,OAAO7xB,KAAK6xB,UAEzC,MAAMO,EAAQpyB,KAAK0iB,MAAMzjB,MAAM,GAAGoM,QAChC,CAAAnlC,EAAuBq9C,KAAQ,IAA9B,UAAE8O,EAAS,MAAED,GAAOlsD,EACnB,OAAOmsD,EAAU3E,OAAOnK,EAAKxzC,QACzB,CACEsiD,UAAW9O,EAAKvzC,OAChBoiD,MAAOA,EAAME,SAAS/O,EAAK4D,cAE7B,CACEkL,UAAW9O,EAAKxzC,OAChBqiD,MAAOA,EAAME,SAAS/O,EAAK8D,aAC5B,GAEPrnB,KAAK0iB,MAAM,GAAG3yC,OAAO29C,OAAO1tB,KAAKjhB,MAAMkvC,SACnC,CACEoE,UAAWryB,KAAK0iB,MAAM,GAAG1yC,OACzBoiD,MAAOpyB,KAAK0iB,MAAM,GAAGyE,aAEvB,CACEkL,UAAWryB,KAAK0iB,MAAM,GAAG3yC,OACzBqiD,MAAOpyB,KAAK0iB,MAAM,GAAG2E,cAE3B+K,MAIF,OAFApyB,KAAK6xB,UAAY,IAAIU,EAAAA,EAAMvyB,KAAKjhB,MAAOihB,KAAK4xB,OAAQQ,EAAMI,YAAaJ,EAAMK,WAEtEzyB,KAAK6xB,SACd,E,0SCpEI,SAAUa,EACd1J,EACAC,GAKA,IAFAoI,EAAAA,EAAAA,GAAUrI,EAAE2J,YAAYlF,SAASC,OAAOzE,EAAE0J,YAAYlF,UAAW,mBACjE4D,EAAAA,EAAAA,GAAUrI,EAAE4J,aAAanF,SAASC,OAAOzE,EAAE2J,aAAanF,UAAW,mBAC/DzE,EAAE4J,aAAaC,QAAQ5J,EAAE2J,cAAe,CAC1C,GAAI5J,EAAE2J,YAAYE,QAAQ5J,EAAE0J,aAAc,CAIxC,OAFc3J,EAAE8J,MAAMznB,QAAO,CAAC0nB,EAAOC,IAAQD,EAAQC,EAAIt2B,MAAMs1B,UAAUzjD,QAAQ,GACnE06C,EAAE6J,MAAMznB,QAAO,CAAC0nB,EAAOC,IAAQD,EAAQC,EAAIt2B,MAAMs1B,UAAUzjD,QAAQ,EAEnF,CAEA,OAAIy6C,EAAE2J,YAAYM,SAAShK,EAAE0J,cACnB,EAED,CAEX,CAEE,OAAI3J,EAAE4J,aAAaK,SAAShK,EAAE2J,cACrB,GAEC,CAGd,CAqBM,MAAOM,EAQX,SAAWx2B,GAET,OADA20B,EAAAA,EAAAA,GAAgC,IAAtBrxB,KAAK8yB,MAAMvkD,OAAc,mBAC5ByxB,KAAK8yB,MAAM,GAAGp2B,KACvB,CA0BA,eAAWi2B,GACT,GAAI3yB,KAAKmzB,aACP,OAAOnzB,KAAKmzB,aAGd,MAAMC,EAAgBpzB,KAAK8yB,MAAM,GAAGH,YAAYlF,SAC1C4F,EAAuBrzB,KAAK8yB,MAC/Br4C,KAAIvU,IAAA,IAAC,YAAEysD,GAAazsD,EAAA,OAAKysD,CAAW,IACpCtnB,QAAO,CAAC0nB,EAAOC,IAAQD,EAAMpF,IAAIqF,IAAMjG,EAAAA,EAAeC,cAAcoG,EAAe,IAGtF,OADApzB,KAAKmzB,aAAeE,EACbrzB,KAAKmzB,YACd,CAWA,gBAAWP,GACT,GAAI5yB,KAAKszB,cACP,OAAOtzB,KAAKszB,cAGd,MAAMC,EAAiBvzB,KAAK8yB,MAAM,GAAGF,aAAanF,SAC5C+F,EAAwBxzB,KAAK8yB,MAChCr4C,KAAIF,IAAA,IAAC,aAAEq4C,GAAcr4C,EAAA,OAAKq4C,CAAY,IACtCvnB,QAAO,CAAC0nB,EAAOC,IAAQD,EAAMpF,IAAIqF,IAAMjG,EAAAA,EAAeC,cAAcuG,EAAgB,IAGvF,OADAvzB,KAAKszB,cAAgBE,EACdxzB,KAAKszB,aACd,CAWA,kBAAWG,GACT,OAAIzzB,KAAK0zB,gBAAwB1zB,KAAK0zB,iBAEtC1zB,KAAK0zB,gBAAkB,IAAInB,EAAAA,EACzBvyB,KAAK2yB,YAAYlF,SACjBztB,KAAK4yB,aAAanF,SAClBztB,KAAK2yB,YAAYgB,SACjB3zB,KAAK4yB,aAAae,UAGb,IAAIpB,EAAAA,EACTvyB,KAAK2yB,YAAYlF,SACjBztB,KAAK4yB,aAAanF,SAClBztB,KAAK2yB,YAAYgB,SACjB3zB,KAAK4yB,aAAae,UAEtB,CAWA,eAAWC,GACT,GAAI5zB,KAAK6zB,aACP,OAAO7zB,KAAK6zB,aAGd,IAAIC,EAAmB/G,EAAAA,EAAeC,cAAchtB,KAAK4yB,aAAanF,SAAU,GAChF,IAAK,MAAM,MAAE/wB,EAAK,YAAEi2B,KAAiB3yB,KAAK8yB,MAAO,CAC/C,MAAMX,EAAWz1B,EAAMy1B,SACvB2B,EAAmBA,EAAiBnG,IAAIwE,EAAS4B,MAAMpB,GACzD,CAEA,MAAMiB,EAAcE,EAAiBE,SAASh0B,KAAK4yB,cAAcqB,OAAOH,GAGxE,OAFA9zB,KAAK6zB,aAAe,IAAIjY,EAAAA,EAAQgY,EAAYnB,UAAWmB,EAAYpB,aAE5DxyB,KAAK6zB,YACd,CAUO,cAAaK,CAClBx3B,EACAy3B,G,yCAEA,OAAOjB,EAAMkB,UAAU13B,EAAOy3B,EAAUE,EAAAA,GAAUC,YACpD,G,CAUO,eAAaC,CAClB73B,EACA83B,G,yCAEA,OAAOtB,EAAMkB,UAAU13B,EAAO83B,EAAWH,EAAAA,GAAUI,aACrD,G,CAYO,gBAAaL,CAClB13B,EACA3yB,EACA2qD,G,yCAEA,MAAMC,EAAmC,IAAI/uB,MAAMlJ,EAAMs1B,UAAUzjD,QACnE,IAAIokD,EACAC,EACJ,GAAI8B,IAAcL,EAAAA,GAAUC,YAAa,EACvCjD,EAAAA,EAAAA,GAAUtnD,EAAO0jD,SAASC,OAAOhxB,EAAM3d,OAAQ,SAC/C41C,EAAQ,GAAK5qD,EAAOkkD,QACpB,IAAK,IAAI3M,EAAI,EAAGA,EAAI5kB,EAAMs1B,UAAUzjD,OAAS,EAAG+yC,IAAK,CACnD,MAAMiC,EAAO7mB,EAAMgmB,MAAMpB,IAClBsR,SAAsBrP,EAAKqR,gBAAgBD,EAAQrT,IAC1DqT,EAAQrT,EAAI,GAAKsR,CACnB,CACAD,EAAc5F,EAAAA,EAAe8H,qBAAqBn4B,EAAM3d,MAAOhV,EAAO0oD,UAAW1oD,EAAOyoD,aACxFI,EAAe7F,EAAAA,EAAe8H,qBAC5Bn4B,EAAMk1B,OACN+C,EAAQA,EAAQpmD,OAAS,GAAGkkD,UAC5BkC,EAAQA,EAAQpmD,OAAS,GAAGikD,YAEhC,KAAO,EACLnB,EAAAA,EAAAA,GAAUtnD,EAAO0jD,SAASC,OAAOhxB,EAAMk1B,QAAS,UAChD+C,EAAQA,EAAQpmD,OAAS,GAAKxE,EAAOkkD,QACrC,IAAK,IAAI3M,EAAI5kB,EAAMs1B,UAAUzjD,OAAS,EAAG+yC,EAAI,EAAGA,IAAK,CACnD,MAAMiC,EAAO7mB,EAAMgmB,MAAMpB,EAAI,IACtBqR,SAAqBpP,EAAKuR,eAAeH,EAAQrT,IACxDqT,EAAQrT,EAAI,GAAKqR,CACnB,CACAA,EAAc5F,EAAAA,EAAe8H,qBAAqBn4B,EAAM3d,MAAO41C,EAAQ,GAAGlC,UAAWkC,EAAQ,GAAGnC,aAChGI,EAAe7F,EAAAA,EAAe8H,qBAAqBn4B,EAAMk1B,OAAQ7nD,EAAO0oD,UAAW1oD,EAAOyoD,YAC5F,CAEA,OAAO,IAAIU,EAAM,CACfn3B,OAAQ,CAAC,CAAE42B,cAAaC,eAAcl2B,UACtCg4B,aAEJ,G,CAYO,iBAAaK,CAClBh5B,EAIA24B,G,yCAEA,MAAMM,EAIA,GAEN,IAAK,MAAM,MAAEt4B,EAAK,OAAE3yB,KAAYgyB,EAAQ,CACtC,MAAM44B,EAAmC,IAAI/uB,MAAMlJ,EAAMs1B,UAAUzjD,QACnE,IAAIokD,EACAC,EAEJ,GAAI8B,IAAcL,EAAAA,GAAUC,YAAa,EACvCjD,EAAAA,EAAAA,GAAUtnD,EAAO0jD,SAASC,OAAOhxB,EAAM3d,OAAQ,SAC/C4zC,EAAc5F,EAAAA,EAAe8H,qBAAqBn4B,EAAM3d,MAAOhV,EAAO0oD,UAAW1oD,EAAOyoD,aACxFmC,EAAQ,GAAK5H,EAAAA,EAAe8H,qBAAqBn4B,EAAM3d,MAAMkvC,QAASlkD,EAAO0oD,UAAW1oD,EAAOyoD,aAE/F,IAAK,IAAIlR,EAAI,EAAGA,EAAI5kB,EAAMs1B,UAAUzjD,OAAS,EAAG+yC,IAAK,CACnD,MAAMiC,EAAO7mB,EAAMgmB,MAAMpB,IAClBsR,SAAsBrP,EAAKqR,gBAAgBD,EAAQrT,IAC1DqT,EAAQrT,EAAI,GAAKsR,CACnB,CAEAA,EAAe7F,EAAAA,EAAe8H,qBAC5Bn4B,EAAMk1B,OACN+C,EAAQA,EAAQpmD,OAAS,GAAGkkD,UAC5BkC,EAAQA,EAAQpmD,OAAS,GAAGikD,YAEhC,KAAO,EACLnB,EAAAA,EAAAA,GAAUtnD,EAAO0jD,SAASC,OAAOhxB,EAAMk1B,QAAS,UAChDgB,EAAe7F,EAAAA,EAAe8H,qBAAqBn4B,EAAMk1B,OAAQ7nD,EAAO0oD,UAAW1oD,EAAOyoD,aAC1FmC,EAAQA,EAAQpmD,OAAS,GAAKw+C,EAAAA,EAAe8H,qBAC3Cn4B,EAAMk1B,OAAO3D,QACblkD,EAAO0oD,UACP1oD,EAAOyoD,aAGT,IAAK,IAAIlR,EAAI5kB,EAAMs1B,UAAUzjD,OAAS,EAAG+yC,EAAI,EAAGA,IAAK,CACnD,MAAMiC,EAAO7mB,EAAMgmB,MAAMpB,EAAI,IACtBqR,SAAqBpP,EAAKuR,eAAeH,EAAQrT,IACxDqT,EAAQrT,EAAI,GAAKqR,CACnB,CAEAA,EAAc5F,EAAAA,EAAe8H,qBAAqBn4B,EAAM3d,MAAO41C,EAAQ,GAAGlC,UAAWkC,EAAQ,GAAGnC,YAClG,CAEAwC,EAAgBj4C,KAAK,CAAE2f,QAAOi2B,cAAaC,gBAC7C,CAEA,OAAO,IAAIM,EAAM,CACfn3B,OAAQi5B,EACRN,aAEJ,G,CAWO,2BAAOO,CAIZC,GAMA,OAAO,IAAIhC,EAAKvkB,OAAAwmB,OAAAxmB,OAAAwmB,OAAC,CAAC,EACbD,GAAoB,CACvBn5B,OAAQ,CACN,CACE42B,YAAauC,EAAqBvC,YAClCC,aAAcsC,EAAqBtC,aACnCl2B,MAAOw4B,EAAqBx4B,UAIpC,CAWO,6CAAO04B,CAIZF,GAQA,OAAO,IAAIhC,EAAMgC,EACnB,CAOAr1B,WAAAA,CAAApc,GAUC,IAVmB,OAClBsY,EAAM,UACN24B,GAQDjxC,EACC,MAAM2vC,EAAgBr3B,EAAO,GAAG42B,YAAYlF,SACtC8F,EAAiBx3B,EAAO,GAAG62B,aAAanF,UAC9C4D,EAAAA,EAAAA,GACEt1B,EAAOs5B,OAAMpxC,IAAA,IAAC,MAAEyY,GAAOzY,EAAA,OAAKmvC,EAAcnF,QAAQP,OAAOhxB,EAAM3d,MAAMkvC,QAAQ,IAC7E,yBAEFoD,EAAAA,EAAAA,GACEt1B,EAAOs5B,OAAMnuC,IAAA,IAAC,MAAEwV,GAAOxV,EAAA,OAAKqsC,EAAetF,QAAQP,OAAOhxB,EAAMk1B,OAAO3D,QAAQ,IAC/E,yBAGF,MAAMqH,EAAWv5B,EAAOthB,KAAI6L,IAAA,IAAC,MAAEoW,GAAOpW,EAAA,OAAKoW,EAAMgmB,MAAMn0C,MAAM,IAAE88B,QAAO,CAAC0nB,EAAOC,IAAQD,EAAQC,GAAK,GAC7FuC,EAAiB,IAAIr5C,IAC3B,IAAK,MAAM,MAAEwgB,KAAWX,EACtB,IAAK,MAAMwnB,KAAQ7mB,EAAMgmB,MACvB6S,EAAe5H,IAAI8B,EAAAA,EAAK+F,WAAWjS,EAAKxzC,OAAQwzC,EAAKvzC,OAAQuzC,EAAKr5C,OAItEmnD,EAAAA,EAAAA,GAAUiE,IAAaC,EAAe99C,KAAM,oBAE5CuoB,KAAK8yB,MAAQ/2B,EACbiE,KAAK00B,UAAYA,CACnB,CAOOe,gBAAAA,CAAiBC,GAAyD,IAA7BlB,EAAShzB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAGxB,KAAK4yB,aAEnE,IADAvB,EAAAA,EAAAA,IAAWqE,EAAkBzC,SAAS0C,EAAAA,IAAO,sBACzC31B,KAAK00B,YAAcL,EAAAA,GAAUI,aAC/B,OAAOD,EAEP,MAAMoB,EAA4B,IAAIC,EAAAA,EAASC,EAAAA,IAC5CnI,IAAI+H,GACJK,SACAzD,SAASkC,EAAUb,UAAUA,SAChC,OAAO5G,EAAAA,EAAeC,cAAcwH,EAAU/G,SAAUmI,EAE5D,CAOOI,eAAAA,CAAgBN,GAAuD,IAA3BvB,EAAQ3yB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAGxB,KAAK2yB,YAEjE,IADAtB,EAAAA,EAAAA,IAAWqE,EAAkBzC,SAAS0C,EAAAA,IAAO,sBACzC31B,KAAK00B,YAAcL,EAAAA,GAAUC,YAC/B,OAAOH,EAEP,MAAM8B,EAA2B,IAAIJ,EAAAA,EAASC,EAAAA,IAAKnI,IAAI+H,GAAmBpD,SAAS6B,EAASR,UAAUA,SACtG,OAAO5G,EAAAA,EAAeC,cAAcmH,EAAS1G,SAAUwI,EAE3D,CAOOC,mBAAAA,CAAoBR,GACzB,OAAO,IAAInD,EAAAA,EACTvyB,KAAK2yB,YAAYlF,SACjBztB,KAAK4yB,aAAanF,SAClBztB,KAAKg2B,gBAAgBN,GAAmB/B,SACxC3zB,KAAKy1B,iBAAiBC,GAAmB/B,SAE7C,CAiBO,uBAAawC,CAAgBC,EAAAC,EAAAC,G,yCAClC5T,EACA6T,EACAC,GAAoB,IACpB,cAAEC,EAAgB,EAAC,QAAEC,EAAU,GAACl1B,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAuB,CAAC,EAExDm1B,EAAAn1B,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAuB,GACvBo1B,EAAAp1B,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAsC+0B,EACtCM,EAAAr1B,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAA8D,GAAE,oBAEhE6vB,EAAAA,EAAAA,GAAU3O,EAAMn0C,OAAS,EAAG,UAC5B8iD,EAAAA,EAAAA,GAAUqF,EAAU,EAAG,aACvBrF,EAAAA,EAAAA,GAAUkF,IAAqBK,GAAgBD,EAAapoD,OAAS,EAAG,qBAExE,MAAM4lD,EAAWyC,EAAa3I,QACxB6I,EAAWN,EAAYvI,QAC7B,IAAK,IAAI3M,EAAI,EAAGA,EAAIoB,EAAMn0C,OAAQ+yC,IAAK,CACrC,MAAMiC,EAAOb,EAAMpB,GAEnB,IAAKiC,EAAKxzC,OAAO29C,OAAOyG,EAAS1G,YAAclK,EAAKvzC,OAAO09C,OAAOyG,EAAS1G,UAAW,SAEtF,IAAI+G,EACJ,KACGA,SAAmBjR,EAAKqR,gBAAgBT,EAC3C,CAAE,MAAOlyC,GAEP,GAAIA,EAAM80C,+BACR,SAEF,MAAM90C,CACR,CAEA,GAAIuyC,EAAU/G,SAASuJ,SAAWxC,EAAU/G,SAASC,OAAOoJ,GAC1D7F,EACE4F,QACM3D,EAAMkB,UACV,IAAIzC,EAAM,IAAIgF,EAAcpT,GAAOgT,EAAiB9I,SAAU+I,GAC9DD,EACAlC,EAAAA,GAAUC,aAEZmC,EACA/D,QAEG,GAAIgE,EAAU,GAAKhU,EAAMn0C,OAAS,EAAG,CAC1C,MAAM0oD,EAAyBvU,EAAMzjB,MAAM,EAAGqiB,GAAGjlC,OAAOqmC,EAAMzjB,MAAMqiB,EAAI,EAAGoB,EAAMn0C,eAG3E2kD,EAAMiD,iBACVc,EACAV,EACAC,EACA,CACEC,gBACAC,QAASA,EAAU,GAErB,IAAIC,EAAcpT,GAClBiR,EACAqC,EAEJ,CACF,CAEA,OAAOA,CACT,CAvDkE,EAuDjE,G,CAkBM,wBAAaK,CAAiBd,EAAAe,EAAAC,G,yCACnC1U,EACA2U,EACAC,GAA0C,IAC1C,cAAEb,EAAgB,EAAC,QAAEC,EAAU,GAACl1B,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAuB,CAAC,EAExDm1B,EAAAn1B,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAuB,GACvB+1B,EAAA/1B,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAuC81B,EACvCT,EAAAr1B,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAA+D,GAAE,oBAEjE6vB,EAAAA,EAAAA,GAAU3O,EAAMn0C,OAAS,EAAG,UAC5B8iD,EAAAA,EAAAA,GAAUqF,EAAU,EAAG,aACvBrF,EAAAA,EAAAA,GAAUiG,IAAsBC,GAAiBZ,EAAapoD,OAAS,EAAG,qBAE1E,MAAMimD,EAAY+C,EAActJ,QAC1BuJ,EAAUH,EAAWpJ,QAC3B,IAAK,IAAI3M,EAAI,EAAGA,EAAIoB,EAAMn0C,OAAQ+yC,IAAK,CACrC,MAAMiC,EAAOb,EAAMpB,GAEnB,IAAKiC,EAAKxzC,OAAO29C,OAAO8G,EAAU/G,YAAclK,EAAKvzC,OAAO09C,OAAO8G,EAAU/G,UAAW,SAExF,IAAI0G,EACJ,KACGA,SAAkB5Q,EAAKuR,eAAeN,EACzC,CAAE,MAAOvyC,GAEP,GAAIA,EAAMw1C,4BACR,SAEF,MAAMx1C,CACR,CAEA,GAAIkyC,EAAS1G,SAASC,OAAO8J,GAC3BvG,EACE4F,QACM3D,EAAMkB,UACV,IAAIzC,EAAM,CAACpO,KAASoT,GAAeU,EAAYC,EAAkB7J,UACjE6J,EACAjD,EAAAA,GAAUI,cAEZgC,EACA/D,QAEG,GAAIgE,EAAU,GAAKhU,EAAMn0C,OAAS,EAAG,CAC1C,MAAM0oD,EAAyBvU,EAAMzjB,MAAM,EAAGqiB,GAAGjlC,OAAOqmC,EAAMzjB,MAAMqiB,EAAI,EAAGoB,EAAMn0C,eAG3E2kD,EAAMgE,kBACVD,EACAI,EACAC,EACA,CACEb,gBACAC,QAASA,EAAU,GAErB,CAACnT,KAASoT,GACVxC,EACA0C,EAEJ,CACF,CAEA,OAAOA,CACT,CAvDmE,EAuDlE,G,iGC/nBI,SAAS/G,EAAauH,EAA+Bb,GAC1D,MAAMkB,GCHmC5rC,EDGkBurC,ECHStrC,EDGGyqC,GCFhErhD,EAAAA,EAAAA,UAAQ,IACN2W,GAAUC,EACb,CAAC,CAACD,EAAQC,IACPvP,QAAQmpC,GAAWj/B,QAAQi/B,EAAO,IAAMA,EAAO,MAC/CnpC,QAAOtW,IAAA,IAAEyxD,EAAIC,GAAG1xD,EAAA,OAAKyxD,EAAG/sD,UAAYgtD,EAAGhtD,OAAO,IACjD,IACH,CAACkhB,EAAQC,KAPP,IAAoCD,EAA2BC,EDKpE,MAAM8rC,GAAkE1iD,EAAAA,EAAAA,UAAQ,IACvEuiD,EAAwBrsB,QAC7B,CAACysB,EAAI5xD,KAAwB,IAArB4lB,EAAQC,GAAO7lB,EACrB,OAAO4xD,EAAKz7C,OAAO,CAEjB,CAACyP,EAAQC,EAAQ+uB,EAAAA,GAAUE,SAE3B,GAEJ,KAED,CAAC0c,IAEEhV,GAAQN,EAAAA,EAAAA,IAASyV,GAEvB,OAAO1iD,EAAAA,EAAAA,UAAQ,KACN,CACLutC,MAAOA,EACJlmC,QAAQu7C,IACCA,EAAM,KAAO5I,EAAAA,EAAUI,QAAUwI,EAAM,KAAO5I,EAAAA,EAAUK,YAA2B,OAAbuI,EAAM,KAErFt9C,KAAIF,IAAA,IAAE,CAAEgpC,GAAKhpC,EAAA,OAAKgpC,CAAI,IACzBhuC,QAASmtC,EAAMzY,MAAKxmB,IAAA,IAAEkK,GAAMlK,EAAA,OAAKkK,IAAUwhC,EAAAA,EAAUE,OAAO,IAC5D1sC,SAAU+/B,EAAMzY,MAAKhmB,IAAA,IAAE0J,GAAM1J,EAAA,OAAK0J,IAAUwhC,EAAAA,EAAUK,SAAS,IAC/DwI,cAAetV,EAAM/lC,MAAMo7C,GAAUA,EAAM,KAAO5I,EAAAA,EAAUG,gBAE7D,CAAC5M,GACN,CEtBO,SAASuV,EACdZ,EACAb,EACA9T,EACAwV,EACAC,GAGC,IAFDC,EAAsB52B,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG61B,EACzBX,EAAOl1B,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,EAEV,MAAMg2B,EAAoB,OAAVH,QAAU,IAAVA,OAAU,EAAVA,EAAYpJ,QACtB6I,EAAsB,OAAXN,QAAW,IAAXA,OAAW,EAAXA,EAAavI,QAE9B,IAAKuJ,IAAYV,EAAU,MAAM,IAAIzmD,MAAM,4BAE3C,IAAK,MAAMkzC,KAAQb,EAAO,CACxB,IAAKa,IAASA,EAAKwO,cAAcyF,IAAYU,EAAYv7C,MAAM07C,IAAaC,OAtB5DC,EAsBuEhV,MAtB1DiV,EAsBgEH,IAnB5FE,EAAMxoD,OAAO29C,OAAO8K,EAAMzoD,SAAWwoD,EAAMvoD,OAAO09C,OAAO8K,EAAMxoD,SAAWuoD,EAAMruD,MAAQsuD,EAAMtuD,IAHnG,IAAoBquD,EAAaC,CAsByE,IAAG,SAEzG,MAAMC,EAAclV,EAAKxzC,OAAO29C,OAAO8J,GAAWjU,EAAKvzC,OAASuzC,EAAKxzC,OACjE0oD,EAAY/K,OAAOoJ,GACrBqB,EAASp7C,KAAK,IAAI40C,EAAM,IAAIuG,EAAa3U,GAAO6U,EAAiB5B,IACxDE,EAAU,GACnBuB,EAAiBQ,EAAajC,EAAa9T,EAAO,IAAIwV,EAAa3U,GAAO4U,EAAUC,EAAiB1B,EAAU,EAEnH,CAEA,OAAOyB,CACT,CAEO,SAASO,EAAarB,EAA+Bb,GAC1D,MAAM,MAAE9T,EAAOntC,QAASojD,EAAY,QAAEh2C,EAAO,YAAEq1C,GAAgBlI,EAAauH,EAAYb,GAElFoC,GAAgBC,EAAAA,EAAAA,MAEtB,OAAO1jD,EAAAA,EAAAA,UAAQ,KACb,GAAIwjD,IAAiBjW,IAAU2U,IAAeb,EAAa,MAAO,CAAEjhD,SAAS,EAAMwmB,OAAQ,GAAIpZ,SAAS,GAExG,MAAO,CAAEpN,SAAS,EAAOwmB,OADVk8B,EAAiBZ,EAAYb,EAAa9T,EAAO,GAAI,GAAI2U,EAAYuB,EAAgB,EAAI,GACvEj2C,UAASq1C,cAAa,GACtD,CAACX,EAAYb,EAAa9T,EAAOiW,EAAcC,EAAej2C,EAASq1C,GAC5E,CCzCO,IAAKc,EAAU,SAAVA,GAAU,OAAVA,EAAU,kBAAVA,EAAU,kBAAVA,EAAU,gCAAVA,EAAU,cAAVA,EAAU,kBAAVA,EAAU,sBAAVA,CAAU,MASf,SAASC,EACdC,EACAP,EACAQ,GAEA,MAAMC,EAAkBD,GAGlB,OAAEl9B,EAAQxmB,QAAS4jD,EAAa,QAAEx2C,EAAO,YAAEq1C,GAAgBU,EAAaM,EAAYP,GAEpFW,EAAaJ,GAAcP,EAAcO,EAAW9K,YAAYuK,QAAeziD,EAE/EutC,GAAOpuC,EAAAA,EAAAA,UAAQ,KAAO,IAADkkD,EACzB,GAAKt9B,EACL,OAAgB,QAAhBs9B,EAAOt9B,EAAO,UAAE,IAAAs9B,OAAA,EAATA,EAAW3W,MAAM,EAAE,GACzB,CAAC3mB,IAEEu9B,GAASnkD,EAAAA,EAAAA,UAAQ,KACrB,IAAK+jD,QAAkCljD,IAAfojD,EAA0B,OAElD,MAAM18B,EAAQX,EACX2sB,MAAK,CAACM,EAAGC,IACJD,EAAEmJ,SAASoH,YAAYtQ,EAAEkJ,WAAmB,EAC5CnJ,EAAEmJ,SAASc,SAAShK,EAAEkJ,UAAkB,EACrC,IAER13C,KAAKiiB,IAAW,IAAD88B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACd,MAAO,CACLvW,KAAoB,QAAhBiW,EAAE98B,EAAMgmB,MAAM,UAAE,IAAA8W,OAAA,EAAdA,EAAgBh4C,GACtBg2C,QAAoB,QAAbiC,EAAE/8B,EAAM3d,aAAK,IAAA06C,GAAS,QAATC,EAAXD,EAAaxL,eAAO,IAAAyL,OAAT,EAAXA,EAAsB9uD,QAC/BksD,SAAsB,QAAd6C,EAAEj9B,EAAMk1B,cAAM,IAAA+H,GAAS,QAATC,EAAZD,EAAc1L,eAAO,IAAA2L,OAAT,EAAZA,EAAuBhvD,QACjCupD,SAAU+E,GAAkBxJ,EAAAA,EAAAA,IAAe90B,EAAAA,EAAAA,GAAkBs+B,EAA4B,QAAbW,EAAEn9B,EAAM3d,aAAK,IAAA86C,OAAA,EAAXA,EAAa3jD,WAAa,IACxG83C,UAAyB,QAAhB8L,EAAEp9B,EAAMgmB,MAAM,UAAE,IAAAoX,OAAA,EAAdA,EAAgB5vD,IAC5B,IAGL,OAAKwyB,EAAM,GAEJjS,KAAKC,UAAU,CACpBvC,OAAQuU,EAAM,GAAG6mB,KACjB4Q,SAAUz3B,EAAM,GAAGy3B,SACnBiF,oBALF,CAME,GACD,CAACr9B,EAAQm9B,IAENroD,GAAYkpD,EAAAA,EAAAA,IAAyB,OAAJxW,QAAI,IAAJA,OAAI,EAAJA,EAAM/hC,KAErCjM,QAASykD,EAAmB1kD,OAAQ2kD,IAAmBC,EAAAA,EAAAA,IAAmBZ,GAE5Ea,GAAgBhlD,EAAAA,EAAAA,UAAQ,IACxB8kD,EACK,CAAC,CAAEzF,UAAW,KAAK,IAAIz7C,EAAAA,EAAUizC,OAAOiO,IAAiB9jD,SAAS,QAEpE,IACN,CAAC8jD,EAAgBD,IAEpB,OAAO7kD,EAAAA,EAAAA,UAAQ,KACb,IACG6jD,IACAP,GACDO,EAAWtL,OAAO+K,KACjBS,GACD,IAAIngD,EAAAA,EAAUmgD,GAAiBpM,UAAU,GAEzC,MAAO,CACLn/B,MAAOmrC,EAAW1J,QAClBgL,MAAO,KACP7W,OACAxnB,SACAi8B,eAIJ,GAAImB,GAAiBa,EACnB,MAAO,CACLrsC,MAAOmrC,EAAWzJ,QAClB+K,MAAO,KACP7W,OACAxnB,SACAi8B,eAIJ,MAAM,UAAEqC,EAAS,UAAE7F,GAAc2F,EAAc9uB,QAC7C,CAACivB,EAAgFp0D,EAAiBo7C,KAAO,IAAtB,UAAEkT,GAAWtuD,EAC9F,OAAKsuD,IAEyB,OAA1B8F,EAAY9F,WAMZ,IAAIz7C,EAAAA,EAAUuhD,EAAY9F,WAAW7K,WAAW6K,IAL3C,CACL6F,UAAWt+B,EAAOulB,GAClBkT,aALmB8F,CAeL,GAEpB,CACED,UAAW,KACX7F,UAAW,OAIT7B,GAAc4H,EAAAA,EAAAA,IAAerB,EAAiBF,GAEpD,OAAKqB,GAAc7F,GAAc7B,EAU1B,CACLhlC,MAAOhL,EAAUm2C,EAAW0B,MAAQ1B,EAAWtJ,UAC/C3+C,YACAupD,MAAOlH,EAAM+B,qBAAqB,CAChCv4B,MAAO29B,EACP3F,UAAWL,EAAAA,EAAUC,YACrB3B,cACAC,aAAc7F,EAAAA,EAAeC,cAAcyL,EAAajE,EAAUr+C,cAEpEotC,OACAxnB,SACAi8B,eApBO,CACLrqC,MAAOmrC,EAAW2B,eAClBL,MAAO,KACP7W,OACAxnB,SACAi8B,cAgBH,GACA,CACDgB,EACAP,EACAS,EACAiB,EACAp+B,EACAo9B,EACAtoD,EACA8R,EACA4gC,EACAyU,GAEJ,C,4FC9JOzoD,eAAe4gB,EAAmB/gB,EAAoBwF,GAC3D,OAAO2rC,EAAAA,EAAAA,gBACQma,EAAAA,EAAAA,IAAStrD,IAAaurD,8BAA8Bn0D,EAAAA,UAAU2kB,SAASvW,KACpF6rC,IACJ,C,0XCkBO,SAASma,EAAwBC,GACtC,MAAMC,GARCptC,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM+yB,KAAKqa,WAStCztC,GAAWC,EAAAA,EAAAA,MAEXytC,GAAsB9gD,EAAAA,EAAAA,cAC1BhU,IAA2C,IAA1C,UAAE+0D,GAAkC/0D,EACnConB,GAAS4tC,EAAAA,EAAAA,IAAe,CAAEL,UAASI,cAAa,GAElD,CAACJ,EAASvtC,IAGZ,OAAOnY,EAAAA,EAAAA,UAAQ,IAAM,CAAC2lD,EAAaD,GAAUG,IAAsB,CAACH,EAASG,EAAqBF,GACpG,CClCA,IAAIK,EAAiB,EAEd,SAASC,EAAqB1vB,EAAax7B,EAAamrD,EAAgBxX,EAAkByX,GAAuB,IAADC,EACrH,MAAMC,EAAgC,QDJVX,ECIM3qD,EAAjBqrD,GDHV7tC,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM+yB,KAAK8a,cAAaX,UCGnB,IAAAU,EAAAA,EAAI,CAAC,EDJtC,IAAuBV,ECM5B,MAAMY,EDFD,WACL,MAAMnuC,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACL,CAAC2gD,EAAiBvlD,KAChBgY,GAASmuC,EAAAA,EAAAA,IAAiB,CAAEZ,UAASvlD,WAAU,GAEjD,CAACgY,GAEL,CCP2BouC,IAElBnmD,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,IAChCmgD,EAAcC,GAAsBhB,EAAwB1qD,GAsBnE,OApBAkG,EAAAA,EAAAA,YAAU,KACR,GAAIs1B,IAAgB,IAAV2vB,EAAiB,CACzBx6C,GAAW,GAEXs6C,IACA,MAAM79C,EAAQ69C,EAEdS,EAAmB,CAAEX,UAAW39C,IAEhCouB,IAAKwjB,MAAM55C,IACT,MAAMumD,EDFP,SAAsB3rD,GAC3B,OAAO4rD,EAAAA,EAAMC,WAAWrb,KAAKqa,SAAS7qD,EACxC,CCA2B8rD,CAAa9rD,GAE5B2rD,IAAev+C,IACjBm+C,EAAiBvrD,EAAK,IAAKsrD,EAAa,CAACl+C,GAAQhI,IACjDuL,GAAW,GACb,GAEJ,IACC,CAAC6qB,EAAI2vB,EAAOxX,KAER1uC,EAAAA,EAAAA,UAAQ,KAKN,CACLG,OAJAkmD,EAAYG,GAAgBH,EAAYG,GAAgBL,EAAaE,EAAYG,EAAe,QAAK3lD,EAKrGT,aAED,CAACimD,EAAajmD,EAASomD,GAC5B,C,eCtBOpsD,eAAekC,EAAQ1B,EAAgBC,GAAoD,IAApC9F,EAAcs3B,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAGsZ,EAAAA,GAAUE,OACvF,MAAMihB,GAAcC,EAAAA,EAAAA,IAAUnsD,EAAQC,GAEtC,aAAao+C,EAAAA,EAAAA,IAAY,CACvBlkD,IAAK8vC,OAAO9vC,GACZ6F,QAAQosD,EAAAA,EAAAA,IAAiBF,EAAYlsD,QACrCC,QAAQmsD,EAAAA,EAAAA,IAAiBF,EAAYjsD,SAEzC,CAEOT,eAAey/C,EAAoBj/C,EAAgBC,GAAoD,IAApC9F,EAAcs3B,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAGsZ,EAAAA,GAAUE,OACnG,MAAMihB,GAAcC,EAAAA,EAAAA,IAAUnsD,EAAQC,GAEtC,OAAOuwC,EAAAA,EAAAA,gBAEGruC,EAAAA,EAAAA,MACNT,QAAQ,CACRvH,IAAK8vC,OAAO9vC,GACZ6F,QAAQosD,EAAAA,EAAAA,IAAiBF,EAAYlsD,QACrCC,QAAQmsD,EAAAA,EAAAA,IAAiBF,EAAYjsD,WAEvCywC,IACJ,CAUOlxC,eAAe0B,EAAU/K,GAAiE,IAAhE,OAAE6J,EAAM,OAAEC,EAAM,IAAE9F,EAAG,aAAE4F,EAAY,OAAEssD,GAAwBl2D,EACxFm2D,EAAUtsD,EACVusD,EAAUtsD,EAOd,OALIqsD,EAAUC,IACZD,EAAUrsD,EACVssD,EAAUvsD,SAGCwsD,EAAAA,EAAAA,IAAe,CAC1BryD,IAAK8vC,OAAO9vC,GACZ6F,QAAQosD,EAAAA,EAAAA,IAAiBE,GACzBrsD,QAAQmsD,EAAAA,EAAAA,IAAiBG,GACzBxsD,eACAssD,QAAQ5b,EAAAA,EAAAA,GAAkB4b,IAE9B,CA4BO,SAASI,EAAyBr0C,EAAuB+hC,GAC9D,OAAOrJ,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY3K,UACV,KAAIyR,EAAAA,EAAAA,GAAWmH,MAAWnH,EAAAA,EAAAA,GAAWkpC,GACrC,aA5BC36C,eAAwC4Y,EAAgB+hC,GAC7D,MAAM3G,QAAa8K,EAAAA,EAAAA,IAAoBlmC,GACjC9J,QAAiB+rC,EAAAA,EAAAA,IAAgBjiC,EAAQ6xB,OAAOkQ,IAEtD,GAAI3G,GAAQllC,EACV,MAAO,CACLgoC,UAAWhoC,EAASgoC,UACpBC,UAAWjoC,EAASioC,UACpBF,UAAW/nC,EAAS+nC,UACpBwK,YAAavyC,EAASuyC,YACtBC,YAAaxyC,EAASwyC,YACtB4L,yBAA0Bp+C,EAASo+C,yBACnCC,yBAA0Br+C,EAASq+C,yBACnCp/C,MAAO+1B,OAAO6W,GACd1oC,GAAI2G,EACJpY,OAAQwzC,EAAKxzC,OAAOnF,QACpBoF,OAAQuzC,EAAKvzC,OAAOpF,QACpBV,IAAKq5C,EAAKr5C,IAAIiM,WAKpB,CAMmBwmD,CAAyBx0C,EAAQ+hC,EAAW,GACxD,CAAC/hC,EAAQ+hC,IAEhB,CAEO,SAASgQ,EAAmBlyB,GAajC,OAAOozB,GAZMlhD,EAAAA,EAAAA,cAAY3K,UACvB,IAAKy4B,EAAM,OAEX,MAAM40B,EAAQnyC,KAAKQ,MAAM+c,GAEzB,aAAa+rB,EAAAA,EAAAA,IAAM6I,EAAMz0C,OAAQ,CAC/BgsC,SAAUyI,EAAMzI,SAChBiF,WAAYwD,EAAMxD,WAClByD,iBAAkB,KAClB,GACD,CAAC70B,IAE2B,oBAAqBA,EACtD,CAmBOz4B,eAAe48C,EAAkBrjC,EAAkBD,EAAkB3e,GAC1E,MAAMq5C,QAAa9xC,EAAQqX,EAAUD,EAAU3e,GAC/C,OAAW,OAAJq5C,QAAI,IAAJA,OAAI,EAAJA,EAAMn0C,WAAW+G,UAC1B,CAiBO5G,eAAeutD,EAAoB30C,GACxC,MAAM7S,QAAeynD,EAAAA,EAAAA,IAAuB50C,GAE5C,GAAI7S,EACF,OAAOA,EAAO+1B,QACZ,CAAC2e,EAAMC,KACE,CACL+S,SAAUhT,EAAKgT,SAAS1V,KAAK2C,EAAK,GAAG+S,SAAS7mD,YAC9C8mD,SAAUjT,EAAKiT,SAAS3V,KAAK2C,EAAK,GAAGgT,SAAS9mD,eAGlD,CAAE6mD,SAAU,IAAIjkD,EAAAA,EAAU,GAAIkkD,SAAU,IAAIlkD,EAAAA,EAAU,IAK5D,CAiBO,SAASmkD,EAAkBtuB,GAChC,MAAOuuB,EAAKC,IAAU5hD,EAAAA,EAAAA,UAAiC,IAkBvD,OAhBApF,EAAAA,EAAAA,YAAU,KACK7G,WACX,MAAM8tD,EAAc,OAAJzuB,QAAI,IAAJA,OAAI,EAAJA,EAAMn0B,KAAIlL,UACxB,GAAKW,EACL,aAAai8C,EAAkBj8C,EAAIH,OAAQG,EAAIF,OAAQE,EAAIhG,IAAI,IAGjE,GAAImzD,GAAaA,EAAQ9uD,OAAQ,CAC/B,MAAM4uD,QAAY/Z,QAAQC,IAAwBga,GAClDD,EAAOD,EACT,GAGFzc,EAAM,GACL,CAAC9R,KAEGz5B,EAAAA,EAAAA,UAAQ,IAAMgoD,GAAK,CAACA,GAC7B,CAOO,SAASG,EAA4B1uB,GAC1C,MAAO+lB,EAAS4I,IAAc/hD,EAAAA,EAAAA,UAAuE,KAC9FjG,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,GAEjC2hD,EAAMD,EAAkBtuB,GAsB9B,OApBAx4B,EAAAA,EAAAA,YAAU,KACK7G,WACX,GAAI4tD,EAAI5uD,OAAQ,CACdsS,GAAW,GACX,MAAMw8C,EAAa,OAAHF,QAAG,IAAHA,OAAG,EAAHA,EAAK1iD,KAAIlL,UACvB,GAAIiS,EAAI,aAAas7C,EAAoBt7C,EACzB,IAGlB,GAAI67C,GAAaA,EAAQ9uD,OAAQ,CAC/B,MAAMivD,QAAgBpa,QAAQC,IAA8Dga,GAC5FE,EAAWC,EACb,CACA38C,GAAW,EACb,GAGF6/B,EAAM,GACL,CAACyc,KAEGhoD,EAAAA,EAAAA,UAAQ,MAASG,OAAQq/C,EAASp/C,aAAY,CAACo/C,EAASp/C,GACjE,CAQO,SAASkoD,EAAwB7oD,EAA+B4tC,EAAgBC,GACrF,MAAQntC,OAAQooD,IAAeC,EAAAA,EAAAA,IAAsB/oD,GAE/CgpD,GAAYzoD,EAAAA,EAAAA,UAAQ,KACxB,GAAKuoD,EACL,OAAOA,EAAWA,EAAWnvD,OAAS,EAAE,GACvC,CAACmvD,IAEJ,OAAO7c,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY3K,UACV,IAAKqF,KAAcguC,EAAAA,EAAAA,GAAoBJ,EAAQC,GAAQ,OAEvD,MAAMib,QAAmBG,EAAAA,EAAAA,IAAsBjpD,GAE/C,IAAK8oD,GAAoC,IAAtBA,EAAWnvD,OAAc,OAE5C,MAAMqvD,EAAYF,EAAWA,EAAWnvD,OAAS,GAEjD,OAAOgyC,EAAAA,EAAAA,gBACQud,EAAAA,EAAAA,IAAYF,IAAYG,IAAInpD,EAAWolC,OAAOwI,GAASxI,OAAOyI,GAAQ,KACnFhC,IAAI,GACL,CAAC7rC,EAAW4tC,EAAQC,EAAOmb,IAElC,CAUO,SAAS7D,EAAqB3qD,GACnC,MAAOyB,EAAWgB,IAAgB2J,EAAAA,EAAAA,WAAS,GAY3C,OAVApF,EAAAA,EAAAA,YAAU,KACK7G,WACX,IAAKH,EAAY,OACjB,MAAMyB,QAdLtB,eAAoCH,GACzC,MAAMkG,GAASirC,EAAAA,EAAAA,gBACAma,EAAAA,EAAAA,IAAStrD,IAAakC,wBACnCmvC,KAEF,OAAa,OAANnrC,QAAM,IAANA,OAAM,EAANA,EAAQzE,SACjB,CAQ8BmtD,CAAqB5uD,GAC7CyC,IAAehB,EAAU,EAG3B6vC,EAAM,GACL,CAACtxC,KAEG+F,EAAAA,EAAAA,UAAQ,IAAMtE,GAAW,CAACA,GACnC,C,i4NC1ROtB,eAAeorB,EAAaz0B,GASX,IATY,WAClCkJ,EAAU,GACVoZ,EAAE,OACFze,EAAM,KACN8wB,EAAI,WACJxyB,EAAU,KACVolC,EAAI,IACJvjC,EAAG,SACHgM,GACmBhQ,EACfoP,EAA+B,CAAEmrC,UAAMzqC,EAAWgS,QAAS,GAAI0S,OAAQ0d,EAAAA,EAAamU,OAGtFj3C,EADElG,IAAemK,EAAAA,GAAI3O,cACNqzD,EAAAA,EAAWC,SAAS,CACjC9uD,aACAH,UAAU,EACVqqD,OAAQ,CACNz+B,MAAMrkB,EAAAA,EAAAA,GAAiBqkB,GAAQ,CAAEjmB,UAAWpO,EAAAA,UAAU2kB,SAAS0P,IAAU,CAAEjwB,QAASiwB,GACpFrS,IAAIhS,EAAAA,EAAAA,GAAiBgS,GAAM,CAAE5T,UAAWpO,EAAAA,UAAU2kB,SAAS3C,IAAQ,CAAE5d,QAAS4d,GAC9Eze,OAAQiwC,OAAOjwC,EAAOoM,YACtB9N,aACAolC,gBAIW0wB,EAAAA,GAAaD,SAAS,CACnCjvD,UAAU,EACVG,aACAkqD,OAAQ,CACNz+B,MAAMrkB,EAAAA,EAAAA,GAAiBqkB,GAAQ,CAAEjmB,UAAWpO,EAAAA,UAAU2kB,SAAS0P,IAAU,CAAEjwB,QAASiwB,GACpFrS,IAAIhS,EAAAA,EAAAA,GAAiBgS,GAAM,CAAE5T,UAAWpO,EAAAA,UAAU2kB,SAAS3C,IAAQ,CAAE5d,QAAS4d,GAC9Eze,OAAQiwC,OAAOjwC,EAAOoM,YACtB9N,aACAolC,OACAvjC,SAAa8L,IAAR9L,EAAoB8vC,OAAO9vC,QAAO8L,KAK7C,MAAM,KAAEyqC,EAAI,QAAEz4B,EAAO,OAAE0S,GAAWplB,EAElC,IAAI8oD,EAAcp2C,EAElB,GAAIo2C,EAAY9nD,SAAS,qBAAsB,CAC7C,MAAM/J,EAAU6xD,EAAY11C,QAAQ,MAAO,IAEvCnc,IACF6xD,EAAc,sBAAsBloD,GAAWD,EAAAA,EAAAA,GAAiB1J,EAAS2J,GAAUskB,WAAajuB,IAEpG,CAEA,MAAO,CACLmuB,SACA1S,QAASo2C,EACT3d,OAEJ,CAkCO,SAAS4d,EAAejvD,EAAgCy0C,GAC7D,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY3K,UACV,GAAKH,EACL,aATCG,eAA8BH,GACnC,GAAKA,EACL,aAAc+uD,EAAAA,GAAaG,OAAO,CAAElvD,gBAAeqxC,IACrD,CAMmB8d,CAAenvD,EAAW,GACtC,CAACA,IACJy0C,EAEJ,CAEOt0C,eAAeivD,EAAiBpvD,GACrC,OAAO+uD,EAAAA,GAAa/gB,SAAS,CAAEhuC,cACjC,CAWOG,eAAekvD,EAAarvD,GACjC,GAAKA,EAEL,OAAOg0C,QAAQC,IAAI,CAACmb,EAAiBpvD,KAAc8/C,MAAK30C,IAAe,IAADmkD,EAAA,IAAZppD,GAAOiF,EAC/D,IAAKjF,EAAQ,OAEb,MAAM8nC,EAAW9nC,EAAOmrC,KAExB,IAAKrD,QAAkCpnC,IAAtBonC,EAASlnC,eAA2CF,IAAjBonC,EAASlzC,UAAyC8L,IAApBonC,EAAS3mC,OACzF,OAIF,MAAO,CACLe,MAHY4lC,EAAS5lC,MAA0B,KAAlB4lC,EAAS5lC,KAAc4lC,EAAS5lC,KAAO,OAGrDmnD,EACf7kC,SAAUsjB,EAASlzC,IACnBgM,SAAUknC,EAASlnC,SACnBS,KAAMymC,EAASzmC,KACfF,OAAQ2mC,EAAS3mC,OACjBrH,aACA+tC,aAA0C,QAA9BuhB,GAAE39C,EAAAA,EAAAA,IAAiB3R,UAAW,IAAAsvD,EAAAA,EAAIrjC,EAAAA,EAAeK,MAC7D4hB,YAAatD,OAAO,GACrB,GAEL,C,2RCvJO,SAAS4kB,EACdlnD,EACAmnD,GAEA,MAAMC,GAAe3pD,EAAAA,EAAAA,UAAQ,KAC3B,IAAKuC,IAAYmnD,IAAuBA,EAAmB9f,yBAAyB,GAAI,OAExF,MAAMggB,EAAeF,EAAmB9f,yBAAyB,GAAGpiC,MACjEvH,GAAUA,EAAMyH,mBAAmB1G,aAAeuB,IAGrD,OAAmB,OAAZqnD,QAAY,IAAZA,OAAY,EAAZA,EAAcvf,sBAAsB,GAC1C,CAAC9nC,EAASmnD,IAEb,OAAOG,EAAAA,EAAAA,IAA0BF,EACnC,C,qECwBOvvD,eAAewR,EAAgB7a,GAAyC,IAAxC,WAAEkJ,GAAmClJ,EAC1E,MAAM+4D,QA3CD1vD,eAA+BH,GACpC,IAEE,UADwB8vD,EAAAA,EAAa9hB,SAAS,CAAEhuC,gBAAeqxC,KAClDhqC,OAAQ,CAGnB,mBAF+B0oD,EAAAA,EAAAA,IAAM/vD,IAAagwD,6BAClBziD,MAAMP,GAAiB,WAAXA,EAAEzF,OACpB0kB,EAAAA,EAAeM,MAClCN,EAAAA,EAAeK,KACxB,CACF,CAAE,MAAOzZ,GACPkZ,QAAQlZ,MAAMA,EAChB,CAGF,CA6B8Bo9C,CAAgBjwD,GAC5C,IAAIyJ,EAAAA,EAAAA,GAAYomD,GAAgB,OAAOA,EAEvC,MAAMK,QAnBD/vD,eAAgCH,GACrC,IAEE,UADwBmwD,EAAAA,EAAaniB,SAAS,CAAEhuC,gBAAeqxC,KAClDhqC,OAAQ,OAAO4kB,EAAAA,EAAeC,KAC7C,CAAE,MAAOrZ,GACPkZ,QAAQlZ,MAAMA,EAChB,CAGF,CAU+Bu9C,CAAiBpwD,GAC9C,IAAIyJ,EAAAA,EAAAA,GAAYymD,GAAiB,OAAOA,EAExC,MAAMG,QAjCDlwD,eAA8BH,GACnC,IAEE,UADwBswD,EAAAA,EAAWtiB,SAAS,CAAEhuC,gBAAeqxC,KAChDhqC,OAAQ,OAAO4kB,EAAAA,EAAeI,GAC7C,CAAE,MAAOxZ,GACPkZ,QAAQlZ,MAAMA,EAChB,CAGF,CAwB6B09C,CAAevwD,GAC1C,OAAIyJ,EAAAA,EAAAA,GAAY4mD,GAAsBA,OAAtC,CAGF,C,eClDA,MAAMG,EAAiB,CAACrmD,EAAAA,GAAI3O,QAAS8O,EAAAA,GAAM9O,QAAS6O,EAAAA,GAAO7O,QAAS+O,EAAAA,GAAM/O,SAEnE,SAASkqB,EAAoBpd,GAClC,MAAMmoD,ECPD,SAAuBnoD,GAC5B,MAAMoF,GAAmB6C,EAAAA,EAAAA,GAAkBjI,GAE3C,OAAOvC,EAAAA,EAAAA,UAAQ,MACJ2H,GACR,CAACpF,EAASoF,GACf,CDCqBgjD,CAAcpoD,GAC3BqoD,GAAgBC,EAAAA,EAAAA,IAAiBtoD,GAEvC,OAAOvC,EAAAA,EAAAA,UAAQ,OACT6L,EAAAA,EAAAA,GAAW6+C,KAAe7+C,EAAAA,EAAAA,GAAW++C,KAAkB/+C,EAAAA,EAAAA,GAAWtJ,OAEhD,IAAfmoD,GAAwBE,EAAczpD,SAAS,UAAYspD,EAAetpD,SAASoB,KACzF,CAACA,EAASmoD,EAAYE,GAC3B,CEfO,SAAS5D,EAAiB/mD,GAC/B,MAAM,UAAE6qD,GAAcnE,EAAAA,EAAMC,WAAWmE,WACvC,IAAIvwD,EAAWswD,EAAU7qD,GAGzB,GAFIA,IAAUioC,EAAAA,GAAuBjuC,aAAYO,EAAW0tC,EAAAA,GAAuBF,cAC/E/nC,IAAU+qD,EAAAA,GAAe/wD,aAAYO,EAAWwwD,EAAAA,GAAehjB,eAC9DxtC,EAAU,MAAMU,MAAM,sBAAsB+E,6BACjD,MAAO,CAAExK,QAASwK,EAAOzF,SAAUA,EACrC,C,8HCIOJ,eAAepC,EAASjH,GAAuE,IAAtE,WAAEkJ,EAAU,MAAEhH,EAAK,QAAEk9C,EAAO,WAAE8a,EAAU,SAAEC,GAAyBn6D,EACjG,aACQi4D,EAAAA,GAAahxD,UAAU,CAC3BiC,aACAkqD,OAAQ,CACNhU,QAAS9+C,EAAAA,UAAU2kB,SAASm6B,GAC5Bl9C,OAAOoO,EAAAA,EAAAA,GAAiBpO,GAAS,CAAEwM,UAAWpO,EAAAA,UAAU2kB,SAAS/iB,IAAW,CAAEwC,QAASxC,GACvFg4D,aACA/3D,WAAYg4D,MAGhB5f,IACJ,CAUO,SAAS2M,EAAY7yC,GAA0E,IAAzE,WAAEnL,EAAU,QAAEk2C,EAAO,WAAE8a,EAAU,MAAEh4D,EAAK,SAAEi4D,GAA4B9lD,EACjG,OAAOsmC,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY3K,UACV,GAAK+1C,GAAYl9C,KAAS4Y,EAAAA,EAAAA,GAAW5R,GACrC,aAAajC,EAAU,CACrBm4C,UACA8a,aACAh4D,QACAi4D,WACAjxD,cACA,GACD,CAACk2C,EAAS8a,EAAYh4D,EAAOi4D,EAAUjxD,IAE9C,C,mHCpCOG,eAAei2C,EAAOt/C,GAAkE,IAAjE,WAAEkJ,EAAU,QAAEk2C,EAAO,MAAE78C,EAAK,QAAEqB,EAAO,SAAE6F,GAAuBzJ,EAC1F,IAAK4D,EACH,MAAO,CAAE4wB,OAAQ0d,EAAAA,EAAamU,MAAO9L,UAAMzqC,EAAWgS,QAAS,cAGjE,GAAIrY,EAAU,CAEZ,OADgBwuD,EAAAA,GAAamC,iBAAiB3wD,GAC/B61C,QAAQ,CACrBp2C,aACAH,UAAU,EACVqqD,OAAQ,CACNhU,QAAS9+C,EAAAA,UAAU2kB,SAASm6B,GAC5Bn4C,UAAW6sC,OAAOvxC,GAClBJ,gBAAY2N,EACZlM,YAGN,CAEA,OAAOq0D,EAAAA,GAAa3Y,QAAQ,CAC1Bp2C,aACAH,UAAU,EACVqqD,OAAQ,CACNhU,QAAS9+C,EAAAA,UAAU2kB,SAASm6B,GAC5Bn4C,UAAW6sC,OAAOvxC,GAClBJ,gBAAY2N,EACZlM,YAGN,CAEO,SAASy2D,IACd,OAAOrmD,EAAAA,EAAAA,cAAY3K,UAA2E,IAApE,WAAEH,EAAU,QAAEk2C,EAAO,MAAE78C,EAAK,QAAEqB,EAAO,SAAE6F,GAAuB4K,EACtF,IAAKzQ,EACH,aAAas5C,QAAQod,QAAQ,CAC3B9lC,OAAQ,MACR1S,QAAS,oBAGb,MAAMq9B,QAAuBl4C,EAAAA,EAAAA,GAAU,CACrCiC,aACAhH,MAAO0B,EAAQqM,WACfmvC,YAGF,OAAKD,GAAkBA,IAAmBrL,OAAO,IAAMA,OAAOvxC,GAAS48C,QACxDG,EAAQ,CACnBp2C,aACAk2C,UACA78C,QACAqB,UACA6F,mBAGSyzC,QAAQod,QAAQ,CAC3B9lC,OAAQ,KACR+lB,MAAM,EACNz4B,QAAS,kCACgB,GAC1B,GACL,C,0ECtEO,SAASrI,EAAkBjI,GAChC,MAAQpC,OAAQuG,IAAqBC,EAAAA,EAAAA,KAErC,OAAO3G,EAAAA,EAAAA,UAAQ,KACb,IAAKuC,IAAYmE,EAAkB,OACnC,MAAMa,EAAeb,EAAiBc,MAAMP,GAAMA,EAAEQ,aAAaC,qBAAuBnF,IACxF,OAAmB,OAAZgF,QAAY,IAAZA,OAAY,EAAZA,EAAcE,aAAaE,gBAAgB,GACjD,CAACjB,EAAkBnE,GACxB,C,2JCZO,MAAMzR,EAAaC,IAAmB,IAAlB,IAAEC,GAAUD,EACrC,MAAMu6D,EAAYt6D,EAAIE,QAAQ,CAC5BsI,GAAIxI,EAAI0J,IACRjB,IAAKzI,EAAIE,QAAQ,CACf6G,sBAAuB/G,EAAIQ,KAC3B+5D,oBAAqBv6D,EAAIQ,KACzBg6D,oBAAqBx6D,EAAIQ,KACzBi6D,aAAcz6D,EAAIQ,KAClBk6D,WAAY16D,EAAIQ,KAChBm6D,QAAS36D,EAAIQ,KACbo6D,MAAO56D,EAAI2B,KACXk5D,UAAW76D,EAAIQ,KACfs6D,eAAgB96D,EAAIQ,SAGlBu6D,EAAW/6D,EAAIW,OAAO,CAC1BoD,IAAK/D,EAAI0J,IACTqG,SAAU/P,EAAImC,KACdF,MAAOjC,EAAIK,UACXgR,KAAMrR,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACVw1C,YAAan3C,EAAI0J,IACjB4G,OAAQtQ,EAAI2B,OAERq5D,EAAYh7D,EAAIW,OAAO,CAC3Bs6D,aAAcj7D,EAAIgB,MAClBk6D,WAAYl7D,EAAIgB,MAChBi2C,SAAU8jB,EACVI,YAAan7D,EAAIgB,MACjBo6D,OAAQp7D,EAAIgB,MACZq6D,MAAOr7D,EAAIK,YAEb,OAAOL,EAAI2H,QAAQ,CACjBX,UAAWhH,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAIK,WAAY,CAACL,EAAI0J,KAAM,CAAC,UAChE21C,QAASr/C,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAAC4wD,GAAY,IACzDgB,UAAWt7D,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAI0J,KAAM,IAChD6xD,sBAAuBv7D,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IAC/CqG,SAAU/P,EAAI6H,KAAK,GAAI,CAAC7H,EAAImC,MAAO,CAAC,UACpCq5D,sBAAuBx7D,EAAI6H,KACzB,CAAC7H,EAAIiK,KACL,CAACjK,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAIy7D,MAAMz7D,EAAI0J,IAAK1J,EAAIiK,UAC1F,IAEFyxD,SAAU17D,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACnCiyD,qBAAsB37D,EAAI6H,KAAK,GAAI,CAAC7H,EAAIiK,KAAM,IAC9C2xD,iBAAkB57D,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UAC3CmyD,mBAAoB77D,EAAI6H,KACtB,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAIy7D,MAAMz7D,EAAI0J,IAAK1J,EAAIiK,UAC1F,IAEF6xD,iBAAkB97D,EAAI6H,KAAK,GAAI,CAAC7H,EAAIiK,KAAM,IAC1C8xD,YAAa/7D,EAAI6H,KAAK,GAAI,CAACkzD,GAAW,CAAC,UACvCiB,oBAAqBh8D,EAAI6H,KAAK,GAAI,CAAC7H,EAAIiK,KAAM,IAC7CgyD,gBAAiBj8D,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IACzCwyD,YAAal8D,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACtC4uD,aAAct4D,EAAI6H,KAAK,GAAI,CAACmzD,GAAY,CAAC,UACzCmB,iBAAkBn8D,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAI0J,OAAQ,CAAC,UAC3FyxD,YAAan7D,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IACrC2H,KAAMrR,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAChC6O,KAAMxQ,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAChCy6D,qBAAsBp8D,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IAC9C2yD,OAAQr8D,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,GAAI,CAAC,WACjC4yD,QAASt8D,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,GAAI,CAAC,WACnC46D,iBAAkBv8D,EAAI6H,KAAK,CAAC7H,EAAIiK,KAAM,GAAI,IAC1CuyD,QAASx8D,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,GAAI,CAAC,WACnC86D,SAAUz8D,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,CAAC,WACzCiQ,OAAQtQ,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAClCw1C,YAAan3C,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IACrCquD,SAAU/3D,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAAC4wD,GAAY,IAC1DoC,aAAc18D,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAIK,UAAWL,EAAI0J,KAAM,CAAC4wD,GAAY,KAC7E,EChEEqC,EAAS,8BAETC,EAAMxzD,SACVL,EAAAA,GAAMC,OAAoB,CAAEC,WAAY0zD,EAAQ78D,WAAY+8D,EAAS/zD,aAEjEg0D,EAAsB,CAACH,GAEhBI,EAAwB9zD,GAAuB6zD,EAAoB3sD,SAASlH,G,6HCMlFG,eAAew0C,EAAgB30C,EAAoBtF,EAA6Bq5D,GACrF,GAAID,EAAqB9zD,GAAa,aDLjCG,eAA8BH,EAAoBtF,GACvD,GAAQsF,IACD0zD,EAAL,CACE,IAAIM,EAAAA,EAAAA,GAAYt5D,GACd,OAAOy2C,EAAAA,EAAAA,gBAAkCwiB,KAAOtB,UAAU33D,IAE5D,MAAMuG,MAAM,sBAAsB,CAGlC,MAAMA,MAAM,iBAElB,CCNqDgzD,CAAej0D,EAAYtF,GAI9E,IAFiBiX,EAAAA,EAAAA,IAAiB3R,KAEjBisB,EAAAA,EAAeI,IAAK,CACnC,IAAI7wB,EAAU,GAEd,GAAKu4D,EAQE,CACL,MAAMG,EAAMtf,EAAAA,GAAWuf,UAAUJ,IAE7BK,EAAAA,EAAAA,GAAeF,KACbF,EAAAA,EAAAA,GAAYt5D,KACdc,EAAU64D,EAAAA,GAAkBxf,cAAc,CACxCrvC,UAAW9K,EACXq5D,WAAYG,IACXI,QAGT,MAjBI94D,GADEw4D,EAAAA,EAAAA,GAAYt5D,IACJ65D,EAAAA,EAAAA,GAAmB75D,EAAQqM,aAC5BK,EAAAA,EAAAA,GAAiB1M,IAChB65D,EAAAA,EAAAA,GAAmB75D,GAEnBA,EAed,aAAaq0D,EAAAA,GAAa5xD,QAAQ,CAChC6C,aACAkqD,OAAQ,CACNsK,KAAM,CAAEh5D,WACRwK,MAAO,KAGb,CAEA,OAAIhG,IAAemK,EAAAA,GAAI3O,cACRqzD,EAAAA,EAAW1xD,QAAQ,CAC9B6C,aACAkqD,OAAQ,CACNsK,MAAMR,EAAAA,EAAAA,GAAYt5D,GACd,CAAE8K,UAAW9K,IACb0M,EAAAA,EAAAA,GAAiB1M,GACjB,CAAE8K,UAAWpO,EAAAA,UAAU2kB,SAASrhB,IAChC,CAAEc,QAASd,GACfsL,MAAO,GACP/M,WAAY86D,EAAa,IAAIA,QAAcntD,WAKpCmoD,EAAAA,GAAa5xD,QAAQ,CAChC6C,aACAkqD,OAAQ,CACNsK,MAAMR,EAAAA,EAAAA,GAAYt5D,GACd,CAAE8K,UAAW9K,IACb0M,EAAAA,EAAAA,GAAiB1M,GACjB,CAAE8K,UAAWpO,EAAAA,UAAU2kB,SAASrhB,IAChC,CAAEc,QAASd,GACfsL,MAAO,GACP/M,WAAY86D,EAAa,IAAIA,QAAcntD,IAGjD,CAEO,SAASR,EACdpG,EACAtF,EACAm1C,EACAkkB,GAEA,OAAOU,EAAAA,EAAAA,KACL3pD,EAAAA,EAAAA,cAAY3K,UACV,IAAKzF,IAAYsF,EAAY,OAC7B,MAAMkG,QAAeyuC,EAAgB30C,EAAYtF,EAASq5D,GAC1D,OAAO7tD,IAAUuD,EAAAA,EAAAA,GAAYvD,EAAOmrC,MAAQ,IAAI1nC,EAAAA,EAAUzD,EAAOmrC,KAAKtqC,iBAAcH,CAAS,GAC5F,CAAClM,EAASsF,EAAY+zD,IACzBlkB,EAEJ,CAyDO,SAAS6kB,EACdh6D,EACA2jD,EACAxO,GAEA,MAAM,QAAE1pC,EAAO,OAAED,GAAWE,EAAwB,OAARi4C,QAAQ,IAARA,OAAQ,EAARA,EAAU7iD,QAASd,EAASm1C,GAExE,OAAO9pC,EAAAA,EAAAA,UAAQ,KACT6L,EAAAA,EAAAA,GAAW1L,IAAWC,IAAYk4C,EAC7B,CACLl4C,UACAD,YAAQU,GAGL,CACLT,UACAD,OAAQy3C,EAAAA,EAAeC,cAAcS,EAAUn4C,EAAO8W,cAEvD,CAAC7W,EAASD,EAAQm4C,GACvB,CA+BO,SAAS/N,EACdhoC,EACA9M,EACAq0C,GAEA,MAAO8kB,EAAaC,IAAkBxoD,EAAAA,EAAAA,eAAgCxF,IAEhE,QAAET,EAAO,OAAED,GAAWE,EAAgBkC,EAAS9M,EAASq0C,GAY9D,OAVA7oC,EAAAA,EAAAA,YAAU,MACJyC,EAAAA,EAAAA,GAAYvD,IAIZ0uD,EAHGp5D,EAGY0K,OAFAU,EAInB,GACC,CAACV,EAAQ1K,KAELuK,EAAAA,EAAAA,UAAQ,KACRuC,IAAWsJ,EAAAA,EAAAA,GAAW+iD,IAAgBxuD,GAAW0uD,MAAMF,EAAY33C,YAC/D,CACL7W,UACAD,OAAQyuD,GAAersD,EAAUqsD,OAAc/tD,GAI5C,CACLT,UACAD,OAAQyuD,IAET,CAACxuD,EAASwuD,EAAarsD,GAC5B,C,qaC3KM,MAAOwsD,EAWJ,aAAa/0D,CAAOw2B,G,yCACzB,MAAM,OAAEw+B,EAAM,UAAEC,EAAS,QAAEC,EAAU,GAAa,OAAP1+B,QAAO,IAAPA,EAAAA,EAAW,CAAC,EACjD2+B,OAnEWC,EAAOJ,EAAgBC,EAAmBC,IAAmBG,OAAA,6BAChF,aAAaC,EAAAA,EAAAA,QAAON,EAAQE,EAAS,CACnC55D,QAASA,CAACi6D,EAAUC,EAAYC,EAAYC,KACvB,IAAfF,GACFD,EAASI,kBAAkBV,GAGxBM,EAASK,iBAAiBC,SAASZ,IACtCM,EAASI,kBAAkBV,GAGzBO,EAAaN,GACDQ,EAAYI,YAAYb,GAChC/7B,OACR,IAED68B,OAAOv0D,KAzBZ,SAAkCA,GAEhC,QAAIA,EAAI2F,SAAS,wCAEb3F,EAAI2F,SAAS,uDAEb3F,EAAI2F,SAAS,wDAAjB,CACF,EAoBQ6uD,CAAyBnZ,OAAOr7C,MAClCy0D,EAAAA,EAAAA,UAASjB,GAAQjV,MAAK,KACpB13B,OAAOlF,SAASuxB,QAAQ,GAIZ,GAEpB,IAyCqB0gB,CAAaJ,EAAQC,EAAWC,GACjD,OAAO,IAAIH,EAAUI,EAAIF,EAC3B,G,CAGAvkC,WAAAA,CACUwlC,EACAC,GADA,KAAAD,IAAAA,EACA,KAAAC,WAAAA,CACP,CAQUC,GAAAA,CAAOr1D,EAAkBzH,G,yCACpC,aApDJ,SAA4B67D,EAAcF,EAAmBl0D,EAAkBzH,G,yCAC7E,aAAa67D,EAAGkB,IAAIpB,EAAW37D,EAAOyH,EACxC,G,CAkDiBu1D,CAAazlC,KAAKqlC,IAAKrlC,KAAKslC,WAAYp1D,EAAKzH,EAC5D,G,CAUas1D,GAAAA,CAAO7tD,G,+CAClB,OAA2D,QAApDw1D,QApEX,SAA4BpB,EAAcF,EAAmBl0D,G,yCAC3D,aAAao0D,EAAGvG,IAAIqG,EAAWl0D,EACjC,G,CAkEkBy1D,CAAa3lC,KAAKqlC,IAAKrlC,KAAKslC,WAAYp1D,UAAK,IAAAw1D,EAAAA,EAAI,IACjE,G,CAOaE,MAAAA,CAAO11D,G,yCAClB,aArEJ,SAA4Bo0D,EAAcF,EAAmBl0D,G,yCAC3D,aAAao0D,EAAGuB,OAAOzB,EAAWl0D,EACpC,G,CAmEiB41D,CAAa9lC,KAAKqlC,IAAKrlC,KAAKslC,WAAYp1D,EACvD,G,CAOa61D,MAAAA,G,yCACX,aA1EJ,SAAgCzB,EAAcF,G,yCAC5C,aAAaE,EAAGyB,OAAO3B,EACzB,G,CAwEiB4B,CAAchmC,KAAKqlC,IAAKrlC,KAAKslC,WAC5C,G,iVCvHF,MAAMW,EAAU,ICYV,MAUJpmC,WAAAA,CAAYskC,GAAiD,IAAjC+B,EAAU1kC,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,EAAG4iC,EAAiB5iC,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EANrD,KAAAquD,QAAU,EAOhBrkC,KAAKqkC,QAAU6B,EACflmC,KAAKmkC,OAASA,EACdnkC,KAAKokC,UAAYA,CACnB,CAEA,OAAIiB,GACF,OAAO,IAAIjiB,SAASod,IACdxgC,KAAKmmC,cACP3F,EAAQxgC,KAAKmmC,eAIfjC,EAAU/0D,OAAO,CACfk1D,QAASrkC,KAAKqkC,QACdD,UAAWpkC,KAAKokC,UAChBD,OAAQnkC,KAAKmkC,SACZjV,MAAMoV,IACPtkC,KAAKmmC,cAAgB7B,EACrB9D,EAAQ8D,EAAG,GACX,GAEN,CAEavG,GAAAA,CAAI7tD,G,yCACf,MAAMo0D,QAAWtkC,KAAKqlC,IACtB,aAAaf,EAAGvG,IAAY7tD,EAC9B,G,CAEaq1D,GAAAA,CAAIr1D,EAAazH,G,yCAC5B,MAAM67D,QAAWtkC,KAAKqlC,UAChBf,EAAGiB,IAAIr1D,EAAKzH,EACpB,G,CAEam9D,MAAAA,CAAO11D,G,yCAClB,MAAMo0D,QAAWtkC,KAAKqlC,UAChBf,EAAGsB,OAAO11D,EAClB,G,CAEa61D,MAAAA,G,yCACX,MAAMzB,QAAWtkC,KAAKqlC,IACtB,aAAaf,EAAGyB,QAClB,G,GC3EqB,cACG,GFU0B,UAE7Cx2D,eAAe62D,EAAoB1uD,GACxC,MAAM2uD,QAAoBJ,EAAQlI,IAAI,SAASrmD,KAC/C,GAAI2uD,EAAa,OAAO57C,KAAKQ,MAAMo7C,EAErC,CAEO92D,eAAe+2D,EAAoBn9C,SAClC88C,EAAQV,IAAI,SAASp8C,EAAU/Z,aAAcqb,KAAKC,UAAUvB,GACpE,CAEA,SAASo9C,EAAmBF,GAC1B,QAASA,QAAwCrwD,IAAzBqwD,EAAYnwD,eAAmDF,IAAzBqwD,EAAYvsC,QAC5E,CAEOvqB,eAAei3D,EAAe9uD,GACnC,MAAM2uD,QAAoBD,EAAoB1uD,GAE9C,GAAI6uD,EAAmBF,GACrB,OAAOA,EAGT,MAAMI,QAAsBhI,EAAAA,EAAAA,IAAa/mD,GAEzC,OAAI+uD,SACIH,EAAoB,IACrBG,EACHnpB,YAAa,IACbxjB,SAAU2sC,EAAc3sC,SAAS3jB,aAG5BswD,QAPT,CASF,CAEO,IAAKC,EAAc,SAAdA,GAAc,OAAdA,EAAc,kBAAdA,EAAc,wBAAdA,EAAc,gBAAdA,EAAc,kBAAdA,CAAc,MAOnB,SAASC,EAAcjhB,GAC5B,MAAOkhB,EAAYC,IAAiBrrD,EAAAA,EAAAA,UAAkD,CAAC,IAChFsrD,EAAUC,IAAevrD,EAAAA,EAAAA,UAAoC,CAAC,GAE/DwrD,GAAc7xD,EAAAA,EAAAA,UAAQ,IAAMsV,KAAKC,UAAUg7B,IAAW,CAACA,IAEvDuhB,GAAmB/sD,EAAAA,EAAAA,cAAY3K,UACnC,IAAKmI,EAAS,OAEd,IAAIwvD,EAKJ,GAHIxvD,IAAYyoD,EAAAA,GAAe/wD,aAAY83D,EAAW/G,EAAAA,IAClDzoD,IAAY2lC,EAAAA,GAAuBjuC,aAAY83D,EAAW7pB,EAAAA,IAE1D6pB,EASF,OARAL,GAAerpD,IAAS,IACnBA,EACH,CAAC9F,GAAUwvD,WAEbH,GAAavpD,IAAS,IACjBA,EACH,CAAC9F,IAAU,MAKfqvD,GAAavpD,IAAS,IACjBA,EACH,CAAC9F,IAAU,MAGb,MAAM2uD,QAAoBD,EAAoB1uD,GAE9C,IAAIyvD,GAAwB,EAG5B,IACMZ,EAAmBF,KACrBQ,GAAerpD,IAAS,IACnBA,EACH,CAAC9F,GAAU,CACTf,KAAM0vD,EAAY1vD,KAClBa,KAAM6uD,EAAY7uD,KAClBf,OAAQ4vD,EAAY5vD,OACpBrH,WAAYi3D,EAAYj3D,WACxBkuC,YAAatD,OAAO,GACpBlgB,SAAUusC,EAAYvsC,SAASxjB,SAAS,WACpC0jC,OAAOqsB,EAAYvsC,SAASpR,QAAQ,MAAO,KAC3CsxB,OAAOqsB,EAAYvsC,SAAS3jB,YAChCD,SAAUm9B,OAAOgzB,EAAYnwD,UAC7BinC,aAAckpB,EAAYlpB,kBAI9B4pB,GAAavpD,IAAS,IACjBA,EACH,CAAC9F,IAAU,MAGjB,CAAE,MAAO/G,GACPwqB,QAAQlZ,MAAMtR,GACdw2D,GAAwB,CAC1B,CAEA,IAAKd,IAAgBE,EAAmBF,IAAgBc,EAAuB,CAC7E,MAAMh+C,QAAkBs1C,EAAAA,EAAAA,IAAa/mD,GAErC,GAAIyR,EAAW,OACPm9C,EAAoB,IACrBn9C,EACH2Q,SAAU3Q,EAAU2Q,SAAS3jB,WAC7BmnC,YAAa,MAKf,MAAMyiB,GAAgBh/C,EAAAA,EAAAA,IAAiBoI,EAAU/Z,YAEjDy3D,GAAerpD,IAAS,IACnBA,EACH,CAAC9F,GAAU,IACNyR,EACH2Q,SAAUkgB,OAAO7wB,EAAU2Q,SAAS3jB,YACpCD,SAAUm9B,OAAOlqB,EAAUjT,UAC3BinC,aAA2B,OAAb4iB,QAAa,IAAbA,EAAAA,EAAiB52C,EAAUg0B,iBAG/C,CACF,CAEA4pB,GAAavpD,IAAS,IACjBA,EACH,CAAC9F,IAAU,KACV,GACF,IAqBH,OAnBAtB,EAAAA,EAAAA,YAAU,KACR,IAAIgxD,GAAU,EAad,OAFIA,GATJ73D,iBACE,IACE,MAAM83D,EAAQ3hB,EAASjrC,KAAIlL,eAAyB03D,EAAiBvvD,WAC/D4vD,EAAAA,EAAAA,GAAiBD,EAAO,GAChC,CAAE,MAAOplD,GACPkZ,QAAQlZ,MAAM,+BAAgCA,EAChD,CACF,CAEay+B,GAEN,KACL0mB,GAAU,CAAK,CAChB,GACA,CAACJ,EAAaC,KAEV9xD,EAAAA,EAAAA,UAAQ,IACNuwC,EAASjrC,KAAK/C,IACnB,IAAKA,EAAS,MAAO,CAACgvD,EAAetX,aAASp5C,GAE9C,MAAMmT,EAAYy9C,EAAWlvD,GAG7B,OAFgBovD,EAASpvD,GAEL,CAACgvD,EAAerX,aAASr5C,GACxCmT,EAEE,CAACu9C,EAAenX,OAAQpmC,GAFR,CAACu9C,EAAetX,aAASp5C,EAEP,KAE1C,CAAC4wD,EAAYE,EAAUphB,GAC5B,CAEO,SAAS6hB,EAAa7vD,GAC3B,MAAOiW,EAAOxE,GAAaw9C,EAAc,CAACjvD,IAAU,GAEpD,OAAOvC,EAAAA,EAAAA,UAAQ,IACRgU,EAOE,CACL7T,OAAQ6T,EACR5T,QAASoY,IAAU+4C,EAAerX,SAR3B,CACL/5C,YAAQU,EACRT,QAASoY,IAAU+4C,EAAerX,UAQrC,CAAClmC,EAAWwE,GACjB,C,uEGtMO,SAASrC,EAAgB5T,GAC9B,MAAO,mDAAmDA,GAC5D,CAEO,SAAS4R,EAAa5R,GAC3B,OAAOvC,EAAAA,EAAAA,UAAQ,KACb,GAAKuC,EAEL,MAAO,mDAAmDA,GAAS,GAClE,CAACA,GACN,C,qICHO,IAAK8vD,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,kBAAhBA,EAAgB,cAAhBA,EAAgB,kBAAhBA,CAAgB,MAMrB,SAASnyD,EAASqC,GACvB,MAAQpC,OAAQ6T,EAAW5T,QAASkyD,IAAiBF,EAAAA,EAAAA,IAAa7vD,GAElE,OAAOvC,EAAAA,EAAAA,UAAQ,KAAO,IAADupD,EACnB,OAAKhnD,EACDA,IAAY6B,EAAAA,GAAI3O,QAAgB,CAAC48D,EAAiBhN,MAAOjhD,EAAAA,IACzD7B,IAAYujB,EAAAA,GAAYrwB,QAAgB,CAAC48D,EAAiBhN,MAAOv/B,EAAAA,IAChE9R,EACDs+C,EAAqB,CAACD,EAAiBnY,aAASr5C,GAE7C,CACLwxD,EAAiBhN,MACjB,IAAI9qD,EAAAA,EAAM,CACR9E,QAAS8M,EACTxB,SAAUm9B,OAAOlqB,EAAUjT,UAC3BO,OAAQ0S,EAAU1S,OAClBE,KAAMwS,EAAUxS,KAChBa,KAAM2R,EAAU3R,KAChBsiB,SAAUuZ,OAAOlqB,EAAU2Q,UAC3BnqB,SAAgD,QAAxC+uD,GAAE39C,EAAAA,EAAAA,IAAiBoI,EAAU/Z,mBAAW,IAAAsvD,EAAAA,EAAIrjC,EAAAA,GAAeK,SAZhD,CAAC8rC,EAAiBpY,aAASp5C,GAH7B,CAACwxD,EAAiBpY,aAASp5C,EAiB/C,GACA,CAAC0B,EAASyR,EAAWs+C,GAC1B,CAEO,SAAS7hB,EAAUF,GACxB,MAAMC,GAASghB,EAAAA,EAAAA,IAAcjhB,GAE7B,OAAOvwC,EAAAA,EAAAA,UAAQ,IACNuwC,EAASjrC,KAAI,CAAC/C,EAAS4F,KAAW,IAADoqD,EACtC,MAAO,CAAEv+C,GAAaw8B,EAAOroC,GAE7B,OAAK6L,GAAczR,EAIZ,CACL8vD,EAAiBhN,MACjB,IAAI9qD,EAAAA,EAAM,CACR9E,QAAS8M,EACTxB,SAAUm9B,OAAOlqB,EAAUjT,UAC3BO,OAAQ0S,EAAU1S,OAClBE,KAAMwS,EAAUxS,KAChBa,KAAM2R,EAAU3R,KAChBsiB,SAAUuZ,OAAOlqB,EAAU2Q,UAC3BnqB,SAAgD,QAAxC+3D,GAAE3mD,EAAAA,EAAAA,IAAiBoI,EAAU/Z,mBAAW,IAAAs4D,EAAAA,EAAIrsC,EAAAA,GAAeK,SAZ9D,CAAC8rC,EAAiBpY,aAASp5C,EAcnC,KAEF,CAAC2vC,EAAQD,GACd,C,2FCtDO,MAAMiiB,GAAgBr7C,EAAAA,EAAAA,eAAc,CAAC,GAErC,SAASs7C,IACd,OAAOxuC,EAAAA,EAAAA,YAAWuuC,EACpB,CAEO,SAASE,EAAkB33D,GAChC,MAAM,gBAAE43D,GAAoBF,IAE5B,OAAOzyD,EAAAA,EAAAA,UAAQ,KACb,GAAKjF,EACL,OAAO43D,EAAgB53D,EAAI,GAC1B,CAAC43D,EAAiB53D,GACvB,CAEO,SAAS63D,EAAyB73D,GACvC,MAAM,gBAAE43D,EAAe,mBAAEE,GAAuBJ,IAEhD,OAAOzyD,EAAAA,EAAAA,UAAQ,IACRjF,EAEE,CAAC43D,EAAgB53D,GAAM,IAAM83D,EAAmB93D,IAFtC,MAAC8F,EAAW,IAAMgyD,EAAmB,gBAGrD,CAACF,EAAiB53D,EAAK83D,GAC5B,C,+DC/BO,SAASrmB,EACdjB,GAGC,IAFDunB,EAA8BzmC,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,IAAAA,UAAA,GAC9B0mC,EAAQ1mC,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,IAEX,MAAOif,EAAMqD,IAAWtoC,EAAAA,EAAAA,eAAwBxF,IACzCm3B,EAAMC,IAAW5xB,EAAAA,EAAAA,UAAiB,GAyBzC,OAvBApF,EAAAA,EAAAA,YAAU,MACR7G,iBACE,GAAImxC,EAAM,CACR,MAAMprC,QAAeorC,IACrBoD,EAAQxuC,EACV,CACF,CAEA6yD,EAAO,GACN,CAACh7B,EAAMuT,EAAMunB,KAEhB7xD,EAAAA,EAAAA,YAAU,KACR,MAAMm0B,EAAQ8W,aAAY,KACpBX,GACFtT,GAAS5vB,GAAcA,EAAY,GACrC,GACC0qD,GAEH,MAAO,KACL1mB,cAAcjX,EAAM,CACrB,GACA,CAAC29B,EAAUxnB,KAEPvrC,EAAAA,EAAAA,UAAQ,IAAMsrC,GAAM,CAACA,GAC9B,C,mHC9BO,SAAS2nB,EAAe1iB,GAC7B,MAAQpwC,OAAQ+yD,IAAaC,EAAAA,EAAAA,IAAoB5iB,GAEjD,OAAOvwC,EAAAA,EAAAA,UAAQ,KAAO,IAADozD,EACnB,GAAKF,EACL,OAAyD,QAAzDE,EAAOF,EAAS1rD,MAAMP,GAAqB,gBAAfA,EAAEosD,MAAM,YAAqB,IAAAD,OAAA,EAAlDA,EAAoDxgE,UAAUoO,UAAU,GAC9E,CAACkyD,GACN,CAOO,SAASI,EAAeviE,GAAgD,IAA/C,MAAEkC,EAAK,YAAEsgE,GAAmCxiE,EAC1E,OAAOiP,EAAAA,EAAAA,UAAQ,MACT6L,EAAAA,EAAAA,GAAW5Y,MAAU4Y,EAAAA,EAAAA,GAAW0nD,MAEhClyD,EAAAA,EAAAA,GAAiBpO,GACZA,IAAUsgE,GAGZ/E,EAAAA,EAAAA,GAAmB+E,KAAiBtgE,IAC1C,CAACsgE,EAAatgE,GACnB,C,yGCxBA,IAAIugE,EAAU,EAEP,SAASC,IAEd,OADAD,IACOA,EAAQxyD,UACjB,CAEO,SAAS0yD,IACd,MAAM,KAAEhuD,IAAS+Q,EAAAA,EAAAA,MACXk9C,GAAiBC,EAAAA,EAAAA,MAEvB,OAAO7uD,EAAAA,EAAAA,cACL,CAAC8uD,EAAoC94D,KACnC,IACIS,EADAs5C,EAAO,EAEPod,EAAoC2B,EAExC,MAAMt9B,EAAKn8B,UACJ83D,IAAOA,EAAQ,IACpB,IAAK,IAAI/lB,EAAIr+B,EAAMq+B,EAAI+lB,EAAM94D,OAAQ+yC,IAAK,CACxC2I,EAAO3I,EACPwnB,EAAe54D,EAAK+5C,EAAMt5C,GAE1B,IAAe,UADM02D,EAAM/lB,KAIzB,OAFA3wC,EAAM2wC,EACNwnB,EAAe54D,EAAK+5C,EAAMt5C,IACnB,EAETs5C,EAAO3I,EAAI,EACXwnB,EAAe54D,EAAK+5C,EAAMt5C,EAC5B,CAEA,OAAO,CAAI,EAGPs4D,EAAQA,KACZhf,EAAO,EACPt5C,OAAMqF,CAAS,EAejB,MAAO,CAAE0qC,KAZInxC,UACX05D,IAEApuD,EAAK3K,SAEQw7B,EAAG,IAOHu9B,QAAOC,MAJR35D,UAAa,IAAD45D,EACxB,aAAaz9B,EAAM,QAAJy9B,EAACx4D,SAAG,IAAAw4D,EAAAA,EAAI,EAAE,EAGEC,YAAanf,EAAMof,UAAW14D,EAAK,GAElE,CAACkK,EAAMiuD,GAEX,CAEO,SAASvgD,IACd,MAAM,MAAEqkB,IAAUhhB,EAAAA,EAAAA,MAElB,OAAO1R,EAAAA,EAAAA,cACJhK,IACC08B,EAAM18B,EAAI,GAEZ,CAAC08B,GAEL,C,oLClEO,IAAK7R,EAAY,SAAZA,GAAY,OAAZA,EAAY,aAAZA,EAAY,YAAZA,EAAY,kBAAZA,EAAY,kBAAZA,CAAY,MAOjB,MAAMuuC,EAAmF,CAC9F,CAACvuC,EAAaC,SAAU,UACxB,CAACD,EAAa9Y,OAAQ,QACtB,CAAC8Y,EAAa1C,SAAU,UACxB,CAAC0C,EAAaxlB,SAAU,WAGbg0D,EAAYxuC,EAAa9Y,MACzBpO,EAAcknB,EAAaC,QAC3BwuC,EAAczuC,EAAaxlB,QAMjC,SAAS5B,IAId,MAAM2Z,GAAWC,EAAAA,EAAAA,OACX,cAAE+jB,EAAa,gBAAEtB,IAAoBy5B,EAAAA,EAAAA,MAErC5uD,GAAOX,EAAAA,EAAAA,cACX,CAAC8N,EAAoBwI,EAAmCmV,IAC/CqK,EAAgBhoB,EAAS,CAC9BlF,QAAS0N,KAAQ4nB,EAAAA,EAAgB5nB,IAAS4nB,EAAAA,EAAakQ,GAAKghB,EAAS54D,GAAK44D,EAAS34D,IAAO24D,EAAS94C,MAC/FA,IAASuK,EAAaxlB,QAAU,CAAE2zB,SAAS,GAAS,CAAC,KAC9C,OAAPvD,QAAO,IAAPA,EAAAA,EAAW,CAAC,KAGpB,CAACrY,IAGGsf,GAAQ1yB,EAAAA,EAAAA,cACXwvD,IACCp4B,EAAco4B,EAAW,GAE3B,CAACp8C,IAGH,OAAOnY,EAAAA,EAAAA,UAAQ,IAAM,CAAC0F,EAAM+xB,IAAQ,CAAC/xB,EAAM+xB,GAC7C,CAEO,SAAS5qB,IACd,MAAO2nD,EAAcC,GAAiBj2D,IAEhCkH,GAAOX,EAAAA,EAAAA,cACX,CAAC8N,EAAS2d,IACDgkC,EAAa3hD,EAASnU,EAAa8xB,IAE5C,CAACgkC,IAGG/8B,GAAQ1yB,EAAAA,EAAAA,cACXhK,IACC05D,EAAc15D,EAAI,GAEpB,CAAC05D,IAGH,OAAOz0D,EAAAA,EAAAA,UAAQ,IAAM,CAAC0F,EAAM+xB,IAAQ,CAAC/xB,EAAM+xB,GAC7C,CAEO,SAASoY,IACd,MAAO2kB,EAAcC,GAAiBj2D,IAEhCkH,GAAOX,EAAAA,EAAAA,cACX,CAAC8N,EAAoB2d,IACZgkC,EAAa3hD,EAASuhD,EAAW5jC,IAE1C,CAACgkC,IAGG/8B,GAAQ1yB,EAAAA,EAAAA,cACXhK,IACC05D,EAAc15D,EAAI,GAEpB,CAAC05D,IAGH,OAAOz0D,EAAAA,EAAAA,UAAQ,IAAM,CAAC0F,EAAM+xB,IAAQ,CAAC/xB,EAAM+xB,GAC7C,CAEO,SAASi9B,IACd,MAAOF,EAAcC,GAAiBj2D,IAEhCkH,GAAOX,EAAAA,EAAAA,cACX,CAAC8N,EAAiB2d,IACTgkC,EAAa3hD,EAASwhD,EAAa,IAAa,OAAP7jC,QAAO,IAAPA,EAAAA,EAAW,CAAC,KAE9D,CAACgkC,IAGG/8B,GAAQ1yB,EAAAA,EAAAA,cACXhK,IACC05D,EAAc15D,EAAI,GAEpB,CAAC05D,IAGH,OAAOz0D,EAAAA,EAAAA,UAAQ,IAAM,CAAC0F,EAAM+xB,IAAQ,CAAC/xB,EAAM+xB,GAC7C,CAEO,SAAS3T,IACd,MAAM3L,GAAWC,EAAAA,EAAAA,MACXu8C,GAASp8C,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMpY,QAAQsF,OAEjDA,GAAOX,EAAAA,EAAAA,cAAY,KACvBoT,GAASy8C,EAAAA,EAAAA,MAAc,GACtB,CAACz8C,IAEEsf,GAAQ1yB,EAAAA,EAAAA,cAAY,KACxBoT,GAASO,EAAAA,EAAAA,MAAe,GACvB,CAACP,IAEJ,OAAOnY,EAAAA,EAAAA,UAAQ,IAAM,CAAC0F,EAAM+xB,EAAOk9B,IAAS,CAACjvD,EAAM+xB,EAAOk9B,GAC5D,C,kJC1HO,SAASE,IACd,MAAMC,GAAeC,EAAAA,EAAAA,IAAa3wD,EAAAA,GAAI3O,SAEtC,OAAOuK,EAAAA,EAAAA,UAAQ,IACM,OAAZ80D,QAAY,IAAZA,OAAY,EAAZA,EAAc7iB,UACpB,CAAC6iB,GACN,CAEO,SAASE,EAAY/0D,GAC1B,MAAMsC,GAAUvC,EAAAA,EAAAA,UAAQ,KAClB6L,EAAAA,EAAAA,GAAW5L,GAAe,KAE1BA,EAAMxK,UAAYqwB,EAAAA,GAAYrwB,QAAgB2O,EAAAA,GAAI3O,QAE/CwK,EAAMxK,SACZ,CAACwK,IAEEg1D,GAAaF,EAAAA,EAAAA,IAAaxyD,GAEhC,OAAOvC,EAAAA,EAAAA,UAAQ,KACb,GAAKuC,EAEL,OAAiB,OAAV0yD,QAAU,IAAVA,OAAU,EAAVA,EAAYhjB,QAAQ,GAC1B,CAAC1vC,EAAS0yD,GACf,CAEO,SAAS10D,EAAgBgC,GAC9B,MAAM0yD,GAAaF,EAAAA,EAAAA,IAAaxyD,GAEhC,OAAOvC,EAAAA,EAAAA,UAAQ,KACb,GAAKuC,EAEL,OAAI0yD,EACKA,EAAWhjB,cADpB,CAIgB,GACf,CAAC1vC,EAAS0yD,GACf,CAEO,SAASC,EAAYC,GAC1B,MAAMlY,EAAQ+X,EAA0B,OAAdG,QAAc,IAAdA,OAAc,EAAdA,EAAgB7c,UAE1C,OAAOt4C,EAAAA,EAAAA,UAAQ,KACb,IAAKi9C,IAAUkY,EAAgB,OAAO,KACtC,IACE,OAAO,IAAIvxD,EAAAA,EAAUq5C,GAAOp5C,aAAasxD,EAAetjB,UAC1D,CAAE,MAAO/kC,GACP,OAAO,IACT,IACC,CAACqoD,EAAgBlY,GACtB,C,kLCnDO,SAASmY,IACd,MAAMC,GAAYC,EAAAA,EAAAA,MACZC,EAAuBC,KAEvB,OAAEr1D,IAAWurC,EAAAA,EAAAA,KACjB3mC,EAAAA,EAAAA,cAAY3K,UACV,IAAKi7D,IAAcE,EAAsB,OAIzC,aAFwBF,EAAUI,0BAElB,GACf,CAACJ,KAGN,OAAOr1D,EAAAA,EAAAA,UAAQ,IAAMG,GAAQ,CAACA,GAChC,C,0BClBO,SAASu1D,IACd,MAAM,QAAEC,IAAYC,EAAAA,EAAAA,gBAEpB,OAAc,OAAPD,QAAO,IAAPA,EAAAA,EAAW3sB,EAAAA,EACpB,CAEO,SAASwsB,IACd,MAAMG,EAAUD,IAEhB,OAAO11D,EAAAA,EAAAA,UAAQ,KACb,GAAK21D,EAEL,OAAO1sB,EAAAA,GAAiB9nC,SAASw0D,EAAQ,GACxC,CAACA,EAAS1sB,EAAAA,IACf,C,mCCbO,SAASiB,EAAcwE,GAC5B,MAAM,QAAE/5C,IAAYihE,EAAAA,EAAAA,iBACbx+D,EAASy+D,IAAcxvD,EAAAA,EAAAA,eAAgCxF,IACvDT,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,GAgBvC,OAdApF,EAAAA,EAAAA,YAAU,MACR7G,iBACE,GAAIzF,EAAS,CACX+W,GAAW,GACX,MAAMoqD,EAAO,IAAIC,EAAAA,IAAKA,EAAAA,IAAKC,eACrB5+D,QAAgB0+D,EAAKprB,IAAIurB,WAAWthE,GAC1CkhE,EAAW,IAAIjyD,EAAAA,EAAUxM,EAAQ4J,aACjC0K,GAAW,EACb,CACF,CAEA6/B,EAAM,GACL,CAAC52C,EAAS+5C,KAEN1uC,EAAAA,EAAAA,UAAQ,MAASG,OAAQ/I,EAASgJ,aAAY,CAAChJ,EAASgJ,GACjE,CCrBO,SAAS81D,EAAoB3/B,EAAamY,GAC/C,MAAM6mB,EAAuBC,IAE7B,OAAO9pB,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY3K,eACGm8B,KACZ,CAACg/B,EAAsBh/B,IAC1BmY,EAEJ,C,kBCNO,SAAStE,EAAgB+rB,EAAqCznB,GACnE,MAAM,QAAE/5C,IAAYihE,EAAAA,EAAAA,gBACdQ,GAAWC,EAAAA,EAAAA,IAAiBF,GAElC,OAAOzqB,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY3K,UACV,IAAKg8D,IAAazhE,EAAS,OAC3B,MAAMwL,QAAei2D,EAAS9J,UAAU33D,GACxC,OAAO,IAAIiP,EAAAA,EAAUzD,EAAOa,WAAW,GACtC,CAACo1D,EAAUzhE,IACd+5C,EAEJ,C,iHCfO,SAAS4nB,IACd,MAAM,KAAEhrB,IAASirB,EAAAA,EAAAA,IACf,kBACAn8D,UACE,MAAM07D,EAAO,IAAIC,EAAAA,IAAKA,EAAAA,IAAKC,eACrBQ,QAAoBV,EAAKprB,IAAI+rB,iBACnC,OAAOv4B,OAAOs4B,EAAY,GAE5B,CACEE,gBAAiB,MAIrB,OAAOprB,CACT,CAEO,SAASqrB,IACd,MAAM,KAAErrB,IAASsrB,EAAAA,EAAAA,GAAwB,kBACzC,OAAOtrB,CACT,CAEO,SAASurB,IACd,MAAM,KAAEvrB,IAASirB,EAAAA,EAAAA,IACf,2BACAn8D,UACE,MAAM07D,EAAO,IAAIC,EAAAA,IAAKA,EAAAA,IAAKC,eACrBzpB,QAAcupB,EAAKprB,IAAIosB,SAAS,aACtC,OAAO54B,OAAOA,OAAOqO,EAAMwqB,QAAQ,GAErC,CACEL,gBAAiB,MAIrB,OAAOprB,CACT,CAEO,SAAS0rB,IACd,MAAM,KAAE1rB,IAASsrB,EAAAA,EAAAA,GAAwB,2BACzC,OAAOtrB,CACT,C,8HC7BA,MAAM2rB,EAAmB,CAAC90B,EAAAA,GAAQC,QAASD,EAAAA,GAAQ+0B,OAAQ/0B,EAAAA,GAAQE,SAEnE,SAAS80B,EAAwB1hE,GAAmD,IAAlC2hE,EAAA/qC,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAgC,GAChF,OAAO4qC,EAAiB/vD,OAAOkwD,GAAoBlhC,QAAmB,CAACoC,EAAMq9B,KAC3Er9B,EAAKq9B,GAAWlgE,EACT6iC,IACN,CAAC,EACN,CAEyC6+B,EAAwB,6CAA8C,CAC7Gh1B,EAAAA,GAAQk1B,SACRl1B,EAAAA,GAAQm1B,aACRn1B,EAAAA,GAAQo1B,QACRp1B,EAAAA,GAAQq1B,eACRr1B,EAAAA,GAAQE,UAUPF,EAAAA,GAAQC,QACRD,EAAAA,GAAQ+0B,OACR/0B,EAAAA,GAAQE,QACRF,EAAAA,GAAQk1B,SACRl1B,EAAAA,GAAQm1B,aACRn1B,EAAAA,GAAQs1B,UACRt1B,EAAAA,GAAQu1B,KACRv1B,EAAAA,GAAQw1B,IACRx1B,EAAAA,GAAQo1B,QACRp1B,EAAAA,GAAQy1B,KACRz1B,EAAAA,GAAQ01B,MAOR11B,EAAAA,GAAQC,QACRD,EAAAA,GAAQ+0B,OACR/0B,EAAAA,GAAQm1B,aACRn1B,EAAAA,GAAQk1B,SACRl1B,EAAAA,GAAQu1B,KACRv1B,EAAAA,GAAQs1B,UACRt1B,EAAAA,GAAQw1B,IACRx1B,EAAAA,GAAQo1B,QACRp1B,EAAAA,GAAQ01B,MAxCJ,MA4CDC,EAAoC,CACxCC,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,8CAE/BC,EAAiB5+B,OAAAwmB,OAAAxmB,OAAAwmB,OAAA,GAClB8X,GAAiB,CACpBO,0BAA2B,+CAEvBC,EAAgB9+B,OAAAwmB,OAAAxmB,OAAAwmB,OAAA,GACjB8X,GAAiB,CACpBO,0BAA2B,+CAGvBE,EAAqCT,EACrCU,EAAsBh/B,OAAAwmB,OAAAxmB,OAAAwmB,OAAA,GACvB8X,GAAiB,CACpBE,iBAAkB,6CAClBS,gBAAiB,+CAEbC,EAAoCZ,EAGpCa,EAAiC,CACrCZ,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,8CA0ING,EAAsE,CACjF,CAACz2B,EAAAA,GAAQC,SAAUg2B,EACnB,CAACj2B,EAAAA,GAAQk1B,UAAWkB,EACpB,CAACp2B,EAAAA,GAAQm1B,cAAekB,EACxB,CAACr2B,EAAAA,GAAQo1B,SAAUmB,EACnB,CAACv2B,EAAAA,GAAQq1B,gBAAiBkB,EAC1B,CAACv2B,EAAAA,GAAQ+0B,QAASoB,EAClB,CAACn2B,EAAAA,GAAQy1B,MAAOe,EAChB,CAACx2B,EAAAA,GAAQ02B,gBAAiBF,EAC1B,CAACx2B,EAAAA,GAAQw1B,KA/I2B,CACpCI,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAyIrB,CAAC32B,EAAAA,GAAQ42B,iBArIuC,CAChDhB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,8CAgIjB,CAACt2B,EAAAA,GAAQ62B,kBA5HwC,CACjDjB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAsHrB,CAAC32B,EAAAA,GAAQ82B,iBAlHuC,CAChDlB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,8CA6GjB,CAACt2B,EAAAA,GAAQ+2B,kBAzGwC,CACjDnB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAmGrB,CAAC32B,EAAAA,GAAQE,SA/F+B,CACxC01B,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAyFrB,CAAC32B,EAAAA,GAAQs1B,WArFiC,CAC1CM,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CA+ErB,CAAC32B,EAAAA,GAAQu1B,MA5E4B,CACrCK,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAsErB,CAAC32B,EAAAA,GAAQg3B,aAlEmC,CAC5CpB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CA4DrB,CAAC32B,EAAAA,GAAQi3B,MAzD4B,CACrCrB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAmDrB,CAAC32B,EAAAA,GAAQk3B,cAhDoC,CAC7CtB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,8CA2CjB,CAACt2B,EAAAA,GAAQm3B,WAxCiC,CAC1CvB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAkCrB,CAAC32B,EAAAA,GAAQ01B,OA/B6B,CACtCE,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,+CA6CVS,GAjByB//B,OAAAwmB,OAAA,GACjC/W,EAAAA,GAAiB/S,QAAmB,CAACoC,EAAMq9B,KAC5Cr9B,EAAKq9B,GAAWiD,EAAuBjD,GAASoC,qBACzCz/B,IACN,CAAC,IAG4BkB,OAAAwmB,OAAA,GAC7B/W,EAAAA,GAAiB/S,QAAmB,CAACoC,EAAMq9B,KAC5C,MAAMuC,EAAoBU,EAAuBjD,GAASuC,kBAI1D,OAHIA,IACF5/B,EAAKq9B,GAAWuC,GAEX5/B,CAAI,GACV,CAAC,IAG0BkB,OAAAwmB,OAAA,GAC3B/W,EAAAA,GAAiB/S,QAAmB,CAACoC,EAAMq9B,KAC5Cr9B,EAAKq9B,GAAWiD,EAAuBjD,GAASqC,iBACzC1/B,IACN,CAAC,K,GAMmD6+B,EACvD,8CAMCh1B,EAAAA,GAAQC,QAMRD,EAAAA,GAAQC,QAGmC+0B,EAAwB,8CAGnEh1B,EAAAA,GAAQC,QAIRD,EAAAA,GAAQC,QAGkB5I,OAAAwmB,OAAA,GACxB/W,EAAAA,GAAiB/S,QAAmB,CAACoC,EAAMq9B,KAC5Cr9B,EAAKq9B,GAAWiD,EAAuBjD,GAASsC,cACzC3/B,IACN,CAAC,IAG6CkB,OAAAwmB,OAAA,GAC9C/W,EAAAA,GAAiB/S,QAAmB,CAACoC,EAAMq9B,KAC5C,MAAMwC,EAAoCS,EAAuBjD,GAASwC,kCAI1E,OAHIA,IACF7/B,EAAKq9B,GAAWwC,GAEX7/B,CAAI,GACV,CAAC,IAG8BkB,OAAAwmB,OAAA,GAC/BmX,EAAwB,+CAI1Bh1B,EAAAA,GAAQC,QAGqB5I,OAAAwmB,OAAA,GAC3B/W,EAAAA,GAAiB/S,QAAmB,CAACoC,EAAMq9B,KAC5C,MAAM8C,EAAkBG,EAAuBjD,GAAS8C,gBAIxD,OAHIA,IACFngC,EAAKq9B,GAAW8C,GAEXngC,CAAI,GACV,CAAC,IAGqD2Q,EAAAA,GAAiB/S,QAAmB,CAACoC,EAAMq9B,KACpG,MAAM0C,EAA4BO,EAAuBjD,GAAS0C,0BAIlE,OAHIA,IACF//B,EAAKq9B,GAAW0C,GAEX//B,CAAI,GACV,CAAC,G,8/JC9VJ,MAAMkhC,EAAY,IAAIC,QAaf,SAASC,IAAmE,IAA7C,QAAE/D,EAAU,GAAyBtpC,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC7E,MAAMstC,GAASC,EAAAA,EAAAA,GAAU,CAAEjE,YAE3B,OAAO31D,EAAAA,EAAAA,UAAQ,IAdV,SAAwB25D,GAC7B,IAAKA,EAAQ,OAEb,MAAM,UAAEE,GAAcF,EAEhBG,EAAW,IAAIC,EAAAA,EAAaF,EAAWG,EAAAA,EAAQ3tD,IAErD,OADAmtD,EAAUpJ,IAAIuJ,EAAQG,GACfA,CACT,CAMuBG,CAAeN,IAAS,CAAChE,EAASgE,GACzD,CCRA,MAAQO,GAAKC,GAAiBC,EAGvB,SAASC,EACdC,EACAC,GAEW,IADXC,IAAoBnuC,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,KAAAA,UAAA,GAEpB,MAAM,SAAEytC,EAAQ,QAAEnlE,IAAYihE,EAAAA,EAAAA,gBACxB6E,EAAiBf,IAEvB,OAAO15D,EAAAA,EAAAA,UAAQ,KACb,IAAKs6D,IAAwBC,EAAK,OAAO,KACzC,IAAI9kE,EAGJ,GAF6CA,EAAV,kBAAxB6kE,EAA4CA,EACxCA,EAAoB/3B,EAAAA,KAC9B9sC,EAAS,OAAO,KAErB,IAAK,IAADilE,EAAAC,EACF,OAAOC,EAAAA,EAAAA,IACLnlE,EACA8kE,EACAT,GAAoB,OAARA,QAAQ,IAARA,GAAiB,QAATY,EAARZ,EAAU/6B,eAAO,IAAA27B,GAAjBA,EAAmB/E,SAAW1sB,EAAAA,GAAiB9nC,SAAiB,OAAR24D,QAAQ,IAARA,GAAiB,QAATa,EAARb,EAAU/6B,eAAO,IAAA47B,OAAT,EAARA,EAAmBhF,SACnFmE,EACAW,EACJD,GAAwB7lE,EAAUA,OAAUkM,EAEhD,CAAE,MAAOiM,GAEP,OADAkZ,QAAQlZ,MAAM,yBAA0BA,GACjC,IACT,IACC,CAACwtD,EAAqBC,EAAKT,EAAUU,EAAsB7lE,GAChE,CAEO,SAASkmE,EAA2BplE,EAAwB+kE,GACjE,OAAOH,EAAuB5kE,EAASqlE,EAAcN,EACvD,CAEO,SAASnE,EAAiBD,EAA8BoE,GAC7D,OAAOH,EAAmBjE,EAAU2E,EAAUP,EAChD,CAEO,SAASlF,IAGd,OAAO+E,EAFoBd,EAAoBh3B,EAAAA,IAEmB43B,GAAc,EAClF,C,qFClDO,SAASa,EACd/6D,EACAhN,EACAk9C,EACAzB,GAEA,MAAM0nB,GAAWC,EAAAA,EAAAA,IAAsB,OAALp2D,QAAK,IAALA,OAAK,EAALA,EAAOxK,SAAS,IAK5C,OAAE0K,EAAM,QAAEC,IAAYsrC,EAAAA,EAAAA,KAC1B3mC,EAAAA,EAAAA,cAAY3K,UACV,IAAKnH,IAAUk9C,EAAS,OACxB,MAAMn4C,QAA0B,OAARo+D,QAAQ,IAARA,OAAQ,EAARA,EAAUp+D,UAAU/E,EAAOk9C,IACnD,OAAgB,OAATn4C,QAAS,IAATA,OAAS,EAATA,EAAWgJ,UAAU,GAC3B,CAAC/N,EAAOk9C,EAASimB,IACpB1nB,GAGI8H,EAAkB,OAANr2C,QAAM,IAANA,OAAM,EAANA,EAAQa,WACpBhJ,GAAYgI,EAAAA,EAAAA,UAAQ,IAAOC,GAASu2C,EAAYA,OAAY31C,GAAY,CAACZ,EAAOu2C,IAEtF,OAAOx2C,EAAAA,EAAAA,UAAQ,MAASi7D,eAAgBjjE,EAAWkjE,UAAW96D,KAAY,CAACpI,EAAWoI,GACxF,C,yICvBO,IAAK+6D,EAAa,SAAbA,GAAa,OAAbA,EAAa,kBAAbA,EAAa,4BAAbA,EAAa,kBAAbA,EAAa,oBAAbA,CAAa,MAiClB,SAASC,EACdC,EACAp7D,EACAkwC,EACAmrB,GAWA,MAAM,QAAE3F,IAAYC,EAAAA,EAAAA,gBAGd2F,EA5CR,SACEF,EACAp7D,EACAkwC,EACAmrB,GAEA,MAAM,QAAE3mE,IAAYihE,EAAAA,EAAAA,gBAEd4F,EAAkBF,EAAqBr7D,EAAOkwC,IAC9C,eAAE8qB,IAAmBD,EAAAA,EAAAA,GAAuB/6D,EAAc,OAAPtL,QAAO,IAAPA,EAAAA,OAAWkM,EAAWsvC,EAASqrB,GAExF,OAAOx7D,EAAAA,EAAAA,UAAQ,IACRq7D,GAAoBlrB,GAGpB8qB,EAGE,IAAIr3D,EAAAA,EAAUq3D,GAAgBzmB,WAAW6mB,GAC5CG,EACEL,EAAcM,QACdN,EAAcO,aAChBP,EAAcQ,SAVuBR,EAAcS,SAWtD,CAACP,EAAiBG,EAAiBrrB,EAAS8qB,GACjD,CAoBwBY,CAA2BR,EAAiBp7D,EAAOkwC,EAASmrB,GAE5EQ,GAAgBzF,EAAAA,EAAAA,IAAsB,OAALp2D,QAAK,IAALA,OAAK,EAALA,EAAOxK,SAExC46C,GAAUtrC,EAAAA,EAAAA,cAAY3K,UAC1B,SAAS2hE,EAAWjvD,GAClBkZ,QAAQg2C,KAAK,IAAQ,OAAL/7D,QAAK,IAALA,OAAK,EAALA,EAAOqB,SAAU,2BAA4BwL,EAE/D,CAGA,GAAIyuD,IAAkBJ,EAAcO,aAClC,OAAOK,EAAW,oCACb,IAAKpG,EACV,OAAOoG,EAAW,cACb,IAAK97D,EACV,OAAO87D,EAAW,YACb,IAAKD,EACV,OAAOC,EAAW,yBACb,IAAKV,EACV,OAAOU,EAAW,6BACb,IAAK5rB,EACV,OAAO4rB,EAAW,cAGpB,IAAIE,GAAW,EACf,MAAMC,QAAqBJ,EAAcK,YAAY9rB,QAAQF,EAASisB,EAAAA,IAAYrM,OAAM,KAEtFkM,GAAW,EACJH,EAAcK,YAAY9rB,QAAQF,EAASkrB,MAGpD,OAAOS,EACJzrB,QAAQF,EAAS8rB,EAAWZ,EAAkBe,EAAAA,GAAY,CACzDC,UAAUC,EAAAA,EAAAA,GAAmBJ,KAE9BniB,MAAMwiB,IACE,CACLA,WACA5S,aAAc1pD,EAAMxK,QACpB+mE,eAAgBrsB,EAChBv7C,OAAQymE,MAGXtL,OAAOjjD,IACNivD,EAAWjvD,GAEJ,CACLA,MAAO+pC,OAAO/pC,MAEhB,GACH,CAACyuD,EAAet7D,EAAO67D,EAAeT,EAAiBlrB,EAASwlB,IAEnE,MAAO,CAAC4F,EAAelrB,EACzB,C,sFClEO,SAASwZ,EAA0BF,GACxC,MAAMgM,GAAUD,EAAAA,EAAAA,MACVH,GAAuBC,EAAAA,EAAAA,OAIrBr1D,OAAQqB,GArDX,SAAsBmoD,GAC3B,MAAMyM,GAAWC,EAAAA,EAAAA,IAAiB1M,GAAc,GAEhD,OAAOuM,EAAAA,EAAAA,KACLnxD,EAAAA,EAAAA,cAAY3K,UACV,GAAKuvD,GAAiByM,EACtB,aAAaA,EAAS50D,MAAM,GAC3B,CAACmoD,EAAcyM,IAEtB,CA4C2BqG,CAAa9S,IAC9BxpD,OAAQmB,GA3CX,SAAwBqoD,GAC7B,MAAMyM,GAAWC,EAAAA,EAAAA,IAAiB1M,GAAc,GAEhD,OAAOuM,EAAAA,EAAAA,KACLnxD,EAAAA,EAAAA,cAAY3K,UACV,GAAKuvD,GAAiByM,EACtB,aAAaA,EAAS90D,QAAQ,GAC7B,CAACqoD,EAAcyM,IAEtB,CAkC6BzrB,CAAegf,IAClCxpD,OAAQY,GAjCX,SAA0B4oD,GAC/B,MAAMyM,GAAWC,EAAAA,EAAAA,IAAiB1M,GAAc,GAEhD,OAAOuM,EAAAA,EAAAA,KACLnxD,EAAAA,EAAAA,cAAY3K,UACV,GAAKuvD,GAAiByM,EACtB,aAAaA,EAASr1D,UAAU,GAC/B,CAAC4oD,EAAcyM,IAEtB,CAwB+BsG,CAAiB/S,IACtCxpD,OAAQkC,GAvBX,SAAsBsnD,GAC3B,OAAOuM,EAAAA,EAAAA,KACLnxD,EAAAA,EAAAA,cAAY3K,UACV,GAAKuvD,EACL,MAAO,uFAAuFA,YAAuB,GACpH,CAACA,IAER,CAgB2Bx1C,CAAaw1C,GAEtC,OAAO3pD,EAAAA,EAAAA,UAAQ,KAEb,GAA4B,kBAAjB2pD,GAA8BA,IAEnC5oD,GAAyB,IAAbA,IAAoBO,GAAWE,EAIjD,OAAO,IAAIm7D,EAAAA,EAAW,CAAElnE,QAASk0D,EAAc5oD,WAAUS,OAAMF,SAAQe,QAAO,GAC7E,CAACsnD,EAAcgM,EAASn0D,EAAMF,EAAQP,EAAUsB,EAAMkzD,GAC3D,C,kECxEO,MAAMqH,UAAsC1hE,OCIxCyjC,EAAQ,MAAnB,MCKMk+B,EAAY,CAChB,QAAS,CAAEC,YAAaC,IAK1Bl2C,EAAAA,GAAAA,IACOm2C,EAAAA,IACJ3nE,KAAK,CACJ4nE,UALc,cAMdC,IAAK,QACLC,YAAa,QACbN,UAAS,EACTO,cAAe,CACbC,aAAa,GAEfC,MAAO,CACLC,4BAA4B,GAE9BC,4BAA8B1tD,IAC5BkW,QAAQlZ,MAAM,IAAI8vD,EAA8B,qCAAqC9sD,KAAS,CAC5F2tD,KAAM,CACJC,KAAM,UACNC,SAAU,UAGP,MAGV5N,OAAM,KAAe,IAExBlpC,EAAAA,GAAK+2C,GAAG,cAAc,CAACC,EAAOC,EAAK/iE,EAAKgjE,KACtC/3C,QAAQlZ,MAAM,IAAI5R,MAAM,2BAA2BH,kBAAoB8rB,EAAAA,GAAKm3C,YAAa,CACvFP,KAAM,CACJC,KAAM,UACNC,SAAU,iBAEZ,G,gECzCCr4B,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,0BAAAA,2CAAAA,cAAAA,aAAAA,qBAAAA,KAAAA,mBAAAA,wFAAAA,yBAAAA,OAAAA,qBAAAA,iGAAY24B,wBACft/B,EAAQ,OAKV,QAAe9X,EAAI,E,gECLZ,MAAMq3C,EAAuB,CAClCC,4BAA6Bt3C,EAAAA,EAAK9gB,CAAC,8BACnCq4D,cAAev3C,EAAAA,EAAK9gB,CAAC,gBACrBs4D,qBAAsBx3C,EAAAA,EAAK9gB,CAAC,uBAC5Bu4D,sBAAuBz3C,EAAAA,EAAK9gB,CAAC,uBAC7Bw4D,qBAAsB13C,EAAAA,EAAK9gB,EAAE,sCAC7By4D,WAAY33C,EAAAA,EAAK9gB,CAAC,uBAClB04D,kBAAmB53C,EAAAA,EAAK9gB,CAAC,uBACzB24D,kBAAmB73C,EAAAA,EAAK9gB,CAAC,oBACzB44D,oBAAqB93C,EAAAA,EAAK9gB,CAAC,+BAC3B64D,aAAc/3C,EAAAA,EAAK9gB,CAAC,eACpB84D,qBAAsBh4C,EAAAA,EAAK9gB,CAAC,uBAC5B+4D,yBAA0Bj4C,EAAAA,EAAK9gB,EAAE,2CAA4C,CAAEzE,OAAQ,QACvFy9D,iBAAkBl4C,EAAAA,EAAK9gB,CAAC,mBACxBwlD,oBAAqB1kC,EAAAA,EAAK9gB,CAAC,uBAC3Bi5D,mBAAoBn4C,EAAAA,EAAK9gB,CAAC,wBAGfk5D,EAAsB,CACjC,wBAAyBp4C,EAAAA,EAAK9gB,CAAC,2BAC/B,iBAAkB8gB,EAAAA,EAAK9gB,CAAC,oBACxB,cAAe8gB,EAAAA,EAAK9gB,CAAC,iBACrB,mDAAoD8gB,EAAAA,EAAK9gB,CAAC,mDAC1D,2DAA4D8gB,EAAAA,EAAK9gB,CAAC,2DAClE,4CAA6C8gB,EAAAA,EAAK9gB,CAAC,4CACnD,oBAAqB8gB,EAAAA,EAAK9gB,EAAE,qBAGjBm5D,EAAoB,CAC/BC,iBAAkBt4C,EAAAA,EAAK9gB,CAAC,iDACxBq5D,2BAA4Bv4C,EAAAA,EAAK9gB,CAAC,sEAClCs5D,gBAAiBx4C,EAAAA,EAAK9gB,EAAE,uBACxBu5D,mBAAoBz4C,EAAAA,EAAK9gB,EAAE,gCAC3Bw5D,oBAAqB14C,EAAAA,EAAK9gB,CAAC,0CAC3B,2BAA4B8gB,EAAAA,EAAK9gB,CAAC,4BAClC,sBAAuB8gB,EAAAA,EAAK9gB,CAAC,6BAC7By5D,kBAAmB34C,EAAAA,EAAK9gB,CAAC,oBACzB,qBAAsB8gB,EAAAA,EAAK9gB,CAAC,oCAC5B,mCAAoC8gB,EAAAA,EAAK9gB,CAAC,qCAC1C,oDAAqD8gB,EAAAA,EAAK9gB,CAAC,8BAC3D,sBAAuB8gB,EAAAA,EAAK9gB,CAAC,sBAC7B,uBAAwB8gB,EAAAA,EAAK9gB,CAAC,uBAC9B,wBAAyB8gB,EAAAA,EAAK9gB,CAAC,wBAC/B,gBAAiB8gB,EAAAA,EAAK9gB,EAAE,6BACxB,gBAAiB8gB,EAAAA,EAAK9gB,CAAC,gBACvB05D,mBAAoB54C,EAAAA,EAAK9gB,CAAC,iCAC1B,kBAAmB8gB,EAAAA,EAAK9gB,CAAC,kBACzB,iBAAkB8gB,EAAAA,EAAK9gB,CAAC,sBACxB,gBAAiB8gB,EAAAA,EAAK9gB,CAAC,gBACvB,6BAA8B8gB,EAAAA,EAAK9gB,CAAC,6BACpC,8CAA+C8gB,EAAAA,EAAK9gB,CAAC,8CACrD,kBAAmB8gB,EAAAA,EAAK9gB,CAAC,kBACzB,cAAe8gB,EAAAA,EAAK9gB,CAAC,kBACrB,mBAAoB8gB,EAAAA,EAAK9gB,CAAC,mBAC1B,uBAAwB8gB,EAAAA,EAAK9gB,CAAC,uBAC9B,sBAAuB8gB,EAAAA,EAAK9gB,CAAC,sBAC7B,6BAA8B8gB,EAAAA,EAAK9gB,CAAC,6BACpC,gCAAiC8gB,EAAAA,EAAK9gB,EAAE,+BACxC,0BAA2B8gB,EAAAA,EAAK9gB,CAAC,0BACjC,gCAAiC8gB,EAAAA,EAAK9gB,CAAC,gCACvC,sBAAuB8gB,EAAAA,EAAK9gB,CAAC,sBAC7B,sBAAuB8gB,EAAAA,EAAK9gB,CAAC,sBAC7B,qCAAsC8gB,EAAAA,EAAK9gB,CAAC,wCAC5C,uBAAwB8gB,EAAAA,EAAK9gB,CAAC,wBAGnB25D,EAAwB,CACnC,+BAAgC74C,EAAAA,EAAK9gB,CAAC,iCACtC,8CAA+C8gB,EAAAA,EAAK9gB,CAAC,8CACrD,gCAAiC8gB,EAAAA,EAAK9gB,EAAE,4BACxC,mDAAoD8gB,EAAAA,EAAK9gB,CAAC,mDAC1D,qCAAsC8gB,EAAAA,EAAK9gB,CAAC,qCAC5C,qDAAsD8gB,EAAAA,EAAK9gB,CAAC,qDAC5D,2DAA4D8gB,EAAAA,EAAK9gB,CAAC,2DAClE,8EAA+E8gB,EAAAA,EAAK9gB,CAAC,8EACrF,8DAA+D8gB,EAAAA,EAAK9gB,CAAC,8DACrE,gCAAiC8gB,EAAAA,EAAK9gB,CAAC,gCACvC,8FAA+F8gB,EAAAA,EAAK9gB,CAAC,8FACrG,8FAA+F8gB,EAAAA,EAAK9gB,CAAC,8FACrG,uBAAwB8gB,EAAAA,EAAK9gB,CAAC,4BAC9B,qCAAsC8gB,EAAAA,EAAK9gB,CAAC,qCAC5C,mDAAoD8gB,EAAAA,EAAK9gB,CAAC,kDAC1D,wCAAyC8gB,EAAAA,EAAK9gB,CAAC,wCAC/C,gDAAiD8gB,EAAAA,EAAK9gB,CAAC,gDACvD,4BAA6B8gB,EAAAA,EAAK9gB,CAAC,4BACnC,qDAAsD8gB,EAAAA,EAAK9gB,CAAC,qDAC5D,sFAAuF8gB,EAAAA,EAAK9gB,CAAC,sFAC7F,oDAAqD8gB,EAAAA,EAAK9gB,CAAC,kDAC3D,sEAAuE8gB,EAAAA,EAAK9gB,EAAE,wBAC9E,iEAAkE8gB,EAAAA,EAAK9gB,CAAC,iEACxE,sCAAuC8gB,EAAAA,EAAK9gB,CAAC,sCAC7C,uBAAwB8gB,EAAAA,EAAK9gB,CAAC,uBAC9B,sCAAuC8gB,EAAAA,EAAK9gB,CAAC,wCAC7C,sBAAuB8gB,EAAAA,EAAK9gB,CAAC,sBAC7B,yBAA0B8gB,EAAAA,EAAK9gB,CAAC,yBAChC,wBAAyB8gB,EAAAA,EAAK9gB,EAAE,2BAChC,uBAAwB8gB,EAAAA,EAAK9gB,CAAC,yBAC9B,uBAAwB8gB,EAAAA,EAAK9gB,CAAC,oBAC9B,yCAA0C8gB,EAAAA,EAAK9gB,EAAE,4BACjD,+BAAgC8gB,EAAAA,EAAK9gB,CAAC,+BACtC,oCAAqC8gB,EAAAA,EAAK9gB,CAAC,oCAC3C,iCAAkC8gB,EAAAA,EAAK9gB,CAAC,iCACxC,yDAA0D8gB,EAAAA,EAAK9gB,CAAC,yDAChE,uCAAwC8gB,EAAAA,EAAK9gB,EAAE,yCAC/C,0CAA2C8gB,EAAAA,EAAK9gB,CAAC,uCACjD,+BAAgC8gB,EAAAA,EAAK9gB,CAAC,+BACtC,4CAA6C8gB,EAAAA,EAAK9gB,CAAC,6CACnD,uEAAwE8gB,EAAAA,EAAK9gB,CAAC,uEAC9E,oEAAqE8gB,EAAAA,EAAK9gB,EAAE,+BAC5E,0DAA2D8gB,EAAAA,EAAK9gB,CAAC,0DACjE,2CAAuC8gB,EAAAA,EAAK9gB,CAAC,sCAC7C,wCAAoC8gB,EAAAA,EAAK9gB,CAAC,mCAC1C,uDAAwD8gB,EAAAA,EAAK9gB,EAAE,8BAC/D,uDAAwD8gB,EAAAA,EAAK9gB,CAAC,wDAGnD45D,EAAsB,CACjClU,aAAc5kC,EAAAA,EAAK9gB,CAAC,eACpB65D,iBAAkB/4C,EAAAA,EAAK9gB,CAAC,qBACxB85D,iBAAkBh5C,EAAAA,EAAK9gB,CAAC,gCACxB+5D,kBAAmBj5C,EAAAA,EAAK9gB,EAAE,2BAC1Bg6D,YAAal5C,EAAAA,EAAK9gB,EAAE,4BACpBi6D,mBAAoBn5C,EAAAA,EAAK9gB,CAAC,qBAC1BwlD,oBAAqB1kC,EAAAA,EAAK9gB,CAAC,uBAC3Bk6D,iBAAkB,oBAGPC,EAAuB,CAClC,0CAA2Cr5C,EAAAA,EAAK9gB,EAAE,4BAGvCo6D,EAAsB,CACjC5U,oBAAqB1kC,EAAAA,EAAK9gB,CAAC,uBAC3Bq6D,qBAAsBv5C,EAAAA,EAAK9gB,CAAC,yBAC5Bs6D,uBAAwBx5C,EAAAA,EAAK9gB,CAAC,0BAQnBu6D,EAAsB,IAC9BpB,KACAhB,KACAyB,KACAD,KACAT,KAVgC,CACnC,gCAAiCp4C,EAAAA,EAAK9gB,CAAC,mDAWpCo6D,KACAD,GAGQn6C,EAAoBlT,IAA6B,IAAD0tD,EAC3D,OAA2B,QAA3BA,EAAOD,EAAYztD,UAAQ,IAAA0tD,EAAAA,EAAI1tD,CAAO,C,sFCjJpBtB,QACW,cAA7B8Q,OAAOlF,SAASqjD,UAEe,UAA7Bn+C,OAAOlF,SAASqjD,UAEhBn+C,OAAOlF,SAASqjD,SAASC,MAAM,2D,gLCdpB,SAASC,EAAe3vE,GAAiE,IAA9DosB,UAAU,SAAEM,EAAQ,OAAExJ,IAA+BljB,EAI7F,OAHAkQ,EAAAA,EAAAA,YAAU,KACR0/D,EAAAA,GAAAA,SAAiB,GAAGljD,IAAWxJ,IAAS,GACvC,CAACwJ,EAAUxJ,IACP,IACT,C,qKCJA,MAAMpW,GAAYC,EAAAA,EAAAA,IAAYyB,IACrB,CACLnB,QAAS,CACP0D,WAAYvC,EAAMwC,QAAQD,WAAWoD,OACrCD,OAAQ,aAAa1F,EAAMwC,QAAQD,WAAWE,SAC9CoB,aAAc,OACd1B,QAAS,YACTmN,UAAW,OACXnM,SAAU,OACV6T,UAAW,SAEbpL,OAAQ,CACNnN,QAAS,OACT6D,WAAY,SACZwB,eAAgB,SAChBhQ,OAAQ,OACRqO,QAAS,SACTI,WAAY,UACZmd,UAAW,kCACX7b,aAAc,MACdnF,OAAQ,eAKD2iE,EAAoB,eAkBlB,SAASC,EAAkB9vE,GAAsD,IAArD,KAAE2U,EAAI,QAAEE,EAAO,OAAEk7D,GAAiC/vE,EAC3F,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MACR1H,EAAUT,KAETkjE,EAAQC,IAAa36D,EAAAA,EAAAA,WAAS,GAE/B9G,GAAQC,EAAAA,EAAAA,MAQd,OACElC,EAAAA,EAAAA,MAACyP,EAAAA,GAAK,CACJnE,MAAO7C,EAAE,gBACTL,KAAMA,EACNE,QAASA,EACTyV,KAAK,UACLxS,YAAa,CACXpH,GAAI,CACF,qBAAsB,CACpBqH,gBAAiBvJ,EAAMwC,QAAQD,WAAWwH,UAG9C7L,SAAA,EAEFC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAE0H,WAAY,QAAS1L,SAAEsI,EAAE,0BAE7CzI,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAACC,UAAWP,EAAQF,QAAQX,SAAA,EAC9BC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAE0H,WAAY,QAAS1L,SAAEsI,EAAE,0BAE7CrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAG,OAAM3M,UACZC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAE0H,WAAY,QAAS1L,SAAEsI,EAAE,0BAE7CrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAG,OAAM3M,UACZC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAE0H,WAAY,QAAS1L,SAAEsI,EAAE,0BAE7CrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAG,OAAM3M,UACZC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAE0H,WAAY,QAAS1L,UACrCC,EAAAA,EAAAA,KAACujE,EAAAA,GAAK,CACJC,WAAY,CAAEC,WAAWzjE,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,UAAUqK,UAAU,UAC/Dk0D,QAAQ,2BAId1jE,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAG,OAAM3M,UACZC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAE0H,WAAY,QAAS1L,UACrCC,EAAAA,EAAAA,KAACujE,EAAAA,GAAK,CACJC,WAAY,CACVC,WAAWzjE,EAAAA,EAAAA,KAACyP,EAAAA,GAAU,CAACC,KAAK,8BAA6B3P,SAAC,iCAE5D2jE,QAAQ,8BAKhB1jE,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAG,OAAM3M,UACZH,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CACHwE,WAAS,EACTjG,MAAM,SACN9B,GAAI,CACFxD,OAAQ,UACR8f,WAAY,OACZnc,IAAK,QACLm1B,SAAU,UAEZj4B,QAASA,IAAMkiE,GAAWD,GAAQtjE,SAAA,EAElCC,EAAAA,EAAAA,KAAC6P,EAAAA,EAAQ,CACPC,QAASuzD,EACTp7D,SAAUP,IAA8B,IAA3BqI,QAAQ,QAAED,IAAWpI,EAChC47D,EAAUxzD,EAAQ,KAGtB9P,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFuB,SAAU,OACV0P,UAAW,aACXvJ,WAAY,QACZ1L,SAEDsI,EAAE,mCAITrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAG,OAAM3M,UACZC,EAAAA,EAAAA,KAACgQ,EAAAA,EAAM,CAAClE,WAAS,EAACmE,QAAQ,YAAYrL,KAAK,QAAQsL,UAAWmzD,EAAQjiE,QAlFzDuiE,MAlBdjnE,eAA8B2mE,SAC7BjQ,EAAAA,EAAQwQ,QAAQV,EAAmBtrD,KAAKC,UAAUwrD,GAC1D,CAiBIQ,EAAe,GACf37D,IACAk7D,GAAQ,EA+EsFrjE,SACvFsI,EAAE,qBAGPrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAG,MAAK3M,UACXC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACI,SAAS,OAAOvB,GAAI,CAAE0H,WAAY,QAAS1L,SACpDsI,EAAE,yBAKb,CChJA,MAAMlI,GAAYC,EAAAA,EAAAA,IAAYyB,IACrB,CACL4C,UAAW,CACTT,QAAS,YACTI,WAAY,4DACZ,CAACvC,EAAMM,YAAYC,KAAK,OAAQ,CAC9B4B,QAAS,aAGbyJ,OAAQ,CACNnN,QAAS,OACT6D,WAAY,SACZwB,eAAgB,SAChBhQ,OAAQ,OACRqO,QAAS,SACTI,WAAY,UACZmd,UAAW,kCACX7b,aAAc,MACdnF,OAAQ,UACR,CAACsB,EAAMM,YAAYC,KAAK,OAAQ,CAC9BzM,OAAQ,OACRqO,QAAS,UAEX,CAACnC,EAAMM,YAAYC,KAAK,OAAQ,CAC9B+O,UAAW,YAMJ,SAAS2yD,IACtB,MAAM,EAAEz7D,IAAMC,EAAAA,EAAAA,MACR1H,EAAUT,IACV0B,GAAQC,EAAAA,EAAAA,OAEPiiE,EAAmBC,IAAwBr7D,EAAAA,EAAAA,WAAS,IACpD06D,EAAQC,IAAa36D,EAAAA,EAAAA,WAAS,GAE/B1G,GAAcC,EAAAA,EAAAA,GAAcL,EAAMM,YAAYC,KAAK,QAEzDmB,EAAAA,EAAAA,YAAU,KACR,WACE,MAAM8/D,QDfL3mE,iBACL,MAAMunE,QAAoB7Q,EAAAA,EAAQ8Q,QAAQhB,GAE1C,OADgBe,EAAmBrsD,KAAKQ,MAAM6rD,GAAhB,EAEhC,CCW2BE,GAEnBb,EADa,SAAXD,IAAgC,IAAXA,EAK1B,EAPD,EAOI,GACH,IAMH,OAAQA,EAsCJ,MArCFzjE,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFyH,SAAU,QACV8Z,OAAQ,EACRpL,KAAM,EACNjV,MAAO,OACPkV,OCtEwB,GDuExBpa,UAEFH,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CACHqQ,cAAe5S,EAAc,SAAW,MACxCwC,WAAS,EACTN,WAAW,SACXhD,UAAWP,EAAQ6D,UAAU1E,SAAA,EAE7BC,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACM,MAAI,EAACC,IAAE,EAAAhF,UACXC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeG,SAAUrD,EAAc,OAAS,OAAQwJ,WAAW,OAAM1L,SACxFsI,EAAE,0BAGPrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACC,UAAWP,EAAQ6M,OAAQrM,QA1BrBuiE,KACjBK,GAAqB,EAAK,EAyBgCjkE,UAClDC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,YAAYI,WAAW,MAAMD,SAAUrD,EAAc,OAAS,OAAOlC,SACpFsI,EAAE,4BAMV07D,GACC/jE,EAAAA,EAAAA,KAACmjE,EAAkB,CACjBn7D,KAAM+7D,EACN77D,QAASA,IAAM87D,GAAqB,GACpCZ,OAAQA,IAAME,GAAU,KAExB,OAGV,C,IErGIc,EAAOC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAASC,EAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,GAASC,G,wBAC1a,SAASC,KAAa,OAAOA,GAAWvrC,OAAOwmB,OAASxmB,OAAOwmB,OAAOglB,OAAS,SAAUC,GAAK,IAAK,IAAIh+D,EAAI,EAAGA,EAAIolB,UAAUjzB,OAAQ6N,IAAK,CAAE,IAAIlB,EAAIsmB,UAAUplB,GAAI,IAAK,IAAIi+D,KAAKn/D,GAAG,CAAG,GAAEo/D,eAAe55B,KAAKxlC,EAAGm/D,KAAOD,EAAEC,GAAKn/D,EAAEm/D,GAAK,CAAE,OAAOD,CAAG,EAAGF,GAAS9xC,MAAM,KAAM5G,UAAY,CAEnR,SAAS+4C,GAAiBr0E,EAAMs0E,GAC9B,IAAI,MACFz8D,EAAK,QACL08D,KACGjoE,GACDtM,EACJ,OAAoB,gBAAoB,MAAOg0E,GAAS,CACtDpiE,MAAO,IACPtP,OAAQ,IACRmK,QAAS,cACT0O,KAAM,OACNC,MAAO,6BACPhO,IAAKknE,EACL,kBAAmBC,GAClBjoE,GAAQuL,EAAqB,gBAAoB,QAAS,CAC3DyD,GAAIi5D,GACH18D,GAAS,KAAMk5D,IAAUA,EAAqB,gBAAoB,OAAQ,CAC3EjoD,SAAU,UACVC,SAAU,UACVlc,EAAG,kfACHsO,KAAM,WACH61D,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEnkE,EAAG,qhCACHsO,KAAM,WACH81D,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEnoD,SAAU,UACVC,SAAU,UACVlc,EAAG,ymOACHsO,KAAM,qCACH+1D,IAAWA,EAAsB,gBAAoB,OAAQ,CAChErkE,EAAG,mCACH2nE,OAAQ,QACRC,YAAa,EACbC,cAAe,QACfC,eAAgB,WACbxD,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEroD,SAAU,UACVC,SAAU,UACVlc,EAAG,igBACHsO,KAAM,WACHi2D,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEvkE,EAAG,shCACHsO,KAAM,WACHk2D,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEvoD,SAAU,UACVC,SAAU,UACVlc,EAAG,ikOACHsO,KAAM,qCACHm2D,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEzkE,EAAG,mCACH2nE,OAAQ,QACRC,YAAa,EACbC,cAAe,QACfC,eAAgB,WACbpD,IAAWA,EAAsB,gBAAoB,OAAQ,CAChEzoD,SAAU,UACVC,SAAU,UACVlc,EAAG,wrBACHsO,KAAM,WACHq2D,IAAYA,EAAuB,gBAAoB,OAAQ,CAClE3kE,EAAG,ytCACHsO,KAAM,WACHs2D,IAAYA,EAAuB,gBAAoB,OAAQ,CAClE3oD,SAAU,UACVC,SAAU,UACVlc,EAAG,ynCACHsO,KAAM,qCACHu2D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE5oD,SAAU,UACVC,SAAU,UACVlc,EAAG,8EACHsO,KAAM,WACHw2D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE9kE,EAAG,+DACH2nE,OAAQ,QACRC,YAAa,EACbC,cAAe,QACfC,eAAgB,WACb/C,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE9oD,SAAU,UACVC,SAAU,UACVlc,EAAG,kZACHsO,KAAM,WACH02D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE/oD,SAAU,UACVC,SAAU,UACVlc,EAAG,iZACHsO,KAAM,WACH22D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEjlE,EAAG,oNACHsO,KAAM,WACH42D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEllE,EAAG,+ZACHsO,KAAM,WACH62D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEnlE,EAAG,oNACHsO,KAAM,WACH82D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEplE,EAAG,qaACHsO,KAAM,WACH+2D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEppD,SAAU,UACVC,SAAU,UACVlc,EAAG,waACHsO,KAAM,aACHg3D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEtlE,EAAG,8xBACHsO,KAAM,WACHi3D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEtpD,SAAU,UACVC,SAAU,UACVlc,EAAG,0WACHsO,KAAM,aACHk3D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClExlE,EAAG,swBACHsO,KAAM,WACHm3D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClExpD,SAAU,UACVC,SAAU,UACVlc,EAAG,uaACHsO,KAAM,aACHo3D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE1lE,EAAG,owBACHsO,KAAM,WACHq3D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE1pD,SAAU,UACVC,SAAU,UACVlc,EAAG,gXACHsO,KAAM,aACHs3D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE5lE,EAAG,8tBACHsO,KAAM,WACHu3D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE5pD,SAAU,UACVC,SAAU,UACVlc,EAAG,whBACHsO,KAAM,WACHw3D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE9lE,EAAG,mkCACHsO,KAAM,WACHy3D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE9pD,SAAU,UACVC,SAAU,UACVlc,EAAG,sQACHsO,KAAM,aACH03D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE/pD,SAAU,UACVC,SAAU,UACVlc,EAAG,+YACHsO,KAAM,WACH23D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEjmE,EAAG,4lBACHsO,KAAM,WACH43D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEjqD,SAAU,UACVC,SAAU,UACVlc,EAAG,ylBACHsO,KAAM,WACH63D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEnmE,EAAG,g4BACHsO,KAAM,WACH83D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEnqD,SAAU,UACVC,SAAU,UACVlc,EAAG,0SACHsO,KAAM,WACH+3D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClErmE,EAAG,2rBACHsO,KAAM,WACHg4D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClErqD,SAAU,UACVC,SAAU,UACVlc,EAAG,+kBACHsO,KAAM,WACHi4D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEvmE,EAAG,k4BACHsO,KAAM,WACHk4D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEvqD,SAAU,UACVC,SAAU,UACVlc,EAAG,iHACHsO,KAAM,WACHm4D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEzmE,EAAG,iHACH2nE,OAAQ,QACRC,YAAa,EACbC,cAAe,QACfC,eAAgB,WACbpB,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEzqD,SAAU,UACVC,SAAU,UACVlc,EAAG,+GACHsO,KAAM,WACHq4D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE3mE,EAAG,+GACH2nE,OAAQ,QACRC,YAAa,EACbC,cAAe,QACfC,eAAgB,WACblB,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE3qD,SAAU,UACVC,SAAU,UACVlc,EAAG,kHACHsO,KAAM,WACHu4D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE7mE,EAAG,kHACH2nE,OAAQ,QACRC,YAAa,EACbC,cAAe,QACfC,eAAgB,WACbhB,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE7qD,SAAU,UACVC,SAAU,UACVlc,EAAG,qZACHsO,KAAM,WACHy4D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE/mE,EAAG,+pBACHsO,KAAM,WACH04D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClE/qD,SAAU,UACVC,SAAU,UACVlc,EAAG,mHACHsO,KAAM,WACH24D,KAAYA,GAAuB,gBAAoB,OAAQ,CAClEjnE,EAAG,mHACH2nE,OAAQ,QACRC,YAAa,EACbC,cAAe,QACfC,eAAgB,WACbZ,KAAUA,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,iBAAkB,CACvHz4D,GAAI,4BACJs5D,GAAI,OACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,cAAe,kBACD,gBAAoB,OAAQ,CAC1CC,UAAW,YACI,gBAAoB,OAAQ,CAC3C34B,OAAQ,EACR24B,UAAW,aACK,gBAAoB,iBAAkB,CACtD35D,GAAI,4BACJs5D,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,cAAe,kBACD,gBAAoB,OAAQ,CAC1CC,UAAW,YACI,gBAAoB,OAAQ,CAC3C34B,OAAQ,EACR24B,UAAW,aACK,gBAAoB,iBAAkB,CACtD35D,GAAI,4BACJs5D,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,cAAe,kBACD,gBAAoB,OAAQ,CAC1CC,UAAW,YACI,gBAAoB,OAAQ,CAC3C34B,OAAQ,EACR24B,UAAW,eAEf,CACA,MAAMC,GAA0B,aAAiBb,IAClC,IC3Qf,SAASc,KACP,OACE5oE,EAAAA,EAAAA,MAAA,OAAKqF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,KAAG0O,SAAS,0BAAyB3O,UACnCC,EAAAA,EAAAA,KAAA,QACEE,EAAE,gNACFsO,KAAK,aAGTxO,EAAAA,EAAAA,KAAA,QAAAD,UACEC,EAAAA,EAAAA,KAAA,YAAU2O,GAAG,oBAAmB5O,UAC9BC,EAAAA,EAAAA,KAAA,QAAMiF,MAAM,KAAKtP,OAAO,KAAK6Y,KAAK,gBAK5C,CAOM,SAAUi6D,GAAUp1E,GAAuC,IAAtC,SAAE0M,EAAQ,QAAEmI,GAA0B7U,EAC/D,OACEuM,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACvD,GAAI,CAAEkB,MAAO,MAAOtP,OAAQ,OAAQyO,WAAY,UAAWJ,QAAS,UAAYE,IAAI,SAAQnE,SAAA,EAChGC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFoB,MAAO,UACP5E,OAAQ,UACR,2BAA4B,CAAE+E,SAAU,SACzCvF,SAEAA,IAGFmI,GACClI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAExD,OAAQ,WAAaa,QAAS8G,EAAOnI,UAC9CC,EAAAA,EAAAA,KAACwoE,GAAS,MAEV,OAGV,CC7Ce,SAASE,KACtB,OACE1oE,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFyH,SAAU,QACVoE,IAAK,IACLsK,KAAM,IACNmL,MAAO,IACP+S,cAAe,OACfxpB,UAAW,QACXxK,WAAY,2FACZa,MAAO,QACPtP,OAAQ,QACRwkB,OAAQ,OAIhB,CCfA,SAASquD,KACP,OACE5oE,EAAAA,EAAAA,MAAA,OAAKqF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,KAAG0O,SAAS,0BAAyB3O,UACnCC,EAAAA,EAAAA,KAAA,QACEE,EAAE,gNACFsO,KAAK,aAGTxO,EAAAA,EAAAA,KAAA,QAAAD,UACEC,EAAAA,EAAAA,KAAA,YAAU2O,GAAG,oBAAmB5O,UAC9BC,EAAAA,EAAAA,KAAA,QAAMiF,MAAM,KAAKtP,OAAO,KAAK6Y,KAAK,gBAK5C,CAEe,SAASm6D,GAAOt1E,GAAwC,IAAvC,QAAE+N,GAAkC/N,EAClE,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MACRiN,GAAUC,EAAAA,EAAAA,MAMhB,OACE5V,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAASJ,GAAI,CAAEpO,OAAQ,OAAQyO,WAAY,UAAWJ,QAAS,UAAWjE,SAAA,EACnGC,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACM,MAAI,EAACC,IAAE,EAAC3D,QANMwnE,KACtBrzD,EAAQrL,KAAK,QAAQ,EAKoBnK,UACrCC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAEoB,MAAO,UAAW5E,OAAQ,UAAW,2BAA4B,CAAE+E,SAAU,SAAWvF,SACvGsI,EAAE,yBAIPrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAExD,OAAQ,WAAaa,QAASA,EAAQrB,UAC/CC,EAAAA,EAAAA,KAACwoE,GAAS,QAIlB,C,uCCkDA,MACA,GAAe,IAA0B,8DCDzC,MACA,GAAe,IAA0B,+DCzF1B,SAASK,KACtB,MAAMhnE,GAAQC,EAAAA,EAAAA,MAEd,OAAO9B,EAAAA,EAAAA,KAAA,OAAKwN,IAA4B,SAAvB3L,EAAMwC,QAAQjQ,KAAkB00E,GAAWnkE,GAAMoQ,IAAI,GAAG9P,MAAM,OACjF,CCLe,SAAS8jE,KACtB,OACE/oE,EAAAA,EAAAA,KAACgpE,GAAAA,EAAU,CAACjnD,eAAa,EAACvS,UAAW0S,EAAAA,GAAMvM,GAAG,IAAG5V,UAC/CC,EAAAA,EAAAA,KAAC6oE,GAAI,KAGX,C,oICGO,SAASI,GAAc51E,GAAiD,IAAhD,MAAEmd,EAAK,KAAEd,EAAI,QAAE3X,GAA8B1E,EAC1E,MAAMgvB,GAAU3P,EAAAA,EAAAA,QAAgB,MAahC,OACE9S,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACpD,IAAI,QAAOnE,SAAA,EACfC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFC,QAAS,UACTI,WAAY,UACZsB,aAAc,OACdP,MAAO,SACPG,SAAU,QAEZkK,UAAU,OAAMzP,SAEfyQ,KAGHxQ,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTsK,UAAU,OACVzL,GAAI,CACFqB,WAAY,eACZ7E,OAAQ,UACR4E,MAAO,eACPG,SAAU,QAEZlE,QAlCaohB,KACH,IAADC,EAATJ,IACK,OAAPA,QAAO,IAAPA,GAAgB,QAATI,EAAPJ,EAASrP,eAAO,IAAAyP,GAAhBA,EAAkBpiB,OACpB,EA+BwBN,SAEnBhI,GAAUwqB,EAAAA,GAAAA,GAAQxqB,GAAW,QAGhCiI,EAAAA,EAAAA,KAACsiB,GAAAA,EAAI,CAAC5hB,QAAgB,OAAP3I,QAAO,IAAPA,EAAAA,EAAW,GAAI4I,MAAI,EAACF,IAAK4hB,KAExCriB,EAAAA,EAAAA,KAACiN,EAAAA,GAAK,CACJO,IAAI,4BACJzJ,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,OAAQ4K,OAAQ,WAC7Ca,QAtCmB8nE,KAClBx5D,IACLuQ,EAAAA,GAAAA,GAAiBvQ,EAAM,oBAAoB,MAwC/C,CC1DO,SAASy5D,KACd,MAAM,EAAE9gE,IAAMC,EAAAA,EAAAA,MACRvG,GAAYkkB,EAAAA,EAAAA,MAElB,OACEjmB,EAAAA,EAAAA,KAACipE,GAAc,CACblxE,QAASgK,GAAY+uD,EAAAA,GAAAA,GAAmB/uD,GAAa,GACrDyO,MAAOnI,CAAC,aACRqH,KAAM3N,GAAYqnE,EAAAA,GAAAA,GAAarnE,GAAa,IAGlD,CCXe,SAASsnE,KACtB,MAAM,EAAEhhE,IAAMC,EAAAA,EAAAA,MACRvG,GAAYkkB,EAAAA,EAAAA,MAElB,OACEjmB,EAAAA,EAAAA,KAACipE,GAAc,CACblxE,QAASgK,EACTyO,MAAOnI,EAAE,uBACTqH,KAAM3N,GAAYqnE,EAAAA,GAAAA,GAAarnE,QAAaoB,GAGlD,C,wCCdA,MAAMhD,IAAYC,EAAAA,EAAAA,IAAYyB,IAAY,CACxC+oB,eAAgB,CACdpf,SAAU,YAEZN,MAAO,CACL5F,SAAUzD,EAAMyD,SAASgkE,GACzB/jE,WAAY,KAEdslB,WAAY,CACVC,aAAc,QAEhBl1B,MAAO,CACLyY,UAAW,QACX2G,UAAW,aAEb+V,YAAa,CACXvf,SAAU,WACV6Z,MAAO,EACPzV,IAAK,MACLhB,UAAW,qBACXrO,OAAQ,UACR,UAAW,CACT4E,MAAOtD,EAAMwC,QAAQ4X,UAAUstD,WAKtB,SAASC,GAAkBn2E,GAQtC,IARuC,KACzC2U,EAAI,SACJyE,EAAQ,UACR2e,GAKD/3B,EACC,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MACR1H,EAAUT,KAEhB,OACEP,EAAAA,EAAAA,MAAC+rB,GAAAA,EAAM,CAAC3jB,KAAMA,EAAKjI,SAAA,EACjBC,EAAAA,EAAAA,KAAC6rB,GAAAA,EAAW,CAAA9rB,UACVC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAAC/D,UAAWP,EAAQgqB,eAAgBpb,UAAU,MAAKzP,UAC5DC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAAC/D,UAAWP,EAAQsK,MAAOsE,UAAU,OAAOrK,MAAM,cAAapF,SACvEsI,EAAE,wBAITrI,EAAAA,EAAAA,KAAC8rB,GAAAA,EAAa,CAAA/rB,UACZH,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CAACC,WAAS,EAAC2V,QAAS,EAAEra,SAAA,EACzBC,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACM,MAAI,EAACC,GAAI,GAAGhF,UAChBC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACuG,WAAW,UAAS1L,SAAEsI,EAAE,2BAEtCzI,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CAACC,WAAS,EAACK,MAAI,EAACa,eAAe,WAAWyU,QAAS,EAAGjW,WAAW,SAAQpE,SAAA,EAC5EC,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACM,MAAI,EAAA/E,UACRC,EAAAA,EAAAA,KAACgQ,EAAAA,EAAM,CAACy5D,kBAAgB,EAAC39D,WAAS,EAAC6R,KAAK,SAAS1N,QAAQ,WAAW9K,MAAM,UAAU/D,QAASqL,EAAS1M,SACnGsI,EAAE,sBAGPrI,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACM,MAAI,EAAA/E,UACRC,EAAAA,EAAAA,KAACgQ,EAAAA,EAAM,CAACy5D,kBAAgB,EAAC39D,WAAS,EAAC6R,KAAK,SAAS1N,QAAQ,YAAY9K,MAAM,UAAU/D,QAASgqB,EAAUrrB,SACrGsI,EAAE,gCAQnB,CClEe,SAASqhE,GAAar2E,GAA0E,IAAzE,SAAE0M,EAAQ,SAAE4pE,GAA0Dt2E,EAC1G,MAAOu2E,EAAmBC,IAAwBlhE,EAAAA,EAAAA,WAAS,IACrD,WAAEob,IAAelK,EAAAA,EAAAA,MAQvB,OACEja,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACE,QAASA,IAAMyoE,GAAqB,GAAM9pE,SAAEA,KACjDC,EAAAA,EAAAA,KAACwpE,GAAkB,CACjBxhE,KAAM4hE,EACNx+C,UAXkB1uB,gBAChBqnB,IACN8lD,GAAqB,GACjBF,GAAUA,GAAU,EASpBl9D,SAAUA,IAAMo9D,GAAqB,OAI7C,C,gEClBO,SAASC,KACd,MAAM/nE,GAAYC,EAAAA,EAAAA,MAEZ+nE,GAAY1S,EAAAA,GAAAA,IAAa3wD,GAAAA,GAAI3O,UAC3B0K,OAAQmqC,IAAiBjqC,EAAAA,GAAAA,IAAgB+D,GAAAA,GAAI3O,QAASgK,GAE9D,OACEnC,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACvD,GAAI,CAAEC,QAAS,cAAgBsP,QAAQ,SAAS/D,UAAQ,EAAC1J,MAAM,SAAQ9F,SAAA,EAC3EC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAEuB,SAAU,OAAQC,WAAY,IAAKC,OAAQ,aAAcL,MAAO,gBAAiBpF,SAChG6sC,GAAgBm9B,GACb9jE,EAAAA,GAAAA,KAAmB7C,EAAAA,GAAAA,GAAiBwpC,EAAclmC,GAAAA,GAAIrD,UAAU8C,aAAa4jE,EAAUx1B,UAAUjxC,YACjG,QAGN1D,EAAAA,EAAAA,MAACsF,EAAAA,EAAU,CAACnB,GAAI,CAAEuB,SAAU,OAAQE,OAAQ,aAAczF,SAAA,CACvD6sC,GAAeo9B,EAAAA,GAAAA,KAAgB5mE,EAAAA,GAAAA,GAAiBwpC,EAAclmC,GAAAA,GAAIrD,UAAUC,YAAc,KAAK,YAIxG,CCDe,SAAS+lE,KACtB,MAAM,EAAEhhE,IAAMC,EAAAA,EAAAA,MACRzG,GAAQC,EAAAA,EAAAA,MACR6nB,GAAcznB,EAAAA,EAAAA,GAAcL,EAAMM,YAAYC,KAAK,QAElD4F,EAAM2S,IAAWhS,EAAAA,EAAAA,WAAS,GAE3BshE,GAAYv3D,EAAAA,EAAAA,QAA8B,MAC1Cw3D,GAAWx3D,EAAAA,EAAAA,QAAO1K,GAClBjG,GAAYC,EAAAA,EAAAA,MACZ8X,GAAcC,EAAAA,EAAAA,MACdxE,GAAUC,EAAAA,EAAAA,MACVrI,GAAYC,EAAAA,EAAAA,OAEZ,cAAEwM,EAAa,WAAEmK,IAAelK,EAAAA,EAAAA,MAMhC9F,EAAexN,IACf0jE,EAAUj3D,SAAWi3D,EAAUj3D,QAAQm/C,SAAS5rD,EAAMwJ,SAC1D4K,GAAQ,EAAM,GAQhBpX,EAAAA,EAAAA,YAAU,KACJ0mE,EAAUj3D,UAAgC,IAArBk3D,EAASl3D,UAA6B,IAAThL,GACpDiiE,EAAUj3D,QAAQF,QAEpBo3D,EAASl3D,QAAUhL,CAAI,GACtB,CAACA,IAEJ,MAAMmiE,GAAiB9iE,EAAAA,EAAAA,cAAY,KACjCkO,EAAQrL,KAAK,UAAU,GACtB,CAACqL,IAEJ,OACE3V,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACpD,IAAI,QAAOnE,SAAA,CACd+Z,GACC9Z,EAAAA,EAAAA,KAACiN,GAAAA,GAAK,CACJO,IAAI,qBACJzJ,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,OAAQ4K,OAAQ,WAC7Ca,QAAS+oE,IAET,MAEJnqE,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACT,IAAKwpE,EAAW7oE,QAAS0Y,EAnCb2G,KACnB9F,GAASuvD,IAAcA,GAAS,EAQNxtE,gBACpBqnB,IACNnK,GAAc,EAAK,EAwB+D7V,GAAI,CAAEoW,OAAQ,IAAKpa,SAChG+Z,GACCla,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CACHpD,IAAI,SACJH,GAAI,CACFC,QAAS,mBACT0B,aAAc,OACdtB,WAAYvC,EAAMwC,QAAQD,WAAWoD,OACrCjH,OAAQ,WACRR,SAAA,EAEFC,EAAAA,EAAAA,KAACkN,GAAAA,GAAc,CAACtI,KAAK,UACrB5E,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAEoB,MAAO,eAAgBI,WAAY,KAAMxF,SACxDgC,GAAYwgB,EAAAA,GAAAA,GAAQxgB,EAAUuB,YAAc,MAE/CtD,EAAAA,EAAAA,KAACoqE,GAAAA,EAAW,CAACxlE,KAAK,OAAOkjE,YAAY,MAAM3iE,MAAM,gBAGnDnF,EAAAA,EAAAA,KAACgQ,EAAAA,EAAM,CAACC,QAAQ,YAAYlM,GAAI,CAAEkB,MAAO,QAAStP,OAAQ,OAAQ+P,aAAc,QAAS3F,SACtFsI,EAAE,8BAKTrI,EAAAA,EAAAA,KAACqqE,GAAAA,EAAM,CACL9/C,UAAWZ,EAAc,eAAiB,aAC1C3hB,KAAMA,EACNuK,SAAU03D,EAAUj3D,QACpB2nB,UAAMx3B,EACNse,YAAU,EACV6oD,eAAa,EACbC,cAAe,CACbC,UAAW,CACT,CACE1mE,KAAM,SACNgvB,QAAS,CACP6c,OAAQ,CAAChmB,EAAc,IAAM,EAAG,QAKxCxV,MAAO,CACLgG,OAAQ,KACRpa,SAED1M,IAAA,IAAC,gBAAE6oC,GAAiB7oC,EAAA,OACnB2M,EAAAA,EAAAA,KAACyqE,GAAAA,EAAI,IAAKvuC,EAAen8B,UACvBC,EAAAA,EAAAA,KAAC0qE,GAAAA,EAAK,CAAA3qE,UACJC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFkB,MAAO,QACPjB,QAAS,OACT0B,aAAc,OACd6B,OAAQ,oBACRnD,WAAY,WACZrE,UAEFC,EAAAA,EAAAA,KAACo5B,GAAAA,EAAiB,CAAC5O,YAAazW,EAAYhU,UAC1CH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAAnB,SAAA,EACFC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEyH,SAAU,WAAYoE,IAAK,OAAQyV,MAAO,QAAStlB,UAC5DC,EAAAA,EAAAA,KAAC0pE,GAAa,CAACC,SAAUA,IAAMhvD,GAAQ,GAAO5a,UAC5CC,EAAAA,EAAAA,KAACiN,GAAAA,GAAK,CAACO,IAAI,qBAAqBzJ,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,OAAQ4K,OAAQ,kBAIjFP,EAAAA,EAAAA,KAAC8pE,GAAe,KAEhBlqE,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFyB,OAAQ,aACRpB,WAAY,UACZsB,aAAc,MACd1B,QAAS,QACTjE,SAAA,EAEFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACF0H,WAAY,OACZnG,SAAU,QACVvF,SAEDsI,EAAE,+BAGLrI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEyB,OAAQ,cAAezF,UAChCC,EAAAA,EAAAA,KAACmpE,GAAc,OAGjBnpE,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEyB,OAAQ,cAAezF,UAChCC,EAAAA,EAAAA,KAACrM,GAAS,SAIbwZ,IAAcs4B,EAAAA,GAAU3D,IACvB9hC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFyB,OAAQ,YACRpB,WAAY,wBACZsB,aAAc,MACd1B,QAAS,QACTjE,UAEFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACF0H,WAAY,OACZnG,SAAU,OACVH,MAAO,WACPpF,SAEDsI,EAAE,6CAGL,eAKP,MAKjB,CCpMO,MAAMmpD,GAAkB,UC2BlBtoC,GAAkB,CAC7B,CACE7rB,IAAK,OACLyG,KAAM,OACNgc,KAAM,QACN6qD,SAAU,CACR,CAAEttE,IAAK,cAAeyG,KAAM,cAAegc,KAAM,QAAS0a,KCpCjD,WACb,OACEx6B,EAAAA,EAAAA,KAAA,OAAKiF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,UAC5FC,EAAAA,EAAAA,KAAA,QACEmc,SAAS,UACTC,SAAS,UACTlc,EAAE,wWACFsO,KAAK,kBAIb,GD0BM,CAAEnR,IAAK,WAAYyG,KAAM,WAAYgc,KAAM,YAAa0a,KErC/C,WACb,OACEx6B,EAAAA,EAAAA,KAAA,OAAKiF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,UAC5FC,EAAAA,EAAAA,KAAA,QACEmc,SAAS,UACTC,SAAS,UACTlc,EAAE,0mBACFsO,KAAK,kBAIb,GF2BM,CAAEnR,IAAK,cAAeyG,KAAM,cAAegc,KAAM,cAAe0a,KGtCvD,WACb,OACE56B,EAAAA,EAAAA,MAAA,OAAKqF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,QAAM4qE,EAAE,IAAIC,EAAE,IAAI5lE,MAAM,KAAKtP,OAAO,KAAKm1E,GAAG,IAAIjD,OAAO,eAAeC,YAAY,OAClF9nE,EAAAA,EAAAA,KAAA,QAAM4qE,EAAE,MAAMC,EAAE,OAAO5lE,MAAM,IAAItP,OAAO,IAAIm1E,GAAG,MAAMt8D,KAAK,QAAQq5D,OAAO,kBACzE7nE,EAAAA,EAAAA,KAAA,QAAM4qE,EAAE,OAAOC,EAAE,MAAM5lE,MAAM,IAAItP,OAAO,IAAIm1E,GAAG,MAAMt8D,KAAK,QAAQq5D,OAAO,kBACzE7nE,EAAAA,EAAAA,KAAA,QAAM4qE,EAAE,OAAOC,EAAE,OAAO5lE,MAAM,IAAItP,OAAO,IAAIm1E,GAAG,MAAMt8D,KAAK,QAAQq5D,OAAO,mBAGhF,KHgCE,CACExqE,IAAK,YACLyG,KAAM,YACNgc,KAAM,cAER,CACEziB,IAAK,CAAC,OAAQ,SACdyG,KAAM,OACN6mE,SAAU,CACR,CAAEttE,IAAK,OAAQyG,KAAM,OAAQgc,KAAM,SACnC,CAAEziB,IAAK,gBAAiByG,KAAM,kBAAmBgc,KAAM,YAG3D,CACEziB,IAAK,YACLyG,KAAM,YACNgc,KAAM,cAER,CACEziB,IAAK,OACLyG,KAAM,OACNgc,KAAM,kBAER,CACEziB,IAAK,cACLyG,KAAM,MACNgc,KAAM,4BAER,CACEziB,IAAK,eACLyG,KAAM,QACNgc,KAAM,gBAER,CACEziB,IAAK,MACLyG,KAAM,YACNgc,KAAM,gBAER,CACEziB,IAAK,SACLyG,KAAM,SACNgc,KAAM,WAER,CACEziB,IAAK,WACLyG,KAAM,YACN6mE,SAAU,CACR,CAAEttE,IAAK,mBAAoByG,KAAM,UAAW4L,KAAM,8BAA+B8qB,KIxFxE,WACb,OACEx6B,EAAAA,EAAAA,KAAA,OAAKiF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,UAC5FC,EAAAA,EAAAA,KAAA,QACEE,EAAE,0xCACFsO,KAAK,WAIb,GJgFM,CAAEnR,IAAK,oBAAqByG,KAAM,WAAY4L,KAAM,gCAAiC8qB,KKzF5E,WACb,OACEx6B,EAAAA,EAAAA,KAAA,OAAKiF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,UAC5FC,EAAAA,EAAAA,KAAA,QACEE,EAAE,+XACFsO,KAAK,WAIb,GLiFM,CACEnR,IAAK,iBACLyG,KAAM,QACN4L,KAAM,4DACN8qB,KM9FO,WACb,OACE56B,EAAAA,EAAAA,MAAA,OACEqF,MAAM,KACNtP,OAAO,KACPmK,QAAQ,YACR0O,KAAK,OACLC,MAAM,6BACNs8D,WAAW,+BAA8BhrE,SAAA,EAEzCC,EAAAA,EAAAA,KAAA,QAAM4qE,EAAE,IAAIC,EAAE,IAAI5lE,MAAM,KAAKtP,OAAO,KAAK6Y,KAAK,yBAC9C5O,EAAAA,EAAAA,MAAA,QAAAG,SAAA,EACEC,EAAAA,EAAAA,KAAA,WAAS2O,GAAG,gBAAgBq8D,oBAAoB,oBAAoB/lE,MAAM,IAAItP,OAAO,IAAGoK,UACtFC,EAAAA,EAAAA,KAAA,OAAKirE,UAAU,sBAAsBr8D,UAAU,yBAEjD5O,EAAAA,EAAAA,KAAA,SACE2O,GAAG,qBACH1J,MAAM,MACNtP,OAAO,MACPs1E,UAAU,osiBAKpB,GNwEM,CAAE5tE,IAAK,kBAAmByG,KAAM,SAAU4L,KAAM,8BAA+B8qB,KOhGtE,WACb,OACEx6B,EAAAA,EAAAA,KAAA,OAAKiF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,UAC5FC,EAAAA,EAAAA,KAAA,QACEE,EAAE,itBACFsO,KAAK,WAIb,GPwFM,CAAEnR,IAAK,mBAAoByG,KAAM,UAAW4L,KAAM,uCAAwC8qB,KQjGjF,WACb,OACE56B,EAAAA,EAAAA,MAAA,OAAKqF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,QAAM4qE,EAAE,MAAMC,EAAE,MAAM5lE,MAAM,KAAKtP,OAAO,KAAKm1E,GAAG,IAAIt8D,KAAK,WACzDxO,EAAAA,EAAAA,KAAA,QACEE,EAAE,yhDACFsO,KAAK,cAIb,GRwFM,CAAEnR,IAAK,kBAAmByG,KAAM,SAAU4L,KAAM,kCAAmC8qB,KSlG1E,WACb,OACEx6B,EAAAA,EAAAA,KAAA,OAAKiF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,UAC5FC,EAAAA,EAAAA,KAAA,QACEE,EAAE,okCACFsO,KAAK,WAIb,GT0FM,CAAEnR,IAAK,mBAAoByG,KAAM,UAAW4L,KAAM,gCAAiC8qB,KUnG1E,WACb,OACE56B,EAAAA,EAAAA,MAAA,OAAKqF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,QACEE,EAAE,kaACFsO,KAAK,WAEPxO,EAAAA,EAAAA,KAAA,QACEE,EAAE,44CACFsO,KAAK,YAIb,GVuFM,CAAEnR,IAAK,mBAAoByG,KAAM,UAAW4L,KAAM,sBAAuB8qB,KWpGhE,WACb,OACE56B,EAAAA,EAAAA,MAAA,OAAKqF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,UAAQkrE,GAAG,IAAIC,GAAG,IAAI3D,EAAE,MAAMh5D,KAAK,WACnCxO,EAAAA,EAAAA,KAAA,QACEmc,SAAS,UACTC,SAAS,UACTlc,EAAE,6lCACFsO,KAAK,cAIb,KXgGE,CACEnR,IAAK,OACLyG,KAAM,OACNgc,KAAM,iBAER,CACEziB,IAAK,UACLyG,KAAM,WAAW0tD,KACjB1xC,KAAM,GACN5P,UAAU,IAIP,SAASk7D,GAAS/tE,GACvB,MAAsB,kBAARA,EAAmBA,EAAMA,EAAI+1B,KAAK,IAClD,C,4BYnGO,SAASi4C,GAAah4E,GAQL,IAADi4E,EAAA,IARO,MAC5BzhD,EAAK,WACL0hD,EAAU,YACV/gD,EAAW,OACXF,EAAM,YACNI,EAAW,UACXH,EAAS,UACT3X,GACmBvf,EACnB,MACMm2B,GADW9J,EAAAA,EAAAA,MACSK,SAEpBre,EAAYmoB,GACTL,KAAkB,OAALK,QAAK,IAALA,OAAK,EAALA,EAAO/J,MAG7B,OAAO+J,EAAM8gD,UAAY9gD,EAAM8gD,SAASjvE,QACtCsE,EAAAA,EAAAA,KAACqqB,GAAAA,EAAW,CACVriB,KAAMujE,IAAeH,GAASvhD,EAAMxsB,KACpCitB,OAAQA,EACRC,UAAoB,OAATA,QAAS,IAATA,EAAAA,EAAa,cACxBC,YAAaA,EACb5X,UAAWA,EAAU7S,UAEL,QAAfurE,EAACzhD,EAAM8gD,gBAAQ,IAAAW,EAAAA,EAAI,IAAI1jE,KAAK4jE,IAC3B,MAAMC,EAAOD,EAAShxC,KAEtB,OACEx6B,EAAAA,EAAAA,KAACkiB,EAAAA,GAAI,CAA8BvM,GAAI61D,EAAS1rD,KAAMpQ,KAAM87D,EAAS97D,KAAK3P,UACxEC,EAAAA,EAAAA,KAACoU,GAAAA,EAAQ,CACP5D,MAAOg7D,EAAS1nE,KAChBob,OAAQxd,EAAS8pE,GACjBhxC,KAAMixC,GAAOzrE,EAAAA,EAAAA,KAACyrE,EAAI,IAAM,KACxB71E,MAAO41E,EACP9gD,YAAaA,KANN0gD,GAASI,EAASnuE,KAQtB,MAIX,IACN,CClDO,SAASquE,GAAkBr4E,GAA+E,IAA9E,KAAE2U,EAAI,OAAEkhB,EAAM,OAAEoB,EAAM,YAAEI,EAAW,YAAEF,GAAsCn3B,EAC5G,MAAOs4E,EAAgBC,IAAqBjjE,EAAAA,EAAAA,UAAwB,OAC7DkjE,EAAeC,IAAoBnjE,EAAAA,EAAAA,eAAcxF,GASlD4oE,EAA0BA,KAC9BH,EAAkB,KAAK,EAGnBI,EAAqBA,KACzBJ,EAAkB,KAAK,EAGnBjhD,EAAmBd,IAClBA,EAAM8gD,WACTqB,IACAthD,EAAYb,GACd,EAGF,OACE7pB,EAAAA,EAAAA,KAACqqB,GAAAA,EAAW,CAACriB,KAAMA,EAAMsiB,OAAQA,EAAQC,UAAU,eAAeC,YAAaA,EAAYzqB,SACxFmpB,EAAOthB,KAAI,CAACiiB,EAAOpf,KAAK,IAAAggB,EAAA,OACvBzqB,EAAAA,EAAAA,KAACkiB,EAAAA,GAAI,CAA2BvM,GAAIkU,EAAM/J,KAAMpQ,KAAMma,EAAMna,KAAK3P,UAC/DC,EAAAA,EAAAA,KAACoU,GAAAA,EAAQ,CACPxe,MAAOi0B,EACPrZ,MAAOqZ,EAAM/lB,KACb4mB,YAAaA,IAAMC,EAAgBd,GACnCI,aAAcviB,IAAA,IAAC,OAAEqI,GAAQrI,EAAA,MA9BHukE,EAACpiD,EAAc9Z,KACzC8Z,EAAM8gD,UAAY9gD,EAAM8gD,SAASjvE,SACnCkwE,EAAkBR,GAASvhD,EAAMxsB,MACjCyuE,EAAiB/7D,GACnB,EA0BsCk8D,CAAwBpiD,EAAO9Z,EAAO,EACpEoa,aAAc4hD,EACd77D,UAA6B,IAAnB2Z,EAAM3Z,SAAkBnQ,UAElCC,EAAAA,EAAAA,KAACqrE,GAAa,CACZxhD,MAAOA,EACPW,YAAawhD,EACbthD,YAAaC,EACbL,OAAQuhD,EACRN,WAAYI,OAdG,QAgBRlhD,EAhBFZ,EAAM/J,YAAI,IAAA2K,EAAAA,EAAIhgB,EAiBlB,KAIf,CC1DA,MAAMtK,IAAYC,EAAAA,EAAAA,IAAYyB,IACrB,CACLynB,QAAS,CACP3zB,OAAQ,OACR4K,OAAQ,UACRyD,QAAS,SACT,UAAW,CACT,wBAAyB,CACvBmB,MAAO,YAGX,WAAY,CACV,wBAAyB,CACvBA,MAAO,YAGX,CAACtD,EAAMM,YAAYC,KAAK,OAAQ,CAC9BzM,OAAQ,OACRqO,QAAS,WAGbulB,KAAM,CACJvlB,QAAS,SACTzD,OAAQ,UACR,UAAW,CACT,SAAU,CACR6D,WAAY,UAIlBmX,IAAK,CACHtW,MAAO,MACPtP,OAAQ,MACRyO,WAAYvC,EAAMyJ,OAAOyV,kBACzBrb,aAAc,MACd4J,YAAa,MACb,eAAgB,CACdA,YAAa,YAWd,SAAS48D,GAAY74E,GAA8C,IAA7C,OAAE61B,EAAM,YAAEwB,GAAgCr3B,EACrE,MAAMuN,EAAUT,KACVM,GAAMiS,EAAAA,EAAAA,QAAO,OAEZ1K,EAAM2S,IAAWhS,EAAAA,EAAAA,WAAS,GAmBjC,OACE/I,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CACH/D,IAAKA,EACLqE,MAAI,EAEJ3D,UAAWP,EAAQ2oB,KACnBU,aAvBqBC,KACvBvP,GAAQ,EAAK,EAuBXwP,aApBqBC,KACvBzP,GAAQ,EAAM,EAmBmB5a,SAAA,EAE/BH,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACwE,WAAS,EAACwH,QAAQ,SAASvP,GAAI,CAAEpO,OAAQ,QAASoK,SAAA,EACtDC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACsO,UAAU,OAAOrO,UAAW,GAAGP,EAAQ2a,aAC5Cvb,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACsO,UAAU,OAAOrO,UAAW,GAAGP,EAAQ2a,aAC5Cvb,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACsO,UAAU,OAAOrO,UAAW,GAAGP,EAAQ2a,gBAG9Cvb,EAAAA,EAAAA,KAAC0rE,GAAkB,CACjB1jE,KAAMA,EACNsiB,OAAW,OAAH7pB,QAAG,IAAHA,OAAG,EAAHA,EAAKuS,QACbwX,YA3BczW,KAClB4G,GAAQ,EAAM,EA2BV+P,YAxBmBb,IACvBlP,GAAQ,GACJ+P,GAAaA,EAAYb,EAAM,EAuB/BX,OAAQA,EAAOvf,QAAO,CAACkgB,EAAOpf,IAAUA,EdxEtB,OcwE4CA,QAhB5D,OAoBV,CCxFO,SAAS0hE,GAAM94E,GAAwC,IAAvC,OAAE61B,EAAM,YAAEwB,GAA0Br3B,EACzD,MACMm2B,GADW9J,EAAAA,EAAAA,MACSK,SACpBle,GAAQC,EAAAA,EAAAA,MAER6nB,GAAcznB,EAAAA,EAAAA,GAAcL,EAAMM,YAAYC,KAAK,QAElDupE,EAAgBC,IAAqBjjE,EAAAA,EAAAA,UAAwB,OAC7DkjE,EAAeC,IAAoBnjE,EAAAA,EAAAA,eAAcxF,GASlDipE,EAAuBA,KAC3BR,EAAkB,KAAK,EAGnBI,EAAqBA,KACzBJ,EAAkB,KAAK,EAGzB,SAASlqE,EAASmoB,GAChB,MAAMwiD,EAAY7iD,EAASM,MAAM,KAAK,GAEtC,MAAyB,kBAAdD,EAAMxsB,MACNwsB,EAAM/J,OAAS+J,EAAMxsB,MAAQgvE,GAA4B,SAAdxiD,EAAMxsB,KAAiBgvE,EAAU5oE,SAAS,SAGzFomB,EAAMxsB,IAAIoG,SAAS4oE,EAC5B,CAEA,MAAMC,EAAoBziD,IACnBA,EAAM8gD,WACTqB,IACIthD,GAAaA,EAAYb,GAC/B,EAGF,OACE7pB,EAAAA,EAAAA,KAAAgL,EAAAA,SAAA,CAAAjL,SACGmpB,EAAOthB,KAAI,CAACiiB,EAAOpf,KAAK,IAAAggB,EAAA8hD,EAAAC,EAAA,OACvB/hE,GfjCkB,EeiCI,MACpBzK,EAAAA,EAAAA,KAACkiB,EAAAA,GAAI,CAA2BvM,GAAc,QAAZ42D,EAAE1iD,EAAM/J,YAAI,IAAAysD,EAAAA,EAAI,GAAI78D,KAAMma,EAAMna,KAAK3P,UACrEC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAEFE,QAASA,IAAMkrE,EAAiBziD,GAChC1oB,UAAW,IAAGO,EAASmoB,GAAS,SAAW,IAC3C9lB,GAAI,CACFpO,OAAQ,OACR4K,OAAQ,UACRyD,QAAS,SACT,UAAW,CACT,wBAAyB,CACvBmB,MAAO,YAGX,WAAY,CACV,wBAAyB,CACvBA,MAAO,YAGX,CAACtD,EAAMM,YAAYC,KAAK,OAAQ,CAC9BzM,OAAQ,OACRqO,QAAS,WAEXjE,UAEFH,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CACHC,WAAS,EACTN,WAAW,SACXJ,GAAI,CAAEpO,OAAQ,QACds0B,aAAcviB,IAAA,IAAC,OAAEqI,GAAQrI,EAAA,MAjEV+kE,EAAC5iD,EAAc9Z,KACtC8Z,EAAM8gD,UAAY9gD,EAAM8gD,SAASjvE,SACnCkwE,EAAkBR,GAASvhD,EAAMxsB,MACjCyuE,EAAiB/7D,GACnB,EA6D0C08D,CAAqB5iD,EAAO9Z,EAAO,EACjEoa,aAAciiD,EAAqBrsE,SAAA,EAEnCH,EAAAA,EAAAA,MAACsF,EAAAA,EAAU,CACTnB,GAAI,CAAEzD,QAAS,OAAQ6D,WAAY,SAAUD,IAAK,SAClDoB,SAAUqkB,EAAc,OAAS,OACjCxkB,MAAOzD,EAASmoB,GAAS,eAAiB,iBAAiB9pB,SAAA,CAE1D8pB,EAAM/lB,KACN+lB,EAAM8gD,UAAW3qE,EAAAA,EAAAA,KAACoqE,GAAAA,EAAW,CAACxlE,KAAK,SAAY,SAGlD5E,EAAAA,EAAAA,KAACqrE,GAAa,CACZxhD,MAAOA,EACPW,YAAawhD,EACbthD,YAAa4hD,EACbhiD,OAAQuhD,EACRN,WAAYI,EACZphD,UAAU,qBA7CC,QA+CRiiD,EA/CF3iD,EAAM/J,YAAI,IAAA0sD,EAAAA,EAAI/hE,IAFF,QAkDbggB,EAlDGZ,EAAM/J,YAAI,IAAA2K,EAAAA,EAAIhgB,EAoD1B,KAIT,CC9Ge,SAASiiE,KACtB,OACE9sE,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQ4D,IAAK,SAAUnE,SAAA,EACzCC,EAAAA,EAAAA,KAACmsE,GAAM,CAACjjD,OAAQA,KACfA,GAAOxtB,OhBgBY,GgBhBUsE,EAAAA,EAAAA,KAACksE,GAAY,CAAChjD,OAAQA,KAAa,OAGvE,C,ICbI,GAAS,GAAO,G,YACpB,SAAS,KAAa,OAAO,GAAW4S,OAAOwmB,OAASxmB,OAAOwmB,OAAOglB,OAAS,SAAUC,GAAK,IAAK,IAAIh+D,EAAI,EAAGA,EAAIolB,UAAUjzB,OAAQ6N,IAAK,CAAE,IAAIlB,EAAIsmB,UAAUplB,GAAI,IAAK,IAAIi+D,KAAKn/D,GAAG,CAAG,GAAEo/D,eAAe55B,KAAKxlC,EAAGm/D,KAAOD,EAAEC,GAAKn/D,EAAEm/D,GAAK,CAAE,OAAOD,CAAG,EAAG,GAAShyC,MAAM,KAAM5G,UAAY,CAEnR,SAASg+C,GAASt5E,EAAMs0E,GACtB,IAAI,MACFz8D,EAAK,QACL08D,KACGjoE,GACDtM,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD4R,MAAO,GACPtP,OAAQ,GACRmK,QAAS,YACT0O,KAAM,OACNC,MAAO,6BACPhO,IAAKknE,EACL,kBAAmBC,GAClBjoE,GAAQuL,EAAqB,gBAAoB,QAAS,CAC3DyD,GAAIi5D,GACH18D,GAAS,KAAM,KAAY,GAAuB,gBAAoB,SAAU,CACjFggE,GAAI,GACJC,GAAI,GACJ3D,EAAG,GACHh5D,KAAM,qCACH,KAAU,GAAqB,gBAAoB,OAAQ,CAC9D2N,SAAU,UACVC,SAAU,UACVlc,EAAG,inCACHsO,KAAM,WACH,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,iBAAkB,CACvHG,GAAI,4BACJs5D,IAAK,QACLC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,cAAe,kBACD,gBAAoB,OAAQ,CAC1CC,UAAW,YACI,gBAAoB,OAAQ,CAC3C34B,OAAQ,EACR24B,UAAW,eAEf,CACA,MAAM,GAA0B,aAAiBqE,IAClC,I,IC5CX,GAAI,G,YACR,SAAS,KAAa,OAAO,GAAW7wC,OAAOwmB,OAASxmB,OAAOwmB,OAAOglB,OAAS,SAAUC,GAAK,IAAK,IAAIh+D,EAAI,EAAGA,EAAIolB,UAAUjzB,OAAQ6N,IAAK,CAAE,IAAIlB,EAAIsmB,UAAUplB,GAAI,IAAK,IAAIi+D,KAAKn/D,GAAG,CAAG,GAAEo/D,eAAe55B,KAAKxlC,EAAGm/D,KAAOD,EAAEC,GAAKn/D,EAAEm/D,GAAK,CAAE,OAAOD,CAAG,EAAG,GAAShyC,MAAM,KAAM5G,UAAY,CAEnR,SAASi+C,GAAav5E,EAAMs0E,GAC1B,IAAI,MACFz8D,EAAK,QACL08D,KACGjoE,GACDtM,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtD4R,MAAO,GACPtP,OAAQ,GACRmK,QAAS,YACT0O,KAAM,OACNC,MAAO,6BACPhO,IAAKknE,EACL,kBAAmBC,GAClBjoE,GAAQuL,EAAqB,gBAAoB,QAAS,CAC3DyD,GAAIi5D,GACH18D,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEwD,SAAU,2BACI,gBAAoB,OAAQ,CAC1CxO,EAAG,ofACHsO,KAAM,cACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHG,GAAI,qBACU,gBAAoB,OAAQ,CAC1C1J,MAAO,GACPtP,OAAQ,GACR6Y,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiBo+D,IAClC,ICrBR,SAAST,GAAM94E,GAAyC,IAAxC,OAAE61B,EAAM,aAAE2jD,GAA2Bx5E,EAC1D,MACMm2B,GADW9J,EAAAA,EAAAA,MACSK,UACnB+sD,EAAaC,IAAkBpkE,EAAAA,EAAAA,eAA6BxF,GAE7DmpE,EAAoBziD,IACpBA,EAAM8gD,SACJmC,IAAgB1B,GAASvhD,EAAMxsB,KACjC0vE,OAAe5pE,GAEf4pE,EAAe3B,GAASvhD,EAAMxsB,MAMlCwvE,EAAahjD,EAAM,EAGfnoB,EAAYmoB,GACTL,KAAkB,OAALK,QAAK,IAALA,OAAK,EAALA,EAAO/J,MAG7B,OACE9f,EAAAA,EAAAA,KAAAgL,EAAAA,SAAA,CAAAjL,SACGmpB,EAAOthB,KAAI,CAACiiB,EAAOpf,KAAW,IAADggB,EAAA6gD,EAC5B,OACE1rE,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAEFE,QAASA,IAAMkrE,EAAiBziD,GAChC9lB,GAAI,CACFC,QAAS,YACTqlB,aAAc,oBACd,iBAAkB,CAChBA,aAAc,SAEhBtpB,SAAA,EAEFH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQqF,eAAgB,iBAAkB5F,SAAA,EAC5DC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACI,SAAS,OAAOH,MAAM,eAAcpF,SAC7C8pB,EAAM/lB,OAGR+lB,EAAM8gD,UAAW3qE,EAAAA,EAAAA,KAACgtE,GAAa,IAAM,SAGxChtE,EAAAA,EAAAA,KAAC0gB,GAAAA,EAAQ,CAACE,GAAIksD,IAAgB1B,GAASvhD,EAAMxsB,KAAK0C,SAC/C8pB,EAAM8gD,UAAY9gD,EAAM8gD,SAASjvE,QAChCsE,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEyB,OAAQ,aAAclF,QAAS,OAAQ2D,oBAAqB,MAAOC,IAAK,UAAWnE,UAC5E,QAAfurE,EAACzhD,EAAM8gD,gBAAQ,IAAAW,EAAAA,EAAI,IAAI1jE,KAAK4jE,IAC3B,MAAMC,EAAOD,EAAShxC,KAEtB,OACEx6B,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAEFE,QAASA,IAAMkrE,EAAiBd,GAChCznE,GAAI,CACFoB,MAAOzD,EAAS8pE,GAAY,eAAiB,kBAC7CzrE,UAEFH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQ4D,IAAK,SAAUC,WAAY,UAAWpE,SAAA,CAC/D0rE,GAAOzrE,EAAAA,EAAAA,KAACyrE,EAAI,IAAM,MACnBzrE,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAEoB,MAAOzD,EAAS8pE,GAAY,eAAiB,kBAAmBzrE,SAC/EyrE,EAAS1nE,WATTsnE,GAASI,EAASnuE,KAYnB,MAIV,SA1CS,QA2CJotB,EA3CNZ,EAAM/J,YAAI,IAAA2K,EAAAA,EAAIhgB,EA4Cf,KAKhB,CC1Ee,SAASwiE,GAAY55E,GAAkC,IAAjC,QAAE6U,GAA4B7U,EACjE,MAAMkiB,GAAUC,EAAAA,EAAAA,OACTs3D,EAAaC,IAAkBpkE,EAAAA,EAAAA,eAA6BxF,IAC5D+pE,EAAYC,IAAiBxkE,EAAAA,EAAAA,WAAkB,GAEhD2jE,EAAoBziD,IACxB,GAAIA,EAAM8gD,SACJmC,IAAgB1B,GAASvhD,EAAMxsB,KACjC0vE,OAAe5pE,GAEf4pE,EAAe3B,GAASvhD,EAAMxsB,WAMlC,GAAKwsB,EAAM/J,MAAS+J,EAAMna,KAA1B,CAEiB,IAAD09D,EAET3iD,EAFP,GAAIZ,EAAMna,MACRuQ,EAAAA,GAAAA,GAA2B,QAAXmtD,EAACvjD,EAAMna,YAAI,IAAA09D,EAAAA,EAAI,GAAI,qBAEnC73D,EAAQrL,KAAe,QAAXugB,EAACZ,EAAM/J,YAAI,IAAA2K,EAAAA,EAAI,IAGzBviB,GAASA,GARyB,CAQhB,EAGlBmlE,GAAiB/qE,EAAAA,EAAAA,UAAQ,IACtB4mB,GAAOvf,QAAO,CAACkgB,EAAOpf,IAAUA,EpBfV,KoBgB5B,CAACye,GpBhB2B,IoBkBzBokD,GAAehrE,EAAAA,EAAAA,UAAQ,IACpB4mB,GAAOvf,QAAO,CAACkgB,EAAOpf,IAAUA,GpBnBV,KoBoB5B,CAACye,GpBpB2B,IoBsB/B,OACEtpB,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQqF,eAAgB,gBAAiBxB,WAAY,SAAUH,QAAS,QAASjE,SAAA,EACnGC,EAAAA,EAAAA,KAAC6oE,GAAI,KACL7oE,EAAAA,EAAAA,KAACutE,GAAAA,EAAO,CAACp5D,MAAO,CAAE5T,OAAQ,WAAaa,QAAS8G,QAOlDtI,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAAnB,SAAA,EACFC,EAAAA,EAAAA,KAACmsE,GAAM,CAACjjD,OAAQmkD,EAAgBR,aAAcP,IAE7CgB,EAAa5xE,OAAS,GACrBkE,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFC,QAAS,YACT1D,QAAS,OACTqF,eAAgB,gBAChBxB,WAAY,UAEd/C,QAASA,IAAM+rE,GAAeD,GAAYntE,SAAA,EAE1CH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQ4D,IAAK,SAAUnE,SAAA,EACzCC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEkB,MAAO,MAAOtP,OAAQ,MAAO+P,aAAc,MAAOtB,WAAY,WACzEpE,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEkB,MAAO,MAAOtP,OAAQ,MAAO+P,aAAc,MAAOtB,WAAY,WACzEpE,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEkB,MAAO,MAAOtP,OAAQ,MAAO+P,aAAc,MAAOtB,WAAY,cAE3EpE,EAAAA,EAAAA,KAACgtE,GAAa,QAGhBhtE,EAAAA,EAAAA,KAAC0gB,GAAAA,EAAQ,CAACE,GAAIssD,EAAWntE,UACvBC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFC,EAAAA,EAAAA,KAACmsE,GAAM,CAACjjD,OAAQokD,EAAcT,aAAcP,WAIhD,UAIZ,CCnFe,SAASkB,KACtB,MAAOC,EAAYC,IAAiB/kE,EAAAA,EAAAA,WAAkB,GAEhDghB,GAAcznB,EAAAA,EAAAA,GAAc,qBAMlC,OACElC,EAAAA,EAAAA,KAAAgL,EAAAA,SAAA,CAAAjL,UACEH,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACgM,QAAQ,gBAAgBvP,GAAI,CAAEkB,MAAO,QAASlF,SAAA,EAClDC,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CAACvD,GAAI,CAAEpO,OAAQ,QAASoK,SAC1B4pB,GACC3pB,EAAAA,EAAAA,KAAC2tE,GAAAA,EAAiB,CAAC5pE,GAAI,CAAExD,OAAQ,WAAaa,QAT7BwsE,KACzBF,GAAc,EAAK,KAUX9tE,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEyB,OAAQ,cAAezF,UAChCC,EAAAA,EAAAA,KAAC+oE,GAAW,OAEd/oE,EAAAA,EAAAA,KAAC6tE,GAAM,UAKb7tE,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CACHpD,IAAI,SACJoP,QAAQ,WACRvP,GAAI,CACF,2BAA4B,CAAEG,IAAK,UACnCnE,UAEFC,EAAAA,EAAAA,KAACqpE,GAAc,OAGjBrpE,EAAAA,EAAAA,KAAC8tE,GAAAA,GAAM,CACLxjD,OAAO,OACPtiB,KAAMylE,EACNvlE,QAASA,IAAMwlE,GAAc,GAC7B3pE,GAAI,CACFkB,MAAO,OACP,mBAAoB,CAClBA,MAAO,SAETlF,UAEFC,EAAAA,EAAAA,KAACitE,GAAY,CAAC/kE,QAASA,IAAMwlE,GAAc,WAKrD,CC3DA,SAASlF,KACP,OACE5oE,EAAAA,EAAAA,MAAA,OAAKqF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,KAAG0O,SAAS,0BAAyB3O,UACnCC,EAAAA,EAAAA,KAAA,QACEE,EAAE,gNACFsO,KAAK,aAGTxO,EAAAA,EAAAA,KAAA,QAAAD,UACEC,EAAAA,EAAAA,KAAA,YAAU2O,GAAG,oBAAmB5O,UAC9BC,EAAAA,EAAAA,KAAA,QAAMiF,MAAM,KAAKtP,OAAO,KAAK6Y,KAAK,gBAK5C,CAMO,SAASu/D,GAAO16E,GAAgC,IAA/B,QAAE6U,GAA0B7U,EAClD,OACEuM,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAASJ,GAAI,CAAEpO,OAAQ,OAAQyO,WAAY,UAAWJ,QAAS,UAAWjE,SAAA,EACnGC,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACM,MAAI,EAACC,IAAE,EAAAhF,UACXC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFoB,MAAO,UACP5E,OAAQ,UACR,2BAA4B,CAAE+E,SAAU,SACxCvF,SACH,kGAKHC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAExD,OAAQ,WAAaa,QAAS8G,EAAQnI,UAC/CC,EAAAA,EAAAA,KAACwoE,GAAS,QAIlB,C,spBCxCA,MAAMwF,GAAS,CAAC,EAAG,EAAG,EAAG,EAAG,GAOrB,SAASC,GAAgB56E,GAAqD,IAApD,MAAEgtC,EAAK,OAAE1qC,EAAS,QAA+BtC,EAChF,MAAMwO,GAAQC,EAAAA,EAAAA,MAEd,OACE9B,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CAACzB,MAAM,WAAW9B,GAAI,CAAEG,IAAK,WAAYnE,SAC3CiuE,GAAOpmE,KAAI,CAACgxC,EAASnuC,KACpBzK,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAEF6C,GAAI,CACFkB,MAAO,MACPtP,OAAQ,GAAG,IAAIuQ,GAAAA,EAAUuE,EAAQ,GAAG6O,UAAU00D,GAAOtyE,QAAQyK,aAAaiuB,SAASz+B,IAAS4jB,eAC5FnV,WACEw0C,GAAWvY,EACPA,GAAS,EACP,UACAA,GAAS,EACT,UACA,UACFx+B,EAAMwC,QAAQD,WAAWE,OAC/BoB,aAAc,SAZXkzC,MAkBf,CCrBO,SAASs1B,GAAW76E,GAA8C,IAA7C,UAAEyY,EAAS,UAAEuN,GAA6BhmB,EACpE,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MACRzG,GAAQC,EAAAA,EAAAA,OAENW,OAAQ0rE,GC4BZ,SAAiC96E,GAA0C,IAAzC,OAAEk2D,GAAuCl2D,EAC/E,OAAO26C,EAAAA,GAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,GAAA,gCACrB,IAAIxjD,EAAAA,GAAAA,GAAWo7C,GAAS,OACxB,MAAM6kB,QAAqBngC,MAAM,2DAA2Dsb,KAAU8I,OACpG,KAAe,IAEjB,OAAK+b,QACSA,EAAalgC,YAD3B,CAEF,KAAG,CAACqb,IAER,CDvCmC8kB,CAAwB,CAAE9kB,OAAQviB,EAAAA,MAC3DvkC,OAAQ8mD,GENZ,SAA4Bl2D,GAAoC,IAAnC,OAAEk2D,GAAiCl2D,EACpE,OAAO26C,EAAAA,GAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,GAAA,gCACrB,IAAIxjD,EAAAA,GAAAA,GAAWo7C,GAAS,OAAO,KAE/B,MAAM6kB,QAAqBngC,MACzB,wEAAwEsb,KACxE8I,OAAM,KAAe,IAEvB,OAAK+b,QAESA,EAAalgC,YAF3B,CAGF,KAAG,CAACqb,IAER,CFR6B+kB,CAAmB,CAAE/kB,OAAQviB,EAAAA,KAElDunC,GAAoBjsE,EAAAA,EAAAA,UAAQ,KAC5B6L,EAAAA,GAAAA,GAAWggE,GAAsB,KAC9BA,EAAaK,MAAM9yE,QACzB,CAACyyE,IAEEM,GAAiBnsE,EAAAA,EAAAA,UAAQ,KAC7B,IAAI6L,EAAAA,GAAAA,GAAWo7C,GAAS,OAAO,KAC/B,MAAMv/B,EAAMu/B,EAAOmlB,WAAW,GACxBA,EAAa1kD,EAAMA,EAAI,GAAK,KAClC,IAAK0kD,EAAY,OAAO,KAExB,MAAMC,EAAO,IAAIzoE,GAAAA,EAAUwoE,GAAYp1D,UAAU2tB,EAAAA,IAEjD,OAAO0nC,EAAKznD,cAAc,IACtB,EACAynD,EAAKznD,cAAc,IACnB,EACAynD,EAAKznD,cAAc,IACnB,EACAynD,EAAKznD,cAAc,IACnB,EACA,CAAC,GACJ,CAACqiC,IAEJ,OACEvpD,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFkB,MAAO,OACPa,SAAUgG,EAAY,OAAS,SAC/BN,SAAU,WACV8Z,OAAQ,MACR3vB,OAAQ,QACRukB,KAAM,MACNtL,UAAW,uBACRyK,GACHtZ,UAEFC,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CAACwE,WAAS,EAACwH,QAAQ,SAASvP,GAAI,CAAEpO,OAAQ,QAAUkQ,MAAM,WAAU9F,UACvEC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFkB,MAAO6G,EAAY,OAAS,SAC5B8iE,UAAW,aAAa/sE,EAAMwC,QAAQkD,OAAOjD,SAC7CN,QAAS,SACT,4BAA6B,CAC3BA,QAAS,SAEXjE,UAEFH,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACwE,WAAS,EAACwH,QAAQ,WAAWpP,IAAI,SAAQnE,SAAA,EAC7CH,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACpD,IAAI,QAAOnE,SAAA,EACfC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACI,SAAS,OAAOvB,GAAI,CAAE0H,WAAY,QAAS1L,SACpDsI,EAAE,eAAgB,CAAEkhD,OAAQviB,EAAAA,GAAc5a,MAAM,EAAG,OAGrDqiD,GAAiBzuE,EAAAA,EAAAA,KAACiuE,GAAgB,CAAC5tC,MAAOouC,IAAqB,SAGlE7uE,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACpD,IAAI,QAAOnE,SAAA,EACfC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACI,SAAS,OAAMvF,SAAEsI,EAAE,2BAC/BrI,EAAAA,EAAAA,KAACkiB,GAAAA,EAAI,CAACxS,KAAM,iDAAiDs3B,EAAAA,KAAgBjnC,UAC3EH,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACpD,IAAI,QAAOnE,SAAA,EACfC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeG,SAAS,OAAMvF,SAC5B,OAAjBwuE,QAAiB,IAAjBA,EAAAA,EAAqB,QAExBvuE,EAAAA,EAAAA,KAAC6uE,GAAAA,EAAY,CAACjqE,KAAM,GAAIkjE,YAAa,EAAG3iE,MAAOtD,EAAMyJ,OAAO2Q,4BAS9E,CGpFA,MAAM9b,IAAYC,EAAAA,EAAAA,IAAYyB,IACrB,CACLnB,QAAS,CACP0D,WAAY,cACZa,MAAO,OACPq0B,SAAU,EACVt1B,QAAS,SACT0B,aAAc,MACdopE,uBAAwB,EACxBC,wBAAyB,EACzB,gBAAiB,CACf/qE,QAAS,UAEX,SAAU,CACRA,QAAS,GAEXyd,WAAY5f,EAAM6f,YAAYplB,OAAO,SAAU,CAC7C01B,OAAQnwB,EAAM6f,YAAYsQ,OAAOQ,MACjCV,SAAUjwB,EAAM6f,YAAYoQ,SAASk9C,gBAEvC,CAACntE,EAAMM,YAAYC,KAAK,OAAQ,CAC9B4B,QAAS,UAEX,CAACnC,EAAMM,YAAYC,KAAK,OAAQ,CAC9B4B,QAAS,SACToH,gBAAiB,gBAGrB6jE,YAAa,CACXzjE,SAAU,WACV2G,UAAW,qBAEX+8D,cAAe,QACf,QAAS,CACP9qE,WAAYvC,EAAMwC,QAAQD,WAAWwH,aAMtC,SAASujE,GAAU97E,GAA+C,IAA9C,SAAE0M,GAAyC1M,EACpE,MAAMuN,EAAUT,KACVsf,GAAWC,EAAAA,EAAAA,OAEV0vD,EAAMC,IAAW1mE,EAAAA,EAAAA,WAAS,IAC1B2mE,EAAeC,IAAoB5mE,EAAAA,EAAAA,WAAS,IAC5C6mE,EAAYC,IAAiB9mE,EAAAA,EAAAA,WAAS,GAEvC+mE,GAAYptE,EAAAA,EAAAA,UAAQ,IACK,cAAtBmd,EAASM,UACf,CAACN,IAEJ,OACE7f,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEC,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CACHwE,WAAS,EACT/H,GAAI,CACFyH,SAAU,SACVoE,IAAK,EACL5L,QAAS,SACTrO,OAAQ,OACRyV,gBAAiB,UACjB+O,OAAQ,GACRpa,UAEFC,EAAAA,EAAAA,KAACwtE,GAAM,OAGT5tE,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAACC,UAAW,GAAGP,EAAQquE,eAAqC,cAAtBxvD,EAASM,SAA2B,MAAQ,KAAKhgB,SAAA,CACxFqvE,GAAQ3vD,EAASM,SAAStc,SAAS,aAAczD,EAAAA,EAAAA,KAAC2oE,GAAO,CAACvnE,QAASA,IAAMiuE,GAAQ,KAAa,KAC9FC,GAAgBtvE,EAAAA,EAAAA,KAACyoE,GAAU,CAACvgE,QAASA,IAAMqnE,GAAiB,KAAa,KACzEC,GAAc/vD,EAASM,SAAStc,SAAS,QAASzD,EAAAA,EAAAA,KAAC+tE,GAAO,CAAC7lE,QAASA,IAAMunE,GAAc,KAAa,MAEtGzvE,EAAAA,EAAAA,KAAA,QACEmB,UAAW,GAAGP,EAAQF,UAAUgvE,EAAY,eAAiB,KAC3DjwD,EAASM,SAAStc,SAAS,QAAU,QAAU,KAC9C1D,SAEFA,KAGHC,EAAAA,EAAAA,KAACkuE,GAAW,CAACpiE,UAAW4jE,EAAWr2D,UAAW,CAAErV,QAAS0rE,EAAY,SAAW,aAGlF1vE,EAAAA,EAAAA,KAAC0oE,GAAU,MAGjB,C,gBCzFO,SAASiH,GAAMt8E,GAAmC,IAAlC,KAAEw5B,EAAI,SAAE9sB,GAAuB1M,EACpD,OAAO2M,EAAAA,EAAAA,KAACmvE,GAAU,CAAApvE,SAAE8sB,GAAO7sB,EAAAA,EAAAA,KAACgpB,GAAAA,EAAU,CAAAjpB,SAAEA,IAAyBA,GACnE,C,2BCGA,SAAS6vE,GAAQv8E,GAAqC,IAApC,MAAE+b,EAAK,QAAEygE,GAAwBx8E,EACjD,MAAMwO,GAAQC,EAAAA,EAAAA,MAed,OATAyB,EAAAA,EAAAA,YAAU,KACR,GAAI6L,EAAO,CACT,MAAM0gE,EAAc1gE,EAAM9L,YACtB,+BAA+BysE,KAAKD,IAAgB,uBAAuBC,KAAKD,KAClFnrD,OAAOlF,SAASuxB,QAEpB,IACC,CAAC5hC,KAGFpP,EAAAA,EAAAA,KAAC2vE,GAAM,CAAC9iD,MAAM,EAAM9sB,UAClBC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,sBAAuBoK,UACvDC,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CAACwE,WAAS,EAACjG,MAAM,SAASyN,QAAQ,SAASvP,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,QAASoK,UACpFH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQ6D,WAAY,SAAU0Q,cAAe,SAAUlP,eAAgB,UAAW5F,SAAA,EACpGC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeU,MAAM,SAAS9B,GAAI,CAAEuB,SAAU,OAAQE,OAAQ,cAAezF,SAC5FopB,EAAAA,EAAK9gB,EAAE,0BAGVrI,EAAAA,EAAAA,KAACgwE,GAAkB,KAEnBpwE,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFkB,MAAO,QACPtP,OAAQ,QACRyO,WAAYvC,EAAMwC,QAAQD,WAAWE,OACrCoB,aAAc,OACd1B,QAAS,OACTwB,OAAQ,cACRzF,SAAA,EAEFH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEpO,OAAQ,QAASqP,SAAU,UAAWjF,SAAA,EAC/CC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeG,SAAS,OAAOvB,GAAI,CAAEiR,UAAW,aAAcvJ,WAAY,QAAS1L,SAClGqP,EAAM9L,cAGTtD,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeG,SAAS,OAAOvB,GAAI,CAAEiR,UAAW,cAAejV,SAC9E8vE,QAGL7vE,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFkB,MAAO,OACPtP,OAAQ,OACR2K,QAAS,OACT6D,WAAY,SACZwB,eAAgB,SAChBwL,UAAW,OACX/M,WAAY,UACZsB,aAAc,MACdnF,OAAQ,WAEVa,QAvDU6uE,KAAO,IAADC,EAC5B7vE,KAAK,GAAoB,QAApB6vE,EAAQ,OAAL9gE,QAAK,IAALA,OAAK,EAALA,EAAO9L,kBAAU,IAAA4sE,EAAAA,EAAI,MAAML,IAAU,EAsDR9vE,UAEzBC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeG,SAAS,OAAMvF,SAC7CopB,EAAAA,EAAK9gB,EAAE,8BAS1B,CAMe,SAAS8nE,GAAazoE,GAAoC,IAAnC,SAAE3H,GAA8B2H,EACpE,OAEE1H,EAAAA,EAAAA,KAACowE,GAAAA,GAAoB,CAAC17D,SAAU9D,IAAA,IAAC,MAAExB,EAAK,QAAEygE,GAASj/D,EAAA,OAAK5Q,EAAAA,EAAAA,KAAC4vE,GAAQ,CAACxgE,MAAOA,EAAOygE,QAASA,GAAW,EAAC9vE,SAClGA,GAGP,C,oDCvFA,MAAMI,IAAYC,EAAAA,EAAAA,IAAW,KACpB,CACLiwE,eAAgB,CACdprE,MAAO,OACPtP,OAAQ,OACRqP,SAAU,SACV,YAAa,CACXsrE,UAAW,kBACX70D,wBAAyB,aAG7B,qBAAsB,CACpB,KAAM,CACJ7M,UAAW,gBAEb,OAAQ,CACNA,UAAW,uBAaZ,SAAS2hE,GAAkBl9E,GAAoD,IAAnD,MAAEmd,EAAK,MAAE5a,EAAK,KAAE+O,EAAI,SAAEuL,GAA0B7c,EACjF,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MACRzG,GAAQC,EAAAA,EAAAA,MACRlB,EAAUT,MACT+xC,IAAgBC,EAAAA,GAAAA,OACjB,cAAEv4B,EAAa,QAAE42D,IAAY32D,EAAAA,EAAAA,OAE5BnX,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,IAChC8nE,EAAoBC,IAAyB/nE,EAAAA,EAAAA,UAAiC,OAIrFpF,EAAAA,EAAAA,YAAU,MAUJotE,EAAAA,GAAAA,OATJj0E,iBAEE,IAAK8oC,EAAAA,GAAqB/hC,SAAS7N,GAAQ,CACzC,MAAM66E,EAAqB,IAAIG,GAAAA,QACzBH,EAAmB94E,KAAK/B,GAC9B86E,EAAsBD,EACxB,CACF,CAGE5iC,EACF,GACC,IAoCH,OACEjuC,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFzD,QAAS,OACT6D,WAAY,SACZwB,eAAgB,gBAChBpF,OAAQ,UACRyD,QAAS,YACTI,WAAY,4BACZsB,aAAc,MACd,CAAC7D,EAAMM,YAAYC,KAAK,OAAQ,CAC9B4B,QAAS,aAGb5C,QAhDkB1E,UACpB,IAAIwT,EAEJ,IAAK,IAAD2gE,EAAAC,EACF,GAAIpuE,IAAY9M,EAAO,OAEvB,KAAM+uB,OAAOosD,IAAgB,QAAVF,EAAClsD,OAAOosD,UAAE,IAAAF,IAATA,EAAWG,iBAAmBp7E,IAAU6vC,EAAAA,GAAUyF,SAEpE,YADAgH,EAAa7pC,CAAC,kDAIhB,KAAMsc,OAAOosD,IAAgB,QAAVD,EAACnsD,OAAOosD,UAAE,IAAAD,IAATA,EAAWG,OAASr7E,IAAU6vC,EAAAA,GAAUK,KAE1D,YADAoM,EAAa7pC,CAAC,6CAIhB2F,GAAW,SAEqBwiE,EAAQ56E,EAAO66E,IAG7Cv+B,EAAa7pC,CAAC,wDAGhBuR,GAAc,GACd5L,GAAW,EACb,CAAE,MAAOoB,GACPkZ,QAAQlZ,MAAMA,GACdpB,GAAW,GAEXkkC,EAAa,wBAAwB1hC,MAAUpB,IACjD,GAiByBrP,SAAA,EAEvBC,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CAACpD,IAAI,QAAOnE,UACfC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeG,SAAS,OAAOC,WAAY,IAAIxF,SAC9DyQ,OAILxQ,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACC,UAAW,GAAGP,EAAQyvE,iBAAiB3tE,EAAU,WAAa,KAAK3C,UACtEC,EAAAA,EAAAA,KAAA,OAAKiF,MAAM,OAAOtP,OAAO,OAAO6X,IAAK7I,EAAMoQ,IAAI,SAIvD,CCtHA,MAAM5U,IAAYC,EAAAA,EAAAA,IAAYyB,IACrB,CACLiG,QAAS,CACP0D,SAAU,WACV9F,aAAc,OACdI,SAAU,QAEZorE,UAAW,CACT5wE,QAAS,OACT2D,oBAAqB,UACrBC,IAAK,YACL,CAACrC,EAAMM,YAAYC,KAAK,OAAQ,CAC9B6B,oBAAqB,OACrBC,IAAK,WAGTitE,cAAe,CACb5wE,OAAQ,UACRyD,QAAS,YACTI,WAAY,4BACZsB,aAAc,MACd,CAAC7D,EAAMM,YAAYC,KAAK,OAAQ,CAC9B4B,QAAS,aAGbotE,iBAAkB,CAChBz7E,OAAQ,OACRyO,WAAY,wBACZmD,OAAQ,oBACR7B,aAAc,MACd,CAAC7D,EAAMM,YAAYC,KAAK,OAAQ,CAC9BzM,OAAQ,aAMD,SAASi7E,KACtB,MAAM,EAAEvoE,IAAMC,EAAAA,EAAAA,MACR1H,EAAUT,MAEV,KAAE6H,EAAI,cAAE4R,IAAkBC,EAAAA,EAAAA,MAEhC,OACE7Z,EAAAA,EAAAA,KAACqP,GAAAA,EAAK,CAACrH,KAAMA,EAAME,QAASA,IAAM0R,GAAc,GAAQ1O,MAAO7C,EAAE,yBAAyBtI,UACxFC,EAAAA,EAAAA,KAACsH,EAAAA,GAAI,CAACzB,MAAM,SAAQ9F,UAClBH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAACC,UAAWP,EAAQkH,QAAQ/H,SAAA,EAC9BC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFuB,SAAU,OACVmG,WAAY,QACZ1L,UAEFC,EAAAA,EAAAA,KAACujE,EAAAA,GAAK,CACJC,WAAY,CACV6N,YACErxE,EAAAA,EAAAA,KAACyP,EAAAA,GAAU,CAACC,KAAK,mFAEnB4hE,YACEtxE,EAAAA,EAAAA,KAACyP,EAAAA,GAAU,CACTC,KAAK,2EACL3L,GAAI,CACF+1B,WAAY,kBAKpB4pC,QAAQ,mCAIZ1jE,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACwL,GAAG,OAAM3M,UACZC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACC,UAAWP,EAAQswE,UAAUnxE,SAC/BwN,EAAAA,GAAiB3F,KAAK2pE,IACrBvxE,EAAAA,EAAAA,KAACuwE,GAAkB,CAEjB//D,MAAO+gE,EAAO/gE,MACd7L,KAAM4sE,EAAO5sE,KACb/O,MAAO27E,EAAO37E,MACdsa,SAAUqhE,EAAOrhE,UAJZqhE,EAAO37E,mBAa9B,C,mGC/FO8G,eAAe80E,KAKpB,OAAOjgC,EAAAA,GAAAA,KAJM70C,MAAOizC,EAAgBC,UACrB6hC,EAAAA,GAAAA,IAAe9hC,EAAQC,IAGJ,IACpC,C,2BCOO,MAAM8hC,GAAS,CAAChnC,GAAAA,GAAKC,GAAAA,GAAKC,GAAAA,GAAKC,GAAAA,GAAS8mC,GAAAA,GAAeC,GAAAA,I,gBCb/C,SAASC,KACtB,OAAO7xE,EAAAA,EAAAA,KAACsO,GAAAA,EAAgB,CAAC1J,KAAM,GAAIb,GAAI,CAAEoB,MAAO,WAAa2sE,UAAW,GAC1E,C,gBCJO,SAASC,KACd,OACEnyE,EAAAA,EAAAA,MAAA,OAAKqF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,KAAG0O,SAAS,0BAAyB3O,UACnCC,EAAAA,EAAAA,KAAA,QAAME,EAAE,qFAAqFsO,KAAK,eAEpGxO,EAAAA,EAAAA,KAAA,QAAAD,UACEC,EAAAA,EAAAA,KAAA,YAAU2O,GAAG,oBAAmB5O,UAC9BC,EAAAA,EAAAA,KAAA,QAAMiF,MAAM,KAAKtP,OAAO,KAAK6Y,KAAK,gBAK5C,CAEO,SAASwjE,KACd,OACEpyE,EAAAA,EAAAA,MAAA,OAAKqF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,SAAA,EAC5FH,EAAAA,EAAAA,MAAA,KAAG+J,OAAO,8BAA6B5J,SAAA,EACrCC,EAAAA,EAAAA,KAAA,UAAQkrE,GAAG,KAAKC,GAAG,KAAK3D,EAAE,KAAKh5D,KAAK,aACpCxO,EAAAA,EAAAA,KAAA,QACEE,EAAE,sVACFsO,KAAK,cAGTxO,EAAAA,EAAAA,KAAA,QAAAD,UACEH,EAAAA,EAAAA,MAAA,UACE+O,GAAG,wBACHi8D,EAAE,IACFC,EAAE,IACF5lE,MAAM,KACNtP,OAAO,KACPs8E,YAAY,iBACZC,0BAA0B,OAAMnyE,SAAA,EAEhCC,EAAAA,EAAAA,KAAA,WAASmyE,aAAa,IAAI1vE,OAAO,wBACjCzC,EAAAA,EAAAA,KAAA,iBACE4gB,GAAG,cACHjD,KAAK,SACLI,OAAO,4CACPtb,OAAO,eAETzC,EAAAA,EAAAA,KAAA,gBACAA,EAAAA,EAAAA,KAAA,kBAAgBoyE,aAAa,OAC7BpyE,EAAAA,EAAAA,KAAA,eAAaqyE,IAAI,YAAYC,SAAS,SACtCtyE,EAAAA,EAAAA,KAAA,iBAAe2d,KAAK,SAASI,OAAO,kEACpC/d,EAAAA,EAAAA,KAAA,WAAS5L,KAAK,SAASi+E,IAAI,qBAAqB5vE,OAAO,oCACvDzC,EAAAA,EAAAA,KAAA,WAAS5L,KAAK,SAASwsB,GAAG,gBAAgByxD,IAAI,iCAAiC5vE,OAAO,iBAKhG,CAEO,SAASiqB,KACd,OACE9sB,EAAAA,EAAAA,MAAA,OAAKqF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,KAAG2J,OAAO,8BAA6B5J,UACrCC,EAAAA,EAAAA,KAAA,UAAQkrE,GAAG,KAAKC,GAAG,KAAK3D,EAAE,KAAKh5D,KAAK,eAEtCxO,EAAAA,EAAAA,KAAA,QACEE,EAAE,+iCACFsO,KAAK,WAEPxO,EAAAA,EAAAA,KAAA,QAAAD,UACEH,EAAAA,EAAAA,MAAA,UACE+O,GAAG,wBACHi8D,EAAE,IACFC,EAAE,IACF5lE,MAAM,KACNtP,OAAO,KACPs8E,YAAY,iBACZC,0BAA0B,OAAMnyE,SAAA,EAEhCC,EAAAA,EAAAA,KAAA,WAASmyE,aAAa,IAAI1vE,OAAO,wBACjCzC,EAAAA,EAAAA,KAAA,iBACE4gB,GAAG,cACHjD,KAAK,SACLI,OAAO,4CACPtb,OAAO,eAETzC,EAAAA,EAAAA,KAAA,gBACAA,EAAAA,EAAAA,KAAA,kBAAgBoyE,aAAa,OAC7BpyE,EAAAA,EAAAA,KAAA,eAAaqyE,IAAI,YAAYC,SAAS,SACtCtyE,EAAAA,EAAAA,KAAA,iBAAe2d,KAAK,SAASI,OAAO,kEACpC/d,EAAAA,EAAAA,KAAA,WAAS5L,KAAK,SAASi+E,IAAI,qBAAqB5vE,OAAO,oCACvDzC,EAAAA,EAAAA,KAAA,WAAS5L,KAAK,SAASwsB,GAAG,gBAAgByxD,IAAI,iCAAiC5vE,OAAO,iBAKhG,CCzEA,SAAS8vE,GAAUl/E,GAAuD,IAAtD,IAAEqkB,EAAG,WAAE86D,EAAU,cAAEC,GAAgCp/E,EACrE,MAAMwO,GAAQC,EAAAA,EAAAA,MAEd,OACE9B,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,OAAQ2K,QAAS,OAAQ6D,WAAY,UAAWpE,UAChFC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFkB,MAAO,OACPtP,OAAQ,OACR2K,QAAS,OACT6D,WAAY,SACZwB,eAAgB,UAChB5F,SAED0yE,GACCzyE,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFC,EAAAA,EAAAA,KAAC0sB,GAAS,MAEV8lD,EAAa96D,EAAItH,MACnBpQ,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFkB,MAAO,MACPtP,OAAQ,MACRyO,WAAYvC,EAAMwC,QAAQD,WAAWE,OACrCoB,aAAc,SAGhB8sE,IAAe96D,EAAItH,MACrBpQ,EAAAA,EAAAA,KAAC6xE,GAAkB,IACjBn6D,EAAItH,KAAOoiE,GACbxyE,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACFC,EAAAA,EAAAA,KAACgyE,GAAW,MAEZ,QAIZ,CAEe,SAASU,GAAYhrE,GAQd,IARe,MACnCwD,EAAK,QACLhD,EAAO,KACPF,EAAI,QACJtH,EAAO,WACP8xE,EAAU,UACVhc,EAAS,YACTj2C,GACiB7Y,EACjB,MAAM,EAAEW,IAAMC,EAAAA,EAAAA,OACPqqE,EAAaC,IAAkBjqE,EAAAA,EAAAA,UAAmB,IAEnD9G,GAAQC,EAAAA,EAAAA,MAER+wE,EAAgBziE,KACXuiE,EAAYlvE,SAAS2M,IAASA,IAASoiE,GAelDjvE,EAAAA,EAAAA,YAAU,KACJivE,IAAe9xE,EAAQhF,QACrBwM,GAASA,GACf,GACC,CAACxH,EAAS8xE,IAEb,MAAMC,EAAiB/6D,GACd8+C,IAAc9+C,EAAItH,QAAUsH,EAAIo7D,UAGzC,OACElzE,EAAAA,EAAAA,MAACyP,EAAAA,GAAK,CAACrH,KAAMA,EAAMkD,MAAOA,EAAOhD,QAASA,EAASujB,eAAe,sBAAqB1rB,SAAA,CACpFwgB,GAAcvgB,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACuG,WAAW,OAAM1L,SAAEwgB,IAA4B,MAE1EvgB,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,WAElCqK,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQuU,cAAe,SAAU3Q,IAAK,UAAWnE,SAClEW,EAAQkH,KAAI,CAAC8P,EAAKjN,KAEf7K,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAEF6C,GAAI,CACFzD,QAAS,QACTP,SAAA,EAEFC,EAAAA,EAAAA,KAACuyE,GAAU,CAAC76D,IAAKA,EAAK86D,WAAYA,EAAYhc,UAAWA,EAAWic,cAAeA,EAAc/6D,MACjG9X,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEsP,KAAM,KAAMtT,SAAA,EACrBH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFzD,QAAS,OACT0D,QAAS,YACTuD,OAAQ,aAAakrE,EAAc/6D,GAAO7V,EAAMyJ,OAAO4uB,OAASr4B,EAAMwC,QAAQD,WAAWE,SACzFoB,aAAc,OACdvB,WAAY,SACZwB,eAAgB,gBAChBpF,OAAQ,aACJsyE,EAAan7D,EAAItH,MACjB,CACEhM,WAAYvC,EAAMwC,QAAQD,WAAWwH,OACrCmnE,oBAAqB,OACrBC,qBAAsB,OACtBlE,uBAAwBp3D,EAAI3X,SAAW,IAAM,OAC7CgvE,wBAAyBr3D,EAAI3X,SAAW,IAAM,QAEhD,CAAC,GAEPqB,QAASA,KACHsW,EAAI3X,UA3DDqQ,KACvB,MAAM3F,EAAQkoE,EAAYjoE,QAAQ0F,GAElC,IAAe,IAAX3F,EACFmoE,EAAe,IAAID,EAAaviE,QAC3B,CACL,MAAM6iE,EAAiB,IAAIN,GAC3BM,EAAepoE,OAAOJ,EAAO,GAC7BmoE,EAAe,IAAIK,GACrB,GAkDkCC,CAAgBx7D,EAAItH,KAAK,EAC3CrQ,SAAA,EAEFH,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACpD,IAAI,QAAOnE,SAAA,EACfH,EAAAA,EAAAA,MAACsF,EAAAA,EAAU,CAACC,MAAM,eAAeI,WAAY,IAAKD,SAAS,OAAMvF,SAAA,CAC9D2X,EAAItH,KAAO,EAAE,QAEfwb,EAAAA,GAAAA,WAAUlU,EAAIxM,OACbwM,EAAIxM,OAEJlL,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeI,WAAY,IAAKD,SAAS,OAAMvF,SAC9D2X,EAAIxM,WAKVwM,EAAI3X,UACHC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFkB,MAAO,OACPtP,OAAQ,OACR8rB,WAAY,eACRoxD,EAAan7D,EAAItH,MAAQ,CAAExB,UAAW,kBAAqB,CAAC,GAChE7O,UAEFC,EAAAA,EAAAA,KAAC+xE,GAAK,MAEN,QAGLc,EAAan7D,EAAItH,OAAWsH,EAAI3X,UAC/BH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFovE,WAAY,aACVV,EAAc/6D,GAAO7V,EAAMyJ,OAAO4uB,OAASr4B,EAAMwC,QAAQD,WAAWE,SAEtE+kB,aAAc,aACZopD,EAAc/6D,GAAO7V,EAAMyJ,OAAO4uB,OAASr4B,EAAMwC,QAAQD,WAAWE,SAEtE8uE,YAAa,aACXX,EAAc/6D,GAAO7V,EAAMyJ,OAAO4uB,OAASr4B,EAAMwC,QAAQD,WAAWE,SAEtEwqE,uBAAwB,OACxBC,wBAAyB,QACzBhvE,SAAA,EAEFH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFC,QAAS,YACTI,WAAYvC,EAAMwC,QAAQD,WAAWwH,OACrCkjE,uBACEtY,IAAc9+C,EAAItH,MAAQsH,EAAI27D,cAAgB37D,EAAI27D,aAAa33E,OAAS,EAAI,MAAQ,OACtFqzE,wBACEvY,IAAc9+C,EAAItH,MAAQsH,EAAI27D,cAAgB37D,EAAI27D,aAAa33E,OAAS,EAAI,MAAQ,QACtFqE,SAAA,CAED2X,EAAI3X,SAAS6H,KAAI,CAAC0rE,EAAM7oE,KACvB7K,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAEF6C,GAAI,CACFzD,QAAS,OACTqF,eAAgB,gBAChBxB,WAAY,aACZgN,UAAqB,IAAV1G,EAAc,MAAQ,MACjCvG,IAAK,SACLnE,SAAA,EAEFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACsK,UAAU,MAAMlK,SAAS,OAAMvF,SACxCuzE,EAAK9iE,SAERxQ,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACsK,UAAU,MAAMlK,SAAS,OAAOvB,GAAI,CAAEsK,UAAW,SAAUtO,SACpEuzE,EAAK19E,UAbH,GAAG8hB,EAAItH,QAAQ3F,gBAiBvBiN,EAAIo7D,WACHlzE,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAEF6C,GAAI,CACFzD,QAAS,OACTqF,eAAgB,gBAChBxB,WAAY,SACZgN,UAAqB,IAAV1G,EAAc,MAAQ,OACjC1K,SAAA,EAEFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACsK,UAAU,MAAKzP,SAAEsI,EAAE,mBAC/BrI,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACsK,UAAU,MAAMrK,MAAM,cAAcpB,GAAI,CAAE+B,SAAU,SAAU/F,SACvE2X,EAAIo7D,cAVF,GAAGp7D,EAAItH,4BAaZ,KACDsH,EAAIyP,cAAgBqvC,IAAc9+C,EAAItH,MACvCxQ,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAEF6C,GAAI,CACFzD,QAAS,OACTqF,eAAgB,gBAChBxB,WAAY,SACZgN,UAAqB,IAAV1G,EAAc,MAAQ,OACjC1K,SAAA,EAEFC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACsK,UAAU,MAAKzP,SAAEsI,EAAE,mBAC/BrI,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTsK,UAAU,MACVrK,MAAM,cACNpB,GAAI,CAAE+B,SAAU,QAAS2F,WAAY,OAAQnG,SAAU,OAAQ+I,UAAW,SAAUtO,SAEnF2X,EAAIyP,iBAdF,GAAGzP,EAAItH,+BAiBZ,QAGLomD,IAAc9+C,EAAItH,MAAQsH,EAAI27D,cAAgB37D,EAAI27D,aAAa33E,OAAS,GACvEsE,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CACHwE,WAAS,EACTjG,MAAM,SACN9B,GAAI,CACFK,WAAYvC,EAAMwC,QAAQD,WAAWiH,OACrCyjE,uBAAwB,OACxBC,wBAAyB,QACzBhvE,SAED2X,EAAI27D,aAAazrE,KAAI,CAACiyB,EAAQpvB,KAC7BzK,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CAEHvD,GAAI,CACFsP,KAAM,EACN8/D,WAAsB,IAAV1oE,EAAc,OAAS,aAAa5I,EAAMwC,QAAQD,WAAWE,UACzEvE,UAEFC,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CACHgM,QAAQ,SACRzN,MAAM,SACN9B,GAAI,CACFpO,OAAQ,QAEVmW,WAAS,EAAA/L,SAER85B,KAdE,GAAGniB,EAAItH,QAAQ3F,gBAmBxB,QAEJ,UA7KD,GAAGiN,EAAItH,QAAQ3F,WAqLlC,C,gBC7RA,SAAS8oE,GAAQlgF,GAA8B,IAA7B,KAAE+c,GAAwB/c,EAC1C,MAAM,WAAEm/E,EAAU,UAAEhc,EAAS,QAAE91D,EAAO,QAAEwH,EAAO,MAAEgD,EAAK,YAAEqV,IAAgBizD,EAAAA,GAAAA,IAAepjE,GAEvF,OACEpQ,EAAAA,EAAAA,KAACyzE,GAAW,CACVvoE,MAAOA,EACPlD,MAAI,EACJwqE,WAAYA,EACZhc,UAAWA,EACX91D,QAASA,EACTwH,QAASA,EACTqY,YAAaA,GAGnB,CAEe,SAASmzD,KACtB,MAAMf,GAAcgB,EAAAA,GAAAA,MAEpB,OACE3zE,EAAAA,EAAAA,KAAAgL,EAAAA,SAAA,CAAAjL,SACG4yE,EAAY/qE,KAAKwI,IAChBpQ,EAAAA,EAAAA,KAACuzE,GAAQ,CAAYnjE,KAAMA,GAAZA,MAIvB,C,eCzBA,MAEMwjE,GAAgD,CAAC,EAgChD,SAASC,KACd,MAAO7rE,IAAQmqC,EAAAA,GAAAA,OAEf5uC,EAAAA,EAAAA,YAAU,KACRlH,GAAAA,GAAMy3E,SAAS1kE,IACQA,EAAM+F,QARhB1R,SAAS,+EA3B1B,SAAsB0R,GACpB,MAAM4+D,EAAYH,GAAez+D,GAE3B6+D,GAAM,IAAIz2C,MAAOC,UAEvB,OAAKu2C,EAKDC,EAAMD,EAAYE,MACpBL,GAAez+D,GAAW6+D,GACnB,IANPJ,GAAez+D,GAAW6+D,GACnB,EASX,CAoBYE,CAAa,uDACflsE,EAAK,6FAET,GACA,GACD,GACL,CC9Ce,SAASi8B,GAAK5wC,GAA+C,IAA9C,SAAE0M,GAAyC1M,EAIvE,OAHAwgF,MCaAtwE,EAAAA,EAAAA,YAAU,KACRlH,GAAAA,GAAM83E,UAASz3E,SACPy4B,EAAK/4B,UAAY6sD,EAAAA,EAAMC,WAAWkrB,KAAKC,aAAe5uC,GAAAA,GAAUK,aAf5EppC,iBASE,OAAO,CACT,CAMoB43E,GACH,CACLnsD,SAAS,EACThT,QAASgU,EAAAA,EAAK9gB,CAAC,mFAKd,CAAE8f,SAAS,EAAMhT,QAAS,KACjC,GACD,KDvBInV,EAAAA,EAAAA,KAAAgL,EAAAA,SAAA,CAAAjL,SAAGA,GACZ,C,uFEFA,SAASw0E,GAAWprC,EAAaC,GAC/B,OALF,SAAcorC,GACZ,OAAO,IAAIjkC,SAASod,GAAYz9B,WAAWy9B,EAAS6mB,IACtD,CAGSx/C,CAAKmU,EAAMxW,KAAKC,MAAMD,KAAK8K,SAAW9K,KAAKyW,IAAI,EAAGA,EAAMD,IACjE,CAGO,MAAMsrC,WAAsBj3E,MAAMwvB,WAAAA,GAAA,SAAA2B,WAAA,KACvC7qB,KAAO,gBAAgB,KACvBqR,QAAU,wBAAyB,EAI9B,MAAMu/D,WAAuBl3E,MAAMwvB,WAAAA,GAAA,SAAA2B,WAAA,KACxC7qB,KAAO,gBAAiB,ECmB1B,MAAM6wE,GAAiE,CACrE,CAAClwC,GAAAA,GAAQm1B,cAAe,CAAE2N,EAAG,GAAIqN,QAAS,IAAKC,QAAS,KACxD,CAACpwC,GAAAA,GAAQ82B,iBAAkB,CAAEgM,EAAG,GAAIqN,QAAS,IAAKC,QAAS,KAC3D,CAACpwC,GAAAA,GAAQk1B,UAAW,CAAE4N,EAAG,GAAIqN,QAAS,IAAKC,QAAS,KACpD,CAACpwC,GAAAA,GAAQ42B,iBAAkB,CAAEkM,EAAG,GAAIqN,QAAS,IAAKC,QAAS,KAC3D,CAACpwC,GAAAA,GAAQu1B,MAAO,CAAEuN,EAAG,GAAIqN,QAAS,IAAKC,QAAS,MAE5CC,GAAsC,CAAEvN,EAAG,EAAGqN,QAAS,EAAGC,QAAS,GAQ1D,SAASE,GAAO1hF,GAAmE,IAAlE,oBAAE2hF,EAAmB,QAAEC,EAAO,UAAEC,GAAyB7hF,EACvF,MAAM,QAAE4D,EAAO,QAAEghE,EAAO,SAAEmE,IAAalE,EAAAA,GAAAA,gBAEjCid,GAAkBlc,EAAAA,GAAAA,MAElBmc,GAAoBC,EAAAA,GAAAA,MACpBC,GAAiB5d,EAAAA,GAAAA,MAEjB6d,GAAaluE,EAAAA,EAAAA,cAChBmuE,IAAkB,IAADC,EAChB,IAAKrZ,IAAanE,EAAS,MAAM,IAAIz6D,MAAM,0BAE3C,OD9BC,SACLq7B,EAAoBxlC,GAE0B,IAE1CqiF,GAHJ,EAAEnO,EAAC,QAAEqN,EAAO,QAAEC,GAAuBxhF,EAEjCsiF,GAAY,EA6BhB,MAAO,CACLC,QA3Bc,IAAIrlC,SAAW7zC,MAAOixD,EAASkoB,KAG7C,IAFAH,EAAkBG,IAEL,CACX,IAAIpzE,EACJ,IACEA,QAAeo2B,IACV88C,IACHhoB,EAAQlrD,GACRkzE,GAAY,GAEd,KACF,CAAE,MAAOvmE,GACP,GAAIumE,EACF,MAEF,GAAIpO,GAAK,KAAOn4D,aAAiBslE,IAAiB,CAChDmB,EAAOzmE,GACPumE,GAAY,EACZ,KACF,CACApO,GACF,OACMgN,GAAWK,EAASC,EAC5B,KAIAllD,OAAQA,KACFgmD,IACJA,GAAY,EACZD,EAAgB,IAAIjB,IAAgB,EAG1C,CCXape,EACL,IACE+F,EAAS0Z,sBAAsBN,GAAMn5B,MAAK3/C,UACxC,GAAgB,OAAZq5E,EAAkB,CACpB,GAAI9+E,EAAS,CACX,MAAM++E,EAAKhB,EAAoBQ,GAE3BQ,EAAGC,SAEDX,GAAkBU,EAAGC,SAAWX,EAAe/7D,YACjD67D,EAAkBI,GAEXQ,EAAGE,UAAY1B,KAAG,MAAQj3C,KAAKy2C,OACxCoB,EAAkBI,EAEtB,CACA,MAAM,IAAId,EACZ,CACA,OAAOqB,CAAO,KAnBmC,QAArCN,EAAGd,GAA0B1c,UAAQ,IAAAwd,EAAAA,EAAIX,GAsB1D,GAEH,CAAC79E,EAASq+E,EAAgBrd,EAAS+c,EAAqB5Y,EAAUgZ,IA2BpE,OAxBA7xE,EAAAA,EAAAA,YAAU,KACR,IAAK00D,IAAYmE,IAAa+Y,EAAiB,OAE/C,MAAMgB,EAAUr6C,OAAOC,KAAKi5C,GACzBrrE,QAAQ6rE,GA7ER,SAAqBL,EAAyBa,GACnD,GAAIA,EAAGD,QAAS,OAAO,EACvB,IAAKC,EAAGI,uBAAwB,OAAO,EACvC,MAAMC,EAAmBlB,EAAkBa,EAAGI,uBAC9C,GAAIC,EAAmB,EAAG,OAAO,EACjC,MAAMC,IAAkB,IAAI/4C,MAAOC,UAAYw4C,EAAGE,WAAa1B,KAAG,MAElE,OAAI8B,EAAiB,GAEZD,EAAmB,IAGxBC,EAAiB,IAEZD,EAAmB,CAI9B,CA2DwBE,CAAYpB,EAAiBH,EAAoBQ,MAClE5tE,KAAK4tE,IACJ,MAAM,QAAEI,EAAO,OAAEjmD,GAAW4lD,EAAWC,GAUvC,OATAI,EACGv5B,MAAM05B,IAELb,EAAU,CAAEjd,UAASud,OAAMO,WAAU,IAEtC1jB,OAAOjjD,IACFA,aAAiBqlE,IACrBQ,EAAQ,CAAEhd,UAASud,OAAM1c,YAAaqc,GAAkB,IAErDxlD,CAAM,IAGjB,MAAO,KACLwmD,EAAQvsE,SAAS+lB,GAAWA,KAAS,CACtC,GACA,CAACsoC,EAASmE,EAAU+Y,EAAiBI,EAAYL,EAAWD,EAASD,IAEjE,IACT,C,gBCzGO,SAASwB,GAAsBT,GACpC,MAAO,CACLU,UAAWV,EAAQU,UACnB3d,YAAaid,EAAQjd,YACrBL,gBAAiBsd,EAAQtd,gBACzBzwC,KAAM+tD,EAAQ/tD,KACdH,OAAQkuD,EAAQluD,OAChBlS,GAAIogE,EAAQpgE,GACZ+gE,gBAAiBX,EAAQW,gBACzBC,iBAAkBZ,EAAQY,iBAE9B,CAEe,SAAS5B,KAEtB,MAAM,QAAE9c,IAAYC,EAAAA,GAAAA,gBAMd0e,GAAe/7D,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM87D,eAC/C5B,GAAsB1yE,EAAAA,EAAAA,UAAQ,IAC7B21D,GAAY2e,EAAa3e,GACvBn8B,OAAO/d,OAAO64D,EAAa3e,IAAUz/B,QAC1C,CAACC,EAAKu9C,MACAa,EAAAA,GAAAA,IAAYb,KAAKv9C,EAAIu9C,EAAGR,MAAQQ,GAC7Bv9C,IAET,CAAC,GAN4C,CAAC,GAQ/C,CAACw/B,EAAS2e,IAEPn8D,GAAWC,EAAAA,EAAAA,MACXu6D,GAAU5tE,EAAAA,EAAAA,cACdhU,IAAA,IAAC,QAAE4kE,EAAO,KAAEud,EAAI,YAAE1c,GAAqEzlE,EAAA,OACrFonB,GAASq8D,EAAAA,GAAAA,IAAmB,CAAE7e,UAASud,OAAM1c,gBAAe,GAC9D,CAACr+C,IAEGy6D,GAAY7tE,EAAAA,EAAAA,cAChBK,IAAiG,IAAhG,QAAEuwD,EAAO,KAAEud,EAAI,QAAEO,GAAyEruE,EACzF+S,GACEs8D,EAAAA,GAAAA,IAAoB,CAClB9e,UACAud,OACAO,QAASS,GAAsBT,KAElC,GAgBH,CAACt7D,EAAUu6D,IAGb,OAAOh1E,EAAAA,EAAAA,KAACg3E,GAAU,CAAChC,oBAAqBA,EAAqBC,QAASA,EAASC,UAAWA,GAC5F,C,+DC1EO,MAAM+B,IAAcC,EAAAA,GAAAA,GAAa,CACtCC,OAAQ,CAAC7a,GAAAA,EAAS8a,GAAAA,GAClBC,WAAY,CACV,CAAC/a,GAAAA,EAAQ3tD,KAAK2oE,EAAAA,GAAAA,KACd,CAACF,GAAAA,EAAQzoE,KAAK2oE,EAAAA,GAAAA,Q,4BCFX,SAASC,GAAalkF,GAAoC,IAAnC,SAAE0M,GAA8B1M,EAC5D,MAAOmkF,EAAYC,IAAiB9uE,EAAAA,EAAAA,WAAS,GAQ7C,OANApF,EAAAA,EAAAA,YAAU,KAAO,IAADm0E,GACP,QAAHA,EAAA9nE,WAAG,IAAA8nE,OAAA,EAAHA,EAAKj4D,YAAak4D,KAAKl4D,UACzBg4D,GAAc,EAChB,GACC,CAACA,IAEGD,GAAax3E,EAAAA,EAAAA,KAAAgL,EAAAA,SAAA,CAAAjL,SAAGA,KAAeC,EAAAA,EAAAA,KAAA,OAAAD,SAAK,0BAC7C,C,gBCZO,SAAS63E,KAId,OAHAC,EAAAA,GAAAA,OACAC,EAAAA,EAAAA,MAEO,IACT,C,0BCNA,MAAMC,GAAc,CAACC,GAAAA,IAEd,SAASC,GAAcC,GAC5B,GAAIA,aAAazyC,GAAAA,UAAW,CAC1B,MAAM0yC,EAAaJ,GAAYjuE,MAAMquE,GAAeA,EAAWhrE,YAAc+qE,IAC7E,IAAKC,EACH,MAAM36E,MAAM,yBAEd,OAAO26E,CACT,CACE,OAAOH,GAAAA,EAEX,CCTO,MAMDI,GAAqB,IANS,CAClCC,GAAAA,GAAeC,gBACfD,GAAAA,GAAeE,eACfF,GAAAA,GAAeG,WCJF,SAASnc,GAAYhpE,GAAyC,IAAxC,SAAE0M,GAAmC1M,GCAxEkQ,EAAAA,EAAAA,YAAU,KAAO,IAADk1E,EAKAC,EAJW,QAAzBD,EAAAE,GAAAA,GAASC,wBAAgB,IAAAH,GAAzBA,EAA2BpmB,OAAM,KAC/B/pC,QAAQlZ,MAAM,wCAAwC,IAGpDypE,EAAAA,KACiB,QAAnBH,EAAAC,GAAAA,GAASG,kBAAU,IAAAJ,GAAnBA,EAAqBrmB,OAAM,KACzB/pC,QAAQlZ,MAAM,wCAAwC,IAE1D,GACC,IDPH,MAAM2pE,GDOCz2E,EAAAA,EAAAA,UAAQ,KACb,MAAM02E,EAA2C,GAEjDA,EAAuB9uE,QAAQkuE,IAG/BY,EAAuB9uE,KAAKmuE,GAAAA,GAAex2C,SAG3C,MAAMo3C,EAAgDD,EACnDpxE,IAAIqwE,IACJrwE,KAAIvU,IAAA,IAAC,UAAE8Z,EAAS,MAAE+rE,GAAO7lF,EAAA,MAAK,CAAC8Z,EAAW+rE,EAAM,IACnD,OAAOD,CAAc,GACpB,IClBH,OAAOj5E,EAAAA,EAAAA,KAACm5E,GAAAA,kBAAiB,CAACJ,WAAYA,EAAWh5E,SAAEA,GACrD,CEJA,UAAeq5E,EAAAA,EAAAA,IAAW/lF,IAAkE,IAAjE,SAAE0M,EAAU0f,UAAU,SAAEM,IAAmC1sB,EASpF,OARAkQ,EAAAA,EAAAA,YAAU,KACRohB,OAAOC,SAAS,CACdhV,IAAK,EACLsK,KAAM,EACN2K,SAAU,UACV,GACD,CAAC9E,IAEGhgB,GAAa,IAAY,I,4BCZlC,UACEs5E,MAAO,UAGPC,aAAc,UACdC,WAAY,UACZvuD,YAAa,UACbwuD,YAAa,UACbC,WAAY,UAGZC,eAAgB,UAChBC,aAAc,UACdC,cAAe,UACfC,aAAc,UAEd59D,UAAW,UAGX69D,aAAc,UACdC,WAAY,UACZC,YAAa,UACb//C,YAAa,UAGbggD,WAAY,UACZC,UAAW,UAGXC,YAAa,UACbC,WAAY,UACZC,WAAY,UAGZC,aAAc,UACdC,YAAa,UACbC,YAAa,UAEbtgD,OAAQ,UAER1U,QAAS,UAGTi1D,OAAQ,UACRC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UAKTC,UAAW,UACXC,eAAgB,UAGhBl7D,WAAY,UACZm7D,WAAY,UACZ/6D,WAAY,UACZg7D,WAAY,UACZC,WAAY,UAGZC,gBAAiB,UACjBv6D,kBAAmB,UACnBw6D,iBAAkB,UAClBC,eAAgB,UAChBC,cAAe,UAEfC,QAAS,UAETr6D,iBAAkB,UAElBs6D,eAAgB,UAChBC,iBAAkB,UAClBC,mBAAoB,UACpBC,kBAAmB,UACnBC,gBAAiB,UACjBC,eAAgB,UAEhBC,YAAa,UACbC,YAAa,UACbC,YAAa,UAEb5wE,aAAc,UACd6wE,YAAa,UAEbC,wBAAyB,UAGzBC,iBAAkB,UAClBC,gBAAiB,UACjBC,gBAAiB,UACjBC,eAAgB,UAChBC,eAAgB,UAChBC,QAAS,UAGTC,mBAAoB,UACpB37D,kBAAmB,UACnB47D,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAElBC,qBAAsB,UACtBC,mBAAoB,UACpB/qE,QAAS,UACTgrE,QAAS,UAETC,IAAK,UACLh1D,QAAS,UACT,eAAgB,UAChBi1D,OAAQ,WClHJC,IAAWC,EAAAA,GAAAA,GAAY,CAAC,GAEvB,SAASC,GAAwB17E,GACtC,MAAM0G,GAASC,EAAAA,GAAAA,IAAY3G,GAErB27E,EAAyBj1E,EAAS1G,EAAM47E,gBAAkB57E,EAAMyJ,OAAO+V,iBAEvEq8D,EAAsBn1E,EAAS1G,EAAM87E,iBAAmB97E,EAAMyJ,OAAO2wE,YAErE2B,EAA6BC,GAAAA,EAAS;;;;;;;IAStCC,EAA6BD,GAAAA,EAAS;;;;;;;;;;;;;IAe5C,MAAO,CACLE,cAAe,CACbC,eAAgB,CACd/jE,KAAM,CACJxO,WAAY,EACZ,eAAgB,CACdnG,SAAU,OACV,2BAA4B,CAC1BA,SAAU,SAGd,eAAgB,CACdA,SAAU,OACV,2BAA4B,CAC1BA,SAAU,YAMpB24E,UAAW,CACTD,eAAgB,CACd/jE,KAAM,CACJ1U,WAAY,IACZG,aAAc,OACdw4E,cAAe,OACf,8BAA+B,CAC7B/4E,MAAOoD,EAAS1G,EAAMyJ,OAAOsuE,cAAgB/3E,EAAMyJ,OAAO+V,iBAC1D/O,YAAa/J,EAAS1G,EAAMyJ,OAAOsuE,cAAgB/3E,EAAMyJ,OAAO+V,iBAChE,UAAW,CACTjd,WAAY,2BAEd,cAAe,CACbmD,OAAQ,aAAa+D,GAAO8vE,aAC5Bj2E,MAAO,YAGX,qCAAsC,IAChCoD,EACA,CACEnE,WAAY,WAEd,CAAEe,MAAO,UAAWf,WAAY,YAEtC,wBAAyB,CACvB,cAAe,CACbA,WAAYkH,GAAO8vE,WACnB75D,UAAW,OACX,iBAAkB,CAChBpc,MAAOmG,GAAOiwE,oBAIpB,uBAAwB,CACtB,iBAAkB,CAChBp2E,MAAO,UACPoC,OAAQ,uBAId42E,iBAAkB,CAChB/5E,WAAYo5E,GAEdY,mBAAoB,CAClBh6E,WAAYmE,EAAS1G,EAAMyJ,OAAO8vE,WAAa,UAC/Cj2E,MAAOoD,EAAS,UAAY1G,EAAMyJ,OAAO0f,YACzCzjB,OAAQ,oBACRga,UAAW,UAIjB88D,SAAU,CACR/sD,aAAc,CACZgtD,UAAW,GAEbN,eAAgB,CACd/jE,KAAM,CACJskE,gBAAiB,OACjBnzE,gBAAiB7C,EAAS1G,EAAMyJ,OAAO0U,WAAane,EAAMyJ,OAAO+tE,MAGjE,4DAA6D,CAC3D,oEAAqE,CACnE,UAAW,CACTjuE,gBAAiBvJ,EAAMyJ,OAAO0f,aAEhC,2BAA4B,CAC1B7lB,MAAO,WAKfq5E,QAAS,CACP94E,aAAc,GAAG7D,EAAM6D,oBAI7B+4E,cAAe,CACbT,eAAgB,CACd/jE,KAAM,CACJ9U,MAAOtD,EAAMyJ,OAAOozE,SACpB16E,QAAS,QAEXkH,MAAO,CACL5F,SAAU,cAIhBq5E,eAAgB,CACdX,eAAgB,CACd/jE,KAAM,CACJjW,QAAS,OAET,eAAgB,CACd,CAACq5E,GAASl7E,YAAYC,KAAK,OAAQ,CACjC8sE,cAAe,SAGnB,CAACmO,GAASl7E,YAAYC,KAAK,OAAQ,CACjC4B,QAAS,WAKjB46E,eAAgB,CACdZ,eAAgB,CACd/jE,KAAM,CACJjW,QAAS,UAIf66E,SAAU,CACRb,eAAgB,CACd/jE,KAAM,CACJ9V,WAAY,UAEd26E,SAAU,CACRv3E,OAAQ,gBAIdw3E,cAAe,CACbf,eAAgB,CACd/jE,KAAM,CACJ,cAAe,CACbvU,aAAc,QAEhB,qBAAsB,CACpBP,MAAOtD,EAAMyE,cACb6U,WAAY,OACZ+zD,cAAe,OACf9jE,gBAAiBvJ,EAAMm9E,eACvB,iBAAkB,CAChB75E,MAAOtD,EAAMse,YACb/U,gBAAiBsyE,EACjB,UAAW,CACTtyE,gBAAiBsyE,GAEnB,0BAA2B,CACzBv4E,MAAOtD,EAAMse,cAGjB,UAAW,CACT/U,gBAAiBsyE,EACjBv4E,MAAOtD,EAAMse,YACb,0BAA2B,CACzBhb,MAAOtD,EAAMse,eAMnB,8BAA+B,CAC7Bhb,MAAOtD,EAAMse,YACbhF,WAAY,OACZ+zD,cAAe,OACfpkD,aAAc,MACd8O,YAAa,MACb,eAAgB,CACd9O,aAAc,GAEhB,qBAAsB,CACpB3lB,MAAO,WAET,0BAA2B,CACzBA,MAAOtD,EAAMo9E,aACb76E,WAAYo5E,EACZ,0BAA2B,CACzBr4E,MAAOtD,EAAMo9E,cAEf,qBAAsB,CACpB95E,MAAOtD,EAAMo9E,gBAInB,0BAA2B,CACzB95E,MAAOtD,EAAMse,YACbhF,WAAY,MACZ+zD,cAAe,MACft1C,YAAa,MACbx1B,WAAY,cACZ,qBAAsB,CACpBe,MAAO,WAET,0BAA2B,CACzBA,MAAOtD,EAAMo9E,aACb76E,WAAY,cACZ,0BAA2B,CACzBe,MAAOtD,EAAMo9E,cAEf,qBAAsB,CACpB95E,MAAOtD,EAAMyJ,OAAO2V,wBAOhCi+D,gBAAiB,CACflB,eAAgB,CACd/jE,KAAM,CACJ9U,MAAOtD,EAAMse,YACbvH,SAAU,UAIhBumE,gBAAiB,CACfnB,eAAgB,CACd3rE,QAAS,CACPlN,MAAOtD,EAAM68E,YAInBU,aAAc,CACZpB,eAAgB,CACd/jE,KAAM,CACJ,wBAAyB,CACvB3U,SAAU,SAGd4G,MAAO,CACL/G,MAAOtD,EAAM68E,SACb,iBAAkB,CAChBv5E,MAAOtD,EAAMyE,cACbhB,SAAU,WACVC,WAAY,QAKpB85E,iBAAkB,CAChBrB,eAAgB,CACd/jE,KAAM,CACJ7V,WAAYmE,EAAS1G,EAAMyJ,OAAO4vE,eAAiBr5E,EAAMyJ,OAAOmvE,OAChE/0E,aAAc,GAAG7D,EAAM6D,iBACvB,aAAc,CACZ4M,YAAazQ,EAAMyJ,OAAOyV,mBAE5B,0BAA2B,CACzBzO,YAAazQ,EAAMyJ,OAAOguE,cAE5B,2BAA4B,CAC1Bt1E,QAAS,IAGbkI,MAAO,CACL3G,WAAY,IACZnB,WAAYmE,EAAS1G,EAAMyJ,OAAO4vE,eAAiBr5E,EAAMyJ,OAAOmvE,OAChEz2E,QAAS,cACT0B,aAAc,GAAG7D,EAAM6D,iBACvB,gCAAiC,CAC/B1B,QAAS,YACT,mCAAoC,CAClC41B,YAAa,KAInB0lD,kBAAmB,CACjB1lD,YAAa,GAEf2lD,eAAgB,CACdjtE,YAAazQ,EAAMyJ,OAAO2Q,UAC1BvW,aAAc,GAAG7D,EAAM6D,oBAI7B85E,UAAW,CACTxB,eAAgB,CACd/jE,KAAM,CACJ,iBAAkB,CAChB9U,MAAOoD,EAAS1G,EAAMyJ,OAAO6U,YAAc,GAAKte,EAAMyJ,OAAOsvE,UAGjE6E,KAAM,CACJr0E,gBAAiBvJ,EAAMw3E,MACvBp0E,MAAO,OAETy6E,WAAY,CACVv6E,MAAOtD,EAAMyJ,OAAO0f,eAI1B20D,gBAAiB,CACf3B,eAAgB,CACd/jE,KAAM,CACJ,yBAA0B,CACxB7V,WAAYmE,EAAS1G,EAAMyJ,OAAO6U,YAAc,GAAKte,EAAMyJ,OAAOouE,eAClEh0E,aAAc,EACdP,MAAOtD,EAAM68E,SACb,sBAAuB,CACrBv5E,MAAOoD,EAAS1G,EAAMyJ,OAAO6U,YAAc,GAAKte,EAAMyJ,OAAOquE,gBAInEiG,OAAQ,CACNl6E,aAAc,GAAG7D,EAAM6D,iBACvB6b,UACE,+GAIRs+D,WAAY,CACV7B,eAAgB,CACd/jE,KAAM,CACJ3H,YAAazQ,EAAMi+E,QACnB7/E,QAASsI,EAAS,GAAM,KAI9Bw3E,UAAW,CACT/B,eAAgB,CACdjtE,OAAQ,CACN,UAAW,CACT3F,gBAAiB,kBAKzB40E,YAAa,CACXhC,eAAgB,CACdjtE,OAAQ,CACNzL,SAAU,QAEZ2U,KAAM,CACJjW,QAAS,KAIfi8E,UAAW,CACTjC,eAAgB,CACd/jE,KAAM,CACJ9U,MAAOoD,EAAS1G,EAAMyJ,OAAO0U,WAAane,EAAMyJ,OAAOkuE,YACvDp1E,WAAYmE,EAAS1G,EAAMse,YAActe,EAAMyJ,OAAOiuE,cAI5D2G,QAAS,CACPlC,eAAgB,CACd/jE,KAAM,CACJ,0CAA2C,CACzC9U,MAAO,cAKfg7E,mBAAoB,CAClBnC,eAAgB,CACd/jE,KAAM,CACJ9U,MAAOtD,EAAM68E,SACbp5E,SAAU,UAIhB86E,YAAa,CACXpC,eAAgB,CACdxtE,MAAO,CACLW,UAAW,GACX2Z,aAAc,MAIpBu1D,eAAgB,CACdrC,eAAgB,CACd/jE,KAAM,CACJsH,UAAW,UAIjB++D,8BAA+B,CAC7BtC,eAAgB,CACd/+D,KAAM,CACJ7T,gBAAiB7C,EAAS1G,EAAMyJ,OAAO2vE,UAAYp5E,EAAMyJ,OAAOguE,aAChE,2BAA4B,CAC1BhnE,YAAa/J,EAAS1G,EAAMyJ,OAAO6U,YAAc,GAAKte,EAAMyJ,OAAOiuE,YAErE,iBAAkB,CAChBp0E,MAAOoD,EAAS1G,EAAMyJ,OAAOhF,cAAgBzE,EAAMyJ,OAAO0vE,SAE5D,uBAAwB,CACtB5vE,gBAAiBvJ,EAAMyJ,OAAOkuE,aAEhC,kBAAmB,CACjBr0E,MAAOtD,EAAMyJ,OAAOkuE,gBAK5B+G,QAAS,CACPvC,eAAgB,CACdwC,cAAe,CACbn3D,aAAc,YACd/W,YAAa/J,EAAS1G,EAAMyJ,OAAO6U,YAAc,GAAKte,EAAMyJ,OAAOqvE,WAIzE8F,UAAW,CACTzC,eAAgB,CACd3E,MAAO,CACLr1E,QAAS,gBACToH,gBAAiB7C,EAAS1G,EAAMyJ,OAAO8U,WAAave,EAAMyJ,OAAOiuE,cAIvEmH,SAAU,CACR1C,eAAgB,CACd/jE,KAAM,CACJ,OAAQ,CACN7U,WAAY,UAEd,yCAA0C,CACxCw0B,YAAa,UAKrB+mD,aAAc,CACZ3C,eAAgB,CACd/jE,KAAM,CACJ3H,YAAa/J,EAAS,6BAA+B1G,EAAMyJ,OAAOqvE,QAClE,sBAAuB,CACrBr1E,SAAUzD,EAAMyD,SAASP,GACzBI,MAAOtD,EAAM++E,iBAKrBC,WAAY,CACV7C,eAAgB,CACdp7D,QAAS,CACPxe,WAAY,UACZsB,aAAc,MACd1B,QAAS,YACT8B,SAAU,QACVX,MAAO,UACPG,SAAU,OACVmG,WAAY,OACZlG,WAAY,IACZ,sBAAuB,CACrBJ,MAAO,cAKf27E,cAAe,CACb9C,eAAgB,CACd/jE,KAAM,CACJ,kCAAmC,CACjCvU,aAAc,OAEhB,0BAA2B,CACzB,iBAAkB,CAChB0F,gBAAiBvJ,EAAMyJ,OAAOsuE,gBAGlC,sBAAuB,CACrBhhE,SAAU,OACVjjB,OAAQ,SAGZorF,IAAK,CACH31E,gBAAiBvJ,EAAMyJ,OAAO0f,eAIpCg2D,kBAAmB,CACjBhD,eAAgB,CACd/jE,KAAM,CACJzO,SAAU,WACV,iBAAkB,CAChB2G,UAAW,YAKnB8uE,WAAY,CACVjD,eAAgB,CACd/jE,KAAM,CACJ,wBAAyB,CACvB9U,MAAOoD,EAAS1G,EAAMyE,cAAgBzE,EAAMse,YAC5C,eAAgB,CACdhb,MAAOtD,EAAMse,cAGjB,sBAAuB,CACrBhb,MAAOoD,EAAS1G,EAAMyJ,OAAO8vE,WAAa,UAC1C,eAAgB,CACdj2E,MAAOoD,EAAS1G,EAAMyJ,OAAO2V,kBAAoBpf,EAAMyJ,OAAO+V,kBAEhE,0BAA2B,CACzBlc,MAAOoD,EAAS1G,EAAMyJ,OAAO2V,kBAAoB,YAGrD,2BAA4B,CAC1B3O,YAAa/J,EAAS1G,EAAMyJ,OAAO8vE,WAAa,cAKxD8F,eAAgB,CACdlD,eAAgB,CACd/jE,KAAM,CACJ,MAAO,CACL,UAAW,CACTknE,eAAgB,mBAAmBt/E,EAAMyE,2BAE3C,wBAAyB,CACvBnB,MAAOtD,EAAMyE,gBAGjB,wBAAyB,CACvBnB,MAAOtD,EAAMse,gBAKrBihE,UAAW,CACTpD,eAAgB,CACd/jE,KAAM,CACJhV,MAAO,OACPS,aAAc,UAIpB27E,QAAS,CACPrD,eAAgB,CACd/jE,KAAM,CACJ,kBAAmB,IACgB,SAA7BpY,EAAMif,cAAc1sB,KAAkB,CAAEgX,gBAAiBvJ,EAAMyJ,OAAOC,cAAiB,CAAC,GAE9F,iBAAkB,IACiB,SAA7B1J,EAAMif,cAAc1sB,KAAkB,CAAEgX,gBAAiBvJ,EAAMyJ,OAAO8wE,aAAgB,CAAC,MAKnGkF,WAAY,CACVtD,eAAgB,CACd/jE,KAAM,CACJ,kBAAmB,CACjB,mBAAoB,CAClB7V,WAAYvC,EAAMyJ,OAAO8U,WACzB7Y,OAAQ,oBACR7B,aAAc,MACd,kBAAmB,CACjB1B,QAAS,GAEX,sBAAuB,CACrBI,WAAYvC,EAAMyJ,OAAO8U,WACzBjF,WAAY,OACZ+zD,cAAe,OACf/pE,MAAOtD,EAAMse,YACb,aAAc,CACZ/b,WAAYvC,EAAMyJ,OAAO8vE,WACzBn7E,QAAS,GACTM,OAAQ,cACR,UAAW,CACT6D,WAAYvC,EAAMyJ,OAAO8vE,WACzBn7E,QAAS,IAEX,WAAY,CACVmE,WAAYvC,EAAMyJ,OAAO8vE,WACzBn7E,QAAS,KAGb,WAAY,CACVmE,WAAY,WAEd,UAAW,CACTA,WAAY,iBAQ1Bm9E,QAAS,CACPvD,eAAgB,CACd/jE,KAAM,CACJ,wBAAyB,CACvBjW,QAAS,EACTI,WAAYvC,EAAMyJ,OAAO8U,WACzB7Y,OAAQ,oBACR7B,aAAc,MACdT,MAAO,QACPD,SAAU,SACV,yCAA0C,CACxCZ,WAAYvC,EAAMyJ,OAAO8U,WACzBjF,WAAY,OACZ+zD,cAAe,OACf1pE,OAAQ,QACR,WAAY,CACVpB,WAAY,WAEd,UAAW,CACTA,WAAY,YAGhB,WAAY,CACVA,WAAYvC,EAAMyJ,OAAO0U,WACzBzY,OAAQ,cAAc1F,EAAMyJ,OAAO8U,aACnC,yCAA0C,CACxChc,WAAYvC,EAAMyJ,OAAO0U,WACzB,WAAY,CACV5b,WAAYvC,EAAMyJ,OAAO8U,WACzB,qBAAsB,CACpBjb,MAAO,SAGX,4BAA6B,CAC3BA,MAAO,QAET,UAAW,CACTf,WAAYvC,EAAMyJ,OAAO8U,WACzB,qBAAsB,CACpBjb,MAAO,YAMjB,8BAA+B,CAC7BnB,QAAS,EACTI,WAAY,UACZmD,OAAQ,oBACR7B,aAAc,OACdT,MAAO,QACPD,SAAU,SACV,yCAA0C,CACxCZ,WAAY,UACZ+W,WAAY,OACZ+zD,cAAe,OACf,kBAAmB,CACjBxpE,aAAc,iBAEhB,eAAgB,CACdA,aAAc,iBAEhB,WAAY,CACVtB,WAAY,WAEd,UAAW,CACTA,WAAY,gBAOxBo9E,oBAAqB,CACnBxD,eAAgB,CACd/jE,KAAM,CACJq2D,UAAW,GAAGsN,yBACd,gCAAiC,CAC/BtN,UAAW,GAAGwN,kCAM1B,CC5sBO,SAAS2D,GAAa5/E,GAC3B,MAAM0G,GAASC,EAAAA,GAAAA,IAAY3G,GAE3B,MAAO,CACLzN,KAAMyN,EAAMif,cAAc1sB,KAC1BstF,OAAQ,CACNC,MAAO9/E,EAAMyJ,OAAO2vE,WAEtB5oE,QAAS,CACP+O,MAAO7Y,EAAS1G,EAAMyJ,OAAOgxE,iBAAmBz6E,EAAMyJ,OAAOguE,aAC7D/P,KAAMhhE,EAAS1G,EAAMyJ,OAAOixE,gBAAkB16E,EAAMyJ,OAAO+V,iBAC3DF,KAAM5Y,EAAS1G,EAAMyJ,OAAOkxE,gBAAkB36E,EAAMyJ,OAAOkuE,YAC3D,IAAKjxE,EAAS1G,EAAMyJ,OAAOmxE,eAAiB56E,EAAMyJ,OAAOiuE,WACzD,IAAKhxE,EAAS1G,EAAMyJ,OAAOoxE,eAAiB76E,EAAMyJ,OAAOmuE,WACzD,IAAKlxE,EAAS1G,EAAMyJ,OAAOqxE,QAAU96E,EAAMyJ,OAAOmuE,YAEpDx9D,UAAW,CACTmF,MAAO7Y,EAAS1G,EAAMyJ,OAAOsxE,mBAAqB/6E,EAAMyJ,OAAOouE,eAC/DnQ,KAAMhhE,EAAS1G,EAAMyJ,OAAO2V,kBAAoBpf,EAAMyJ,OAAOsuE,cAC7Dz4D,KAAM5Y,EAAS1G,EAAMyJ,OAAOsxE,mBAAqB/6E,EAAMyJ,OAAOsuE,cAC9D,IAAKrxE,EAAS1G,EAAMyJ,OAAOwxE,iBAAmBj7E,EAAMyJ,OAAOquE,aAC3D,IAAKpxE,EAAS1G,EAAMyJ,OAAOyxE,iBAAmBl7E,EAAMyJ,OAAOuuE,cAE7DzqE,MAAO,CACLgS,MAAOvf,EAAMyJ,OAAO2uE,WACpB1Q,KAAM1nE,EAAMyJ,OAAO4uE,WAErB0H,OAAQ,CACNxgE,MAAOvf,EAAMyJ,OAAO6uE,YACpB5Q,KAAM1nE,EAAMyJ,OAAO8uE,WACnBj5D,KAAMtf,EAAMyJ,OAAO+uE,YAErB70D,QAAS,CACPpE,MAAOvf,EAAMyJ,OAAOgvE,aACpB/Q,KAAM1nE,EAAMyJ,OAAOivE,YACnBp5D,KAAMtf,EAAMyJ,OAAOkvE,aAErBryD,QAAS,CACP/G,MAAOvf,EAAMyJ,OAAOwuE,aACpB,IAAKj4E,EAAMyJ,OAAOyuE,WAClBxQ,KAAM1nE,EAAMyJ,OAAO0uE,YACnB74D,KAAMtf,EAAMyJ,OAAO2uB,aAErB4nD,KAAM,CACJ,GAAIhgF,EAAMyJ,OAAOmvE,OACjB,IAAK54E,EAAMyJ,OAAOovE,QAClB,IAAK74E,EAAMkf,kBACX,IAAKlf,EAAMigF,QACX,IAAKjgF,EAAMyJ,OAAOgwE,gBAClB,IAAKz5E,EAAM68E,UAEbv9D,KAAM,CACJC,MAAOvf,EAAMyJ,OAAOgwE,gBACpB/R,KAAM1nE,EAAMyJ,OAAO0U,WACnBmB,KAAMtf,EAAMyJ,OAAO6vE,WACnB3zE,OAAQ3F,EAAMyJ,OAAO8U,WACrB9b,OAAQzC,EAAMyJ,OAAO8vE,YAEvBhpE,KAAM,CACJC,QAASxQ,EAAMse,YACflE,UAAWpa,EAAMyE,cACjBy7E,SAAUlgF,EAAM++E,aAChBz/D,KAAMtf,EAAM68E,SACZt9D,MAAOvf,EAAMmgF,UACb9nD,OAAQr4B,EAAMyJ,OAAO4uB,OACrB+nD,cAAepgF,EAAMyJ,OAAOka,QAC5B5Z,OAAQrD,EAAS1G,EAAMyJ,OAAO0U,WAAane,EAAMyJ,OAAOguE,aACxD,IAAK/wE,EAAS1G,EAAMyJ,OAAOqxE,QAAU96E,EAAMyJ,OAAOmuE,WAClDyI,cAAergF,EAAMyJ,OAAOixE,gBAC5B4F,gBAAiBtgF,EAAMyJ,OAAO2V,kBAC9B,gBAAiBpf,EAAMyJ,OAAOixE,gBAC9B,kBAAmB16E,EAAMyJ,OAAO2V,kBAChCk8D,IAAKt7E,EAAMyJ,OAAO6xE,IAClBh1D,QAAStmB,EAAMyJ,OAAO,gBACtBshB,QAAS/qB,EAAMyJ,OAAOyV,kBACtB6B,QAAS/gB,EAAMyJ,OAAO0U,YAExBoiE,SAAU,CACRx/D,QAAS,QAEXxe,WAAY,CACVi1E,MAAOx3E,EAAMw3E,MACbzsD,QAAS/qB,EAAMwgF,kBACfz2E,OAAQrD,EAAS1G,EAAMyJ,OAAO0U,WAAane,EAAMyJ,OAAOguE,aACxDjuE,OAAQ9C,EAAS1G,EAAMyJ,OAAO6vE,WAAat5E,EAAMyJ,OAAO2wE,YACxDz0E,OAAQe,EAAS1G,EAAMyJ,OAAO8U,WAAave,EAAMyJ,OAAO+tE,MACxD/0E,OAAQiE,EAAS1G,EAAMyJ,OAAO8vE,WAAav5E,EAAMyJ,OAAO4wE,YACxDoG,OAAQ/5E,EAAS1G,EAAMyJ,OAAO+vE,WAAax5E,EAAMyJ,OAAO6wE,YACxDh0D,QAAStmB,EAAMyJ,OAAO6c,SAExB5gB,OAAQ,CACN0K,OAAQ1J,EAAS,aAAa1G,EAAMyJ,OAAO8xE,SAAW,aAAav7E,EAAMyJ,OAAO+wE,0BAChFnqE,QAAS,oBACTqwE,QAASh6E,EAAS,oBAAsB,aAAa1G,EAAMyJ,OAAO+wE,0BAClE,EAAG,UACH,EAAG,0BACH,EAAG,UACHzwE,OAAQ/J,EAAMyJ,OAAO0U,WACrB3U,OAAQxJ,EAAMyJ,OAAO6vE,WACrB3zE,OAAQ3F,EAAMyJ,OAAO8U,WACrB9b,OAAQzC,EAAMyJ,OAAO8vE,YAEvBoH,OAAQ,CACNC,eAAgBl6E,EAAS,CAAEm6E,QAAS,WAAc,CAAEA,QAAS,gBAE/DhgF,QAAS,CACP0B,WAAYmE,EAAS1G,EAAMyJ,OAAO8U,WAAave,EAAMyJ,OAAO+tE,OAGlE,CC/GO,SAASsJ,GAAgB9gF,GAC9B,MAAO,CACL+gF,WAAY/gF,EAAMif,cAAc8hE,WAChCC,GAAI,CACFt9E,WAAY,IACZJ,MAAOtD,EAAMyE,cACbhB,SAAU,WAEZw9E,GAAI,CACFx9E,SAAU,WACVH,MAAOtD,EAAMyE,cACbf,WAAY,KAEdw9E,GAAI,CACFz9E,SAAU,OACVH,MAAOtD,EAAMyE,cACbf,WAAY,KAEdy9E,GAAI,CACF19E,SAAU,UACVH,MAAOtD,EAAMyE,cACbf,WAAY,KAEd09E,GAAI,CACF39E,SAAU,SACVH,MAAOtD,EAAMyE,cACbf,WAAY,KAEd29E,GAAI,CACF59E,SAAU,WACVH,MAAOtD,EAAMyE,cACbf,WAAY,KAEd49E,UAAW,CACT79E,SAAU,WACVC,WAAY,IACZJ,MAAoC,SAA7BtD,EAAMif,cAAc1sB,KAAkByN,EAAMigF,QAAUjgF,EAAM68E,UAErE0E,UAAW,CACT99E,SAAU,UACVC,WAAY,IACZJ,MAAOtD,EAAMyE,eAEf+8E,QAAS,CACP/9E,SAAU,UACVH,MAAOtD,EAAMyE,cACbf,WAAY,KAEd+9E,MAAO,CACLh+E,SAAU,WACVC,WAAY,IACZkG,WAAY,UACZtG,MAAOtD,EAAMyE,eAEfi9E,MAAO,CACLhqD,cAAe,MACfh0B,WAAY,IACZkG,WAAY,QACZtG,MAAOtD,EAAMyE,cACbhB,SAAU,QAEZk+E,YAAa,CACXryE,UAAW,EACX2Z,aAAc,EACd,YAAa,CACXlb,IAAK,OACLsK,KAAM,EACN/U,MAAOtD,EAAMg5E,QACb,yBAA0B,CACxBjrE,IAAK,QAGT,kBAAmB,CACjB5L,QAAS,iCAEX,WAAY,CACV1D,QAAS,QAEX,aAAc,CACZsP,IAAK,IAGT6zE,YAAa,CACXn+E,SAAU,WACVH,MAAOtD,EAAMigF,QACb99E,QAAS,mBACTk6E,cAAe,aACf34E,WAAY,OAEdm+E,eAAgB,CACdp+E,SAAU,YACVC,WAAY,IACZJ,MAAOtD,EAAMyE,cACb43E,cAAe,cAEjByF,aAAc,CACZpjF,OAAQ,UACRmF,aAAc,OAEhBk+E,YAAa,CACX3+E,MAAO,OACPtP,OAAQ,OACR2P,SAAU,QAEZu+E,aAAc,CACZ5+E,MAAO,OACPtP,OAAQ,OACR2P,SAAU,UAEZw+E,YAAa,CACX7+E,MAAO,OACPtP,OAAQ,OACR2P,SAAU,UAGhB,CC3GA,MAAMA,GAAW,CACfP,GAAI,UACJg/E,GAAI,WACJC,GAAI,OACJ1a,GAAI,WASC,SAASznE,GAAMif,GACpB,MAAMza,EAA2B,CAC/BiF,OAAM,GACNhG,YACAw8E,QAAS,GACTzI,MAAO,GACPgJ,kBAAmB,GACnBj+E,WAAY,GACZ+b,YAAa,GACbY,kBAAmB,GACnB29D,SAAU,GACVsD,UAAW,GACX/C,aAAc,GACdtB,iBAAkB,GAClBmC,QAAS,GACTh/D,gBACA28D,gBAAiB,6BAA6BnyE,GAAO0xE,gCAAgC1xE,GAAO2xE,6BAC5Fv3E,aAAc,IAGhB,GACO,SADCob,EAAc1sB,KAElBiS,EAAYgzE,MAAQ/tE,GAAO6vE,WAC3B90E,EAAYg8E,kBAAoB/2E,GAAO2vE,UACvC50E,EAAYjC,WAAakH,GAAO4vE,eAChC70E,EAAY8Z,YAAc7U,GAAOgwE,gBACjCj1E,EAAYC,cAAgBgF,GAAOyV,kBACnC1a,EAAYu6E,aAAet1E,GAAOiwE,iBAClCl1E,EAAYq4E,SAAWpzE,GAAOgwE,gBAC9Bj1E,EAAY27E,UAAY12E,GAAOswE,iBAC/Bv1E,EAAY24E,eAAiB1zE,GAAO0U,WACpC3Z,EAAY44E,aAAe3zE,GAAO2V,kBAClC5a,EAAYs3E,iBAAmBryE,GAAO2V,kBAAoB,GAC1D5a,EAAY44E,aAAe3zE,GAAO+tE,MAClChzE,EAAYy5E,QAAUx0E,GAAOgwE,gBAC7Bj1E,EAAYy7E,QAAUx2E,GAAOyV,uBAI7B1a,EAAYgzE,MAAQ/tE,GAAO+tE,MAC3BhzE,EAAYg8E,kBAAoB/2E,GAAO+tE,MACvChzE,EAAYjC,WAAakH,GAAOguE,aAChCjzE,EAAY8Z,YAAc7U,GAAOswE,iBACjCv1E,EAAYC,cAAgBgF,GAAOuwE,mBACnCx1E,EAAYu6E,aAAet1E,GAAOwwE,kBAClCz1E,EAAYq4E,SAAWpzE,GAAO0vE,QAC9B30E,EAAY24E,eAAiB1zE,GAAO+tE,MACpChzE,EAAY44E,aAAe3zE,GAAOswE,iBAClCv1E,EAAYs3E,iBAAmBryE,GAAOouE,eACtCrzE,EAAY44E,aAAe3zE,GAAO+tE,MAClChzE,EAAYy5E,QAAUx0E,GAAOqvE,QAC7Bt0E,EAAYy7E,QAAUx2E,GAAO0vE,QAIjC,OAAOsC,EAAAA,GAAAA,GAAY,CACjB5pD,UAAW5S,EAAcmjE,UAAY,MAAQ,MAC7C5/E,QAASo9E,GAAap7E,GACtB69E,OAAQ,CACNC,iBAAkB,CAChBn/E,SAAU,SACVK,aAAc,WACdD,WAAY,UAEdg/E,kBAAmB,CACjBp/E,SAAU,SACVK,aAAc,WACd/E,QAAS,cACT,qBAAsB,WACtB,qBAAsB,IAG1B+jF,WAAY1B,GAAgBt8E,GAC5Bm9D,WAAY+Z,GAAwBl3E,GACpCA,cACAiF,OAAM,GACNhG,YACAwb,gBACAwjE,OApFW,IAsFf,CCjGe,SAASC,KACtB,MAAM,EAAEl8E,IAAMC,EAAAA,EAAAA,MAEd,OACEtI,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,uBAAwBoK,UACxDC,EAAAA,EAAAA,KAACwE,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAASwB,eAAe,SAAS5B,GAAI,CAAEkB,MAAO,OAAQtP,OAAQ,QAASoK,UAChGH,EAAAA,EAAAA,MAAC4E,EAAAA,GAAI,CAACM,MAAI,EAAA/E,SAAA,EACRC,EAAAA,EAAAA,KAACgwE,GAAkB,KACnBhwE,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeU,MAAM,SAAS9B,GAAI,CAAEoN,UAAW,QAASpR,SACvEsI,EAAE,iCAMf,C,uCCdA,MAAMm8E,IAASjwE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,oEAE7BC,IAAQnwE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mGAC5BE,IAAOpwE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,0FAC3BG,IAAarwE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,4DAEjCI,IAAUtwE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,oGAC9BK,IAAiBvwE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,oGACrCM,IAAqBxwE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,4DAEzCO,IAAOzwE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,0IAC3BQ,IAAY1wE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,0IAChCS,IAAkB3wE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,0IACtCU,IAAU5wE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,sMAC9BW,IAAY7wE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,0IAChCY,IAAe9wE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,oJACnCa,IAAoB/wE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mJACxCc,IAAoBhxE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,0IACxCe,IAAcjxE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCAClCgB,IAA2BlxE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,kCAC/CiB,IAAoBnxE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCACxCkB,IAAapxE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCACjCnxC,IAAW/+B,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,0IAE/BmB,IAAUrxE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,oGAC9BoB,IAAgBtxE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,oGACpCqB,IAAUvxE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,4DAC9BsB,IAAkBxxE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCACtCuB,IAAoBzxE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,sEACxCwB,IAAqB1xE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,+EAGzCyB,IAAmB3xE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,oGACvC0B,IAAuB5xE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCAE3C2B,IAAS7xE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,kCAC7B4B,IAAgB9xE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,4DACpC6B,IAAiB/xE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,sEACrC8B,IAAuBhyE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,gFAC3C+B,IAAoBjyE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCAExCgC,IAAkBlyE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,gCACtCiC,IAAyBnyE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,kCAC7CkC,IAAmBpyE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,4DAEvCmC,IAAOryE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCAE3BoC,IAActyE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCAClCqC,IAAYvyE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCAOzBsC,GAAsE,CACjF,UAAWvC,GAEX,wCAAyCqB,GACzC,mCAAoCI,GAEpC,SAAUpB,GACV,qBAAsBC,GACtB,gBAAiBC,GACjB,QAASL,GACT,oBAAqBC,GACrB,eAAgBC,GAEhB,QAASI,GACT,cAAeC,GACf,oBAAqBC,GACrB,aAAcE,GACd,yDAA0DC,GAC1D,wCAAyCE,GACzC,wCAAyCD,GACzC,wCAAyChyC,GAEzC,iBAAkBkyC,GAClB,mCAAoCC,GACpC,uBAAwBC,GACxB,oBAAqBC,GACrB,YAAaR,GAEb,gBAAiByB,GAGjB,+BAAgCV,GAChC,6CAA8CN,GAC9C,2BAA4BO,GAE5B,UAAWC,GACX,sBAAuBC,GACvB,yBAA0BG,GAE1B,2CAA4CF,GAC5C,8BAA+BC,GAE/B,eAAgBE,GAChB,gCAAiCC,GACjC,sBAAuBC,GAEvB,kCAAmCX,GACnC,uBAAwBF,GACxB,gCAAiCC,GAEjC,gBAxDiBxxE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,sEAyDrC,eAxDelwE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCAyDnC,2CAxDgBlwE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,sEAyDpC,gBAAiBoC,GACjB,uBAAwBC,GAExB,cA1DevyE,EAAAA,GAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,6DA4DhCuC,GAAAA,GC/GCC,GAA6B,GAEpB,SAASC,KACtB,MAAMznE,GAAWC,EAAAA,EAAAA,MAEXynE,EAAUrrD,OAAOC,KAAKgrD,IAE5B,OACE/mF,EAAAA,EAAAA,KAAC8+C,EAAAA,GAAK,CAACh/B,KAAMqnE,EAAQpnF,UACnBC,EAAAA,EAAAA,KAAC2vE,GAAM,CAAC9iD,KAAMpN,EAASM,SAAStc,SAAS,QAAQ1D,UAC/CH,EAAAA,EAAAA,MAACiiB,EAAAA,GAAM,CAACpC,SAAUA,EAAS1f,SAAA,CACxBonF,EAAQv/E,KAAK4hB,IACZ,MAAMha,EAAYy3E,GAAiBxjF,SAAS+lB,GAAY5U,GAAAA,EAAcmyE,GAAav9D,GACnF,OAAOxpB,EAAAA,EAAAA,KAAC8+C,EAAAA,GAAK,CAAgBsoC,OAAK,EAACtnE,KAAM0J,EAAUha,UAAWA,GAA3Cga,EAAwD,KAG7ExpB,EAAAA,EAAAA,KAAC8+C,EAAAA,GAAK,CAACh/B,KAAK,IAAItQ,UAAW+0E,OANI9kE,EAASM,aAWlD,CCzBe,SAASosD,KACtB,OACEvsE,EAAAA,EAAAA,MAACiiB,EAAAA,GAAM,CAAA9hB,SAAA,EACLC,EAAAA,EAAAA,KAAC8+C,EAAAA,GAAK,CAACsoC,OAAK,EAACtnE,KAAK,IAAG/f,UACnBC,EAAAA,EAAAA,KAACqnF,EAAAA,GAAQ,CAAC1xE,GAAG,aAEf3V,EAAAA,EAAAA,KAACsnF,GAAU,MAGjB,C,wECyBe,SAASC,KACtB,MAAMzmE,GAAgBjG,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMgG,iBAE/Cm0C,EAAiBE,IAAsBxsD,EAAAA,EAAAA,UAAoC,CAAC,IAC5E6+E,EAAeC,IAAoB9+E,EAAAA,EAAAA,UAAuC,OAEjF++E,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,MCzCK,WACL,MAAMC,GAAgBC,EAAAA,EAAAA,OAEtBvkF,EAAAA,EAAAA,YAAU,KACJohB,OAAOosD,IAAMpsD,OAAOosD,GAAGE,OACrBtsD,OAAOosD,GAAGE,KAAK8W,sBACjBpjE,OAAOosD,GAAGE,KAAK8W,sBAAqB,KAClC,MAAM56E,GAAY66E,EAAAA,EAAAA,MAEd76E,GAAaA,IAAcs4B,EAAAA,GAAUK,MAEvC+hD,GACF,IAIAljE,OAAOosD,GAAGE,KAAKgX,mBACjBtjE,OAAOosD,GAAGE,KAAKgX,mBAAmBC,IAChC,MAAM/6E,GAAY66E,EAAAA,EAAAA,MACd76E,GAAaA,IAAcs4B,EAAAA,GAAUK,MACnCoiD,GACFL,GAEJ,IAEN,GACC,GACL,CDeEM,IACAl/E,EAAAA,EAAAA,KAEA,MAAQjB,KAAMogF,EAAkB,YAAEtuE,IAAgBD,EAAAA,EAAAA,OAE1CnX,QAAS2lF,IAA6BC,EAAAA,EAAAA,OACtC5lF,QAAS6lF,EAAwB,SAAEC,G5B/BtC,SAAgCn1F,GAA6D,IAA5D,yBAAEg1F,GAAuDh1F,EAC/F,MAAOo1F,EAAeC,IAAoB//E,EAAAA,EAAAA,WAAS,IAC5CggF,EAASC,IAAcjgF,EAAAA,EAAAA,WAAS,IAEhC6/E,EAAUK,IAAelgF,EAAAA,EAAAA,eAAqCxF,GAE/DyK,GAAsBC,EAAAA,GAAAA,MACtBi7E,GAAqBC,EAAAA,GAAAA,MACrB7/E,GAAkBC,EAAAA,EAAAA,OACjB,CAAEiwC,IAAwBC,EAAAA,GAAAA,OAEjC91C,EAAAA,EAAAA,YAAU,KACJ89B,GAAAA,KAAYQ,GAAAA,GAAQC,GACtByO,QAAQC,IAAI,EACVw4C,EAAAA,GAAAA,OACA13C,EAAAA,GAAAA,MAAmB+gB,OAAM,KAAe,IACxCmf,KAAoBnf,OAAM,KAAe,MACxChW,MAAK30C,IAAoD,IAADuhF,EAAAC,EAAA,IAAjDC,EAAcC,EAAeC,GAAe3hF,EACpD,MAAM4hF,EAAwE,GAEjE,OAAbF,QAAa,IAAbA,GAAAA,EAAex/E,SAAS8mC,IACtB44C,EAAkBp/E,KAAK,CACrB3N,WAAYm0C,EAAK64C,aAAaxxF,QAC9B+E,SAAU4zC,EAAK64C,aAAazsF,WAG9BwsF,EAAkBp/E,KAAK,CACrB3N,WAAYm0C,EAAK84C,YAAYzxF,QAC7B+E,SAAU4zC,EAAK84C,YAAY1sF,UAC3B,IAGU,OAAdusF,QAAc,IAAdA,GAAAA,EAAgBz/E,SAASrD,IACvB+iF,EAAkBp/E,KAAK,CACrB3N,WAAYgK,EAAMkjF,SAClB3sF,SAAUyJ,EAAM2mD,eAChB,IAGQ,OAAZi8B,QAAY,IAAZA,GAAAA,EAAcv/E,SAAS8mC,IACrB44C,EAAkBp/E,KAAK,CACrB3N,WAAYm0C,EAAKxzC,OAAOnF,QACxB+E,SAAU4zC,EAAKxzC,OAAOJ,WAGxBwsF,EAAkBp/E,KAAK,CACrB3N,WAAYm0C,EAAKvzC,OAAOpF,QACxB+E,SAAU4zC,EAAKvzC,OAAOL,WAGxB+rF,EAAYM,GAEZ/vC,EAAqB,CAAE/7C,IAAKqzC,EAAKrzC,IAAKsR,GAAI+hC,EAAKn0C,WAAW+G,YAAa,KAGzE8K,EAAAA,GAAAA,IAAek7E,GACf17E,EAAoB07E,GACpBR,EAAmBK,GAEnB,MAAMO,EAAiB,IAC8E,QAAnGT,EAAgB,OAAZE,QAAY,IAAZA,OAAY,EAAZA,EAAcvhF,KAAK8P,GAAQ,CAACA,EAAInb,WAAW+G,WAAYoU,EAAIxa,OAAOnF,QAAS2f,EAAIva,OAAOpF,kBAAS,IAAAkxF,EAAAA,EAAI,MAKrG,QAJFC,EAAiB,OAAbE,QAAa,IAAbA,OAAa,EAAbA,EAAexhF,KAAK8P,GAAQ,CAC9BA,EAAInb,WAAW+G,WACfoU,EAAI8xE,YAAYzxF,QAChB2f,EAAI6xE,aAAaxxF,kBACjB,IAAAmxF,EAAAA,EAAI,IACN1wD,QAAO,CAAC2e,EAAMC,IACPD,EAAK3tC,OAAO4tC,IAClB,KAEHuyC,EAAAA,GAAAA,IAAgBD,IAChBE,EAAAA,GAAAA,IAAaN,EAAkB1hF,KAAK2B,GAAMA,EAAEhN,cAE5CqsF,GAAW,EAAK,IAGlBA,GAAW,EACb,GACC,KAEHrlF,EAAAA,EAAAA,YAAU,KACR,GAAI2F,GAAmBA,EAAgBxN,OAAS,EAAG,CACjD,MAAM4tF,EAAoBpgF,EAAgBtB,KAAKrF,IACtC,CACLhG,WAAYgG,EAAMhG,WAClBO,SAAUyF,EAAMzF,aAIpB8Q,EAAoB07E,GAEpBZ,GAAiB,GAEjB,MAAM71C,EAAW3pC,EAAgBtB,KAAK8P,GAAQA,EAAInb,cAElDotF,EAAAA,GAAAA,IAAgB92C,IAChB+2C,EAAAA,GAAAA,IAAa/2C,EACf,MAAYw1C,GACVK,GAAiB,EACnB,GACC,CAACx/E,EAAiBm/E,KAErB9kF,EAAAA,EAAAA,YAAU,KACR,GAAI89B,GAAAA,KAAYQ,GAAAA,GAAQC,GAAI,CAC1B4vC,GAAO9nE,SAASrH,IACdqL,EAAoB,CAClB,CACErR,WAAYgG,EAAMxK,QAClB+E,SAAUyF,EAAMzF,WAElB,IAGJ,MAAM+1C,EAAW6+B,GAAO9pE,KAAK8P,GAAQA,EAAI3f,WACzC4xF,EAAAA,GAAAA,IAAgB92C,IAChB+2C,EAAAA,GAAAA,IAAa/2C,EACf,EAEAzkC,EAAAA,GAAAA,IAAe,CACb,CAAE7R,WAAY6rB,GAAAA,GAAYrwB,QAAS+E,SAAUsrB,GAAAA,GAAYtrB,UACzD,CAAEP,WAAYmK,GAAAA,GAAI3O,QAAS+E,SAAU4J,GAAAA,GAAI5J,WACzC,GACD,IAGH,MAAM+sF,GAAiBC,EAAAA,GAAAA,MAYvB,OAXAvmF,EAAAA,EAAAA,YAAU,KACR,GAAIsmF,EAAgB,CAClB,MAAME,EAAejuD,OAAOC,KAAK8tD,GAAgBjiF,KAAKvK,IAAG,CACvDd,WAAYc,EACZP,SAAU+sF,EAAexsF,QAG3B+Q,EAAAA,GAAAA,IAAe27E,EACjB,IACC,CAACF,KAEGvnF,EAAAA,EAAAA,UAAQ,KACN,CACLI,QAAS2lF,GAA4BI,IAAkBE,EACvDH,cAED,CAACC,EAAeJ,EAA0BM,EAASH,GACxD,C4BhH0DwB,CAAwB,CAAE3B,6BAE5E4B,EAAc,IAAIC,GAAAA,EAElBC,GAAwB9iF,EAAAA,EAAAA,cAC3BhK,IACC83D,GAAoBxqD,IAAS,IAAAy/E,EAAA,MAAM,IAAKz/E,EAAW,CAACtN,IAAqB,QAAf+sF,EAACz/E,EAAUtN,UAAI,IAAA+sF,EAAAA,EAAI,GAAK,EAAG,GAAE,GAEzF,CAACj1B,IAGH,OACEn1D,EAAAA,EAAAA,KAACu3E,GAAa,CAAAx3E,UACZC,EAAAA,EAAAA,KAACqqF,GAAAA,EAAa,CAACC,OAAQrT,GAAYl3E,UACjCC,EAAAA,EAAAA,KAACuqF,GAAAA,GAAmB,CAACtuB,OAAQguB,EAAYlqF,UACvCC,EAAAA,EAAAA,KAACwqF,EAAAA,EAAoB,CAACC,aAAW,EAAA1qF,UAC/BH,EAAAA,EAAAA,MAACy8D,GAAY,CAAAt8D,SAAA,EACXC,EAAAA,EAAAA,KAAC8+C,EAAAA,GAAK,CAACtvC,UAAWwzD,KAClBhjE,EAAAA,EAAAA,KAAC0qF,GAAmB,KACpB1qF,EAAAA,EAAAA,KAAC2qF,EAAAA,EAAa,CAAC9oF,MAAOA,GAAMif,GAAe/gB,UACzCC,EAAAA,EAAAA,KAACi9B,GAAAA,EAAgB,CAAC7G,SAAU,IAAIr2B,UAC9BC,EAAAA,EAAAA,KAAC80D,GAAAA,GAAcv1B,SAAQ,CACrB3pC,MAAO,CACL4yF,WACAvzB,kBACAE,mBAAoBg1B,EACpB3C,gBACAC,oBACA1nF,UAEFH,EAAAA,EAAAA,MAACgrF,GAAY,CAAA7qF,SAAA,EACXC,EAAAA,EAAAA,KAAC6qF,EAAAA,GAAW,KACZjrF,EAAAA,EAAAA,MAACkrF,GAAgB,CAAA/qF,SAAA,CACdwoF,GACCvoF,EAAAA,EAAAA,KAAC2U,GAAAA,EAAY,KAEb3U,EAAAA,EAAAA,KAACmwE,GAAa,CAAApwE,UACZC,EAAAA,EAAAA,KAACmsE,GAAM,OAGXnsE,EAAAA,EAAAA,KAACsa,EAAAA,GAAiB,KAClBta,EAAAA,EAAAA,KAAC0zE,GAAW,KACZ1zE,EAAAA,EAAAA,KAAC43E,GAAW,IACX99D,GAAc9Z,EAAAA,EAAAA,KAAC8jE,EAAa,IAAM,KAClCskB,GAAqBpoF,EAAAA,EAAAA,KAAC4wE,GAAe,IAAM,2BAYpE,CElGO,SAASma,KACd,OACE/qF,EAAAA,EAAAA,KAACgrF,EAAAA,GAAe,CAAC7hE,KAAMA,EAAAA,EAAKppB,UAC1BC,EAAAA,EAAAA,KAACirF,EAAAA,GAAmB,CAClBC,SAAUC,EAAAA,GAAoBC,WAC9BC,QAAS,CAACxlD,EAAAA,IACVylD,oBAAqB,CACnBC,cAAerkD,EAAAA,GAEfskD,QAAS,CAAC,gCACVzrF,UAEFC,EAAAA,EAAAA,KAACunF,GAAG,OAIZ,CCrBAkE,KAAAA,OAAaC,MACbD,KAAAA,OAAaE,MpFQyB,kBAAzBrlD,EAAAA,IACT28B,EAAAA,GAAAA,WAAmB38B,EAAAA,IAEnB28B,EAAAA,GAAAA,IAAY,CACV2oB,aAAa,EACbC,kBAAoBhT,EAAAA,GAAuB,SAAUl0D,OAAS,aAAe,gBAA9C,aAGjCs+C,EAAAA,GAAAA,WAAmB,OAAQ,CAAE6oB,UAAU,EAAMC,OAAO,I,gBqFdjD,SAASC,KAEd,OAAOn4E,QAAQ+zB,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,0BAAAA,2CAAAA,cAAAA,aAAAA,qBAAAA,KAAAA,mBAAAA,wFAAAA,yBAAAA,OAAAA,qBAAAA,gGAAYqkD,kBAC7B,C,mBCiCA7b,GAAAA,EAAY,CACV8b,IAAKtkD,+FACLukD,YDjBIH,KAAuB,UAfsBA,KAkB1C,cAFuB,aCiB9BI,SDtBOxkD,ECuBPykD,iBAAkB7rD,OAAsD,QAAhD8rD,GAAC1kD,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,0BAAAA,2CAAAA,cAAAA,aAAAA,qBAAAA,KAAAA,mBAAAA,wFAAAA,yBAAAA,OAAAA,qBAAAA,gGAAY2kD,2CAAmC,IAAAD,GAAAA,GAAI,GAC5EE,WAbgEjmF,GA7B3D,SAA2B6I,GAAoB,IAADq9E,EAAAC,EAAAC,EAAAC,EAEnD,QAAiB,QAAjBH,EAAIr9E,EAAM+F,eAAO,IAAAs3E,IAAbA,EAAehpF,SAAS,uCAGX,QAAjBipF,EAAIt9E,EAAM+F,eAAO,IAAAu3E,IAAbA,EAAejpF,SAAS,sDAExB,UAAW2L,IAAgC,kBAAhBA,EAAMy9E,QAG/Bz9E,EAAMy9E,MAAM9pB,MAAM,wBAIP,QAAjB4pB,EAAIv9E,EAAM+F,eAAO,IAAAw3E,IAAbA,EAAe5pB,MAAM,uBAGR,QAAjB6pB,EAAIx9E,EAAM+F,eAAO,IAAAy3E,IAAbA,EAAe7pB,MAAM,iBAGrB3zD,aAAiB09E,cAAgC,gBAAX,OAAL19E,QAAK,IAALA,OAAK,EAALA,EAAOtL,KAG9C,CAOMipF,CAAkBxmF,GACb,KAGF,IAAKA,EAAOymF,MAAO,CAAEx7B,QAAQ,KASpCy7B,aAAc,CACZ,IAAIC,GAAAA,GAAe,CACjBC,kCAAkC,EAClCC,4BAA4B,OCzClCzoE,OAAO0oE,QAAU,CAACz3E,EAAK03E,EAAKC,EAAKnyD,EAAKhsB,KACpC,MAAMo+E,EAASp+E,EAAQA,EAAM9L,WAAa,GAC1CglB,QAAQlZ,MAAMwG,EAAK03E,EAAKC,EAAKnyD,EAAKhsB,EAAO,yBAErC,+BAA+B2gE,KAAKyd,IAAW,uBAAuBzd,KAAKyd,KAC7E7oE,OAAOlF,SAASuxB,QAClB,EAKFrsB,OAAOijB,QAAU,CAAC,EAElB,MAAM3tB,GAAOuK,SAASipE,eAAe,SAErCC,EAAAA,EAAAA,GAAWzzE,IAAMkW,QAEfnwB,EAAAA,EAAAA,KAACu/B,EAAAA,GAAQ,CAAC0pB,MAAOA,EAAAA,EAAMlpD,UACrBC,EAAAA,EAAAA,KAAC2tF,EAAAA,EAAW,CAACjrF,QAAS,KAAMkrF,UAAWA,EAAAA,EAAU7tF,UAC/CC,EAAAA,EAAAA,KAAC6tF,EAAAA,GAAa,CAAA9tF,UACZC,EAAAA,EAAAA,KAAC+qF,GAAe,WxFoGlB,kBAAmB+C,WACrBA,UAAUC,cAAcC,MACrB3xC,MAAM4xC,IACLA,EAAaC,YAAY,IAE1B77B,OAAOjjD,IACNkZ,QAAQlZ,MAAMA,EAAM+F,QAAQ,G,kFyFvIpC,MAAMg5E,GAAW55E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,gFAC/BO,GAAOzwE,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,iIAC3B2J,GAAY75E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,gFAChC4J,GAAkB95E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,uKACtC6J,GAAmB/5E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,qJACvC/S,GAASn9D,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,sEAC7B8J,GAAeh6E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,gFACnC+J,GAAej6E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,sEACnCgK,GAAQl6E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,kCAC5BiK,GAAen6E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,4DACnCE,GAAOpwE,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,sEAC3BkK,GAAcp6E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,sEAClCmC,GAAOryE,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCAC3BmK,GAAar6E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCACjCiC,GAAyBnyE,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCAC7CoK,GAAOt6E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCAC3BqK,GAAav6E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,gFACjCsK,GAAUx6E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,gFAC9BuK,GAAcz6E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,gFAClCwK,GAAQ16E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,kCAC5ByK,GAAY36E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mCAChC0K,GAAiB56E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,gCACrC2K,GAAwB76E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,mJAC5C4K,GAAiB96E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,0IACrC6K,GAAoB/6E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,0IACxC8K,GAAuBh7E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,0IAC3C+K,GAA4Bj7E,EAAAA,EAAAA,IAASkwE,EAAAA,EAAAA,OAAK,IAAM,wKAEzCgL,EAAoB,CAC/BC,cAAe,iBACfC,UAAW,aACXC,gBAAiB,mBACjBC,uBAAwB,0BACxBC,wBAAyB,+BACzBC,YAAa,eACbC,oBAAqB,2BACrBC,oBAAqB,2BACrBC,WAAY,cACZC,mBAAoB,0BACpBC,UAAW,aACXC,kBAAmB,yBACnBC,UAAW,aACXC,WAAY,cACZC,wBAAyB,+BACzBC,UAAW,aACXC,mBAAoB,0BACpBC,eAAgB,kCAChBC,iBAAkB,oBAClBC,WAAY,cACZC,gBAAiB,mBACjBC,qBAAsB,wBACtBC,6BAA8B,gCAC9BC,qBAAsB,wBACtBC,yBAA0B,4BAC1BC,4BAA6B,+BAC7BC,iCAAkC,qCAGvBpK,EAAoE,CAC/E,CAACyI,EAAkBC,eAAgBvB,EACnC,CAACsB,EAAkBE,WAAY3K,EAC/B,CAACyK,EAAkBG,iBAAkBxB,EACrC,8BAA+BC,EAC/B,+BAAgCC,EAChC,CAACmB,EAAkBM,aAAcre,EACjC,2BAA4B6c,EAC5B,2BAA4BC,EAC5B,CAACiB,EAAkBS,YAAazB,EAChC,0BAA2BC,EAC3B,CAACe,EAAkBW,WAAYzL,EAC/B,yBAA0BgK,EAC1B,CAACc,EAAkBa,WAAY1J,EAC/B,CAAC6I,EAAkBc,YAAa3B,EAChC,+BAAgClI,EAChC,CAAC+I,EAAkBgB,WAAY5B,EAC/B,0BAA2BC,EAC3B,kCAAmCC,EACnC,CAACU,EAAkBmB,kBAAmB5B,EACtC,CAACS,EAAkBoB,YAAa5B,EAChC,CAACQ,EAAkBqB,iBAAkB5B,EACrC,CAACO,EAAkBsB,sBAAuB5B,EAC1C,CAACM,EAAkBuB,8BAA+B5B,EAClD,CAACK,EAAkBwB,sBAAuB5B,EAC1C,CAACI,EAAkByB,0BAA2B5B,EAC9C,CAACG,EAAkB0B,6BAA8B5B,EACjD,CAACE,EAAkB2B,kCAAmC5B,E,yECtFxD,MAAM6B,EAAM,wBAEL30F,eAAe40F,IACpB,MAAMC,QAAqBn+B,EAAAA,EAAQ8Q,QAAQmtB,GAC3C,OAAmB,OAAZE,QAAY,IAAZA,OAAY,EAAZA,EAAcznE,MAAM,IAC7B,CAUOptB,eAAeitF,EAAgBxoD,SAR/BzkC,eAA+BykC,GACpC,MAAMqwD,QAA4BF,IAE5BC,EAAe,IAAwB,OAAnBC,QAAmB,IAAnBA,EAAAA,EAAuB,MAAQrwD,SAEnDiyB,EAAAA,EAAQwQ,QAAQytB,EAAK,IAAI,IAAIhoF,IAAIkoF,IAAen+D,KAAK,KAC7D,CAGQq+D,CAAgBtwD,EACxB,C,mFChBA,MAAMkwD,EAAM,aAEL30F,eAAeg1F,IACpB,MAAMC,QAAkBv+B,EAAAA,EAAQ8Q,QAAQmtB,GACxC,OAAgB,OAATM,QAAS,IAATA,OAAS,EAATA,EAAW7nE,MAAM,KAAKngB,QAAQ+N,KAAUA,IAAO/T,EAAAA,EAAAA,GAAiB+T,IACzE,CAUOhb,eAAektF,EAAazoD,SAR5BzkC,eAA4BykC,GACjC,MAAMywD,QAAyBF,IAEzBG,EAAY,IAAqB,OAAhBD,QAAgB,IAAhBA,EAAAA,EAAoB,MAAQzwD,SAE7CiyB,EAAAA,EAAQwQ,QAAQytB,EAAK,IAAI,IAAIhoF,IAAIwoF,IAAYz+D,KAAK,KAC1D,CAGQ0+D,CAAa3wD,EACrB,C,2FCjBO,MAAM4wD,GAAQC,EAAAA,EAAAA,IAAyB,cAEjCC,GAASD,EAAAA,EAAAA,IAAmB,eAE5BE,GAAkBF,EAAAA,EAAAA,IAAuC,wBAEzDG,GAAwBH,EAAAA,EAAAA,IAAsB,+B,+TCApD,MAAMI,EAGXplE,WAAAA,CAAYqlE,GAAe,KAFpBA,MAAsB,KAG3BllE,KAAKklE,MAAQA,CACf,CAEA,iBAAMC,CAAWj/F,GAGiD,IAADk/F,EAAA,IAHtC,WACzBh2F,EAAU,iBACVi2F,GACgBn/F,EAOhB,OAAO4wC,EAAAA,MAAMquD,YAAYE,EAAkB,CACzCH,MACY,QADPE,EACHplE,KAAKklE,aAAK,IAAAE,EAAAA,QACHE,EAAAA,UAAUn2F,OAAO,CACtB8nC,KAAMsuD,EAAAA,IAEVn2F,cAEJ,CAEA,gBAAMwnB,GACJ,OAAO,CACT,ECjBK,SAASikE,IACd,IAAI76E,EAAY87C,EAAAA,EAAMC,WAAWkrB,KAAKC,WAEtC,OADIse,EAAAA,EAAAA,OAAexlF,EAAYs4B,EAAAA,GAAU0F,IAClCh+B,CACT,CAEO,SAASC,IACd,MAAMD,EAAY66E,IAClB,OAAO1lF,EAAAA,EAAAA,UAAQ,IAAM6K,GAAW,CAACA,GACnC,CAEO,SAAS4M,IACd,MAAMD,GAAce,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMs5D,KAAKt6D,cACnD84E,GAAa/3E,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM+3E,QAAQD,aACrDve,GAAax5D,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMs5D,KAAKC,aAExD,QAAKA,MACDA,IAAe5uC,EAAAA,GAAUK,OAAS8sD,IAE/B94E,EACT,CAEO,SAASg5E,IACd,MAAM,QAAED,GAAY5pC,EAAAA,EAAMC,WAC1B,OAAO2pC,EAAQD,UACjB,CAQOl2F,eAAeq2F,EAAU1/F,GAAyD,IAAxD,UAAE0O,EAAS,WAAEsyE,EAAU,UAAE2e,GAA4B3/F,EACpF41D,EAAAA,EAAMxuC,UACJs3E,EAAAA,EAAAA,IAAM,CACJjuF,KAAMuwE,EACNtyE,YACAsyE,iBAIc,IAAd2e,IAEJ/pC,EAAAA,EAAMxuC,UAASy3E,EAAAA,EAAAA,IAAgB,CAAEp4E,aAAa,KAC9CmvC,EAAAA,EAAMxuC,UAASw4E,EAAAA,EAAAA,IAAkB,IACnC,CAEO,SAASC,EAAiBC,GAC/BlqC,EAAAA,EAAMxuC,UAASw4E,EAAAA,EAAAA,GAAkBE,GACnC,CAEO,SAASrL,IACd,MAAMrtE,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cAAY3K,UACjB+d,GAASw3E,EAAAA,EAAAA,OACTiB,GAAiB,GACjBz4E,GAASy3E,EAAAA,EAAAA,IAAgB,CAAEp4E,aAAa,IAAS,GAChD,CAACW,EAAUy4E,GAChB,CAEO,SAASE,IACd,MAAM34E,GAAWC,EAAAA,EAAAA,MACX25D,EAAajnE,IAEnB,OAAO/F,EAAAA,EAAAA,cAAY3K,gBACX+d,GAASw3E,EAAAA,EAAAA,OACX5d,GAAc1vD,OAAO0uE,aAAa1uE,OAAO0uE,YAAYtvE,mBACnDmvE,GAAiB,GACvBz4E,GAASy3E,EAAAA,EAAAA,IAAgB,CAAEp4E,aAAa,IAAS,GAChD,CAACW,EAAUy4E,GAChB,CAEO,SAASlxF,IACd,MAAMD,GAAY8Y,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMs5D,KAAKryE,YACjDsyE,GAAax5D,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMs5D,KAAKC,aAClDue,GAAa/3E,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM+3E,QAAQD,aAE3D,OAAOtwF,EAAAA,EAAAA,UAAQ,KACb,GAAKP,IACDsyE,IAAe5uC,EAAAA,GAAUK,MAAS8sD,GACtC,OAAIriC,EAAAA,EAAAA,GAAYxuD,GAAmBA,EAC5BpO,EAAAA,UAAU2kB,SAASvW,EAAU,GACnC,CAACA,EAAWsyE,EAAYue,GAC7B,CAEO,SAAS7sE,IACd,MAAMhkB,EAAYC,IAElB,OAAOM,EAAAA,EAAAA,UAAQ,KACb,GAAKP,EACL,OAAO+uD,EAAAA,EAAAA,GAAmB/uD,EAAUuB,WAAW,GAC9C,CAACvB,GACN,CAEO,SAASkkB,IACd,MAAMlkB,EAAYC,IAElB,OAAOM,EAAAA,EAAAA,UAAQ,IACG,OAATP,QAAS,IAATA,OAAS,EAATA,EAAWuB,YACjB,CAACvB,GACN,CAMO,SAASuxF,IACd,MAAM74E,GAAWC,EAAAA,EAAAA,MACXk4E,GAjHC/3E,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM+3E,QAAQD,aAkHzC7uE,EAAaqvE,KAEZ1wF,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,GAuCvC,OArCApF,EAAAA,EAAAA,YAAU,MACR7G,iBAAuB,IAAD62F,EACpB,MAAMpmF,EAAY66E,IAElB,IAAK76E,EAGH,OAFAsN,GAASy3E,EAAAA,EAAAA,IAAgB,CAAEp4E,aAAa,UACxC9L,GAAW,GAIb,GAAIw3B,EAAAA,GAAqB/hC,SAAS0J,GAEhC,YADAa,GAAW,GAOb,SAHMwlF,EAAAA,EAAe77F,KAAKwV,SACoB,QAA9BomF,EAAMC,EAAAA,EAAermF,iBAAS,IAAAomF,OAAA,EAAxBA,EAA0BE,WAK9C,OAFA1vE,SACA/V,GAAW,GAIb,MAAMglF,QAAkBQ,EAAAA,EAAe15E,oBAnC7Cpd,eAA6Cs2F,GACtCA,SAAiBQ,EAAAA,EAAehjB,SACvC,CAmCYkjB,CAA8BV,GAEpCv4E,GAASy3E,EAAAA,EAAAA,IAAgB,CAAEp4E,aAAa,KAExCzd,EAAAA,GAAMs3F,aAAaxmF,GACnBa,GAAW,EACb,CAEA6/B,EAAM,GACL,CAAC+kD,KAEGtwF,EAAAA,EAAAA,UAAQ,MAASI,aAAY,CAACA,GACvC,CAyDO,SAASmX,IACd,MAAMY,GAAWC,EAAAA,EAAAA,MACXk5E,EAA0B75E,IAC1B85E,EAAiBT,IACjBprF,GAAO6S,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMs5D,KAAK0f,sBAC5C3mF,GAAY0N,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMs5D,KAAKC,cAE/C7D,QAASujB,EAAoBhwE,WAAYiwE,IAA0BC,EAAAA,EAAAA,MAErEr6E,GAAgBvS,EAAAA,EAAAA,cACnBW,IACCyS,GAAS03E,EAAAA,EAAAA,IAAsBnqF,GAAM,GAEvC,CAACyS,IAGG+1D,GAAUnpE,EAAAA,EAAAA,cAAY3K,MAAOyQ,EAAsB+mF,KACvD,GAAI1uD,EAAAA,GAAqB/hC,SAAS0J,GAGhC,aAFM4mF,EAAmBpuD,EAAAA,GAAcx4B,IACvC4lF,EAAW,CAAE1e,WAAYlnE,EAAW6lF,WAAW,KACxC,EAIT,IAAIriB,EAAAA,EAAAA,MAAY,CACd,GAAIujB,EACF,aAAaA,EAAiB1jB,UAGhC,MAAM,IAAIhzE,MAAM,qEAClB,CAGA,aADMg2F,EAAAA,EAAe77F,KAAKwV,SACbqmF,EAAAA,EAAehjB,SAAS,GACpC,IAEGzsD,GAAa1c,EAAAA,EAAAA,cAAY3K,UACzByQ,GACEq4B,EAAAA,GAAqB/hC,SAAS0J,UAC1B6mF,UAIJH,GAAgB,GACrB,CAAC1mF,KAEE,QAAEzK,GAAY4wF,IAGpB,OAxGK,WACL,MAAM74E,GAAWC,EAAAA,EAAAA,MAEXy5E,GAAiBC,EAAAA,EAAAA,OAEjB,KAAErjC,IAASkjC,EAAAA,EAAAA,MACX5B,GAAQgC,EAAAA,EAAAA,IAAS,CAAEjwD,KAAMsuD,EAAAA,IACzB3uE,EAAaqvE,KAEZ1wF,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,IAEvCpF,EAAAA,EAAAA,YAAU,MACR7G,iBACE,MAAMyQ,EAAY66E,IAElB,IAAK76E,EAGH,OAFAsN,GAASy3E,EAAAA,EAAAA,IAAgB,CAAEp4E,aAAa,UACxC9L,GAAW,GAIb,GAAIw3B,EAAAA,GAAqB/hC,SAAS0J,GAAY,CAC5C,IAAuB,IAAnBgnF,IAA4BhmF,EAAAA,EAAAA,GAAW4iD,GAGzC,aAFMhtC,SACN/V,GAAW,GAIT+iD,GAAQA,EAAKhvD,YACfgxF,EAAW,CAAE1e,WAAYlnE,EAAWpL,UAAWgvD,EAAKhvD,UAAUuB,aAC9DmX,GAASy3E,EAAAA,EAAAA,IAAgB,CAAEp4E,aAAa,KAExCzd,EAAAA,GAAMs3F,aAAaxmF,GAEfklF,IAEF1tE,OAAO0uE,YAAc,IAAIjB,EAAeC,IAG9C,CAEArkF,GAAW,EACb,CAEA6/B,EAAM,GACL,CAAC2lD,EAAAA,EAAgBW,EAAgBpjC,EAAMshC,KAEnC/vF,EAAAA,EAAAA,UACL,MACEI,aAEF,CAACA,GAEL,CAiDE4xF,IAEOhyF,EAAAA,EAAAA,UACL,MACE0F,OACAwoE,UACAzsD,aACAnK,gBACAE,YAAa85E,EACblxF,aAEF,CAACsF,EAAMwoE,EAASzsD,EAAYnK,EAAeg6E,EAAyBlxF,GAExE,C,iFCjSO,MAAMkmD,GAAmBopC,EAAAA,EAAAA,IAA+C,yBAElEuC,GAAkBvC,EAAAA,EAAAA,IAAmB,wBAErC3pC,GAAiB2pC,EAAAA,EAAAA,IAAqD,sB,kFCJ5E,MAAMwC,GAAcxC,EAAAA,EAAAA,IAAqB,6BACnCyC,GAAczC,EAAAA,EAAAA,IAAqB,6BACnC0C,GAA6B1C,EAAAA,EAAAA,IAAsB,2C,sHCEzD,MAAM2C,GAAgB3C,EAAAA,EAAAA,IAAqB,wBAErC4C,GAAqB5C,EAAAA,EAAAA,IAA6B,6BAElD6C,GAAmB7C,EAAAA,EAAAA,IAA8B,2BAEjD8C,GAAkB9C,EAAAA,EAAAA,IAAkC,0BAEpD+C,GAAsB/C,EAAAA,EAAAA,IAAwC,8BAE9DG,GAAwBH,EAAAA,EAAAA,IAAsB,gCAE9CgD,GAAqBhD,EAAAA,EAAAA,IAAuB,4B,0gBCDnD,SAAgBiD,EAAgBC,G,yCACpC,mBAAoBC,EAAAA,EAAAA,OAAgBC,kBAAkBF,EACxD,G,CAgBM,SAAUG,IACd,OAAOrnD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,aARA,W,yCACJ,MAAMlvD,QAAewyF,EAAgB,eACrC,OAAO7xF,EAAAA,EAAAA,GAAiBX,EAAOksE,KAAMlsE,EAAOY,UAAUC,UACxD,G,CAKmBgyF,EACf,KAAG,IAEP,C,oTCbM,SAAUC,IACd,OAAOvnD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,aArBA,W,yCACJ,MAAMqiB,GAAM,IAAIz2C,MAAOC,UACjB/hC,EAAQu4E,EAAM,MAEd5F,QAAqBngC,MACzB,6EAA6E7Z,UAC1E34B,EAAQ,KAAM6H,WACf,WACO8wB,UAAU4/C,EAAM,KAAM1wE,WAAY,gBAC3C+uD,OAAM,KAAe,IAEvB,IAAK+b,EAAc,OAEnB,MAAM3rE,QAAgB2rE,EAAalgC,OAEnC,OAAOR,EAAAA,EAAAA,IAA4BjrC,EAAO+yF,0BAA0B5nD,IACtE,G,CAKmB6nD,EACf,KAAG,IAEP,C,sECTO,SAAStsF,IACd,OAAO0R,EAAAA,EAAAA,KAAgBC,GAAoBA,EAAM46E,OAAOC,WAC1D,CAEO,SAASC,IACd,OAAO/6E,EAAAA,EAAAA,KAAgBC,GAAoBA,EAAM46E,OAAOG,cAC1D,CASO,SAAS1+B,IACd,MAAM0+B,EAAeD,IAErB,OAAOtzF,EAAAA,EAAAA,UAAQ,KACb,GAAIuzF,GAAgBA,EAAan6F,OAAQ,CAEvC,OADcm6F,EAAaA,EAAan6F,OAAS,GAAG9F,KAEtD,CACgB,GACf,CAACigG,GACN,CAEO,SAASC,EAAqB5+F,GACnC,MAAM6+F,EAAW5+B,IAEjB,OAAO70D,EAAAA,EAAAA,UAAQ,KACb,GAAKyzF,GAAa7+F,EAClB,OAAO,IAAIgP,EAAAA,EAAU6vF,GAAU5vF,cAAa/C,EAAAA,EAAAA,GAAiBlM,EAAQwP,EAAAA,GAAIrD,UAAU,GAClF,CAAC0yF,EAAU7+F,GAChB,CAEO,SAAS8+F,IACd,MAAMH,EAAeD,IAErB,OAAOtzF,EAAAA,EAAAA,UAAQ,KAC6B,IAAD2zF,EAAAC,EAAzC,OAAIL,GAAgBA,EAAan6F,QACkB,QAAjDu6F,EAA4C,QAA5CC,EAAOL,EAAaA,EAAan6F,OAAS,UAAE,IAAAw6F,OAAA,EAArCA,EAAuCC,WAAG,IAAAF,EAAAA,EAE5C,CAAC,GACP,CAACJ,GACN,CAMO,SAASnO,IACd,MAAMjtE,GAAWC,EAAAA,EAAAA,OAETjY,OAAQ2zF,GAAYf,KAE5B9xF,EAAAA,EAAAA,YAAU,MACR7G,iBACM05F,GACF37E,GAASk6E,EAAAA,EAAAA,IAAcn0D,OAAO41D,IAElC,CAEAvoD,EAAM,GACL,CAACuoD,GACN,CAEO,SAASzO,IACd,MAAMltE,GAAWC,EAAAA,EAAAA,MACX27E,GArBCx7E,EAAAA,EAAAA,KAAgBC,GAAoBA,EAAM46E,OAAOW,YAuBhD5zF,OAAQ6zF,GAAcf,KAE9BhyF,EAAAA,EAAAA,YAAU,KACR,IAAK+yF,IAAcD,GAAiC,IAArBC,EAAU56F,OAAc,OAEvD,MAAM66F,EAAYD,EAAU1uF,KAAK8P,IAAG,CAClC9hB,MAAO,IAAIsQ,EAAAA,EAAU,IAAIA,EAAAA,EAAUwR,EAAI,IAAI4B,UAAU,KAAOk9E,MAAMH,GAAU3uE,QAAQ,IAAInO,WACxFk9E,UAAW/+E,EAAI,GAAGpU,WAClB6yF,IAAK,IAAIjwF,EAAAA,EAAUwR,EAAI,IAAI4B,UAAU,KAAOhW,eAG9CmX,GAASm6E,EAAAA,EAAAA,IAAmB2B,GAAW,GACtC,CAACF,EAAUC,GAChB,CAEO,SAAShO,IACd,MAAM7tE,GAAWC,EAAAA,EAAAA,OACTjY,OAAQqwC,EAAM,QAAEpwC,IAAYg0F,EAAAA,EAAAA,MAkBpC,OAhBAnzF,EAAAA,EAAAA,YAAU,KACR,GAAIuvC,GAAUA,EAAOp3C,OAAS,EAAG,CAC/B,MAAMi7F,EAAoB,IAAI7jD,GAAQ+C,MAAK,CAACM,EAAGC,KAC7C,GAAID,GAAKC,EAAG,CACV,GAAID,EAAEygD,KAAOxgD,EAAEwgD,KAAM,OAAQ,EAC7B,GAAIzgD,EAAEygD,OAASxgD,EAAEwgD,KAAM,OAAO,EAC9B,GAAIzgD,EAAEygD,KAAOxgD,EAAEwgD,KAAM,OAAO,CAC9B,CAEA,OAAO,CAAC,IAGVn8E,GAASq6E,EAAAA,EAAAA,IAAgB6B,GAC3B,IACC,CAAC7jD,EAAQr4B,IAEL,CACL/X,UACAD,OAAQqwC,EAEZ,CAEO,SAAS+jD,EAAsBhyF,GACpC,MAAMqE,EAAkBC,IAExB,OAAO7G,EAAAA,EAAAA,UAAQ,KACb,IAAKuC,IAAYqE,GAA8C,IAA3BA,EAAgBxN,OAAc,OAAO,EACzE,MAAM6G,EAAQ2G,EAAgBY,MAAMP,GAAMA,EAAEhN,aAAesI,IAC3D,OAAOgP,QAAQtR,EAAM,GACpB,CAAC2G,EAAiBrE,GACvB,CAEO,SAAS0S,IACd,OAAOsD,EAAAA,EAAAA,KAAgBC,GAAoBA,EAAM46E,OAAOoB,eAC1D,CAEO,SAASlP,IACd,MAAMntE,GAAWC,EAAAA,EAAAA,MACXo8E,EAAgBv/E,KACf7U,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,GA+CvC,OA7CApF,EAAAA,EAAAA,YAAU,KACR,MAAM0qC,EAAQvxC,MAAOizC,EAAgBC,KACnC,MAAMntC,QAAes0F,EAAAA,EAAAA,IAAmBpnD,EAAQC,GAChD,OAAa,OAANntC,QAAM,IAANA,OAAM,EAANA,EAAQ/B,OAAO,GAGxBhE,iBACE,GAAIo6F,EAAcp7F,OAAS,GAAKgH,EAAS,OAEzCsL,GAAW,GACX,MAEMgpF,SAFaC,EAAAA,EAAAA,IAAgDhpD,EAAO,IAAM,IAExDrmC,KAAK2B,IACpB,IACFA,EACHzM,SACiB,WAAfyM,EAAEzM,SACE0rB,EAAAA,EAAeK,MACA,WAAftf,EAAEzM,SACF0rB,EAAAA,EAAeM,MACfvf,EAAEzM,aAIZ2d,GAASs6E,EAAAA,EAAAA,IAAoBiC,IAE7BA,EAAWptF,SAASrH,IAAW,IAAD20F,GAC5BzjC,EAAAA,EAAAA,GAAoB,CAClBpwD,SAAUm9B,OAAOj+B,EAAMc,UACvBS,KAAMvB,EAAMuB,KACZF,OAAQrB,EAAMqB,OACdrH,WAAYgG,EAAMrN,UAAUoO,WAC5BqB,KAAmB,QAAfuyF,EAAE30F,EAAMoC,KAAK,UAAE,IAAAuyF,EAAAA,EAAI,GACvBzsD,YAAa,IACbxjB,SAAU1kB,EAAMlL,IAAIiM,WACpBgnC,aAAc/nC,EAAMzF,UACpB,IAGJkR,GAAW,EACb,CAEA6/B,EAAM,GACL,CAACipD,EAAer8E,KAEZnY,EAAAA,EAAAA,UAAQ,MAASI,UAASD,OAAQq0F,KAAkB,CAACp0F,EAASo0F,GACvE,CAgBO,SAAShf,IACd,MAAMr9D,GAAWC,EAAAA,EAAAA,MACXy8E,GAAkBvrD,EAAAA,EAAAA,OAExBroC,EAAAA,EAAAA,YAAU,KACJ4zF,GAAmBA,EAAgBz7F,OAAS,GAC9C+e,GAASu6E,EAAAA,EAAAA,IAAmBmC,GAC9B,GACC,CAACA,GACN,C,mIChOO,MAAMz8E,EAAiBA,KAAM08E,EAAAA,EAAAA,MACvBv8E,EAAiDw8E,EAAAA,E,0ICIvD,MAAMC,EAAmC,CAC9C1U,WAAY,gCACZxuF,KAAM,OACNmjG,OAAQ,KACRtT,WAAW,EACXuT,sBAAsB,GCRxB,GAAeC,EAAAA,EAAAA,IAAcH,GAAeI,IAC1CA,EACGC,QAAQnD,EAAAA,IAAa,CAAC15E,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EACvCynB,EAAM1mB,KAAOwjG,CAAO,IAErBD,QAAQlD,EAAAA,IAAa,CAAC35E,EAAKpT,KAAmB,IAAjB,QAAEkwF,GAASlwF,EACvCoT,EAAMy8E,OAASK,CAAO,IAEvBD,QAAQjD,EAAAA,IAA4B,CAAC55E,EAAKlK,KAAmB,IAAjB,QAAEgnF,GAAShnF,EACtDkK,EAAM08E,qBAAuBI,CAAO,GACpC,I,cCJC,MAAMN,EAA4B,CACvCO,eAAgB,CAAC,EACjBC,cAAe,CAAC,EAChBh1F,aAAc,GACd+yC,KAAM,UACNkiD,Y,SAAaC,GAAgBC,KCL/B,GAAeR,EAAAA,EAAAA,IAAcH,GAAeI,IAC1CA,EACGC,QAAQ50F,EAAAA,IAAoB,CAAC+X,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EAC9C,MAAM6kG,EAAkB,IAAIp9E,EAAMhY,gBAAiB80F,GAEnD,MAAO,IACF98E,EACHhY,aAAco1F,EACf,IAEFP,QAAQ30F,EAAAA,IAAoB,CAAC8X,EAAKpT,KAAmB,IAAjB,QAAEkwF,GAASlwF,EAC9C,MAAMwwF,EAAkB,IAAIp9E,EAAMhY,cAAc6G,QAAQpH,IAAWq1F,EAAQn0F,SAASlB,KAEpF,MAAO,IACFuY,EACHhY,aAAco1F,EACf,IAEFP,QAAQQ,EAAAA,IAAuB,CAACr9E,EAAKlK,KAAmB,IAAjB,QAAEgnF,GAAShnF,EACjDkK,EAAM+8E,eAAiB,IAClB/8E,EAAM+8E,eACT,CAAC,GAAGD,EAAQ71F,aAAa61F,EAAQj6E,QAASi6E,EAAQ7/F,QACnD,IAEF4/F,QAAQS,EAAAA,IAAqB,CAACt9E,EAAK1J,KAAmB,IAAjB,QAAEwmF,GAASxmF,EAC/C,MAAMinF,EAASv9E,EAAMg9E,cAAc,GAAGF,EAAQ71F,aAC1C,IAAI+Y,EAAMg9E,cAAc,GAAGF,EAAQ71F,cAAc4H,QAC9CmR,GAAUA,EAAMpjB,cAAgByhD,OAAOy+C,EAAQlgG,eAElD,GAEE4gG,GACJx9E,EAAMg9E,cAAc,GAAGF,EAAQ71F,aAAe,IAAI+Y,EAAMg9E,cAAc,GAAGF,EAAQ71F,cAAgB,IACjG4H,QAAQmR,GAAUA,EAAMpjB,cAAgByhD,OAAOy+C,EAAQlgG,eAAc,GAEvE2gG,EAAOvgF,QAAQ,CACbgD,MAAO88E,EAAQ98E,MACfhlB,KAAM8hG,EAAQ9hG,KACd4B,YAAayhD,OAAOy+C,EAAQlgG,aAC5B9B,MAAOgiG,EAAQhiG,MAAQgiG,EAAQhiG,MAAQ0iG,EAAYA,EAAU1iG,MAAQ,KAGvE,MAAM2iG,EAAUF,EAAOxiD,MAAK,CAACM,EAAGC,IAC1B5V,OAAO2V,EAAEz+C,aAAe8oC,OAAO4V,EAAE1+C,cAAsB,EACvD8oC,OAAO2V,EAAEz+C,aAAe8oC,OAAO4V,EAAE1+C,aAAqB,EACnD,IAGTojB,EAAMg9E,cAAc,GAAGF,EAAQ71F,aAAew2F,CAAO,IAEtDZ,QAAQa,EAAAA,IAAsB,CAAC19E,EAAKzG,KAAmB,IAAjB,QAAEujF,GAASvjF,EAChDyG,EAAM+6B,KAAO+hD,CAAO,IAErBD,QAAQc,EAAAA,IAAmB,CAAC39E,EAAKrH,KAAmB,IAAjB,QAAEmkF,GAASnkF,EAC7CqH,EAAMi9E,YAAcH,CAAO,GAC3B,I,eClEC,MCkBMN,EAA4B,CACvCjB,SAAU,KACVR,aAAc,GACdF,UAAW,GACX+C,uBAAuB,EACvBC,cAAe,GACfC,WDV6C,QCW7CC,qBAAqB,EACrB/B,cAAe,GACfgC,iBAAiB,EACjBC,aAAc,IChBhB,GAAetB,EAAAA,EAAAA,IAAcH,GAAeI,IAC1CA,EACGC,QAAQhD,EAAAA,IAAe,CAAC75E,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EACzCynB,EAAMu7E,SAAWuB,CAAO,IAEzBD,QAAQ/C,EAAAA,IAAoB,CAAC95E,EAAKpT,KAAmB,IAAjB,QAAEkwF,GAASlwF,EAC9CoT,EAAM+6E,aAAe+B,CAAO,IAE7BD,QAAQ9C,EAAAA,IAAkB,CAAC/5E,EAAKlK,KAAmB,IAAjB,QAAEgnF,GAAShnF,EAC5CkK,EAAM89E,WAAahB,CAAO,IAE3BD,QAAQ7C,EAAAA,IAAiB,CAACh6E,EAAK1J,KAAmB,IAAjB,QAAEwmF,GAASxmF,EAC3C0J,EAAM66E,UAAYiC,CAAO,IAE1BD,QAAQ5C,EAAAA,IAAqB,CAACj6E,EAAKzG,KAAmB,IAAjB,QAAEujF,GAASvjF,EAC/CyG,EAAMg8E,cAAgBc,CAAO,IAE9BD,QAAQxF,EAAAA,IAAuB,CAACr3E,EAAKrH,KAAmB,IAAjB,QAAEmkF,GAASnkF,EACjDqH,EAAMg+E,gBAAkBlB,CAAO,IAEhCD,QAAQ3C,EAAAA,IAAoB,CAACl6E,EAAKk+E,KAAmB,IAAjB,QAAEpB,GAASoB,EAC9Cl+E,EAAMi+E,aAAenB,CAAO,GAC5B,I,gDCnBC,MAAMN,EAA0B,CACrC,CAAC/tD,EAAAA,GAAW0vD,OAAQzvD,EAAAA,GACpB,CAACD,EAAAA,GAAW2vD,QAASzvD,EAAAA,GACrB2c,WAAY,GACZ+yC,iBAAkB5vD,EAAAA,GAAW0vD,MAC7BG,gBAAiB,CAAC,EAClBC,cAAe,CAAC,EAChBC,wBAAyB,CAAC,EAC1BnQ,aAAc,ICThB,GAAesO,EAAAA,EAAAA,IAAcH,GAAeI,IAC1CA,EACGC,QAAQ4B,EAAAA,IAAW,CAACz+E,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EACrC,MAAQwzB,MAAOsyE,EAAgB,WAAE/yC,GAAewxC,EAEhD98E,EAAMq+E,iBAAmBA,EACzBr+E,EAAMsrC,WAAaA,CAAU,IAE9BuxC,QAAQ6B,EAAAA,IAAgB,CAAC1+E,EAAKpT,KAAmB,IAAjB,QAAEkwF,GAASlwF,EAC1C,MAAM,MAAEmf,EAAK,WAAE4yE,GAAe7B,EAExB8B,EAAa7yE,IAAU0iB,EAAAA,GAAW0vD,MAAQ1vD,EAAAA,GAAW2vD,OAAS3vD,EAAAA,GAAW0vD,MAC/E,OAAIQ,IAAe3+E,EAAM4+E,GAChB,IACF5+E,EACHq+E,iBAAkBr+E,EAAMq+E,mBAAqB5vD,EAAAA,GAAW0vD,MAAQ1vD,EAAAA,GAAW2vD,OAAS3vD,EAAAA,GAAW0vD,MAC/F,CAACpyE,GAAQ4yE,EACT,CAACC,GAAa5+E,EAAM+L,IAKjB,IACF/L,EACH,CAAC+L,GAAQ4yE,EACV,IAEF9B,QAAQgC,EAAAA,IAAmB7+E,IACnB,IACFA,EACHsrC,WAAY,GACZ+yC,iBAAkBr+E,EAAMq+E,mBAAqB5vD,EAAAA,GAAW0vD,MAAQ1vD,EAAAA,GAAW2vD,OAAS3vD,EAAAA,GAAW0vD,UAIlGtB,QAAQiC,EAAAA,IAAiB9+E,IACjB,IACFw8E,EACH,CAAC/tD,EAAAA,GAAW0vD,OAAQn+E,EAAMm+E,MAC1B,CAAC1vD,EAAAA,GAAW2vD,QAASp+E,EAAMo+E,OAC3B/P,aAAcruE,EAAMquE,iBAGvBwO,QAAQkC,EAAAA,IAAuB,CAAC/+E,EAAKlK,KAAmB,IAAjB,QAAEgnF,GAAShnF,EACjDkK,EAAMs+E,gBAAgBxB,EAAQv6F,KAAOu6F,EAAQjpF,EAAE,IAEhDgpF,QAAQmC,EAAAA,IAAqB,CAACh/E,EAAK1J,KAAmB,IAAjB,QAAEwmF,GAASxmF,EAC/C0J,EAAMu+E,cAAczB,EAAQv6F,KAAOu6F,EAAQhiG,KAAK,IAEjD+hG,QAAQoC,EAAAA,IAA+B,CAACj/E,EAAKzG,KAAmB,IAAjB,QAAEujF,GAASvjF,EACzDyG,EAAMw+E,wBAAwB1B,EAAQv6F,KAAO,CAAE62C,QAAS0jD,EAAQ1jD,QAASG,QAASujD,EAAQvjD,QAAS,IAEpGsjD,QAAQ7O,EAAAA,IAAoB,CAAChuE,EAAKrH,KAAmB,IAAjB,QAAEmkF,GAASnkF,EAC9CqH,EAAMquE,aAAeyO,CAAO,GAC5B,I,eC1DC,MAAMN,EAAmC,CAC9C0C,eAAgB,GAChBC,gBAAiB,GACjBC,WAAY,GACZf,iBAAkBpxD,EAAAA,GAAMoyD,WACxB/zC,WAAY,ICJd,GAAeqxC,EAAAA,EAAAA,IAAcH,GAAeI,IAC1CA,EAEGC,QAAQyC,EAAAA,IAAa,CAACt/E,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EACvC,MAAM,MAAEwzB,EAAK,WAAEu/B,GAAewxC,EAE9B,OAAc98E,EAAMq+E,iBACX,IACFr+E,EACHq+E,iBAAkBtyE,EAClBu/B,aAOD,IAGJuxC,QAAQ0C,EAAAA,IAAkBv/E,IACzBA,EAAMk/E,gBAAiB,EACvBl/E,EAAMm/E,iBAAkB,CAAI,IAE7BtC,QAAQ2C,EAAAA,IAAiB,CAACx/E,EAAKpT,KAAmB,IAAjB,QAAEkwF,GAASlwF,EAC3CoT,EAAMk/E,eAAiBpC,CAAO,IAE/BD,QAAQ4C,EAAAA,IAAkB,CAACz/E,EAAKlK,KAAmB,IAAjB,QAAEgnF,GAAShnF,EAC5CkK,EAAMm/E,gBAAkBrC,CAAO,IAEhCD,QAAQ6C,EAAAA,IAAkB,CAAC1/E,EAAK1J,KAAmB,IAAjB,QAAEwmF,GAASxmF,EAC5C0J,EAAMo/E,WAAatC,CAAO,IAE3BD,QAAQ8C,EAAAA,IAAgB,IAChBnD,GACP,I,eCxBC,MAAMA,EAA+B,CAC1CoD,gBAAgB,EAChBC,eAAe,EACfC,kBAAmB,GACnBC,aAAc,CACZC,KAAMxyD,EAAAA,GACNyyD,KAAMxyD,EAAAA,GACNyyD,KAAMxyD,EAAAA,IAERyyD,yBAA0BjyD,EAAAA,GAC1BlmC,aAAc,GACdo4F,oBAAoB,EACpBC,kBAAmB,GACnB7oD,gBAAiBrJ,EAAAA,GACjBmyD,oBAAoB,EACpBC,kBAAkB,GCpBpB,GAAe5D,EAAAA,EAAAA,IAAcH,GAAeI,IAC1CA,EACGC,QAAQ2D,EAAAA,IAAsB,CAACxgF,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EAChDynB,EAAM4/E,eAAiB9C,CAAO,IAE/BD,QAAQ4D,EAAAA,IAAyB,CAACzgF,EAAKpT,KAAmB,IAAjB,QAAEkwF,GAASlwF,EACnDoT,EAAM8/E,kBAAoBhD,CAAO,IAElCD,QAAQ6D,EAAAA,IAAqB,CAAC1gF,EAAKlK,KAAmB,IAAjB,QAAEgnF,GAAShnF,EAC/CkK,EAAM6/E,cAAgB/C,CAAO,IAE9BD,QAAQ8D,EAAAA,IAAgC,CAAC3gF,EAAK1J,KAAmB,IAAjB,QAAEwmF,GAASxmF,EAC1D0J,EAAMmgF,yBAA2BrD,CAAO,IAEzCD,QAAQ+D,EAAAA,IAAoB,CAAC5gF,EAAKzG,KAAmB,IAAjB,QAAEujF,GAASvjF,EAC9C,MAAM,KAAEsJ,EAAI,MAAE/nB,GAAUgiG,EACxB98E,EAAM+/E,aAAal9E,GAAQ/nB,CAAK,IAEjC+hG,QAAQ50F,EAAAA,IAAoB,CAAC+X,EAAKrH,KAAmB,IAAjB,QAAEmkF,GAASnkF,EAC9CqH,EAAMhY,aAAe,IAAIgY,EAAMhY,gBAAiB80F,EAAQ,IAEzDD,QAAQgE,EAAAA,IAAoB,CAAC7gF,EAAKk+E,KAAmB,IAAjB,QAAEpB,GAASoB,EAC9Cl+E,EAAMhY,aAAegY,EAAMhY,aAAa6G,QAAQpH,IAA+D,IAArDq1F,EAAQ95D,WAAW89D,GAAWA,IAAWr5F,KAAc,IAElHo1F,QAAQkE,EAAAA,IAA0B,CAAC/gF,EAAKghF,KAAmB,IAAjB,QAAElE,GAASkE,EACpDhhF,EAAMogF,mBAAqBtD,CAAO,IAEnCD,QAAQoE,EAAAA,IAAyB,CAACjhF,EAAKkhF,KAAmB,IAAjB,QAAEpE,GAASoE,EACnD,MAAM,kBAAEb,GAAsBrgF,EACxBmhF,EAAa,IAAI,IAAI5yF,IAAI,IAAI8xF,KAAsBvD,KAEzD98E,EAAMqgF,kBAAoBc,CAAU,IAErCtE,QAAQuE,EAAAA,IAA2B,CAACphF,EAAKqhF,KAAmB,IAAjB,QAAEvE,GAASuE,EACrDrhF,EAAMw3B,gBAAkBslD,CAAO,IAEhCD,QAAQyE,EAAAA,IAA0B,CAACthF,EAAKuhF,KAAmB,IAAjB,QAAEzE,GAASyE,EACpDvhF,EAAMsgF,mBAAqBxD,CAAO,IAEnCD,QAAQ2E,EAAAA,IAAwB,CAACxhF,EAAKyhF,KAAmB,IAAjB,QAAE3E,GAAS2E,EAClDzhF,EAAMugF,iBAAmBzD,CAAO,GAChC,I,eCnDC,MAAMN,EAA8B,CACzC6B,iBAAkB9wD,EAAAA,GAAWm0D,kBAC7Bp2C,WAAY,KCLd,GAAeqxC,EAAAA,EAAAA,IAAcH,GAAeI,IAC1CA,EACGC,QAAQ8E,EAAAA,GAAkB,CAAC3hF,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EAC5C,MAAM,WAAE+yD,EAAU,iBAAE+yC,GAAqBvB,EAEzC98E,EAAMq+E,iBAAmBA,EACzBr+E,EAAMsrC,WAAaA,CAAU,IAE9BuxC,QAAQ+E,EAAAA,GAAgB,IAChBpF,GACP,I,eCPC,MCHP,GAAeG,EAAAA,EAAAA,IDGuB,CACpCkF,sBAAuB,GACvBC,aAAc,KCL4BlF,IAC1CA,EACGC,QAAQkF,EAAAA,IAA6B,CAAC/hF,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EACvDynB,EAAM6hF,sBAAwB,IAAI7hF,EAAM6hF,yBAAkC,OAAP/E,QAAO,IAAPA,EAAAA,EAAW,GAAI,IAEnFD,QAAQmF,EAAAA,IAA6B,CAAChiF,EAAKpT,KAAmB,IAAjB,QAAEkwF,GAASlwF,EACvD,MAAMi1F,EAAwB,IAAItzF,IAAIyR,EAAM6hF,uBAE5CA,EAAsB3pC,OAAO4kC,GAE7B98E,EAAM6hF,sBAAwB,IAAIA,EAAsB,IAEzDhF,QAAQoF,EAAAA,IAAW,CAACjiF,EAAKlK,KAAmB,IAAjB,QAAEgnF,GAAShnF,EACrCkK,EAAM8hF,aAAe9hF,EAAM8hF,aAAapzF,OAAOouF,EAAQ,IAExDD,QAAQqF,EAAAA,IAAW,CAACliF,EAAK1J,KAAmB,IAAjB,QAAEwmF,GAASxmF,EACrC0J,EAAM8hF,aAAe9hF,EAAM8hF,aAAajzF,QAAQJ,GAAMA,EAAEhN,aAAeq7F,EAAQr7F,YAAW,GAC1F,I,eCHC,MAAM+6F,EAA0B,CACrCxzF,KAAM,GACN/B,UAAW,GACXsyE,WAAY,KACZv6D,aAAa,EACbmjF,SAAU,GACVnJ,qBAAqB,GCnBvB,GAAe2D,EAAAA,EAAAA,IAAcH,GAAeI,IAC1CA,EACGC,QAAQ5F,EAAAA,IAAO,CAACj3E,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EACjC,MAAO,IACFynB,KACA88E,EACJ,IAEFD,QAAQ1F,EAAAA,IAASn3E,IACT,IAAKw8E,EAAcxD,oBAAqBh5E,EAAMg5E,wBAEtD6D,QAAQzF,EAAAA,IAAiB,CAACp3E,EAAKpT,KAAmB,IAAjB,QAAEkwF,GAASlwF,EAC3CoT,EAAMhB,YAAc89E,EAAQ99E,WAAW,IAExC69E,QAAQxF,EAAAA,IAAuB,CAACr3E,EAAKlK,KAAmB,IAAjB,QAAEgnF,GAAShnF,EACjDkK,EAAMg5E,oBAAsB8D,CAAO,GACnC,I,eCjBC,MCAP,GAAeH,EAAAA,EAAAA,IDA2B,CACxC7E,YAAY,ICD8B8E,IAC1CA,EAAQC,QAAQzE,EAAAA,GAAkB,CAACp4E,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EACnDynB,EAAM83E,YAAcgF,CAAO,GAC3B,I,eCAG,MCHP,GAAeH,EAAAA,EAAAA,IDG8B,CAC3CrqC,UAAW,CAAC,EACZ8vC,YAAa,KCL6BxF,IAC1CA,EACGC,QAAQwF,EAAAA,GAAsB,CAACriF,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EAChDukG,EAAQhuF,SAAQlC,IAA+B,IAA9B,WAAEnL,EAAU,SAAEO,GAAU4K,EACnCnL,IACFue,EAAMsyC,UAAU7wD,GAAcO,EAChC,GACA,IAEH66F,QAAQyF,EAAAA,GAAmB,CAACtiF,EAAKlK,KAAmB,IAAjB,QAAEgnF,GAAShnF,EAC7CkK,EAAMoiF,YAAc,IAAI,IAAI7zF,IAAIyR,EAAMoiF,YAAY1zF,OAAOouF,IAAU,GACnE,I,cCLC,MCLP,GAAeH,EAAAA,EAAAA,IDKwB,CACrC9uC,YAAa,CAAC,EACdP,UAAW,EACXF,SAAU,CAAC,ICR+BwvC,IAC1CA,EACGC,QAAQ/uC,EAAAA,IAAkB,CAAC9tC,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EAC5CynB,EAAM6tC,YAAc,IACf7tC,EAAM6tC,YACT,CAACivC,EAAQ5vC,SAAU4vC,EAAQn1F,OAC5B,IAEFk1F,QAAQpD,EAAAA,IAAkBz5E,IACzBA,EAAMstC,WAAa,CAAC,IAErBuvC,QAAQtvC,EAAAA,IAAgB,CAACvtC,EAAKpT,KAAmB,IAAjB,QAAEkwF,GAASlwF,EAC1CoT,EAAMotC,SAAW,IACZptC,EAAMotC,SACT,CAAC0vC,EAAQ5vC,SAAU4vC,EAAQxvC,UAC5B,GACD,I,cCFC,MCfP,GAAeqvC,EAAAA,EAAAA,IDeyB,CACtC4F,MAAO,CAAC,EACRC,OAAQ,GACRjgG,IAAK,EACLuwC,KAAM,CAAC,ICnBmC8pD,IAC1CA,EACGC,QAAQ3vF,EAAAA,IAAM,CAAC8S,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EAC5BukG,IACF98E,EAAMwiF,OAAS,CAAC1F,GAClB,IAEDD,QAAQ59D,EAAAA,IAAO,CAACjf,EAAKpT,KAAmB,IAAjB,QAAEkwF,GAASlwF,EAC7BkwF,GAAW98E,EAAMwiF,OAAO75F,SAASm0F,KACnC98E,EAAMwiF,OAAS,GACjB,IAED3F,QAAQ4F,EAAAA,IAAWziF,IAClBA,EAAMwiF,OAAS,EAAE,IAElB3F,QAAQ6F,EAAAA,IAAmB,CAAC1iF,EAAKlK,KAAmB,IAAjB,QAAEgnF,GAAShnF,EAC7CkK,EAAMuiF,MAAQ,IACTviF,EAAMuiF,MACT,CAACzF,EAAQv6F,KAAMu6F,EAAQhiG,MACxB,IAEF+hG,QAAQ8F,EAAAA,IAAY3iF,IACnBA,EAAMzd,KAAO,CAAC,IAEfs6F,QAAQ+F,EAAAA,IAAY,CAAC5iF,EAAK1J,KAAmB,IAAjB,QAAEwmF,GAASxmF,EACtC0J,EAAM8yB,KAAO,IACR9yB,EAAM8yB,KACT,CAACgqD,EAAQv6F,KAAMu6F,EAAQhqD,KACxB,GACD,I,eC3BC,MCFP,GAAe6pD,EAAAA,EAAAA,IDEuB,CACpCzuF,iBAAkB,KCHwB0uF,IAC1CA,EAAQC,QAAQgG,EAAAA,GAAwB,CAAC7iF,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EACzDynB,EAAM9R,iBAAmB4uF,CAAO,GAChC,I,0BCAG,MCFP,GAAeH,EAAAA,EAAAA,IDE8B,CAC3C4B,cAAe,CAAC,EAChBuE,qBAAsB,OCJoBlG,IAC1CA,EACGC,QAAQmC,EAAAA,GAAqB,CAACh/E,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EAC/CynB,EAAMu+E,cAAczB,EAAQv6F,KAAOu6F,EAAQhiG,KAAK,IAEjD+hG,QAAQkG,EAAAA,GAA4B,CAAC/iF,EAAKpT,KAAmB,IAAjB,QAAEkwF,GAASlwF,EACtDoT,EAAM8iF,qBAAuBhG,CAAO,GACpC,I,cCHC,MCLP,GAAeH,EAAAA,EAAAA,IDKwB,CACrCzhB,GAAI,CAAC,EACL8nB,WAAY,CAAC,EACbC,kBAAmB,CAAC,ICRsBrG,IAC1CA,EACGC,QAAQqG,EAAAA,IAAU,CAACljF,EAAKznB,KAAmB,IAAjB,QAAEukG,GAASvkG,EACpC,MAAM4qG,EAAQnjF,EAAMk7D,GAAG,GAAG4hB,EAAQ71F,aAAe,CAAC61F,EAAQ5hB,MAAOl7D,EAAMk7D,GAAG,GAAG4hB,EAAQ71F,cAAgB,CAAC61F,EAAQ5hB,IAC9Gl7D,EAAMk7D,GAAG,GAAG4hB,EAAQ71F,aAAek8F,CAAK,IAEzCtG,QAAQuG,EAAAA,IAAkB,CAACpjF,EAAKpT,KAAmB,IAADy2F,EAAA,IAAhB,QAAEvG,GAASlwF,EAC5C,MAAM02F,EAActjF,EAAMgjF,WAAW,GAAGlG,EAAQ71F,aAC5C,IAAI+Y,EAAMgjF,WAAW,GAAGlG,EAAQ71F,cAAc4H,QAC3CqoD,GAAgBA,EAAYt6D,cAAgByhD,OAAOy+C,EAAQ5hB,GAAGt+E,eAEjE,GAEE4gG,GACJx9E,EAAMgjF,WAAW,GAAGlG,EAAQ71F,aAAe,IAAI+Y,EAAMgjF,WAAW,GAAGlG,EAAQ71F,cAAgB,IAC3F4H,QAAQqoD,GAAgBA,EAAYt6D,cAAgByhD,OAAOy+C,EAAQ5hB,GAAGt+E,eAAc,GAEtF0mG,EAAYtmF,QAAQ,CAClBgD,MAAO88E,EAAQ5hB,GAAGl7D,MAClB06D,KAAqB,QAAjB2oB,EAAEvG,EAAQ5hB,GAAGR,YAAI,IAAA2oB,EAAAA,EAAa,OAAT7F,QAAS,IAATA,OAAS,EAATA,EAAW9iB,KACpC99E,YAAayhD,OAAOy+C,EAAQ5hB,GAAGt+E,aAC/B9B,MAAOgiG,EAAQ5hB,GAAGpgF,MAAQgiG,EAAQ5hB,GAAGpgF,MAAQ0iG,EAAYA,EAAU1iG,MAAQ,KAG7E,MAAMyoG,EAAYD,EAAYvoD,MAAK,CAACM,EAAGC,IACjC5V,OAAO2V,EAAEz+C,aAAe8oC,OAAO4V,EAAE1+C,cAAsB,EACvD8oC,OAAO2V,EAAEz+C,aAAe8oC,OAAO4V,EAAE1+C,aAAqB,EACnD,IAGTojB,EAAMgjF,WAAW,GAAGlG,EAAQ71F,aAAes8F,CAAS,IAErD1G,QAAQ2G,EAAAA,IAAe,CAACxjF,EAAKlK,KAAmB,IAAjB,QAAEgnF,GAAShnF,EACzC,MAAMvT,EAAM,GAAGu6F,EAAQ71F,aAAa61F,EAAQ1iG,YACtC+oG,EAAQnjF,EAAMijF,kBAAkB1gG,GAAO,CAACu6F,EAAQ5hB,MAAOl7D,EAAMijF,kBAAkB1gG,IAAQ,CAACu6F,EAAQ5hB,IACtGl7D,EAAMijF,kBAAkB1gG,GAAO4gG,CAAK,GACpC,IClBN,GACEn9E,cAAey9E,EACf77F,QAAS87F,EAAAA,GACTjtB,OAAQktB,EACR/I,OAAQgJ,EACR5D,KAAM6D,EACNC,UAAWC,EACXC,cAAeC,EACfC,SAAUC,EACVC,IAAKC,EACL/qB,KAAMgrB,EACNvxD,KAAMwxD,EACNjvF,KAAMkvF,EACNjyC,WAAYkyC,EACZ3oB,aAAc4oB,EAAAA,GACdC,WAAYC,EAEZtnC,KAAMC,EACNrrD,IAAK2yF,GCqBDC,GAAoB,CACxBviG,IAAK,UAPsB,CAC3B+1D,QAAO,IACPysC,gBAAiBC,EAAAA,EACjBtuC,QAAS,GAMTuuC,UAAW,CACT,QACA,UACA,SACA,UACA,WACA,OACA,gBACA,WACA,OACA,OACA,MACA,cAEFC,QAAUllF,IAAgB,IAADmlF,EAAAC,EAAAC,EAAAC,EACvB,IAAIxhE,EAAW,CAAC,EAwBF,IAADyhE,GArBXzhE,GADgC,KAAzB,OAAL9jB,QAAK,IAALA,GAAe,QAAVmlF,EAALnlF,EAAOwlF,gBAAQ,IAAAL,OAAV,EAALA,EAAiBzuC,SACR,IAAW,OAAL12C,QAAK,IAALA,EAAAA,EAAS,CAAC,EAAIs5D,KAAM,CAAC,GAE3B,IAAW,OAALt5D,QAAK,IAALA,EAAAA,EAAS,CAAC,GAK3B8jB,EAD+B,KAAxB,OAAL9jB,QAAK,IAALA,GAAe,QAAVolF,EAALplF,EAAOwlF,gBAAQ,IAAAJ,OAAV,EAALA,EAAiB1uC,SACR,IAAW,OAAL12C,QAAK,IAALA,EAAAA,EAAS,CAAC,EAAIuyC,WAAY,CAAC,GAEjC,IAAW,OAALvyC,QAAK,IAALA,EAAAA,EAAS,CAAC,GAK3B8jB,EAD+B,KAAxB,OAAL9jB,QAAK,IAALA,GAAe,QAAVqlF,EAALrlF,EAAOwlF,gBAAQ,IAAAH,OAAV,EAALA,EAAiB3uC,SACR,IAAW,OAAL12C,QAAK,IAALA,EAAAA,EAAS,CAAC,EAAIuyC,WAAY,CAAC,GAEjC,IAAW,OAALvyC,QAAK,IAALA,EAAAA,EAAS,CAAC,GAII,KAAxB,OAALA,QAAK,IAALA,GAAe,QAAVslF,EAALtlF,EAAOwlF,gBAAQ,IAAAF,OAAV,EAALA,EAAiB5uC,UACf12C,IACF8jB,EAAW,IAAK9jB,EAAO8jF,UAAW,IAAqB,QAAnByB,EAAIvlF,EAAM8jF,iBAAS,IAAAyB,EAAAA,EAAI,CAAC,EAAI/tD,gBAAiB,OAGnF1T,EAAW,IAAW,OAAL9jB,QAAK,IAALA,EAAAA,EAAS,CAAC,GAG7B,OAAOy1B,QAAQod,QAAQ/uB,EAAS,EAElC4yB,QAAS,GAGL+uC,GAAuB,CAC3BljG,IAAK,UACL+1D,QAASotC,EAAAA,EACTX,gBAAiBC,EAAAA,EACjBtuC,QAAS,GAGLivC,IAAcC,EAAAA,EAAAA,IAAgB,IAC/BC,EACH9N,SAAS+N,EAAAA,EAAAA,IAAwCL,GAAsBM,KAInEC,IAAiBF,EAAAA,EAAAA,IAAoChB,GAAmBa,IAExEx3C,IAAQ83C,EAAAA,EAAAA,IAAe,CAC3BC,QAASF,GACTG,WAAaC,GAAyBA,EAAqB,CAAEC,OAAO,EAAMC,mBAAmB,MAGlFxT,IAAYyT,EAAAA,EAAAA,IAAap4C,IAKtC,K,kFC1IO,MAAMiO,GAAc86B,EAAAA,EAAAA,IAAmB,gBACjCh3E,GAAeg3E,EAAAA,EAAAA,IAAmB,iBAU/C,GAAeyF,EAAAA,EAAAA,IAJoB,CACjCzvF,MAAM,IAGoC0vF,IAC1CA,EACGC,QAAQzgC,GAAcp8C,IACrBA,EAAM9S,MAAO,CAAI,IAElB2vF,QAAQ38E,GAAeF,IACtBA,EAAM9S,MAAO,CAAK,GAClB,G,2FCjBC,MAAM60F,GAA8B7K,EAAAA,EAAAA,IAAuB,mCAErD8K,GAA8B9K,EAAAA,EAAAA,IAAqB,mCAEnD+K,GAAY/K,EAAAA,EAAAA,IAA8D,iBAE1EgL,GAAYhL,EAAAA,EAAAA,IAAqC,gB,gDCPvD,MAAMkB,GAAmBlB,E,SAAAA,IAAsB,2B,gDCC/C,MAAM2L,GAAyB3L,E,SAAAA,IAA8B,gC,wGCG7D,SAASh6C,IACd,OAAOn9B,EAAAA,EAAAA,KAAgBC,GAAoBA,EAAM9N,IAAIhE,kBACvD,CAEO,SAASC,IACd,MAAMwR,GAAWC,EAAAA,EAAAA,MACX4mF,EAAgBtpD,KACft1C,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,GAevC,OAbApF,EAAAA,EAAAA,YAAU,MACR7G,iBACE,GAAI4kG,EAAc5lG,OAAS,GAAKgH,EAAS,OAEzCsL,GAAW,GACX,MAAM4/B,QAAa2zD,EAAAA,EAAAA,MACnB9mF,GAASkjF,EAAAA,EAAAA,GAAuB/vD,IAChC5/B,GAAW,EACb,CAEA6/B,EAAM,GACL,CAACpzB,KAEGnY,EAAAA,EAAAA,UAAQ,MAASI,UAASD,OAAQ6+F,KAAkB,CAAC5+F,EAAS4+F,GACvE,C,4GC1BO,MAAM9D,GAAoBxL,EAAAA,EAAAA,IAAuD,2BAE3EhqF,GAAOgqF,EAAAA,EAAAA,IAAiC,cAExCj4D,GAAQi4D,EAAAA,EAAAA,IAAiC,eAEzCyL,GAAYzL,EAAAA,EAAAA,IAAmB,mBAE/BuL,GAAWvL,EAAAA,EAAAA,IAAmB,kBAE9B0L,GAAa1L,EAAAA,EAAAA,IAAyC,mB,8JCN5D,SAASwP,EAAenkG,GAC7B,OAAO4rD,EAAAA,EAAMC,WAAW94C,KAAKitF,MAAMhgG,EACrC,CAcO,SAAS0b,IACd,MAAM0B,GAAWC,EAAAA,EAAAA,MAEX+mF,GAAWp6F,EAAAA,EAAAA,cACdhK,IACCod,GAASzS,EAAAA,EAAAA,IAAK3K,GAAK,GAErB,CAACod,IAGGinF,GAAYr6F,EAAAA,EAAAA,cACfhK,IACCod,GAASsf,EAAAA,EAAAA,IAAM18B,GAAK,GAEtB,CAACod,IAGH,OAAOnY,EAAAA,EAAAA,UACL,MACE0F,KAAMy5F,EACN1nE,MAAO2nE,KAET,CAACD,EAAUC,GAEf,CAEO,SAASvjD,IACd,MAAM1jC,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cAAY,KACjBoT,GAAS8iF,EAAAA,EAAAA,MAAW,GACnB,CAAC9iF,GACN,CAEO,SAASknF,IACd,MAAMlnF,GAAWC,EAAAA,EAAAA,OACX,MAAEqf,GAAUhhB,IAElB,OAAO1R,EAAAA,EAAAA,cACL,CAAChK,EAAa+S,KAAuB,IAADwxF,EAAAC,EAClC,MAAMC,EAA8B,QAAtBF,EAAGJ,EAAenkG,UAAI,IAAAukG,EAAAA,EAAI,CAAC,EAEzCnnF,GACE+iF,EAAAA,EAAAA,IAAkB,CAChBngG,MACAzH,MAAO,IACFwa,EACHoiE,WAA+B,QAArBqvB,EAAEC,EAAStvB,kBAAU,IAAAqvB,EAAAA,EAAI,EACnCrrC,UAAWsrC,EAAStrC,UACpBtuD,QAASA,IAAM6xB,EAAM18B,MAG1B,GAEH,CAACod,EAAUsf,GAEf,CAEO,SAASm8B,IACd,MAAMz7C,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACL,CAAChK,EAAam1E,EAAoBhc,KAAmC,IAADurC,EAClE,MAAMD,EAA8B,QAAtBC,EAAGP,EAAenkG,UAAI,IAAA0kG,EAAAA,EAAI,CAAC,EAEzCtnF,GAAS+iF,EAAAA,EAAAA,IAAkB,CAAEngG,MAAKzH,MAAO,IAAKksG,EAAUtvB,aAAYhc,eAAe,GAErF,CAAC/7C,GAEL,CAEO,SAASk5D,IACd,OAAO94D,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM1K,KAAKktF,QAC9C,CAEO,SAAS9pB,EAAen2E,GAC7B,OAAOwd,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM1K,KAAKitF,MAAMhgG,IACpD,CAMO,SAAS2kG,EAAe3kG,GAC7B,OAAO4rD,EAAAA,EAAMC,WAAW94C,KAAKw9B,KAAKvwC,EACpC,CAEO,SAAS4kG,IACd,MAAMxnF,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACL,CAAChK,EAAauwC,KACZnzB,GAASijF,EAAAA,EAAAA,IAAW,CAAErgG,MAAKuwC,SAAQ,GAErC,CAACnzB,GAEL,C,+HCnHO,MAAM++E,GAAiBxH,EAAAA,EAAAA,IAC5B,uBAGW2H,GAAmB3H,EAAAA,EAAAA,IAAmB,yBAEtCuH,GAAYvH,EAAAA,EAAAA,IAAwD,kBAEpE4H,GAAiB5H,EAAAA,EAAAA,IAAmB,uBAIpC6H,GAAwB7H,EAAAA,EAAAA,IAAiC,mCAEzD8H,GAAsB9H,EAAAA,EAAAA,IAAyD,4BAE/E+H,GAAgC/H,EAAAA,EAAAA,IAI1C,sCAEUlJ,GAAqBkJ,EAAAA,EAAAA,IAA6B,0B,uEClBxD,MAAMyK,GAAmBzK,EAAAA,EAAAA,IAAsC,6BAEzD0K,GAAiB1K,EAAAA,EAAAA,IAAmB,0B,mKCR1C,MAAMsJ,GAAuBtJ,EAAAA,EAAAA,IAAsB,kCAE7CwJ,GAAsBxJ,EAAAA,EAAAA,IAAsB,iCAE5CuJ,GAA0BvJ,EAAAA,EAAAA,IAAuB,qCAEjD0J,GAAqB1J,EAAAA,EAAAA,IAA8C,gCAEnEyJ,GAAiCzJ,EAAAA,EAAAA,IAAqB,4CAEtDjvF,GAAqBivF,EAAAA,EAAAA,IAAuB,+BAE5C2J,GAAqB3J,EAAAA,EAAAA,IAAuB,gCAE5C6J,GAA2B7J,EAAAA,EAAAA,IAAsB,sCAEjD+J,GAA0B/J,EAAAA,EAAAA,IAAuB,qCAEjDkK,GAA4BlK,EAAAA,EAAAA,IAAqB,uCAEjDoK,GAA2BpK,EAAAA,EAAAA,IAAsB,mCAEjDsK,GAAyBtK,EAAAA,EAAAA,IAAsB,mC,gNCCrD,SAAShsC,IACd,OAAOnrC,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8jF,UAAUjE,eACnD,CAUO,SAASuH,IACd,MAAMznF,GAAWC,EAAAA,EAAAA,MACXynF,GAjBCtnF,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8jF,UAAUlE,iBAmB3C0H,GAAsB/6F,EAAAA,EAAAA,cAAY,KACtCoT,GAAS6gF,EAAAA,EAAAA,KAAsB6G,GAAY,GAC1C,CAAC1nF,EAAU0nF,IAEd,MAAO,CAACA,EAAYC,EACtB,CAiBO,SAAS7vD,IACd,MAAM93B,GAAWC,EAAAA,EAAAA,MACX43B,GAAkBz3B,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8jF,UAAUtsD,kBAE5D+vD,GAAwBh7F,EAAAA,EAAAA,cAC3BirC,IACC73B,GAASyhF,EAAAA,EAAAA,IAA0B5pD,GAAiB,GAEtD,CAAC73B,EAAU63B,IAGb,OAAOhwC,EAAAA,EAAAA,UAAQ,MAASgwC,kBAAiB+vD,2BAA0B,CAACA,EAAuB/vD,GAC7F,CAeO,SAASgwD,EAAmB3kF,GACjC,MAAMlD,GAAWC,EAAAA,EAAAA,MAUjB,MAAO,EAvEAG,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8jF,UAAU/D,eA8DVl9E,IAEftW,EAAAA,EAAAA,cACrBzR,IACC6kB,GAASihF,EAAAA,EAAAA,IAAmB,CAAE/9E,OAAM/nB,UAAS,GAE/C,CAAC6kB,IAIL,CAEO,SAAS8nF,EAA8B5kF,GAC5C,MAAOklC,GAAqBy/C,EAAmB3kF,GAE/C,OAAOrb,EAAAA,EAAAA,UAAQ,KACb,GAAIugD,GAA2C,IAAtBA,EACvB,OAAOha,EAAAA,EAAAA,IAAkBga,GAG3B,IAAI2/C,EAAkC,KAEtC,IACEA,GAAkB35D,EAAAA,EAAAA,KAAkBF,EAAAA,EAAAA,IAA4BhrB,GAClE,CAAE,MACA6kF,GAAkB35D,EAAAA,EAAAA,KAAkBF,EAAAA,EAAAA,IAA4BhrB,GAClE,CAEA,OAAO6kF,CAAe,GACrB,CAAC3/C,EAAmBha,EAAAA,IACzB,CAuDO,SAAS45D,IACd,OAAO5nF,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8jF,UAAUzD,mBACnD,CAEO,SAASh+E,IACd,MAAM1C,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACJq7F,IACCjoF,GAASshF,EAAAA,EAAAA,IAAwB2G,GAAS,GAE5C,CAACjoF,GAEL,CAEO,SAASkoF,IACd,MAAM1rG,GAAU8uB,EAAAA,EAAAA,MACV68E,EAAyBH,IACzBI,EAA+B1lF,KAE9B2lF,EAAgBC,IAAqBp6F,EAAAA,EAAAA,WAAS,IAE7ClG,OAAQugG,EAAa,QAAEtgG,IAAYugG,EAAAA,EAAAA,IAAqBhsG,GAYhE,OAVAsM,EAAAA,EAAAA,YAAU,KACR,GAAIy/F,EAAe,CACjB,MAAM/G,EAAa,IAAI,IAAI5yF,IAAI,IAAIu5F,KAA2BI,KAC9DH,EAA6B5G,GAC7B8G,GAAkB,EACpB,MAAuB,IAAZrgG,GACTqgG,GAAkB,EACpB,GACC,CAACnrF,KAAKC,UAAU+qF,GAAyBI,EAAeH,EAA8BngG,IAElF,CACLA,QAASogG,EAEb,CAMO,SAASI,IACd,MAAMzoF,GAAWC,EAAAA,EAAAA,MACX0gF,GALCvgF,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8jF,UAAUxD,qBAO3CvrE,GAAWxoB,EAAAA,EAAAA,cACd87F,IACC1oF,GAAS2hF,EAAAA,EAAAA,IAAyB+G,GAAa,GAEjD,CAAC1oF,IAGH,OAAOnY,EAAAA,EAAAA,UAAQ,IAAM,CAAC84F,EAAoBvrE,IAAW,CAACurE,EAAoBvrE,GAC5E,CAEO,SAASuzE,IACd,OAAOvoF,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8jF,UAAUvD,kBACnD,CAEO,SAASgI,IACd,MAAM5oF,GAAWC,EAAAA,EAAAA,MACX2gF,EAAmB+H,IAEnBvzE,GAAWxoB,EAAAA,EAAAA,cACdg0F,IACC5gF,GAAS6hF,EAAAA,EAAAA,IAAuBjB,GAAkB,GAEpD,CAAC5gF,IAGH,OAAOnY,EAAAA,EAAAA,UAAQ,IAAM,CAAC+4F,EAAkBxrE,IAAW,CAACwrE,EAAkBxrE,GACxE,C,2ZCrNO,SAASyzE,IACd,MAAM7oF,GAAWC,EAAAA,EAAAA,MAEX6oF,GAAsBl8F,EAAAA,EAAAA,cAC1B,CAACwf,EAAmB4yE,KAClBh/E,GACE++E,EAAAA,EAAAA,IAAe,CACb3yE,QACA4yE,eAEH,GAEH,CAACh/E,IAGG+oF,GAAiBn8F,EAAAA,EAAAA,cAAY,KACjCoT,GAASk/E,EAAAA,EAAAA,MAAmB,GAC3B,CAACl/E,KAEG,CAAEgpF,IAAyBn5F,EAAAA,EAAAA,QAAgCnH,EAAWqgG,EAAgB,KAS7F,MAAO,CACLD,sBACAC,eAAgBC,EAChBC,aAVkBr8F,EAAAA,EAAAA,cAClB,CAACwf,EAAmBu/B,KAClB3rC,GAAS8+E,EAAAA,EAAAA,IAAU,CAAE1yE,QAAOu/B,eAAc,GAE5C,CAAC3rC,IAQL,CAEO,SAASkpF,IACd,OAAO9oF,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMggF,MACzC,CAEO,SAAS8I,IACd,MAAMnpF,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cAAY,IAAMoT,GAASm/E,EAAAA,EAAAA,QAAmB,CAACn/E,GACxD,CAMO,SAASopF,EAAWxwG,GAAgC,IAADqU,EAAAkJ,EAAAkzF,EAAAC,EAAA,IAA9B,QAAE33D,GAA0B/4C,EACtD,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MACRvG,GAAYC,EAAAA,EAAAA,MACZgiG,GAAwBzB,EAAAA,EAAAA,GAA8B,QAEtD9xC,GAAMnuD,EAAAA,EAAAA,UAAQ,IACXP,EAAYovC,EAAAA,GAAWC,cAAcrvC,GAAWsvC,oBAAiBluC,GACvE,CAACpB,KAEE,iBACJo3F,EAAgB,WAChB/yC,EACA,CAAC7c,EAAAA,GAAW0vD,OAAQgL,EACpB,CAAC16D,EAAAA,GAAW2vD,QAASgL,GACnBP,KAEGQ,EAAiBh+C,IAAc3jD,EAAAA,EAAAA,IAASyhG,IACxCG,EAAkBx+C,IAAepjD,EAAAA,EAAAA,IAAS0hG,GAE3CG,EAAYlL,IAAqB5vD,EAAAA,GAAW0vD,OAE1Cx2F,OAAQ6hG,IAAyBrzC,EAAAA,EAAAA,IAAmBlvD,EAAWokD,EAAY/Z,IAC3E3pC,OAAQ8hG,IAA0BtzC,EAAAA,EAAAA,IAAmBlvD,EAAW6jD,EAAaxZ,GAE/Eo4D,EAAmB,CACvB,CAACj7D,EAAAA,GAAW0vD,OAAQqL,EACpB,CAAC/6D,EAAAA,GAAW2vD,QAASqL,GAGjBE,GAAe/8C,EAAAA,EAAAA,IAAetB,EAAiD,QAAvC1+C,EAAG28F,EAAYl+C,EAAaP,SAAW,IAAAl+C,EAAAA,OAAKvE,GAEpFuhG,EAAqD,QAAxC9zF,EAAIyzF,EAAYz+C,EAAcO,SAAU,IAAAv1C,EAAAA,OAAKzN,GAEzDwhG,IAAuBC,EAAAA,EAAAA,IAC5BtiG,EAAAA,EAAAA,UAAQ,IAAM,CAAC8jD,EAAYs+C,IAAgB,CAACt+C,EAAYs+C,IACxD,KAGIrkD,GAAQ6F,EAAAA,EAAAA,GACZC,EACAP,EACCQ,GAA6B,MAAfA,GAAsBu+C,IAAwBv+C,EAAyBu+C,OAAZxhG,GAGtEmS,GAAShT,EAAAA,EAAAA,UAAQ,SAAAuiG,EAAA,OAAW,OAALxkD,QAAK,IAALA,GAAW,QAANwkD,EAALxkD,EAAO3P,YAAI,IAAAm0D,OAAN,EAALA,EAAal2F,EAAE,GAAE,CAAC0xC,KAIvC59C,OAAQqiG,IAA2BniG,EAAAA,EAAAA,GAAgB,CACzDpG,WAAsB,OAAV4pD,QAAU,IAAVA,OAAU,EAAVA,EAAYpuD,QACxBA,QAASud,EACTm7C,MACArkB,aAEM3pC,OAAQsiG,IAA4BpiG,EAAAA,EAAAA,GAAgB,CAC1DpG,WAAuB,OAAXqpD,QAAW,IAAXA,OAAW,EAAXA,EAAa7tD,QACzBA,QAASud,EACTm7C,MACArkB,YAGI44D,GAAuB1iG,EAAAA,EAAAA,UAAQ,KACnC,GAAKP,EACL,OAAO+iG,CAAsB,GAC5B,CAACA,EAAwB/iG,IAEtBkjG,GAAwB3iG,EAAAA,EAAAA,UAAQ,KACpC,GAAKP,EACL,OAAOgjG,CAAuB,GAC7B,CAACA,KAEItiG,OAAQo0C,IAAkBquD,EAAAA,EAAAA,IAAqB5vF,EAAQvT,EAAWqqC,IACpE,wBAAE+4D,EAAuB,yBAAEC,IAA6B9iG,EAAAA,EAAAA,UAAQ,KACpE,IAAKgT,IAAWuhC,IAAkBsP,EAAY,MAAO,CAAC,EAEtD,MAAMzV,EAAO2P,EAAMn3B,OAAO,GAAG2mB,MAAM,GAEnC,MAAO,CACLs1D,wBACEz0D,EAAKxzC,OAAOnF,UAAYouD,EAAWpuD,QAAU8+C,EAAcsT,SAAWtT,EAAcuT,SACtFg7C,yBACE10D,EAAKxzC,OAAOnF,UAAYouD,EAAWpuD,QAAU8+C,EAAcuT,SAAWvT,EAAcsT,SACvF,GACA,CAAC9J,EAAO8F,EAAYtP,IAEjBwuD,GAAmB/iG,EAAAA,EAAAA,UAAQ,KAC/B,GAAK6jD,EAEL,OAAOpP,EAAAA,EAAAA,IAAcoP,QAAchjD,EAAYgjD,EAAWpuD,OAAO,GAChE,CAACouD,KAEI1jD,OAAQnI,KAAcigD,EAAAA,EAAAA,IAAa,CACzCh+C,WAAY8oG,EACZ9vG,MAAgB,OAATwM,QAAS,IAATA,OAAS,EAATA,EAAWuB,WAClBmvC,QAASn9B,IAGLqiC,IAAoBhB,EAAAA,EAAAA,IAAqB,CAC7Cp0C,MAAO4jD,EACPvP,kBAAmBouD,EACnBtrG,SAASquB,EAAAA,EAAAA,GAAsC,OAApBu8E,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBnwD,UAAqB,OAAVgS,QAAU,IAAVA,OAAU,EAAVA,EAAY9iD,UACxE0kB,mBAAmBA,EAAAA,EAAAA,GAAkBq+B,EAAsB,OAAVD,QAAU,IAAVA,OAAU,EAAVA,EAAY9iD,UAAUC,WACvEuzC,cAAesuD,EACf7qG,eAGIgrG,IAAiB7qD,EAAAA,EAAAA,IAAsB,CAC3Cl4C,MAAO4jD,EACPzsD,SAASquB,EAAAA,EAAAA,GAAsC,OAApBu8E,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBnwD,UAAqB,OAAVgS,QAAU,IAAVA,OAAU,EAAVA,EAAY9iD,UAAUC,WAClFgS,OAAa,OAAL+qC,QAAK,IAALA,GAAW,QAANyjD,EAALzjD,EAAO3P,YAAI,IAAAozD,OAAN,EAALA,EAAan1F,GACrBqrC,WAAYgrD,EACZnuD,cAAesuD,EACf7qG,eAeF,MAAO,CACLirG,YAbiBjjG,EAAAA,EAAAA,UAAQ,KACrB6L,EAAAA,EAAAA,GAAWg4C,KAAeh4C,EAAAA,EAAAA,GAAWy3C,GAAqBv9C,EAAE,yBAC3Do8F,EACAr+C,GAA6B,MAAfA,GACd4+C,IAAwB72F,EAAAA,EAAAA,GAAWg3F,GAAiC98F,CAAC,QACrC,KAAjCm9F,EAAAA,EAAAA,IAAiBp/C,GAA8B/9C,EAAE,8BACtB,mBAApBg4C,EAAMriD,WAA4BqiD,EAAMriD,UACzB,iBAAtB25C,GAA6C,gBAA0B,OAAVwO,QAAU,IAAVA,OAAU,EAAVA,EAAYviD,iBAEtE,KAH8DyE,EAAE,2BAHzBA,EAAE,sCADtBA,EAAE,8BAQ3B,CAAC+9C,EAAYq+C,EAAcO,EAAsBG,EAAyB9kD,EAAO1I,KAIlF8sD,eACAl9C,MAAY,OAALlH,QAAK,IAALA,OAAK,EAALA,EAAOkH,MACdzsC,MAAmB,QAAdipF,EAAO,OAAL1jD,QAAK,IAALA,OAAK,EAALA,EAAOvlC,aAAK,IAAAipF,EAAAA,EAAI99C,EAAAA,EAAW1J,QAClCv+C,UAAgB,OAALqiD,QAAK,IAALA,OAAK,EAALA,EAAOriD,UAClBkrB,OAAa,OAALm3B,QAAK,IAALA,OAAK,EAALA,EAAOn3B,OACfi8B,YAAkB,OAAL9E,QAAK,IAALA,OAAK,EAALA,EAAO8E,YACpBq/C,mBACAR,wBACA79C,aACAP,cACAu+C,kBACAC,mBACAvtD,gBACAsuD,0BACAC,2BACAJ,uBACAC,wBACAQ,mBAAmB19E,EAAAA,EAAAA,GAAsC,OAApBu8E,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBnwD,UAA+B,OAApBmwD,QAAoB,IAApBA,OAAoB,EAApBA,EAAsB1pD,SAASv3C,UACrGqiG,oBAAoB39E,EAAAA,EAAAA,GAAuC,OAArBw8E,QAAqB,IAArBA,OAAqB,EAArBA,EAAuBpwD,UAAgC,OAArBowD,QAAqB,IAArBA,OAAqB,EAArBA,EAAuB3pD,SAASv3C,UACxGiiG,kBACA50D,KAAM2P,EAAM3P,KAEhB,CAEO,SAASi1D,IACd,MAAMlrF,GAAWC,EAAAA,EAAAA,OAEX,MAAExO,EAAK,OAAE6yC,IAAW6mD,EAAAA,EAAAA,MAE1BriG,EAAAA,EAAAA,YAAU,UACMJ,IAAV+I,IAAuBvI,EAAAA,EAAAA,GAAiBuI,IAC1CuO,GACE++E,EAAAA,EAAAA,IAAe,CACb3yE,MAAO0iB,EAAAA,GAAW0vD,MAClBQ,WAAYvtF,UAKH/I,IAAX47C,IAAwBp7C,EAAAA,EAAAA,GAAiBo7C,IAC3CtkC,GACE++E,EAAAA,EAAAA,IAAe,CACb3yE,MAAO0iB,EAAAA,GAAW2vD,OAClBO,WAAY16C,IAGlB,GACC,CAAC7yC,EAAO6yC,EAAQtkC,GACrB,CAEO,SAAS4+B,EACdh8C,GAEA,MAAMod,GAAWC,EAAAA,EAAAA,MAEXgoF,GAAU7nF,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMggF,KAAK1B,kBAC/C9jF,EAAUjY,EAAkBqlG,EAAQrlG,QAApB8F,EAEhBi2C,GAAuB/xC,EAAAA,EAAAA,cAC3B+J,IAAsC,IAArC,IAAE/T,EAAG,GAAEsR,GAAwByC,EAC9BqJ,GAASo/E,EAAAA,EAAAA,IAAsB,CAAEx8F,MAAKsR,OAAM,GAE9C,CAAC8L,IAGH,OAAOnY,EAAAA,EAAAA,UAAQ,IAAM,CAACgT,EAAQ8jC,IAAuB,CAAC9jC,EAAQ8jC,GAChE,CAMO,SAASysD,EAAiBxoG,GAC/B,OAAO4rD,EAAAA,EAAMC,WAAW4xC,KAAKzB,cAAch8F,EAC7C,CAEO,SAASyoG,IACd,MAAMrrF,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACL,CAAChK,EAAanG,KACZujB,GAASq/E,EAAAA,EAAAA,IAAoB,CAAEz8F,MAAKzH,MAAOsB,IAAU,GAEvD,CAACujB,GAEL,CAEO,SAASsrF,EAA2B1oG,GACzC,OAAO4rD,EAAAA,EAAMC,WAAW4xC,KAAKxB,wBAAwBj8F,EACvD,CAEO,SAAS2oG,IACd,MAAMvrF,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACL,CAAChK,EAAa62C,EAA6BG,KACzC55B,GAASs/E,EAAAA,EAAAA,IAA8B,CAAE18F,MAAK62C,UAASG,YAAW,GAEpE,CAAC55B,GAEL,CAEO,SAASsuE,IACd,MAAMtuE,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACJ8hF,IACC1uE,GAASquE,EAAAA,EAAAA,IAAmBK,GAAc,GAE5C,CAAC1uE,GAEL,CAEO,SAAShD,IACd,OAAOoD,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMggF,KAAK3R,cAC9C,C,uECrUO,MAAM2Q,GAAsB9H,EAAAA,EAAAA,IACjC,kCAGW6L,GAA6B7L,EAAAA,EAAAA,IAA4B,wC,6GCN/D,MAAMoI,GAAcpI,EAAAA,EAAAA,IAAmD,6BAEjEsI,GAAkBtI,EAAAA,EAAAA,IAAqB,iCAEvCuI,GAAmBvI,EAAAA,EAAAA,IAAqB,kCAExCwI,GAAmBxI,EAAAA,EAAAA,IAAqB,kCAExCqI,GAAkBrI,EAAAA,EAAAA,IAAmB,iCAErCyI,GAAiBzI,EAAAA,EAAAA,IAAmB,+B,uECV1C,MAAMmL,GACXnL,EAAAA,EAAAA,IAAiE,6BAEtDoL,GAAoBpL,EAAAA,EAAAA,IAAuB,0B,qKCSjD,SAASnkF,IACd,MAAM4M,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACJ+lD,IACC,MAAM64C,EAAc74C,EAAUxlD,KAAIvU,IAA+B,IAA9B,SAAEyJ,EAAQ,WAAEP,GAAYlJ,EAEzD,OAAIkJ,IAAemK,EAAAA,GAAI3O,SAMN,gCAAfwE,GACe,gCAAfA,GACe,gCAAfA,EAPO,CAAEA,aAAYO,SAAU0rB,EAAAA,GAAeM,OAY7B,gCAAfvsB,EACK,CAAEA,aAAYO,SAAU0rB,EAAAA,GAAeK,OAGzC,CAAEtsB,aAAYO,WAAU,IAGjC2d,GAAS0iF,EAAAA,EAAAA,GAAqB8I,KAC9B73F,EAAAA,EAAAA,IAAe63F,EAAY,GAE7B,CAACxrF,GAEL,CAEO,SAAS0yC,EAAiB5wD,GAC/B,MAAM6wD,GAAYvyC,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMuyC,WAAWD,YAE7D,OAAO9qD,EAAAA,EAAAA,UAAQ,KACb,GAAI/F,EACF,OAAO6wD,EAAU7wD,EACnB,GACC,CAACA,EAAY6wD,GAClB,CAEO,SAASl/C,EAAiB3R,GAC/B,MACE8wD,YAAY,UAAED,IACZnE,EAAAA,EAAMC,WAEV,GAAI3sD,EACF,OAAO6wD,EAAU7wD,EAErB,CAEO,SAASutF,IACd,OAAOjvE,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMuyC,WAAWD,WACpD,CAMO,SAAS84C,EAA6B3pG,GAC3C,MACM4kC,EAAc,IADFmqB,EAAAA,GAAa4H,SACGn3B,QAElC,OAAOz5B,EAAAA,EAAAA,UAAQ,IACM,QAAf/F,GAAuC,aAAfA,GACrB4kC,EAAY19B,SAASlH,IAC3B,CAACA,EAAY4kC,GAClB,C,6JCtEO,SAASglE,IAKd,MAAM,QAAEluC,EAAO,QAAEhhE,IAAYihE,EAAAA,EAAAA,gBACvBz9C,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACL,CAACw3D,EAA+BhyC,EAAuBopD,KACrD,IAAKh/E,EAAS,OACd,IAAKghE,EAAS,OAEd,MAAM,KAAEud,EAAI,MAAE4wB,GAAUvnC,EACxB,IAAK2W,EACH,MAAMh4E,MAAM,8BAEdid,GAAS4rF,EAAAA,EAAAA,IAAe,CAAE7wB,OAAMxtD,KAAM/wB,EAAS41B,OAAMorC,UAASmuC,QAAOnwB,aAAY,GAEnF,CAACh/E,EAASghE,EAASx9C,GAEvB,CAEO,SAAS46D,IACd,MAAM,QAAEpd,EAAO,QAAEhhE,IAAYihE,EAAAA,EAAAA,gBACvBz9C,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACJmuE,IACMv+E,GACAghE,GAELx9C,GAAS26D,EAAAA,EAAAA,IAAkB,CAAEI,OAAMvd,YAAW,GAEhD,CAAChhE,EAASghE,EAASx9C,GAEvB,CAqBA,SAAS6rF,IAAgE,IAADC,EACtE,MAAM,QAAEtuC,IAAYC,EAAAA,EAAAA,gBAEdp9C,GAAQD,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM87D,eAE9C,OAAO3e,GAAwB,QAAjBsuC,EAAGzrF,EAAMm9C,UAAQ,IAAAsuC,EAAAA,EAAS,CAAC,CAC3C,CAYO,SAAS1vB,EAAYb,GAC1B,OAAQA,EAAGD,UAAYC,EAAGwwB,SAC5B,CAsBA,SAASC,EAAoBzwB,GAC3B,OAAO,IAAIz4C,MAAOC,UAAYw4C,EAAGE,UAAY,KAC/C,CAEA,SAASwwB,EAAyBnkG,EAA0BkwC,GAC1D,MAAMk0D,EAAkBL,IACxB,OAAOhkG,EAAAA,EAAAA,UAAQ,KACb,GAA8B,kBAAd,OAALC,QAAK,IAALA,OAAK,EAALA,EAAOxK,UAA2C,kBAAZ06C,EAGjD,IAAK,MAAMm0D,KAAUD,EAAiB,CACpC,MAAM3wB,EAAK2wB,EAAgBC,GAC3B,GAAK5wB,IAAMA,EAAGD,SAAWC,EAAGnpD,KAAKlP,OAASkpF,EAAAA,EAAgBC,WACtD9wB,EAAGnpD,KAAK4lB,UAAYA,GAAWujC,EAAGnpD,KAAKo/B,eAAiB1pD,EAAMxK,SAAW0uG,EAAoBzwB,IAC/F,OAAO9vE,EAAAA,GAAU8hB,KAAKguD,EAAGnpD,KAAK31B,OAElC,CACgB,GACf,CAACyvG,EAAiBl0D,EAAc,OAALlwC,QAAK,IAALA,OAAK,EAALA,EAAOxK,SACvC,CAGO,SAASgvG,EAAsBxkG,EAA2BkwC,GAAmC,IAADu0D,EAAAC,EACjG,OAAsD,QAAtDD,EAA+C,QAA/CC,EAAOP,EAAyBnkG,EAAOkwC,UAAQ,IAAAw0D,OAAA,EAAxCA,EAA0CC,GAAG,UAAE,IAAAF,GAAAA,CACxD,C,qFCpHO,MAEDG,GAAmBC,E,SAAAA,IAAY,CACnCtjG,KAAM,eACNwzF,aAJkD,CAAC,EAKnD+P,SAAU,CACRhB,cAAAA,CACEzvB,EAAYvjF,GAEX,IAADi0G,EAAAC,EAAA,IADE3P,SAAS,QAAE3/B,EAAO,KAAEjwC,EAAI,KAAEwtD,EAAI,KAAE3oD,EAAI,MAAEu5E,EAAK,SAAEnwB,EAAQ,QAAEF,IAA+C1iF,EAExG,GAAyB,QAAzBi0G,EAAI1wB,EAAa3e,UAAQ,IAAAqvC,GAArBA,EAAwB9xB,GAC1B,MAAMh4E,MAAM,0CAEd,MAAM4wC,EAA2B,QAAxBm5D,EAAG3wB,EAAa3e,UAAQ,IAAAsvC,EAAAA,EAAI,CAAC,EACtCn5D,EAAIonC,GAAQ,CAAEA,OAAM3oD,OAAM7E,OAAMkuD,UAAW34C,KAAKy2C,MAAOoyB,QAAOnwB,WAAUF,WACxEa,EAAa3e,GAAW7pB,CAC1B,EACAo5D,oBAAAA,CAAqB5wB,EAAYlvE,GAA6B,IAAzBkwF,SAAS,QAAE3/B,IAAWvwD,EACpDkvE,EAAa3e,KAClB2e,EAAa3e,GAAW,CAAC,EAC3B,EACAmd,iBAAAA,CAAkBwB,EAAYhmE,GAAmC,IAA/BgnF,SAAS,QAAE3/B,EAAO,KAAEud,IAAQ5kE,EACxDgmE,EAAa3e,GAASud,WACjBoB,EAAa3e,GAASud,EAEjC,EACAsB,kBAAAA,CAAmBF,EAAYxlE,GAAgD,IAADq2F,EAAA,IAA3C7P,SAAS,QAAE3/B,EAAO,KAAEud,EAAI,YAAE1c,IAAe1nD,EAC1E,MAAM4kE,EAA0B,QAAxByxB,EAAG7wB,EAAa3e,UAAQ,IAAAwvC,OAAA,EAArBA,EAAwBjyB,GAC9BQ,IAGAA,EAAGI,uBAGNJ,EAAGI,uBAAyBzjD,KAAKyW,IAAI0vB,EAAakd,EAAGI,wBAFrDJ,EAAGI,uBAAyBtd,EAIhC,EACAie,mBAAAA,CAAoBH,EAAYviE,GAA4C,IAADqzF,EAAA,IAAvC9P,SAAS,KAAEpiB,EAAI,QAAEvd,EAAO,QAAE8d,IAAW1hE,EACvE,MAAM2hE,EAA0B,QAAxB0xB,EAAG9wB,EAAa3e,UAAQ,IAAAyvC,OAAA,EAArBA,EAAwBlyB,GAC9BQ,IAGLA,EAAGD,QAAUA,EACbC,EAAG2xB,cAAgBpqE,KAAKy2C,MAC1B,EACA4zB,iBAAAA,CAAkBhxB,EAAYnjE,GAA+C,IAADo0F,EAAA,IAA1CjQ,SAAS,KAAEpiB,EAAI,QAAEvd,EAAO,WAAE6vC,IAAcr0F,EACxE,MAAMuiE,EAA0B,QAAxB6xB,EAAGjxB,EAAa3e,UAAQ,IAAA4vC,OAAA,EAArBA,EAAwBryB,GAE1B,IAADuyB,EAAJ/xB,IAC0B,QAA5B+xB,EAAOnxB,EAAa3e,UAAQ,IAAA8vC,UAArBA,EAAwBvyB,GAC/BoB,EAAa3e,GAAS6vC,GAAc,IAC/B9xB,EACHR,KAAMsyB,EACNtB,WAAW,GAGjB,MAIS,eACXH,EAAc,qBACdmB,EAAoB,mBACpB1wB,EAAkB,oBAClBC,EAAmB,kBACnB3B,EAAiB,kBACjBwyB,GACET,EAAiBa,QAErB,EAAeb,EAAwB,O,gDC5EhC,IAAKN,EAAe,SAAfA,GAAe,OAAfA,EAAAA,EAAe,uBAAfA,EAAAA,EAAe,eAAfA,EAAAA,EAAe,yDAAfA,EAAAA,EAAe,2DAAfA,EAAAA,EAAe,iBAAfA,EAAAA,EAAe,eAAfA,EAAAA,EAAe,uBAAfA,EAAAA,EAAe,eAAfA,EAAAA,EAAe,mCAAfA,EAAAA,EAAe,iDAAfA,EAAAA,EAAe,kDAAfA,EAAAA,EAAe,gDAAfA,EAAAA,EAAe,gCAAfA,EAAAA,EAAe,8CAAfA,EAAAA,EAAe,sCAAfA,EAAAA,EAAe,kBAAfA,EAAAA,EAAe,sBAAfA,EAAAA,EAAe,cAAfA,EAAAA,EAAe,gBAAfA,EAAAA,EAAe,sBAAfA,EAAAA,EAAe,gBAAfA,EAAAA,EAAe,gBAAfA,EAAAA,EAAe,oBAAfA,EAAAA,EAAe,kBAAfA,EAAAA,EAAe,oBAAfA,EAAAA,EAAe,oBAAfA,EAAAA,EAAe,kBAAfA,CAAe,K,4GCXpB,MAAM9jG,GAAqBivF,EAAAA,EAAAA,IAAuB,6BAE5ChvF,GAAqBgvF,EAAAA,EAAAA,IAAuB,6BAE5CwG,GAAuBxG,EAAAA,EAAAA,IAA6B,+BAEpDyG,GAAoBzG,EAAAA,EAAAA,IAA8B,4BAElDmG,GAAwBnG,EAAAA,EAAAA,IAIlC,gCAEUoG,GAAsBpG,EAAAA,EAAAA,IAMhC,6B,2ICsBI,SAAS/uF,IACd,MAAMH,GA1BC+X,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMy2D,OAAOzuE,eA4BxCC,EAzBD,WACL,MAAM0X,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACJyrC,IACCr4B,GAAS1X,EAAAA,EAAAA,IAAmB+vC,GAAQ,GAEtC,CAACr4B,GAEL,CAgB6BwtF,GACrBjlG,EAfD,WACL,MAAMyX,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACJyrC,IACCr4B,GAASzX,EAAAA,EAAAA,IAAmB8vC,GAAQ,GAEtC,CAACr4B,GAEL,CAM6BytF,GAE3B,OAAO5lG,EAAAA,EAAAA,UACL,MAASQ,eAAcC,qBAAoBC,wBAC3C,CAACF,EAAcC,EAAoBC,GAEvC,CAEO,SAASuqC,EAAyBxrC,GACvC,OAAO8Y,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMy2D,OAAOsmB,iBAAgB,GAAG91F,YACnE,CAaO,SAAS0rC,IACd,MAAMhzB,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACL,CAACtF,EAAmBhK,KAClB0iB,GAAS09E,EAAAA,EAAAA,IAAsB,CAAEp2F,YAAWhK,UAAS4lB,KAAM,YAAa,GAE1E,CAAClD,GAEL,CAcO,SAAS8zB,IACd,MAAM9zB,GAAWC,EAAAA,EAAAA,MAEjB,OAAOrT,EAAAA,EAAAA,cACL,CAACtF,EAAmBrK,EAAqBmwB,EAAuCjyB,KAA+B,IAADuyG,EAC5G,MAAMryG,EAAO+xB,EAAiC,QAA3BsgF,EAAGrsE,OAAO/d,OAAO8J,GAAQ,UAAE,IAAAsgF,OAAA,EAAxBA,EAA0BryG,UAAOqN,EACjDilG,EAAatyG,GAxFGuyG,EAwFgB,IAAIvyG,GAAMwyG,UAvF7Cv1E,MAAM/K,KAAKqgF,GAAYE,GACrB,KAAY,IAAPA,GAAajlG,SAAS,MAAM8oB,OAAO,KAC9CgH,KAAK,KAqFyD,GAxF5D,IAAqBi1E,EA0FtB5tF,GACE29E,EAAAA,EAAAA,IAAoB,CAClBr2F,YACArK,YAAa8oC,OAAO9oC,GACpB5B,KAAMsyG,EACNttF,MAAQ+M,EAASiU,OAAOC,KAAKlU,GAAQ,GAAK,GAC1CjyB,MAAY,OAALA,QAAK,IAALA,EAAAA,EAAS,KAEnB,GAEH,CAAC6kB,GAEL,CAEO,SAAS4zB,EAAWtsC,GACzB,MAAMs2F,GAASx9E,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMy2D,OAAOumB,gBAEtD,OAAOx1F,EAAAA,EAAAA,UAAQ,KACb,GAAIP,GAAas2F,EACf,OAAOA,EAAOt2F,EAGA,GACf,CAACA,EAAWs2F,GACjB,CAMO,SAASmQ,IACd,MAAMC,GAJC5tF,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMy2D,OAAO17B,OAKxCp7B,GAAWC,EAAAA,EAAAA,MAEXo3B,GAASzqC,EAAAA,EAAAA,cACZ2iB,IACCvP,GAAS+9E,EAAAA,EAAAA,IAAqBxuE,GAAK,GAErC,CAACvP,IAGH,OAAOnY,EAAAA,EAAAA,UAAQ,MAASuzC,KAAM4yD,EAAUjQ,qBAAsB1mD,KAAW,CAACA,EAAQ22D,GACpF,CAMO,SAASC,IACd,MAAM3Q,GAJCl9E,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMy2D,OAAOwmB,cAKxCt9E,GAAWC,EAAAA,EAAAA,MAEXo3B,GAASzqC,EAAAA,EAAAA,cACZ2iB,IACCvP,GAASg+E,EAAAA,EAAAA,IAAkBzuE,GAAK,GAElC,CAACvP,IAGH,OAAOnY,EAAAA,EAAAA,UAAQ,MAASy1F,cAAaU,kBAAmB3mD,KAAW,CAACA,EAAQimD,GAC9E,C,iFChKO,MAAMiG,GAAWhM,EAAAA,EAAAA,IAA4C,iBAEvDsM,GAAgBtM,EAAAA,EAAAA,IAA+D,sBAE/EkM,GAAmBlM,EAAAA,EAAAA,IAA+D,wB,wDCLxF,IAAKzsD,EAAY,SAAZA,GAAY,OAAZA,EAAY,YAAZA,EAAY,QAAZA,CAAY,MAoCZyyD,EAAe,SAAfA,GAAe,OAAfA,EAAe,YAAfA,EAAe,UAAfA,EAAe,UAAfA,EAAe,UAAfA,CAAe,K,iJChCpB,IAMK/nD,EAAW,SAAXA,GAAW,OAAXA,EAAW,UAAXA,EAAW,0BAAXA,EAAW,YAAXA,EAAW,oBAAXA,EAAW,gBAAXA,EAAW,YAAXA,CAAW,K,kECchB,IAAK04D,EAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,kBAAnBA,EAAmB,UAAnBA,EAAmB,qBAAnBA,EAAmB,4BAAnBA,EAAmB,gBAAnBA,CAAmB,MAQnB3yD,EAAY,SAAZA,GAAY,OAAZA,EAAY,kBAAZA,EAAY,+BAAZA,EAAY,6BAAZA,CAAY,MAUZsG,EAAS,SAATA,GAAS,OAATA,EAAS,kBAATA,EAAS,wBAATA,EAAS,gBAATA,EAAS,kBAATA,EAAS,sBAATA,CAAS,K,wICxCYjY,EAAAA,GAAkBukE,EAAAA,GAAoBpsG,EAAAA,GAIhEE,eAAemsG,IACpB,MAAM1nE,EAAc,IAAIkD,EAAAA,GAAkBukE,EAAAA,GAAoBpsG,EAAAA,IACxDssG,QAAyBxX,EAAAA,EAAAA,MACzByX,EAAgB,IAAI,IAAI1/F,IAAI83B,EAAY33B,OAAuB,OAAhBs/F,QAAgB,IAAhBA,EAAAA,EAAoB,MACzE,OAAOC,EAAcrtG,OANe,IAMmBqtG,EAAc38E,MAAM,EANvC,KAMoE28E,CAC1G,C,+CCPO,MAAMC,EAgBX,gBAAWC,GACT,OAAO97E,KAAKprB,SACd,CAEAirB,WAAAA,CAAYs9D,GAAgC,KAnBpCA,YAAM,OAONluF,cAAQ,OAER2F,eAAS,OAETk6D,YAAM,OAEPt+C,KAAO8nB,EAAAA,GAAU3D,GAOtB3U,KAAKm9D,OAAS,CACZ4e,UAAW5e,EAAO4e,UAClB9kE,KAAMkmD,EAAOlmD,KACb+kE,YAAa,2BACbC,KAAK,EAET,CAEA,UAAMzxG,GACJw1B,KAAK8uC,aAAeotC,EAAAA,GAAW/sG,OAAO,CACpCgtG,YAAa,CACXC,4BAA4B,KAKd,IAADC,QAFSr8E,KAAKrT,gBAG7BqT,KAAK/wB,SAAW+wB,KAAK8uC,OAAOwtC,cAC5Bt8E,KAAKprB,UAAyB,QAAhBynG,EAAGr8E,KAAK/wB,gBAAQ,IAAAotG,OAAA,EAAbA,EAAeP,eAAe3lG,YAGjD,OAAO,CACT,CAEA,iBAAMwW,GAAiC,IAAD4vF,EACpC,cAA2B,QAAjBA,EAAMv8E,KAAK8uC,cAAM,IAAAytC,OAAA,EAAXA,EAAaC,kBAC/B,CAEA,iBAAMrX,CAAWj/F,GAGiD,IAHvC,WACzBkJ,EAAU,iBACVi2F,GACgBn/F,EAChB,MAAMg/F,QAAcI,EAAAA,UAAUn2F,OAAO,IAChC6wB,KAAKm9D,OACRluF,SAAU+wB,KAAK/wB,WAWjB,OARI+wB,KAAKm9D,OAAO8e,KAEd/W,EAAMuX,eAAev3C,OAAOv0D,IAC1BwqB,QAAQg2C,KAAK,gFACbh2C,QAAQlZ,MAAMtR,EAAI,IAIfmmC,EAAAA,MAAMquD,YAAYE,EAAkB,CACzCH,QACA91F,cAEJ,CAEA,aAAMi0E,GAAW,IAADq5B,QACR,IAAIt5D,SAAQ,CAACod,EAASkoB,KAAY,IAADi0B,EAC1B,QAAXA,EAAA38E,KAAK8uC,cAAM,IAAA6tC,GAAXA,EAAa/X,MAAM,CACjBgY,iBAAkB58E,KAAKm9D,OAAO6e,YAC9Ba,UAAWA,IAAMr8C,GAAQ,GACzBmmB,QAAS+B,EACT0V,cAAepkD,OAAO8iE,UACtB,IAEJtlF,OAAOulF,aAAatmC,QAAQ,mBAAmB,IAAIrmC,MAAOC,UAAYysE,QAAqB3mG,YAC3F,MAAMlH,EAAsB,QAAdytG,EAAG18E,KAAK8uC,cAAM,IAAA4tC,OAAA,EAAXA,EAAaJ,cACxB1nG,EAAoB,OAAR3F,QAAQ,IAARA,OAAQ,EAARA,EAAU6sG,eAAe3lG,WAG3C,OAFA6pB,KAAK/wB,SAAWA,EAChB+wB,KAAKprB,UAAYA,GACV,CACT,CAEA,gBAAMgiB,GAAc,IAADomF,QACA,QAAjBA,EAAMh9E,KAAK8uC,cAAM,IAAAkuC,OAAA,EAAXA,EAAalY,SACrB,CAEA,aAAMwB,GACJ,MAAMwW,EAAetlF,OAAOulF,aAAahmC,QAAQ,kBACjD,OAAK+lC,IACE,IAAI1sE,MAAOC,WAAagD,OAAOypE,EACxC,EAMMxkE,EAAAA,GAAU3D,G,eCzGX,MAAMsoE,EAcX,gBAAWnB,GACT,OAAO97E,KAAKprB,SACd,CAEAirB,WAAAA,CAAYs9D,GAAgC,KAjBpCA,YAAM,OAONluF,cAAQ,OAER2F,eAAS,OAEV4b,KAAO8nB,EAAAA,GAAUuF,MAOtB7d,KAAKm9D,OAAS,CACZ4e,UAAW5e,EAAO4e,UAClB9kE,KAAMkmD,EAAOlmD,KACb+kE,YAAa,8BACbC,KAAK,EAET,CAEA,UAAMzxG,GACJ,MAAMyE,QAAiBiuG,EAAAA,EAAcC,KAAKn9E,KAAKm9D,OAAO6e,aAOtD,OALI/sG,IACF+wB,KAAK/wB,SAAWA,EAChB+wB,KAAKprB,UAAY3F,EAAS6sG,eAAesB,WAGpC,CACT,CAEA,iBAAMjY,CAAWj/F,GAGiD,IAHvC,WACzBkJ,EAAU,iBACVi2F,GACgBn/F,EAChB,MAAMg/F,QAAcI,EAAAA,UAAUn2F,OAAO,IAChC6wB,KAAKm9D,OACRluF,SAAU+wB,KAAK/wB,WAWjB,OAPI+wB,KAAKm9D,OAAO8e,KACd/W,EAAMuX,eAAev3C,OAAOv0D,IAC1BwqB,QAAQg2C,KAAK,gFACbh2C,QAAQlZ,MAAMtR,EAAI,IAIfmmC,EAAAA,MAAMquD,YAAYE,EAAkB,CACzCH,QACA91F,cAEJ,CAEA,iBAAMud,GAEJ,cADuBuwF,EAAAA,EAAcC,MAEvC,CAEA,aAAM95B,GAGJ,OAFArjD,KAAK/wB,eAAiBiuG,EAAAA,EAAc75B,UACpCrjD,KAAKprB,UAAYorB,KAAK/wB,SAAS6sG,eAAesB,UACvC,CACT,CAEA,gBAAMxmF,SACEsmF,EAAAA,EAActmF,YACtB,CAEA,aAAM0vE,GACJ,OAAO,CACT,EAMMhuD,EAAAA,GAAUuF,MCnFX,MAAMw/D,EAYX,gBAAWvB,GACT,OAAO97E,KAAKprB,SACd,CAEAirB,WAAAA,CAAYs9D,GAAgC,KAfpCA,YAAM,OAONvoF,eAAS,OAEV4b,KAAO8nB,EAAAA,GAAUK,KAOtB3Y,KAAKm9D,OAAS,CACZ4e,UAAW5e,EAAO4e,UAClB9kE,KAAMkmD,EAAOlmD,KACb+kE,YAAa,GACbC,KAAK,EAET,CAEA,UAAMzxG,GACJ,OAAO,CACT,CAEA,iBAAM26F,CAAWj/F,GAGiD,IAHvC,WACzBkJ,EAAU,iBACVi2F,GACgBn/F,EAChB,aAAasxB,OAAOosD,GAAGE,KAAKqhB,YAAqB,CAC/C/1F,aACAi2F,oBAEJ,CAEA,iBAAM14E,GACJ,MAAM84E,GAAaE,EAAAA,EAAAA,MAEnB,QAA0B,mBAAfF,IAA6BA,QAIpCjuE,OAAOosD,KAAMpsD,OAAOosD,GAAGE,aACZtsD,OAAOosD,GAAGE,KAAKn3D,cAIhC,CAEA,aAAM02D,GAAW,IAADK,EAEd,QAAc,QAAVA,EAAClsD,OAAOosD,UAAE,IAAAF,IAATA,EAAWI,cAIN9jD,KAAKrT,qBAGP6K,OAAOosD,GAAGE,KAAKw5B,eAAe,CAClCvB,UACE/7E,KAAKm9D,OAAO4e,UAAUxtG,OAlEE,IAmEpByxB,KAAKm9D,OAAO4e,UAAU98E,MAAM,EAnER,KAoEpBe,KAAKm9D,OAAO4e,YANpB/7E,KAAKprB,UAAY4iB,OAAOosD,GAAGE,KAAKp5B,aAW3B,EACT,CAEA,gBAAM9zB,GACJ,UACQY,OAAOosD,GAAGE,KAAKltD,YACvB,CAAE,MAAO3U,GACPkZ,QAAQlZ,MAAMA,EAChB,CACF,CAEA,aAAMqkF,GACJ,OAAO,CACT,E,eCnFK,MAAMiX,EAgBX,gBAAWzB,GACT,OAAO97E,KAAKprB,SACd,CAEAirB,WAAAA,CAAYs9D,GAAgC,KAnBpCA,YAAM,OAONluF,cAAQ,OAER2F,eAAS,OAETk6D,YAAM,OAEPt+C,KAAO8nB,EAAAA,GAAUwF,QAOtB9d,KAAKm9D,OAAS,CACZ4e,UAAW5e,EAAO4e,UAClB9kE,KAAMkmD,EAAOlmD,KACb+kE,YAAa,wBACbC,KAAK,EAET,CAEA,UAAMzxG,GACJw1B,KAAK8uC,aAAeotC,EAAAA,WAAW/sG,OAAO,CACpCgtG,YAAa,CACXC,4BAA4B,GAE9BoB,QAAS,YAIO,IAADnB,QAFSr8E,KAAKrT,gBAG7BqT,KAAK/wB,SAAW+wB,KAAK8uC,OAAOwtC,cAC5Bt8E,KAAKprB,UAAyB,QAAhBynG,EAAGr8E,KAAK/wB,gBAAQ,IAAAotG,OAAA,EAAbA,EAAeP,eAAe3lG,YAGjD,OAAO,CACT,CAEA,iBAAMwW,GAAiC,IAAD4vF,EACpC,cAA2B,QAAjBA,EAAMv8E,KAAK8uC,cAAM,IAAAytC,OAAA,EAAXA,EAAaC,kBAC/B,CAEA,iBAAMrX,CAAWj/F,GAGiD,IAHvC,WACzBkJ,EAAU,iBACVi2F,GACgBn/F,EAChB,MAAMg/F,QAAcI,EAAAA,UAAUn2F,OAAO,CACnC8nC,KAAMjX,KAAKm9D,OAAOlmD,KAClBhoC,SAAU+wB,KAAK/wB,WAWjB,OARI+wB,KAAKm9D,OAAO8e,KAEd/W,EAAMuX,eAAev3C,OAAOv0D,IAC1BwqB,QAAQg2C,KAAK,gFACbh2C,QAAQlZ,MAAMtR,EAAI,IAIfmmC,EAAAA,MAAMquD,YAAYE,EAAkB,CACzCH,QACA91F,cAEJ,CAEA,aAAMi0E,GAAW,IAADq5B,QACR,IAAIt5D,SAAQ,CAACod,EAASkoB,KAAY,IAADi0B,EAC1B,QAAXA,EAAA38E,KAAK8uC,cAAM,IAAA6tC,GAAXA,EAAa/X,MAAM,CACjBiY,UAAWA,IAAMr8C,GAAQ,GACzBmmB,QAAS+B,EACT0V,cAAepkD,OAAOyjE,UACtB,IAGJ,MAAMxuG,EAAsB,QAAdytG,EAAG18E,KAAK8uC,cAAM,IAAA4tC,OAAA,EAAXA,EAAaJ,cACxB1nG,EAAoB,OAAR3F,QAAQ,IAARA,OAAQ,EAARA,EAAU6sG,eAAe3lG,WAM3C,OALA6pB,KAAK/wB,SAAWA,EAChB+wB,KAAKprB,UAAYA,EAEjB4iB,OAAOulF,aAAatmC,QAAQ,+BAA+B,IAAIrmC,MAAOC,UAAYotE,QAAoBtnG,aAE/F,CACT,CAEA,gBAAMygB,GAAc,IAADomF,QACA,QAAjBA,EAAMh9E,KAAK8uC,cAAM,IAAAkuC,OAAA,EAAXA,EAAalY,SACrB,CAEA,aAAMwB,GACJ,MAAMwW,EAAetlF,OAAOulF,aAAahmC,QAAQ,8BACjD,OAAK+lC,IACE,IAAI1sE,MAAOC,WAAagD,OAAOypE,EACxC,EAMMxkE,EAAAA,GAAUwF,QC7GX,MAAM4/D,EAYX,gBAAW5B,GACT,OAAO97E,KAAKprB,SACd,CAEAirB,WAAAA,CAAYs9D,GAAgC,KAfpCA,YAAM,OAONvoF,eAAS,OAEV4b,KAAO8nB,EAAAA,GAAUyF,SAOtB/d,KAAKm9D,OAAS,CACZ4e,UAAW5e,EAAO4e,UAClB9kE,KAAMkmD,EAAOlmD,KACb+kE,YAAa,GACbC,KAAK,EAET,CAEA,UAAMzxG,GACJ,OAAO,CACT,CAEA,iBAAM26F,CAAWj/F,GAGiD,IAHvC,WACzBkJ,EAAU,iBACVi2F,GACgBn/F,EAChB,aAAasxB,OAAOosD,GAAGC,eAAeshB,YAAY,CAAE/1F,aAAYi2F,oBAClE,CAEA,iBAAM14E,GACJ,MAAM84E,GAAaE,EAAAA,EAAAA,MAEnB,QAA0B,mBAAfF,IAA6BA,OAIpCjuE,OAAOosD,GAAGC,sBACCrsD,OAAOosD,GAAGC,eAAel3D,cAI1C,CAEA,aAAM02D,GAWJ,aAVUrjD,KAAKrT,sBAIP6K,OAAOosD,GAAGC,eAAejtD,mBACzBY,OAAOosD,GAAGC,eAAey5B,eAAe,CAAEvB,UAAW/7E,KAAKm9D,OAAO4e,aAJvE/7E,KAAKprB,iBAAmB4iB,OAAOosD,GAAGC,eAAei4B,gBAAgB3lG,YAS5D,CACT,CAEA,gBAAMygB,SACEY,OAAOosD,GAAGC,eAAejtD,YACjC,CAEA,aAAM0vE,GACJ,OAAO,CACT,EAMMhuD,EAAAA,GAAUyF,S,0BC3ElB,MACM4/D,EAA2B,uBAG1B,MAAMC,EAgBX,gBAAW9B,GACT,OAAO97E,KAAKprB,SACd,CAEAirB,WAAAA,CAAYs9D,GAAgC,KAnBpCA,YAAM,OAONluF,cAAQ,OAER2F,eAAS,OAETk6D,YAAM,OAEPt+C,KAAO8nB,EAAAA,GAAU2F,SAOtBje,KAAKm9D,OAAS,CACZ4e,UAAW5e,EAAO4e,UAClB9kE,KAAMkmD,EAAOlmD,KACbglE,KAAK,EACLD,YAAa,GAEjB,CAEA,UAAMxxG,GACJ,OAAO,CACT,CAEA,iBAAMmiB,GAAe,IAAD4vF,EAClB,QAAOv8E,KAAK8uC,cAA0B,QAAjBytC,EAAMv8E,KAAK8uC,cAAM,IAAAytC,OAAA,EAAXA,EAAasB,eAC1C,CAEA,aAAMx6B,GACJ,IAAIrjD,KAAK8uC,eAAiB9uC,KAAKrT,cAcxB,CACL,MAAMrX,QAAewoG,EAAAA,GAAU3uG,SAE/B,KAAM,OAAQmG,GAAS,OAAO,EAE9B,MAAMw5D,EAASx5D,EAAO3G,GAIhBM,QAAqC6/D,EAAOivC,eAElD,OAAiB,OAAb9uG,IAKJuoB,OAAOulF,aAAatmC,QAAQknC,IAA2B,IAAIvtE,MAAOC,UAAYotE,QAAoBtnG,YAClG6pB,KAAK/wB,SAAWA,EAChB+wB,KAAKprB,UAAY3F,EAAS6sG,eAAe3lG,WACzC6pB,KAAK8uC,OAASA,GAEP,EACT,CApC+C,CAI7C,MAAM7/D,QAAqC+wB,KAAK8uC,OAAOivC,eAEvD,GAAiB,OAAb9uG,EAEF,OAAO,EAGTuoB,OAAOulF,aAAatmC,QAAQknC,IAA2B,IAAIvtE,MAAOC,UAAYotE,QAAoBtnG,YAClG6pB,KAAK/wB,SAAWA,EAChB+wB,KAAKprB,UAAoB,OAAR3F,QAAQ,IAARA,OAAQ,EAARA,EAAU6sG,eAAe3lG,UAC5C,CAwBA,OAAO,CACT,CAEA,gBAAMygB,GAAc,IAAD+lF,QACA,QAAjBA,EAAM38E,KAAK8uC,cAAM,IAAA6tC,OAAA,EAAXA,EAAaqB,gBACrB,CAEA,iBAAM7Y,CAAWj/F,GAA+F,IAArF,WAAEkJ,EAAU,iBAAEi2F,GAAmCn/F,EAC1E,MAAM+3G,QAAkB3Y,EAAAA,UAAUn2F,OAAO,CAAEF,SAAU+wB,KAAK/wB,SAAUgoC,KAAMjX,KAAKm9D,OAAOlmD,OAEtF,OAAOH,EAAAA,MAAMquD,YAAqBE,EAAkB,CAClDH,MAAO+Y,EACP7uG,cAEJ,CAEA,aAAMk3F,GACJ,MAAM4X,EAAa1mF,OAAOulF,aAAahmC,QAAQ4mC,GAC/C,OAAKO,IACE,IAAI9tE,MAAOC,WAAagD,OAAO6qE,EACxC,E,+CCjGK,MAAMC,EAkBX,gBAAWrC,GACT,OAAO97E,KAAKprB,SACd,CAEAirB,WAAAA,CAAYs9D,GAAgC,KArBpCA,YAAM,OAONihB,OAAwB,KAAK,KAE7BlZ,MAA6C,KAAK,KAElDtwF,eAAS,OAETypG,iBAAW,OAEZ7tF,KAAO8nB,EAAAA,GAAU4F,KAOtBle,KAAKm9D,OAAS,CACZ4e,UAAW5e,EAAO4e,UAClB9kE,KAAMkmD,EAAOlmD,KACb+kE,YAAa,wBACbC,KAAK,EAET,CAEA,UAAMzxG,GACJ,OAAO,CACT,CAEA,iBAAMmiB,GACJ,QAASqT,KAAKq+E,eAAiBr+E,KAAKklE,KACtC,CAEA,iBAAMC,CAAWj/F,GAGiD,IAHvC,WACzBkJ,EAAU,iBACVi2F,GACgBn/F,EAChB,IAAK85B,KAAKq+E,YACR,MAAM,IAAIhuG,MAAM,oDAGlB,IACE,OAAOymC,EAAAA,MAAMquD,YAAYE,EAAkB,CACzCH,MAAOllE,KAAKq+E,YACZjvG,cAEJ,CAAE,MAAO6S,GAEP,MADAkZ,QAAQlZ,MAAM,+BAAgCA,GACxCA,CACR,CACF,CAEA,aAAMohE,GAAW,IAADi7B,EACd,MAAMpZ,EAAQI,EAAAA,UAAUiZ,WAAW,CAAEtnE,KAAMjX,KAAKm9D,OAAO6e,cACvDh8E,KAAKq+E,YAAcG,EAAAA,EAAYD,WAAW,CACxCH,OAAQ,IAAIK,EAAAA,GAAO,CACjBzvC,UAAW,IAAI0vC,EAAAA,GAAqB,CAClCve,IAAKngE,KAAKm9D,OAAO6e,YACjB2C,qBAAsB,uBACtBC,iBAAkB,KAClBC,kBAAmB,KACnBC,6BAA6B,MAGjCh1G,QAAStD,EAAAA,UAAUu4G,YACnB7Z,UAGF,MAAM8Z,QAAiBh/E,KAAKq+E,YAAYD,OAAOY,WAE/C,IAAKA,GAAgC,IAApBA,EAASzwG,OAExB,MADAyxB,KAAKpJ,aACC,IAAIvmB,MAAM,kCAGlB,MAAMuE,EAAYoqG,EAAS,GAAG52G,MAC9B,GAAIwM,EAAUqqG,cACZ,MAAM,IAAI5uG,MAAM,8DAOlB,OAJA2vB,KAAKq+E,YAAYa,eAAetqG,GAChCorB,KAAKprB,UAAkD,QAAzC0pG,QAAUt+E,KAAKq+E,YAAYvC,sBAAc,IAAAwC,OAAA,EAAtCA,EAAyCnoG,WAC1D6pB,KAAKklE,MAAQA,GAEN,CACT,CAEA,gBAAMtuE,GACJ,GAAIoJ,KAAKo+E,OAAQ,CACf,IACEp+E,KAAKo+E,OAAOe,cACd,CAAE,MAAOl9F,GACPkZ,QAAQlZ,MAAM,mCAAoCA,EACpD,CACA+d,KAAKo+E,OAAS,IAChB,CAEAp+E,KAAKklE,MAAQ,IACf,CAEA,aAAMoB,GACJ,OAAO,CACT,EAKMhuD,EAAAA,GAAU4F,KCtGX,MAAMulC,EAAgB5jD,WAAAA,GAAA,KACpB7f,UAAsC,KAAK,KAE3Co/F,cAA2B9mE,EAAAA,GAAUwF,OAAQ,CAGpD,UAAatzC,CAAK40G,GAChB,IAAKp/E,KAAKhgB,WAAaggB,KAAKhgB,UAAUwQ,OAAS4uF,EAAe,CAC5D,MAAMp/F,QAAkByjE,EAAgBt0E,OAAOiwG,GAC/Cp/E,KAAKo/E,cAAgBA,QACfp/F,EAAUxV,OAChBw1B,KAAKhgB,UAAYA,EACjBwX,OAAO0uE,YAAclmE,KAAKhgB,SAC5B,CAGoB,IAADq/F,GAAf7Z,EAAAA,EAAAA,QACE3sF,EAAAA,EAAAA,GAA0B,QAAfwmG,EAACr/E,KAAKhgB,iBAAS,IAAAq/F,OAAA,EAAdA,EAAgBvD,gBAC9BlW,EAAAA,EAAAA,IAAW,CAAE1e,WAAYlnD,KAAKo/E,cAAexqG,UAAWorB,KAAKhgB,UAAU87F,eAG7E,CAEA,mBAAoB3sG,CAAO6Q,GACzB,MAAMm9E,EAAS,CACblmD,KAAI,KACJ8kE,gBAAiBL,KAGnB,OAAQ17F,GACN,KAAKs4B,EAAAA,GAAU3D,GACb,OAAO,IAAIknE,EAA0B1e,GACvC,KAAK7kD,EAAAA,GAAUuF,MACb,OAAO,IAAIo/D,EAAe9f,GAC5B,KAAK7kD,EAAAA,GAAUK,KACb,OAAO,IAAI0kE,EAAclgB,GAC3B,KAAK7kD,EAAAA,GAAUwF,QACb,OAAO,IAAIy/D,EAAiBpgB,GAC9B,KAAK7kD,EAAAA,GAAUyF,SACb,OAAO,IAAI2/D,EAAkBvgB,GAC/B,KAAK7kD,EAAAA,GAAU0F,GACb,OAAO,IAAIshE,EAAAA,EAAYniB,GACzB,KAAK7kD,EAAAA,GAAU2F,SACb,OAAO,IAAI2/D,EAAkBzgB,GAC/B,KAAK7kD,EAAAA,GAAU4F,KACb,OAAO,IAAIigE,EAAchhB,GAC3B,QACE,MAAM,IAAI9sF,MAAM,mBAAmBioC,EAAAA,wCAEzC,CAEA,aAAa+qC,GACX,IAAKrjD,KAAKhgB,UAAW,OAAO,EAE5B,MAAM6lF,QAAkB7lE,KAAKhgB,UAAUqjE,UAQvC,OANA7rD,OAAO0uE,YAAclmE,KAAKhgB,WAEtBnH,EAAAA,EAAAA,GAAY2e,OAAO0uE,YAAY4V,gBACjClW,EAAAA,EAAAA,IAAW,CAAE1e,WAAYlnD,KAAKo/E,cAAexqG,UAAW4iB,OAAO0uE,YAAY4V,eAGtEjW,CACT,CAEA,iBAAal5E,GAAe,IAAD4yF,EACzB,aAA2B,QAApBA,EAAMv/E,KAAKhgB,iBAAS,IAAAu/F,OAAA,EAAdA,EAAgB5yF,cAC/B,CAEA,iBAAaw4E,CACX/1F,EACAi2F,GAC8C,IAADma,EAC7C,aAA2B,QAApBA,EAAMx/E,KAAKhgB,iBAAS,IAAAw/F,OAAA,EAAdA,EAAgBra,YAAY,CAAE/1F,aAAYi2F,qBACzD,EAGK,MAAMgB,EAAiB,IAAI5iB,C,4FCvF3B,SAAS+hB,IACd,QAAShuE,OAAOioF,cAClB,CAEA,MAAMC,EAAS,IAAIC,EAAAA,EAEZ,MAAML,EAgBX,gBAAWxD,GACT,OAAO97E,KAAKprB,SACd,CAEAirB,WAAAA,CAAYs9D,GAAgC,KAnBpCA,YAAM,OAONluF,cAAQ,OAER2F,eAAS,OAETk6D,YAAM,OAEPt+C,KAAO8nB,EAAAA,GAAU0F,GAOtBhe,KAAKm9D,OAAS,CACZ4e,UAAW5e,EAAO4e,UAClB9kE,KAAMkmD,EAAOlmD,KACbglE,KAAK,EACLD,YAAa,GAEjB,CAEA,UAAMxxG,GACJ,GAAIg7F,IAAe,CAAC,IAADoa,EAGjB,SAFMF,EAAOl1G,QAERw1B,KAAKrT,cAAe,CAAC,IAADkzF,EACvB,MAAMC,QAAgBJ,EAAOr8B,QAAQ,CACnC08B,kBAAmB//E,KAAKm9D,OAAO4e,UAC/B9kE,KAAMjX,KAAKm9D,OAAOlmD,KAClB+oE,aAAc,4BAMhB,OAHAhgF,KAAKprB,UAA2B,QAAlBirG,EAAGH,EAAOzwG,gBAAQ,IAAA4wG,OAAA,EAAfA,EAAiB/D,eAAe3lG,WACjD6pB,KAAK/wB,SAAWywG,EAAOzwG,SAEhB6wG,CACT,CACA9/E,KAAKprB,UAA2B,QAAlBgrG,EAAGF,EAAOzwG,gBAAQ,IAAA2wG,OAAA,EAAfA,EAAiB9D,eAAe3lG,WACjD6pB,KAAK/wB,SAAWywG,EAAOzwG,QACzB,KAAO,CACL+wB,KAAK8uC,OAAS9uC,KAAK8uC,OACf9uC,KAAK8uC,aACCotC,EAAAA,GAAW/sG,OAAO,CACtB8wG,SAAU5oF,SAAS6oF,KAAKn6F,YAAc,UAAa/P,EACnDmqG,kBAAmB,yDACnBvD,iBAAkB,kEAClBwD,kBAAmB,8DACnBnpE,KAAMjX,KAAKm9D,OAAOlmD,OAKN,IAADolE,EAAjB,SAF0Br8E,KAAKrT,cAG7BqT,KAAK/wB,SAAW+wB,KAAK8uC,OAAO7/D,SAC5B+wB,KAAKprB,UAAyB,QAAhBynG,EAAGr8E,KAAK/wB,gBAAQ,IAAAotG,OAAA,EAAbA,EAAeP,eAAe3lG,UAEnD,CAEA,OAAO,CACT,CAEA,iBAAMwW,GAAe,IAAD4vF,EAClB,OAAI/W,UACWka,EAAO/yF,gBAEfqT,KAAK8uC,cAA0B,QAAjBytC,EAAMv8E,KAAK8uC,cAAM,IAAAytC,OAAA,EAAXA,EAAaC,kBAC1C,CAEA,aAAMn5B,GACJ,UAAUrjD,KAAKrT,cAER,CAAC,IAADgwF,EACL,GAAInX,IAAe,CACjB,MAAMsa,QAAgBJ,EAAOr8B,QAAQ,CAEnC08B,kBAAmB//E,KAAKm9D,OAAO4e,UAC/B9kE,KAAMjX,KAAKm9D,OAAOlmD,KAClB+oE,aAAc,6BAGV,SAAE/wG,GAAaywG,EAIrB,OAFA1/E,KAAKprB,UAAoB,OAAR3F,QAAQ,IAARA,OAAQ,EAARA,EAAU6sG,eAAe3lG,WAEnC2pG,CACT,CACA,MAAMC,EAAoB//E,KAAKm9D,OAAO4e,UAEhCjtC,QAA0B,QAAjB6tC,EAAM38E,KAAK8uC,cAAM,IAAA6tC,OAAA,EAAXA,EAAat5B,QAAQ,CACxC48B,WAAYzoF,OAAO0P,WAAa,KAChCi5E,kBAAmB,yDACnBvD,iBAAkB,kEAClBwD,kBAAmB,8DACnBL,kBACEA,EAAkBxxG,OA9GG,IA+GjBwxG,EAAkB9gF,MAAM,EA/GP,KAgHjB8gF,EACNC,aAAc,0BACd5hB,cAAepkD,OAAOqmE,YAGX,IAADC,EAAZ,GAAIxxC,EACFt3C,OAAOulF,aAAatmC,QAAQ,mBAAmB,IAAIrmC,MAAOC,UAAYgwE,QAAqBlqG,YAC3F6pB,KAAK/wB,SAAW6/D,EAAO7/D,SACvB+wB,KAAKprB,UAAyB,QAAhB0rG,EAAGtgF,KAAK/wB,gBAAQ,IAAAqxG,OAAA,EAAbA,EAAexE,eAAe3lG,WAGjD,QAAS24D,CACX,CAvC+B,IAADyxC,EAyC9B,OAxCEvgF,KAAKprB,UAAyB,QAAhB2rG,EAAGvgF,KAAK/wB,gBAAQ,IAAAsxG,OAAA,EAAbA,EAAezE,eAAe3lG,YAwC1C,CACT,CAEA,gBAAMygB,GAGI,IAAD8lF,EAFHlX,UACIka,EAAO9oF,mBAEI,QAAjB8lF,EAAM18E,KAAK8uC,cAAM,IAAA4tC,OAAA,EAAXA,EAAa9lF,aAEvB,CAEA,iBAAMuuE,CAAWj/F,GAA+F,IAAD82G,EAAA,IAApF,WAAE5tG,EAAU,iBAAEi2F,GAAmCn/F,EAC1E,OAAIs/F,UAEWka,EAAOva,YAAqB/1F,EAAYi2F,SAG/B,QAAjB2X,EAAMh9E,KAAK8uC,cAAM,IAAAkuC,OAAA,EAAXA,EAAa7X,YAAqBE,EAAkBj2F,GACnE,CAEA,aAAMk3F,GACJ,GAAId,IAAe,OAAO,EAC1B,MAAMgb,EAAehpF,OAAOulF,aAAahmC,QAAQ,kBACjD,OAAKypC,IACE,IAAIpwE,MAAOC,WAAagD,OAAOmtE,EACxC,E,kFC3JK,MAAMC,EAAsB7rG,IAC1B8rG,EAAAA,EAAAA,IAA4Bl6G,EAAAA,UAAU2kB,SAASvW,ICJ3CogB,EAAuBtd,GAC3B,gDAAgDA,G,+RCKzDsiC,OAAO2mE,UAAUC,OAAS,WACxB,OAAO5gF,KAAK7pB,UACd,EAGA4C,EAAAA,EAAUwsD,IAAI,CAAEs7C,eAAgB,IAAM,IAEtC9nG,EAAAA,EAAUokF,OAAO,CACf2jB,cAAe/nG,EAAAA,EAAUgoG,aASpB,SAAS1lG,EAAY3G,GAC1B,MAAoC,SAA7BA,EAAMif,cAAc1sB,IAC7B,CAEO,SAAS+5G,EAAkBl3G,GAChC,MACc,qEAAZA,GACY,qEAAZA,GACY,qEAAZA,GACY,qEAAZA,GACY,qEAAZA,CAEJ,CAEO,SAASm3G,EAAoBC,GAClC,OAAO,IAAIC,aAAcC,OAAOF,EAClC,CAEO,SAASG,EAAoBC,GAClC,OAAO,IAAIC,YAAY,SAASC,OAAOF,EACzC,CAQO,SAASG,EAAeP,GAC7B,MAAMQ,EAAY11D,OAAOk1D,GAEzB,OAAIQ,EAAUnzG,OAAS,EACd,IAAImzG,IAGNR,CACT,CAEO,SAASS,EAAQC,GACtB,MAAM/6B,GAAM,IAAIz2C,MAAOC,UAGjBwxE,EAFM,IAAIzxE,KAAKwxE,GAAMvxE,UAERw2C,EAEnB,GAAIg7B,GAAQ,EACV,MAAO,CACLC,KAAM,KACN9lE,IAAK,KACL+lE,IAAK,MAIT,MAAMA,EAAM96E,SAAS+kB,OAAQ61D,EAAO,IAAQ,KACtC7lE,EAAM/U,SAAS+kB,OAAQ61D,EAAI,IAAkB,KAGnD,MAAO,CACLC,KAAML,EAHKx6E,SAAS+kB,OAAO61D,EAAI,QAI/B7lE,IAAKylE,EAAezlE,GACpB+lE,IAAKN,EAAeM,GAExB,CAEO,SAASvnF,EAAS/xB,GACvB,YAAcuN,IAAVvN,EAA4B,GACzB,IAAIsQ,EAAAA,EAAUtQ,GAAO+xB,UAC9B,CAEO,SAASwnF,EAAWJ,GACzB,MAAMK,EAAO,IAAI7xE,KAAKwxE,GAChBM,EAAUD,EAAKE,aACrB,OAAO,IAAI/xE,KAAK6xE,EAAK5xE,UAAsB,IAAV6xE,EACnC,CAEO,SAAS1+B,IACd,MAAO,iCAAiCZ,KAAK+d,UAAUyhB,UACzD,C,4IC1FO,MAAeC,EAGpBxiF,WAAAA,CAAW35B,GAAwE,IAAvE,MAAEgJ,GAAkEhJ,EAAA,KAFhEgJ,WAAK,EAGnB8wB,KAAK9wB,MAAQA,CACf,ECsBK,MAAMozG,EAAiB,IA9BvB,cAAyBD,EAC9B,cAAankD,CAAQh4D,GAQjB,IARkB,WACpBkJ,EAAU,OACVkqD,EAAM,SACNrqD,GAKD/I,EACC,OAAOq6C,EAAAA,EAAAA,gBAA6CvgB,KAAK9wB,MAAME,EAAYH,IAAWivD,SAAS5E,GACjG,CAEA,eAAansD,CAASoN,GAA4E,IAA3E,OAAE++C,EAAM,WAAElqD,GAA8DmL,EAC7F,OAAOgmC,EAAAA,EAAAA,gBAAkCvgB,KAAK9wB,MAAME,IAAajC,UAAUmsD,GAC7E,CAEA,aAAa9T,CAAO/hC,GAQhB,IARiB,OACnB61C,EAAM,WACNlqD,EAAU,SACVH,GAKDwU,EACC,OAAO88B,EAAAA,EAAAA,gBAAgCvgB,KAAK9wB,MAAME,EAAYH,IAAWu2C,QAAQ8T,GACnF,GAG2C,CAC3CpqD,MAAOqzG,EAAAA,KCkDF,MAAM7gB,EAAO,IAlFb,MAAU7hE,WAAAA,GAAA,KACR2iF,iBAAmB,IAAIC,IAA2B,KAElDC,SAAW,IAAID,GAAmC,CAElDE,cAAAA,CAAehsG,EAAmBisG,GACvC,GAAI5iF,KAAK0iF,SAAS3kD,IAAIpnD,GAAO,MAAMtG,MAAM,qCACzC2vB,KAAK0iF,SAASn9C,IAAI5uD,EAAMisG,EAC1B,CAEOC,QAAAA,CAAQ38G,GAAuE,IAAtE,YAAE8tC,EAAW,KAAEr9B,GAAoDzQ,EACjF8tC,EAAYv3B,SAASrN,IACnB4wB,KAAKwiF,iBAAiBj9C,IAAIn2D,EAAYuH,EAAK,GAE/C,CAEOmsG,UAAAA,CAAW1zG,GAChB,MAAM2zG,EAAc/iF,KAAKwiF,iBAAiBzkD,IAAI3uD,GAC9C,OAAO2zG,EAAc/iF,KAAK0iF,SAAS3kD,IAAIglD,QAAe/sG,CACxD,CAEOsqD,gBAAAA,CAAiByiD,GACtB,IAAK/iF,KAAK0iF,SAAS3kD,IAAIglD,GAAc,MAAM1yG,MAAM,2BAA2B0yG,KAC5E,OAAO/iF,KAAK0iF,SAAS3kD,IAAIglD,EAC3B,CAEA,cAAa7kD,CAAQ3jD,GAUjB,IAVkB,YACpBwoG,EAAW,OACXzpD,EAAM,SACNrqD,EAAQ,WACRG,GAMDmL,EACC,MAAMqoG,EAAU5iF,KAAKsgC,iBAAiByiD,GAEtC,OAAKH,QAEQA,EAAQ1kD,SAAS,CAAE9uD,aAAYkqD,SAAQrqD,aAF/B,CAAEyrB,OAAQ0d,EAAAA,EAAamU,MAAO9L,UAAMzqC,EAAWgS,QAAS,aAG/E,CAEA,eAAa7a,CAASsW,GAQlB,IARmB,YACrBs/F,EAAW,OACXzpD,EAAM,WACNlqD,GAKDqU,EACC,MAAMm/F,EAAU5iF,KAAKsgC,iBAAiByiD,GACtC,OAAKH,QACQA,EAAQz1G,UAAU,CAC7BiC,aACAkqD,WAHmB,CAAE5+B,OAAQ0d,EAAAA,EAAamU,MAAO9L,UAAMzqC,EAAWgS,QAAS,aAK/E,CAEA,aAAaw9B,CAAOvhC,GAUhB,IAViB,OACnBq1C,EAAM,WACNlqD,EAAU,YACV2zG,EAAW,SACX9zG,GAMDgV,EACC,MAAM2+F,EAAU5iF,KAAKsgC,iBAAiByiD,GACtC,OAAKH,QACQA,EAAQp9D,QAAQ,CAC3Bp2C,aACAH,WACAqqD,WAJmB,CAAE5+B,OAAQ0d,EAAAA,EAAamU,MAAO9L,UAAMzqC,EAAWgS,QAAS,aAM/E,GAQK,IAAKg7F,EAAW,SAAXA,GAAW,OAAXA,EAAW,kBAAXA,CAAW,MAIvBthB,EAAKihB,eAAeK,EAAYllE,QAASwkE,GC7ElC,MAAeW,EAGpBpjF,WAAAA,CAAW35B,GAA6B,IAA5B,MAAEgJ,GAAuBhJ,EAAA,KAFrBgJ,WAAK,EAGnB8wB,KAAK9wB,MAAQA,CACf,ECJK,MAAMg0G,EAAsB,IAd5B,cAAsCD,EAC3C,SAAaE,CAAGj9G,GAAoE,IAAnE,OAAEozD,EAAM,SAAErqD,GAAsD/I,EAC/E,OAAOq6C,EAAAA,EAAAA,gBAAmCvgB,KAAK9wB,MAAMD,IAAWk0G,IAAI7pD,GACtE,CAEA,UAAa8pD,CAAI7oG,GAAqE,IAApE,OAAE++C,EAAM,SAAErqD,GAAuDsL,EACjF,OAAOgmC,EAAAA,EAAAA,gBAAmCvgB,KAAK9wB,MAAMD,IAAWm0G,KAAK9pD,GACvE,CAEA,YAAa+pD,CAAM5/F,GAAuE,IAAtE,OAAE61C,EAAM,SAAErqD,GAAyDwU,EACrF,OAAO88B,EAAAA,EAAAA,gBAAmCvgB,KAAK9wB,MAAMD,IAAWo0G,OAAO/pD,GACzE,GAG6D,CAC7DpqD,MAAOo0G,EAAAA,KChBF,IAAKC,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,kBAAhBA,CAAgB,MAyErB,MAAMC,EAAY,IArElB,MAAuB3jF,WAAAA,GAAA,KACrB2iF,iBAAmB,IAAIC,IAAgC,KAEvDC,SAAW,IAAID,GAA8C,CAE7DE,cAAAA,CAAehsG,EAAwBisG,GAC5C,GAAI5iF,KAAK0iF,SAAS3kD,IAAIpnD,GAAO,MAAMtG,MAAM,qCACzC2vB,KAAK0iF,SAASn9C,IAAI5uD,EAAMisG,EAC1B,CAEOC,QAAAA,CAAQ38G,GAA4E,IAA3E,YAAE8tC,EAAW,KAAEr9B,GAAyDzQ,EACtF8tC,EAAYv3B,SAASrN,IACnB4wB,KAAKwiF,iBAAiBj9C,IAAIn2D,EAAYuH,EAAK,GAE/C,CAEOmsG,UAAAA,CAAW1zG,GAChB,MAAM2zG,EAAc/iF,KAAKwiF,iBAAiBzkD,IAAI3uD,GAC9C,OAAO2zG,EAAc/iF,KAAK0iF,SAAS3kD,IAAIglD,QAAe/sG,CACxD,CAEOsqD,gBAAAA,CAAiByiD,GACtB,IAAK/iF,KAAK0iF,SAAS3kD,IAAIglD,GAAc,MAAM1yG,MAAM,2BAA2B0yG,KAC5E,OAAO/iF,KAAK0iF,SAAS3kD,IAAIglD,EAC3B,CAEA,UAAaK,CAAI7oG,GAQb,IARc,YAChBwoG,EAAW,OACXzpD,EAAM,SACNrqD,GAKDsL,EACC,MAAMqoG,EAAU5iF,KAAKsgC,iBAAiByiD,GACtC,OAAKH,QACQA,EAAQQ,KAAK,CAAE9pD,SAAQrqD,aADf,CAAEyrB,OAAQ0d,EAAAA,EAAamU,MAAO9L,UAAMzqC,EAAWgS,QAAS,GAE/E,CAEA,YAAaq7F,CAAM5/F,GAQf,IARgB,YAClBs/F,EAAW,OACXzpD,EAAM,SACNrqD,GAKDwU,EACC,MAAMm/F,EAAU5iF,KAAKsgC,iBAAiByiD,GACtC,OAAKH,QACQA,EAAQS,OAAO,CAAE/pD,SAAQrqD,aADjB,CAAEyrB,OAAQ0d,EAAAA,EAAamU,MAAO9L,UAAMzqC,EAAWgS,QAAS,GAE/E,CAEA,SAAam7F,CAAGl/F,GAQZ,IARa,YACf8+F,EAAW,OACXzpD,EAAM,SACNrqD,GAKDgV,EACC,MAAM2+F,EAAU5iF,KAAKsgC,iBAAiByiD,GACtC,OAAKH,QACQA,EAAQO,IAAI,CAAE7pD,SAAQrqD,aADd,CAAEyrB,OAAQ0d,EAAAA,EAAamU,MAAO9L,UAAMzqC,EAAWgS,QAAS,GAE/E,GCxEK,SAASy7F,EAAWhjE,GACzB,IAAIh4C,EAEJ,IAAK,IAAI64C,EAAI,EAAGA,EAAI,EAAGA,IAErB74C,EAASA,GAAS,EAAKg4C,EAAKa,GAG9B,OAAO74C,CACT,CAEO,SAASi7G,EAASC,GACvB,MAAMrC,EAAc,IAAIsC,YAAY,GAEpC,OADA,IAAIC,SAASvC,GAAawC,UAAU,EAAGH,GAChC/9E,MAAM/K,KAAK,IAAIkpF,WAAWzC,GACnC,CAEO,SAAS0C,EAAY9I,GAC1B,OAAOt1E,MAAM/K,KAAKqgF,GAAYE,GACrB,KAAY,IAAPA,GAAajlG,SAAS,MAAM8oB,OAAO,KAC9CgH,KAAK,GACV,CAEO,SAASg+E,EAAsBrvG,EAAmB0I,GAEvD,MAAMzG,EAAUqtG,OAAO,SAEjBC,EAAQ,IAAIJ,WAAW,IACxBltG,KACArQ,EAAAA,UAAU2kB,SAASvW,GAAWsvC,kBAC9Bw/D,EAASrwE,OAAO/1B,MAErB,OAAO9W,EAAAA,UAAU49G,eAAeD,GAAO/G,QACzC,CAEO,SAASiH,EAAcC,GAC5B,MAAMC,EAAI,IAAI/9G,EAAAA,UAAU2kB,SAASm5F,GAAKpgE,gBAItC,OAAI8/D,EAHYO,EAAE7mG,OAAO,EAAG,MAGCsmG,EAAYE,OAAO,UACvC,CACL5mG,MAAO,EACP22B,SAAUqwE,EACVlvG,MAAO6uG,EAAsBK,EAAK,IAG/B,CACLhnG,MAAOmmG,EAAWc,EAAE7mG,QAAQ,IAE5Bu2B,SAAUztC,EAAAA,UAAU49G,eAAeG,GAAGnH,SACtChoG,MAAOkvG,EAEX,CDwBAd,EAAUb,eAAeY,EAAiBzlE,QAASolE,E,kFE7E5C,SAASsB,EAAc72F,GAC5B,OAAQA,GACN,KAAK82F,EAAAA,EAAa1iE,KAChB,OAAO/H,OAAO,GAChB,KAAKyqE,EAAAA,EAAaC,YAChB,OAAO1qE,OAAO,GAChB,KAAKyqE,EAAAA,EAAaziE,SAChB,OAAOhI,OAAO,GAChB,QACE,OAEN,CAEO,SAAS6I,EAA2B8hE,GACzC,OAAQA,GACN,KAAK7hE,EAAAA,EAAYgoD,IACf,OACF,KAAKhoD,EAAAA,EAAY4hE,YACf,OAAOF,EAAcC,EAAAA,EAAaC,aACpC,KAAK5hE,EAAAA,EAAYf,KACf,OAAOyiE,EAAcC,EAAAA,EAAa1iE,MACpC,KAAKe,EAAAA,EAAYd,SACf,OAAOwiE,EAAcC,EAAAA,EAAaziE,UACpC,KAAKc,EAAAA,EAAYC,KAEjB,QACE,OAEN,C,mLCvBO,SAAS6hE,EAAgB76G,EAAgBmM,GAC9C,OAAKnM,GAEDmM,EAAWyjC,EAAAA,GACN,IAAI5gC,EAAAA,EAAUhP,GAAQwwB,QAAQof,EAAAA,IAHnB5vC,CAOtB,CChBO,SAASmyD,EAAUnsD,EAAgBC,GACxC,OAAOD,EAASC,EAAS,CAAED,OAAQC,EAAQA,OAAQD,GAAW,CAAEA,SAAQC,SAC1E,CCAO,SAAS60G,EAAkBxmG,EAAgCf,GAChE,IAAKe,EAAU,OAEf,MAAM,OAAEtO,EAAM,OAAEC,GAAWqO,EAASklC,KAWpC,MATiB,CACfllC,EAASklC,KAAK/hC,GACdlE,EAAMnH,WACNpG,EAAOnF,QACPmF,EAAO+pB,SAAS3jB,WAChBnG,EAAOpF,QACPoF,EAAO8pB,SAAS3jB,YAGF8vB,KAAK,IACvB,CAQO,SAAS6+E,EAAkB50G,GAChC,IAAKA,IAAQA,EAAIoG,SAAS,KAAM,MAAO,CAAC,EAExC,MAAMyuG,EAAM70G,EAAIysB,MAAM,KAEtB,MAAO,CACLxU,OAAQ48F,EAAI,GACZC,cAAeD,EAAI,GACnBh1G,OAAQg1G,EAAI,GACZE,UAAWF,EAAI,GACf/0G,OAAQ+0G,EAAI,GACZG,UAAWH,EAAI,GAEnB,CAEO,IAAKI,EAAa,SAAbA,GAAa,OAAbA,EAAa,wBAAbA,EAAa,kBAAbA,EAAa,gBAAbA,EAAa,gBAAbA,EAAa,gBAAbA,CAAa,MAQlB,MAAMC,EAAiBz3F,IAC5B,OAAQA,GACN,KAAKw3F,EAAcE,WACjB,MAAO,UACT,KAAKF,EAAcG,QACjB,MAAO,UACT,KAAKH,EAAcI,OACjB,MAAO,UACT,KAAKJ,EAAcK,OACjB,MAAO,UACT,KAAKL,EAAcljE,OACjB,MAAO,UACT,QACE,MAAO,UACX,E,0FClDK,SAASwjE,EAAcC,EAAmBC,EAAoBl9G,GAAiB,IAADm9G,EACnF,IAAKF,IAAcC,IAAel9G,EAChC,OAGF,IAAKA,EAAMmtE,MAAM,eACf,OAGF,MAAOiwC,EAAOC,GAAYr9G,EAAMk0B,MAAM,KAEhCzmB,EAA2B,QAAnB0vG,EAAW,OAARE,QAAQ,IAARA,OAAQ,EAARA,EAAUv3G,cAAM,IAAAq3G,EAAAA,EAAI,EAC/BG,EAAkBC,IAAAA,QAAkB,OAALH,QAAK,IAALA,EAAAA,EAAS,KAAe,OAARC,QAAQ,IAARA,EAAAA,EAAY,KAEjE,OAAO,IAAIvzD,EAAAA,EACTmzD,EACAC,EACAK,IAAAA,SAAcA,IAAAA,OAAY,IAAM9vG,GAAW8vG,IAAAA,OAAY,IAAMN,EAAUxvG,WACvE8vG,IAAAA,SAAcD,EAAiBC,IAAAA,OAAY,IAAML,EAAWzvG,WAEhE,CAEO,SAAS+vG,EACdP,EACAC,EACA33D,EACAvlD,GAEA,IAAKi9G,IAAcC,IAAe33D,IAAcvlD,EAC9C,OAGF,MAAM2pD,EAAQqzD,EAAcC,EAAWC,EAAYl9G,GAEnD,IAAK2pD,EACH,OAGF,IAAIjlB,EAGJ,MAAM+4E,GAAeC,EAAAA,EAAAA,GAAmB/zD,EAAMK,UAAWL,EAAMI,aAW/D,OARErlB,EADE64E,IAAAA,mBAAwBE,EAAcE,EAAAA,EAASC,gBAC1CD,EAAAA,EAASE,SACPN,IAAAA,gBAAqBE,EAAcE,EAAAA,EAASG,gBAC9CH,EAAAA,EAASI,UAGTC,EAAAA,EAAAA,GAAmBr0D,IAGrBs0D,EAAAA,EAAAA,GAAkBv5E,EAAMw5E,EAAAA,GAAc34D,GAC/C,C,eC7DO,SAASuM,EAAgC9xD,EAAgBglD,GAC9D,GAAKhlD,GAAUglD,EAGf,IACE,MAAMm5D,EAAmB,IAAI7tG,EAAAA,EAAUtQ,GACpCuQ,aAAa,IAAMy0C,EAASv3C,UAC5BskB,SAAS,CAAEqsF,eAAgB,KAE9B,GAAyB,MAArBD,EACF,OAAO75D,EAAAA,EAAeC,cAAcS,EAAUm5D,EAElD,CAAE,MAAO3kG,GAEPkZ,QAAQlZ,MAAM,kCAAkCxZ,KAAUwZ,EAC5D,CAGF,CAEO,SAAS6kG,EAAsB94D,GACpC,MAAO,GAAG,IAAIj1C,EAAAA,EAAUi1C,GAAW+4D,IAAI,KAAOxsF,QAAQ,KACxD,CAEO,SAAS89E,EAAiBsL,GAC/B,MAAMqD,EAAUh7D,OAAO23D,GAAKhnF,MAAM,KAAK,GACjCsqF,EAAUj7D,OAAO23D,GAAKhnF,MAAM,KAAK,GAEvC,QAAIsqF,GAAWA,EAAQ14G,OAASorC,EAAAA,OAI5BqtE,GAAWA,EAAQz4G,OAASkrC,EAAAA,GAKlC,C,8HC5BO,SAASytE,EAAoB7oG,GAClC,MAAMklC,EAAOllC,EAASklC,KAChB8C,EAAYhoC,EAASgoC,UACrBC,EAAYjoC,EAASioC,UAE3B,OAAIA,EAAY/C,EAAK4jE,YACZ9gE,EAGFC,CACT,CAMO,SAAS8gE,EAA0Bh1D,EAA4B7O,EAAY8jE,GAChF,MAAMC,GAAmBb,EAAAA,EAAAA,GAAmBr0D,GAE5C,IAAIm1D,GAAcb,EAAAA,EAAAA,GAAkBY,EAAkB/jE,EAAKpzC,aAU3D,OARIq1B,KAAKgiF,IAAIhiF,KAAKgiF,IAAID,GAAe/hF,KAAKgiF,IAAIjkE,EAAK4jE,eAAiBR,EAAAA,GAAcpjE,EAAKr5C,OACjFm9G,EACFE,GAAeZ,EAAAA,GAAcpjE,EAAKr5C,KAElCq9G,GAAeZ,EAAAA,GAAcpjE,EAAKr5C,OAI/Bu9G,EAAAA,EAAAA,GAAcF,EACvB,CAEO,SAASG,EAAiBC,GAC/B,OAAOA,EACH,IAAI5uG,EAAAA,EAAU4uG,GAAYh+D,WAAW,KACnCi+D,EAAAA,EAAAA,GAAcD,EAAY,IAC1BC,EAAAA,EAAAA,GAAcD,EAAY,GAC5B,IACN,C,4FC/CO,SAASr7D,EAAwB38C,GACtC,OAAOA,EAAS2G,SAAS,QAC3B,CAEO,SAASszC,EAAcx0C,GAC5B,YAAcY,IAAVZ,GACGk3C,EAAwBl3C,EAAMzF,SACvC,CAEO,SAASk4G,EAAmBzyG,EAAcrL,GAC/C,OAAI6/C,EAAcx0C,GACX,IAAI2D,EAAAA,EAAUhP,GAAQ8vB,MAAMzkB,EAAM0kB,UAAUC,cAAc,IAGxD21B,EAAAA,EAAAA,GAAe,IAAI32C,EAAAA,EAAUhP,GAAQ8vB,MAAMzkB,EAAM0kB,WAF/C,IAIJ/vB,CACT,C,+BCfO,SAAS0nE,EAAmBhpE,GACjC,OAAOA,EAAMq/G,IAAI,KAAKf,IAAI,IAC5B,C,6GCJO,IAAK77B,EAAc,SAAdA,GAAc,OAAdA,EAAc,oBAAdA,EAAc,kCAAdA,EAAc,gCAAdA,EAAc,kBAAdA,EAAc,0BAAdA,CAAc,MAc1B,SAASvE,EAAQ1kE,GACfkZ,QAAQlZ,MAAM,qBAAqBA,IACrC,CAEA,MAAOupE,EAAUO,IAASg8B,EAAAA,EAAAA,sBAA+BlN,GAAY,IAAImN,EAAAA,SAAS,CAAEnN,UAASl0B,cAEhFkE,EAAiC,CAC5C7qE,UAAWwrE,EACXO,QACAv7D,KAAM06D,EAAeG,S,mHCnBhB,SAAS48B,EAAUx/G,GACxB,IACE,OAAO+sD,EAAAA,EAAAA,YAAW/sD,EACpB,CAAE,MACA,OAAO,CACT,CACF,CAyBO,SAASsnE,EACdnlE,EACA8kE,EACAT,EACAnlE,GAEA,IAAKm+G,EAAUr9G,IAAYA,IAAYs9G,EAAAA,EACrC,MAAM73G,MAAM,gCAAgCzF,OAG9C,OAAO,IAAIu9G,EAAAA,GAASv9G,EAAS8kE,EAlB/B,SACET,EACAnlE,GAEA,OAAOA,GAAWmlE,EATpB,SAAmBA,EAA2BnlE,GAC5C,OAAOmlE,EAASm5C,UAAUt+G,GAASu+G,kBACrC,CAO+BD,CAAUn5C,EAAUnlE,GAAWmlE,CAC9D,CAaoCq5C,CAAoBr5C,EAAUnlE,GAClE,CAMO,SAASk6G,EAAYj6G,GAAiD,IAAxBmM,EAAQsrB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,GAC9D,MAAO,MAAM,IAAIzoB,EAAAA,EAAUhP,GAAQiP,aAAa,IAAM9C,GAAUC,SAAS,KAC3E,C,qlBC1DO,MAAMlQ,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMqiH,EAASpiH,EAAIW,OAAO,CAAE2B,MAAOtC,EAAI2B,KAAM6O,KAAMxQ,EAAI2B,OACjD0gH,EAAQriH,EAAIW,OAAO,CAAEyb,KAAMpc,EAAI2B,KAAM2gH,UAAWtiH,EAAI2B,OACpD4gH,EAAgBviH,EAAIW,OAAO,CAC/BoD,IAAK/D,EAAI0J,IACT84G,QAASxiH,EAAII,IAAIgiH,GACjBryG,SAAU/P,EAAI0J,IACd8G,KAAMxQ,EAAI2B,KACV2hG,KAAMtjG,EAAImB,MACVshH,WAAYziH,EAAII,IAAIiiH,GACpBlrE,YAAan3C,EAAI0J,IACjBg5G,aAAc1iH,EAAI2B,KAClB6H,SAAUxJ,EAAI2B,KACd2O,OAAQtQ,EAAI2B,KACZsH,WAAYjJ,EAAI2B,OAEZghH,EAAa3iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAClDihH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChDkhH,EAAW7iH,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAIa,IAAI0hH,GACZ/3G,IAAKxK,EAAI2B,OAELgJ,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAIJ,EAAI2B,MAAO6I,IAAKxK,EAAI2B,OACzD2I,EAAWtK,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAImiH,GACZ/3G,IAAKxK,EAAI2B,OAELkJ,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKxK,EAAI2B,OACpD,OAAO3B,EAAI2H,QAAQ,CACjB6/C,IAAKxnD,EAAI6H,KAAK,CAAC06G,GAAgB,CAACI,GAAa,IAC7CG,SAAU9iH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC7CI,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzCK,KAAMjjH,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM4gH,GAAgB,CAACI,GAAa,IACxD/qD,IAAK53D,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACkhH,GAAW,CAAC,UACvCK,aAAcljH,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,CAAC,UACxCw4G,QAASnjH,EAAI6H,KAAK,GAAI,CAACyC,GAAW,CAAC,UACnC84G,QAASpjH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACkJ,GAAS,CAAC,UACzC40D,OAAQz/D,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC3CU,YAAarjH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAChDW,WAAYtjH,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI2B,MAAO,CAACghH,GAAa,KACzD,ECzCS7iH,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM8K,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAC9C4hH,EAAWvjH,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIK,WAChBmK,IAAKxK,EAAI2B,OAELkhH,EAAW7iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKxK,EAAI2B,OAChD6hH,EAAaxjH,EAAII,IAAIJ,EAAImC,MACzBL,EAAU9B,EAAIW,OAAO,CACzBsB,MAAOjC,EAAIK,UACX6B,WAAYlC,EAAIa,IAAI2iH,KAEhBxoD,EAAYh7D,EAAIW,OAAO,CAC3BoD,IAAK/D,EAAI0J,IACTqG,SAAU/P,EAAI0J,IACd+5G,gBAAiBzjH,EAAIa,IAAIiB,GACzBuP,KAAMrR,EAAIa,IAAIb,EAAI2B,MAClB6O,KAAMxQ,EAAI2B,KACVC,UAAW5B,EAAIK,UACfqjH,gBAAiB1jH,EAAI0J,IACrBi6G,WAAY3jH,EAAIa,IAAIb,EAAI0J,KACxByN,MAAOnX,EAAI0J,IACXF,SAAUxJ,EAAI2B,KACdiiH,aAAc5jH,EAAI0J,IAClB4G,OAAQtQ,EAAI2B,OAERgJ,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAIywD,EAAWxwD,IAAKxK,EAAI2B,OACjDkiH,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAI46D,GACjB3e,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfY,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OAC5CoiH,EAAc/jH,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI2B,MACtCqiH,EAAchkH,EAAIW,OAAO,CAC7Bq5F,IAAKh6F,EAAI2B,KACTsiH,OAAQjkH,EAAI2B,KACZo4G,KAAM/5G,EAAII,IAAIJ,EAAImC,MAClB+hH,QAASlkH,EAAII,IAAI2jH,KAEbI,EAAenkH,EAAIW,OAAO,CAC9Bo5G,KAAM/5G,EAAII,IAAIJ,EAAImC,MAClB+hH,QAASlkH,EAAII,IAAI2jH,GACjBK,YAAapkH,EAAIqkH,QAEnB,OAAOrkH,EAAI2H,QAAQ,CACjB28G,UAAWtkH,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI2B,MAAO,CAACkJ,GAAS,IACzDm4G,aAAchjH,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IACtC66G,UAAWvkH,EAAI6H,KAAK,GAAI,CAAC07G,GAAW,CAAC,UACrCiB,SAAUxkH,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACwiH,GAAW,CAAC,UACjD4B,eAAgBzkH,EAAI6H,KAAK,GAAI,CAACgD,GAAS,CAAC,UACxC65G,UAAW1kH,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACsK,GAAW,CAAC,UAClDg6G,eAAgB3kH,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAIa,IAAIb,EAAI8E,OAAQ,CAACwF,GAAW,CAAC,UAC7Es6G,aAAc5kH,EAAI6H,KAAK,CAACm8G,GAAc,CAACG,GAAe,CAAC,UACvDU,UAAW7kH,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClDykH,eAAgB9kH,EAAI6H,KAAK,CAAC7H,EAAI8E,MAAO,CAAC+F,GAAS,IAC/Ck6G,gBAAiB/kH,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAACmB,GAAS,IAC9Dm6G,eAAgBhlH,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI2B,MAAO,CAACkJ,GAAS,IAC9Do6G,oBAAqBjlH,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAII,IAAIJ,EAAImC,MAAOnC,EAAI2B,MAAO,CAACkJ,GAAS,IACtFq6G,mBAAoBllH,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI2B,MAAO,CAACkJ,GAAS,IAClEs6G,WAAYnlH,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,IACrCsgH,aAAcplH,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACwK,GAAS,KAClD,E,yoBCtDJ,IAAIw6G,EAA+C,CAAC,EAW7C,IAAKlzE,GAAZ,SAAYA,GACVA,EAAA,kBACAA,EAAA,YACAA,EAAA,cACAA,EAAA,QACAA,EAAA,YACAA,EAAA,oBACAA,EAAA,QACAA,EAAA,oBACAA,EAAA,WACD,CAVD,CAAYA,IAAAA,EAAS,KAsCf,MAAOxB,EAAbjX,WAAAA,GACU,KAAA7f,UAAuBs4B,EAAUwF,QAEjC,KAAAonD,MAA0B,KAE1B,KAAAjuD,KAAesuD,EAAAA,EAEf,KAAAkmB,eAAuC,GAIxC,KAAAC,KAAM,CAwJf,CAtJSllB,YAAAA,CAAaxmF,GAClBggB,KAAKhgB,UAAYA,CACnB,CAEa7Q,MAAAA,CAAMu2D,G,2DAAI,WACrBt2D,EAAU,KACV6nC,EAAI,WACJhxC,EAAU,SACVgJ,EAAQ,MACRi2F,EAAK,UACL/yF,GACiBjM,EAAA,mBACjB,IAAIsb,EAAKpS,EAET,IADKoS,GAAMrP,IAAWqP,EAAKgqG,EAAkBr5G,KACxCqP,EAAI,MAAM,IAAInR,MAAM,kBAEzB,MAAMs7G,EAAa,OAAJ10E,QAAI,IAAJA,EAAAA,EAAQlH,EAAKkH,KAItB20E,EAAe3lH,EAAW,CAAEE,IAAGA,EAAAA,KAErC,IAAI+I,EAAiC,KAGjC28G,EAAkC,KAEtC,GAAI58G,EACF,IACEC,QAAcsoB,OAAO0uE,YAAYf,YAAe,CAC9C/1F,WAAYoS,EACZ6jF,iBAAkBp/F,GAEtB,CAAE,MAAOgc,GACP4pG,EAAmB7/D,OAAO/pC,EAC5B,MAEA/S,QCjGA,SAA+Bw2D,G,gDAAI,WACvCt2D,EAAU,iBACVi2F,EAAgB,aAChBymB,EAAY,MACZ5mB,EAAK,aACLuX,GAAe,GACMv2G,EAAA,mBAWrB,OATIu2G,UACS,OAALvX,QAAK,IAALA,OAAK,EAALA,EAAOuX,eAAev3C,OAAOv0D,IACjCwqB,QAAQg2C,KACN,gFAEFh2C,QAAQlZ,MAAMtR,EAAI,KAIfmmC,EAAAA,MAAMquD,YAAeE,EAAgB12D,OAAAwmB,OAAA,CAC1C+vC,MAAOA,EACP91F,cACgB,OAAZ08G,QAAY,IAAZA,EAAAA,EAAgB,CAAC,GAEzB,CAhBuB,EAgBtB,G,CD2EmBC,CAAmB,CAC/B38G,WAAYoS,EACZ6jF,iBAAkBp/F,EAClBi/F,YAAan1D,EAAKi8E,eAAeL,GACjClP,aAAckP,IAAWpmB,EAAAA,IAI7B,MAAM0mB,EAAc,CAAC,EAyErB,OAvEAL,EAAaM,QAAQzvG,SAAS8N,IAC5B,MAAMra,EAAMqa,EAAI,GAEhB0hG,EAAO/7G,GAAO,mBAAA63B,EAAAvG,UAAAjzB,OAAUy5B,EAAI,IAAApC,MAAAmC,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAAzG,UAAAyG,GAAA,OAAIu8B,EAAAz0B,OAAA,sB,YAC9B,GAAI87E,EACF,MAAO,CACLl7G,IAAK,GAAGk7G,2HASZ,IACE,IAAK38G,EAAO,MAAO,CAAEyB,IAAK,YAE1B,GAAIqvB,KAAKmsF,aAAc,CACrB,MAAMC,QAAoBpsF,KAAKmsF,aAAa,CAC1C/8G,WAAYoS,EACZ4oG,OAAQl6G,EACRjB,WACA+Q,UAAWggB,KAAKhgB,YAGlB,IAA4B,IAAxBosG,EAAYpxF,QACd,MAAO,CAAErqB,IAAKy7G,EAAYpkG,QAE9B,CAEA,MAAM1S,EAASpG,EAAMgB,MAAQ83B,GAC7B,aAAa1yB,CACf,CAAE,MAAO2M,GACP,IAAI+F,EAAU,GAEd,GAAIqkG,IAASpqG,GAET+F,EADE,YAAa/F,EACLA,EAAM+F,QAENyC,KAAKC,UAAUzI,OAEtB,CACL,MAAMqqG,EAAUtgE,OAAO/pC,GAEvB,GAAIqqG,EAAQh2G,SAAS,gBAAiB,CACpC,MAAMm2C,EAA0D,QAA/C8/D,EAAiC,QAAjC7mD,EAAA4mD,EAAQ3vF,MAAM,iBAAiB,UAAE,IAAA+oC,OAAA,EAAAA,EAAE/oC,MAAM,cAAM,IAAA4vF,EAAAA,EAAI,GACpEvkG,EAAUykC,EAAsB,QAAX+/D,EAAA//D,EAAS,UAAE,IAAA+/D,OAAA,EAAAA,EAAEC,OAASH,CAC7C,KAAO,CACL,MAAM7/D,EAAW6/D,EAAQh2G,SAAS,aAA8C,QAA/Bo2G,EAAAJ,EAAQ3vF,MAAM,eAAe,UAAE,IAAA+vF,OAAA,EAAAA,EAAE/vF,MAAM,KAAO,GAC/F3U,EAAUskG,EAAQh2G,SAAS,cAAkBm2C,EAAWA,EAAS,GAAK6/D,CACxE,CACF,CAcA,OAZItsF,KAAK0rF,MACPvwF,QAAQuwF,IAAI,gCACZvwF,QAAQuwF,IAAI,aAAclqG,GAC1B2Z,QAAQuwF,IAAI,WAAYx7G,GACxBirB,QAAQuwF,IAAI,aAAc1jG,GAC1BmT,QAAQuwF,IAAI,iCAGd1rF,KAAKyrF,eAAehvG,SAASikC,IAC3BA,EAAK,CAAEtxC,WAAc,OAAFoS,QAAE,IAAFA,EAAAA,EAAM,GAAI4oG,OAAQl6G,EAAK8X,WAAU,IAG/C,CAAErX,IAAKqX,EAChB,CACF,GAAC,KAGIikG,CACT,CA5GmB,EA4GlB,G,CAEYD,cAAAA,CAAe/0E,G,yCAC1B,aAAaquD,EAAAA,UAAUn2F,OAAO,CAC5B8nC,KAAU,OAAJA,QAAI,IAAJA,EAAAA,EAAQjX,KAAKiX,MAEvB,G,CAEO01E,QAAAA,CAASznB,GACdllE,KAAKklE,MAAQA,CACf,CAEOluD,OAAAA,CAAQC,GACbjX,KAAKiX,KAAOA,CACd,CAEO,0BAAOF,CAAoB/C,GAChCw3E,EAAoBx3E,CACtB,CAEO2yC,OAAAA,CAAQjkD,GACb1C,KAAKyrF,eAAe1uG,KAAK2lB,EAC3B,CAEOskD,QAAAA,CAAStkD,GACd1C,KAAKmsF,aAAezpF,CACtB,CAEOkqF,MAAAA,CAAOlB,GACZ1rF,KAAK0rF,IAAMA,CACb,EAGK,MAAMx8G,EAAQ,IAAI4nC,EE/NlB,IAAK1kC,GAAZ,SAAYA,GACVA,EAAA,oBACAA,EAAA,0BACAA,EAAA,0BACAA,EAAA,yBACAA,EAAA,kCACAA,EAAA,oCACAA,EAAA,gCAEAA,EAAA,oCACAA,EAAA,sBACAA,EAAA,uBACAA,EAAA,oBACAA,EAAA,oBACAA,EAAA,UAEAA,EAAA,sBACAA,EAAA,gCAEAA,EAAA,cACAA,EAAA,YAEAA,EAAA,gCACAA,EAAA,YACAA,EAAA,0BACAA,EAAA,sBAEAA,EAAA,gDACAA,EAAA,iCACAA,EAAA,mCACAA,EAAA,2BAEAA,EAAA,sCACAA,EAAA,0CACAA,EAAA,oCACAA,EAAA,oCAEAA,EAAA,kCACAA,EAAA,4BAEAA,EAAA,kCACAA,EAAA,qCACAA,EAAA,sCAEAA,EAAA,gDACAA,EAAA,sBACAA,EAAA,oCACAA,EAAA,wBAEAA,EAAA,8CACAA,EAAA,0BACAA,EAAA,wCAEAA,EAAA,0BACAA,EAAA,sBACAA,EAAA,sBAEAA,EAAA,gCACAA,EAAA,6BACD,CA3DD,CAAYA,IAAAA,EAAS,K,0SCSd,MAAMo2F,EAAmBv5F,GAAmBu1D,OAAA,6BACjD,OAAAt1D,EAAMC,OAAyB,CAC7BgD,UAAWC,EAAUsjC,UACrBzmC,WACAhJ,WAAY4mH,G,IAGHC,EAAiBA,IAAWtoD,OAAA,6BACvC,OAAAt1D,EAAMC,OAA8B,CAClCC,WAAY,8BACZnJ,WAAY8mH,G,IChBT,MCHM9mH,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACFC,EAAIW,OAAO,CAC5CkmH,mBAAoB7mH,EAAII,IAAIJ,EAAIK,WAChCymH,wBAAyB9mH,EAAI8E,KAC7BiiH,eAAgB/mH,EAAII,IAAIJ,EAAIK,aAH9B,MAKM2mH,EAAUhnH,EAAIW,OAAO,CACzBsmH,KAAMjnH,EAAII,IAAIJ,EAAImC,MAClB+kH,cAAelnH,EAAImnH,QAEfC,EAAiBpnH,EAAIW,OAAO,CAChCuhF,KAAMliF,EAAII,IAAIJ,EAAImC,MAClB8kH,KAAMjnH,EAAIa,IAAImmH,KAEVK,EAAernH,EAAIW,OAAO,CAAEkhB,QAAS7hB,EAAI2B,OACzCkJ,EAAS7K,EAAIE,QAAQ,CACzBgK,MAAOm9G,EACPC,KAAMtnH,EAAII,IAAIJ,EAAImC,QAEdolH,EAAkBvnH,EAAIW,OAAO,CAAEwO,OAAQnP,EAAIa,IAAIgK,KAC/C28G,EAAqCxnH,EAAIW,OAAO,CACpD8mH,gCAAiCznH,EAAIgB,MACrCorC,MAAOpsC,EAAIgB,QAEP0mH,EAAW1nH,EAAIW,OAAO,CAAE0a,GAAIrb,EAAIa,IAAIb,EAAIK,aACxCsnH,EAAgB3nH,EAAIW,OAAO,CAAEinH,UAAW5nH,EAAII,IAAIsnH,KAChDG,EAA2B7nH,EAAIW,OAAO,CAC1CmnH,gBAAiB9nH,EAAIa,IAAIb,EAAIgB,OAC7B+mH,kBAAmB/nH,EAAIa,IAAIb,EAAIgB,OAC/BgnH,kCAAmChoH,EAAIa,IAAIb,EAAIgB,OAC/CinH,kBAAmBjoH,EAAIa,IAAIb,EAAIgB,OAC/BknH,gCAAiCloH,EAAIa,IAAIb,EAAIgB,SAEzCmnH,EAAoCnoH,EAAIW,OAAO,CACnDynH,0BAA2BpoH,EAAIa,IAAIb,EAAI2B,QAEnC0mH,EAAsCroH,EAAIW,OAAO,CACrD2nH,sBAAuBtoH,EAAII,IAAIynH,GAC/BU,uCAAwCvoH,EAAIa,IAAIb,EAAIgB,OACpDwnH,2CAA4CxoH,EAAIa,IAAIb,EAAIgB,OACxDynH,qCAAsCzoH,EAAIa,IACxCsnH,KAGEO,EAAW1oH,EAAIW,OAAO,CAC1BgoH,2BAA4B3oH,EAAIa,IAAIb,EAAI8E,MACxC8jH,cAAe5oH,EAAIgB,MACnB6nH,eAAgB7oH,EAAIgB,QAEhB8nH,EAAgB9oH,EAAIW,OAAO,CAC/BooH,iBAAkB/oH,EAAI2B,KACtBqnH,WAAYhpH,EAAII,IAAIsoH,KAEhBO,EAA0BjpH,EAAIW,OAAO,CACzCuoH,aAAclpH,EAAII,IAAI0oH,KAElBK,EAAuBnpH,EAAIW,OAAO,CAAEyoH,UAAWppH,EAAIgB,QACnDqoH,EAAqBrpH,EAAIW,OAAO,CACpC2oH,WAAYtpH,EAAIa,IAAIb,EAAIK,WACxBkpH,uBAAwBvpH,EAAIgB,MAC5BsmC,KAAMtnC,EAAIgB,MACVwoH,UAAWxpH,EAAIgB,MACfyoH,uBAAwBzpH,EAAIa,IAAIb,EAAIgB,SAEhC0oH,EAAwB1pH,EAAIW,OAAO,CACvCgpH,kBAAmB3pH,EAAII,IAAIipH,KAEvBO,EAAsB5pH,EAAIW,OAAO,CACrCkpH,gBAAiB7pH,EAAII,IAAIipH,KAErBS,EAAmB9pH,EAAIW,OAAO,CAClCyoH,UAAWppH,EAAIgB,MACf+oH,wBAAyB/pH,EAAIgB,QAEzBgpH,EAAiChqH,EAAIW,OAAO,CAChDspH,sBAAuBjqH,EAAIa,IAAIsoH,GAC/Be,uBAAwBlqH,EAAIa,IAAI6oH,GAChCS,qBAAsBnqH,EAAIa,IAAI+oH,GAC9BQ,kBAAmBpqH,EAAIa,IAAIipH,KAEvBO,EAA2BrqH,EAAIE,QAAQ,CAC3C8pH,+BAAgCA,IAE5BM,EAAYtqH,EAAIW,OAAO,CAAE4pH,UAAWvqH,EAAII,IAAIJ,EAAI2B,QAChD6oH,EAAiBxqH,EAAIW,OAAO,CAChCq5F,IAAKh6F,EAAIa,IAAIb,EAAI2B,MACjB8oH,2BAA4BzqH,EAAIa,IAAIb,EAAIgB,OACxC0pH,oCAAqC1qH,EAAIa,IAAIb,EAAIgB,OACjD2pH,gBAAiB3qH,EAAIa,IAAIb,EAAIgB,OAC7B4pH,2BAA4B5qH,EAAIa,IAAIb,EAAI8E,MACxC+lH,wBAAyB7qH,EAAIa,IAAIb,EAAIgB,OACrC8pH,sCAAuC9qH,EAAIa,IACzC2mH,GAEFuD,kCAAmC/qH,EAAII,IAAIJ,EAAI2B,MAC/CqpH,aAAchrH,EAAIa,IAAIb,EAAI2B,MAC1BspH,+BAAgCjrH,EAAIa,IAAIb,EAAIgB,OAC5CkqH,YAAalrH,EAAIa,IAAIb,EAAIgB,OACzBmqH,yBAA0BnrH,EAAIa,IAAIb,EAAIgB,OACtCoqH,kBAAmBprH,EAAIa,IAAIb,EAAI2B,MAC/B0P,KAAMrR,EAAIa,IAAIb,EAAI2B,MAClB6O,KAAMxQ,EAAIa,IAAIb,EAAI2B,MAClB0pH,6BAA8BrrH,EAAIa,IAAIb,EAAIgB,OAC1CsqH,2BAA4BtrH,EAAIa,IAAIb,EAAIgB,OACxCuqH,8BAA+BvrH,EAAIa,IAAIb,EAAIgB,OAC3CwqH,8CAA+CxrH,EAAIa,IAAIb,EAAIgB,OAC3DisB,YAAajtB,EAAIa,IAAIb,EAAI2B,MACzB8pH,qCAAsCzrH,EAAIa,IAAIb,EAAIgB,OAClD0qH,iBAAkB1rH,EAAIa,IAAIb,EAAIgB,OAC9B2qH,iCAAkC3rH,EAAIa,IAAIb,EAAIgB,OAC9C4qH,yCAA0C5rH,EAAIa,IAAIb,EAAIgB,OACtD6qH,oBAAqB7rH,EAAIa,IAAIb,EAAIgB,OACjC8qH,eAAgB9rH,EAAIa,IAAI8mH,GACxBoE,uCAAwC/rH,EAAIa,IAC1CwnH,GAEF2D,0BAA2BhsH,EAAIa,IAAIooH,GACnCgD,yBAA0BjsH,EAAIa,IAAIb,EAAIgB,OACtCkrH,2BAA4BlsH,EAAIa,IAAIwpH,GACpC8B,wCAAyCnsH,EAAIa,IAAIb,EAAIgB,OACrDorH,WAAYpsH,EAAIa,IAAIb,EAAI2B,MACxB0qH,WAAYrsH,EAAIa,IAAIb,EAAI2B,MACxB2qH,wBAAyBtsH,EAAIa,IAAIb,EAAIgB,OACrCurH,iCAAkCvsH,EAAIa,IAAIb,EAAIgB,OAC9CwrH,yBAA0BxsH,EAAIa,IAAIb,EAAIgB,OACtCyrH,qBAAsBzsH,EAAIa,IAAIypH,GAC9BoC,YAAa1sH,EAAIa,IAAIb,EAAIgB,OACzB2rH,iCAAkC3sH,EAAIa,IAAIb,EAAIgB,SAE1C4rH,EAAsB5sH,EAAIW,OAAO,CACrCksH,iBAAkB7sH,EAAIa,IAAI2pH,KAEtBsC,EAA8B9sH,EAAIW,OAAO,CAC7CosH,wBAAyB/sH,EAAII,IAAIsnH,GACjCsF,8BAA+BhtH,EAAII,IAAIsnH,GACvCuF,8BAA+BjtH,EAAII,IAAIsnH,KAEnCwF,EAAiBltH,EAAIW,OAAO,CAChCgmB,KAAM3mB,EAAIa,IAAIb,EAAIK,WAClBmnG,KAAMxnG,EAAIa,IAAIb,EAAIK,WAClB8sH,OAAQntH,EAAIa,IAAIb,EAAIK,WACpB8W,MAAOnX,EAAIa,IAAIb,EAAIK,WACnB+sH,WAAYptH,EAAIa,IAAIb,EAAIK,aAEpBgtH,EAAuBrtH,EAAIW,OAAO,CACtC2sH,+BAAgCttH,EAAIa,IAAIisH,GACxCS,UAAWvtH,EAAIa,IAAIb,EAAIK,WACvByb,MAAO9b,EAAIa,IAAIwmH,GACfO,UAAW5nH,EAAIa,IAAIqsH,KAEfM,EAA+BxtH,EAAIW,OAAO,CAC9CkmH,mBAAoB7mH,EAAII,IAAIJ,EAAIK,aAE5BotH,EAAoCztH,EAAIW,OAAO,CACnD+sH,YAAa1tH,EAAIgB,QAEb2sH,EAAc3tH,EAAIW,OAAO,CAC7BgW,iBAAkB3W,EAAIa,IAAIb,EAAIK,WAC9BskD,uBAAwB3kD,EAAIa,IAAIb,EAAIK,WACpCutH,kBAAmB5tH,EAAIa,IAAIb,EAAIK,WAC/BwtH,iBAAkB7tH,EAAIa,IAAIb,EAAIK,WAC9BqW,mBAAoB1W,EAAIa,IAAIb,EAAIK,aAE5BytH,EAAmC9tH,EAAIE,QAAQ,CACnDgK,MAAOm9G,EACPsG,YAAaA,IAETI,EAAqC/tH,EAAIW,OAAO,CACpDqtH,uCAAwChuH,EAAIa,IAC1CitH,KAGEG,EAAajuH,EAAIW,OAAO,CAC5ButH,kBAAmBluH,EAAII,IAAIJ,EAAImC,MAC/BgsH,eAAgBnuH,EAAII,IAAIJ,EAAImC,MAC5BisH,eAAgBpuH,EAAII,IAAIJ,EAAImC,MAC5BksH,iBAAkBruH,EAAII,IAAIJ,EAAImC,MAC9BmsH,qBAAsBtuH,EAAII,IAAIJ,EAAImC,MAClCosH,gBAAiBvuH,EAAII,IAAIJ,EAAImC,QAEzBqsH,EAA2BxuH,EAAIW,OAAO,CAC1CgkD,uBAAwB3kD,EAAIa,IAAIb,EAAIK,WACpCouH,gBAAiBzuH,EAAIa,IAAIotH,KAErBS,EAA4B1uH,EAAIW,OAAO,CAC3CguH,aAAc3uH,EAAIa,IAAIotH,KAElBW,EAA0B5uH,EAAIW,OAAO,CACzComH,eAAgB/mH,EAAII,IAAIJ,EAAIK,aAExBwuH,EAAiB7uH,EAAIW,OAAO,CAAEuhF,KAAMliF,EAAII,IAAIJ,EAAImC,QAChD2sH,EAAkB9uH,EAAIW,OAAO,CAAEsmH,KAAMjnH,EAAIa,IAAImmH,KAC7C+H,EAAa/uH,EAAIW,OAAO,CAC5BguH,aAAc3uH,EAAIa,IAAIotH,GACtBQ,gBAAiBzuH,EAAIa,IAAIotH,KAErBe,EAAkChvH,EAAIW,OAAO,CACjDsuH,aAAcjvH,EAAII,IAAI2uH,GACtBG,2BAA4BlvH,EAAIa,IAAIb,EAAIK,aAEpC8uH,EAAmCnvH,EAAIW,OAAO,CAClDmb,MAAO9b,EAAIa,IAAIwmH,KAEX+H,EAA4BpvH,EAAIW,OAAO,CAC3C0uH,UAAWrvH,EAAII,IAAIutH,KAEf2B,EAA0BtvH,EAAIW,OAAO,CACzC27C,MAAOt8C,EAAImB,MACXouH,YAAavvH,EAAIa,IAAIotH,GACrBiB,2BAA4BlvH,EAAIa,IAAIb,EAAIK,aAEpCmvH,EAAmBxvH,EAAIW,OAAO,CAClCutH,kBAAmBluH,EAAI2B,KACvBwsH,eAAgBnuH,EAAI2B,KACpBysH,eAAgBpuH,EAAI2B,KACpB0sH,iBAAkBruH,EAAI2B,KACtB2sH,qBAAsBtuH,EAAI2B,KAC1B4sH,gBAAiBvuH,EAAI2B,OAEjB8tH,EAAkBzvH,EAAIW,OAAO,CACjC+uH,eAAgB1vH,EAAIa,IAAI2uH,GACxBtxD,QAASl+D,EAAIa,IAAIotH,KAEb0B,EAA2B3vH,EAAIW,OAAO,CAC1CopG,MAAO/pG,EAAII,IAAIqvH,KAEXG,EAAiC5vH,EAAIW,OAAO,CAChDkvH,iBAAkB7vH,EAAII,IAAIJ,EAAIK,WAC9ByvH,mBAAoB9vH,EAAII,IAAIJ,EAAIK,aAE5B0vH,EAAgC/vH,EAAIE,QAAQ,CAChDgK,MAAOm9G,EACP2I,kBAAmBxC,IAEfyC,EAAkCjwH,EAAIW,OAAO,CACjDuvH,iCAAkClwH,EAAIa,IAAIkvH,KAEtCI,EAA6BnwH,EAAIW,OAAO,CAC5CyvH,sBAAuBpwH,EAAII,IAAIJ,EAAIK,WACnCgwH,yBAA0BrwH,EAAII,IAAIJ,EAAIK,aAElCiwH,EAA8BtwH,EAAIW,OAAO,CAC7Cmb,MAAO9b,EAAIa,IAAIwmH,KAEjB,OAAOrnH,EAAI2H,QAAQ,CACjB4oH,SAAUvwH,EAAI6H,KAAK,CAACu/G,GAAiB,CAACG,GAAkB,IACxDiJ,eAAgBxwH,EAAI6H,KAAK,CAAC+kH,GAAsB,CAACS,GAAuB,IACxEoD,uBAAwBzwH,EAAI6H,KAC1B,CAAC7H,EAAIW,OAAO,CAAC,IACb,CAAC6sH,GACD,CAAC,UAEHkD,gCAAiC1wH,EAAI6H,KACnC,CAAC4lH,GACD,CAACM,GACD,CAAC,UAEH4C,8BAA+B3wH,EAAI6H,KACjC,CAAC7H,EAAIQ,MACL,CAACR,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI2B,QACjC,CAAC,UAEHivH,qBAAsB5wH,EAAI6H,KACxB,CAAC2mH,GACD,CAACE,GACD,CAAC,UAEHmC,mBAAoB7wH,EAAI6H,KACtB,CAAC7H,EAAIW,OAAO,CAAC,IACb,CAACiuH,GACD,CAAC,UAEHkC,SAAU9wH,EAAI6H,KAAK,CAACgnH,GAAiB,CAACC,GAAkB,CAAC,UACzDiC,4BAA6B/wH,EAAI6H,KAC/B,CAACmnH,GACD,CAACG,GACD,IAEF6B,oBAAqBhxH,EAAI6H,KACvB,CAAC7H,EAAIW,OAAO,CAAC,IACb,CAACyuH,GACD,CAAC,UAEH6B,mBAAoBjxH,EAAI6H,KACtB,CAACynH,GACD,CAACK,GACD,CAAC,UAEHuB,0BAA2BlxH,EAAI6H,KAC7B,CAAC+nH,GACD,CAACK,GACD,IAEFkB,uBAAwBnxH,EAAI6H,KAC1B,CAACsoH,GACD,CAACG,GACD,KAEF,E,0SCvSG,MAAMc,EAAWA,IAAW/yD,OAAA,6BACjC,OAAAt1D,EAAMC,OAAyB,CAC7BC,WAAY,8BACZnJ,WAAYuxH,G,ICNHvxH,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMynH,EAAqCxnH,EAAIW,OAAO,CACpD8mH,gCAAiCznH,EAAIgB,MACrCorC,MAAOpsC,EAAIgB,QAEP6mH,EAA2B7nH,EAAIW,OAAO,CAC1CmnH,gBAAiB9nH,EAAIa,IAAIb,EAAIgB,OAC7B+mH,kBAAmB/nH,EAAIa,IAAIb,EAAIgB,OAC/BgnH,kCAAmChoH,EAAIa,IAAIb,EAAIgB,OAC/CinH,kBAAmBjoH,EAAIa,IAAIb,EAAIgB,OAC/BknH,gCAAiCloH,EAAIa,IAAIb,EAAIgB,SAEzCmnH,EAAoCnoH,EAAIW,OAAO,CACnDynH,0BAA2BpoH,EAAIa,IAAIb,EAAI2B,QAEnC0mH,EAAsCroH,EAAIW,OAAO,CACrD2nH,sBAAuBtoH,EAAII,IAAIynH,GAC/BU,uCAAwCvoH,EAAIa,IAAIb,EAAIgB,OACpDwnH,2CAA4CxoH,EAAIa,IAAIb,EAAIgB,OACxDynH,qCAAsCzoH,EAAIa,IACxCsnH,KAGEO,EAAW1oH,EAAIW,OAAO,CAC1BgoH,2BAA4B3oH,EAAIa,IAAIb,EAAI8E,MACxC8jH,cAAe5oH,EAAIgB,MACnB6nH,eAAgB7oH,EAAIgB,QAEhB8nH,EAAgB9oH,EAAIW,OAAO,CAC/BooH,iBAAkB/oH,EAAI2B,KACtBqnH,WAAYhpH,EAAII,IAAIsoH,KAEhBO,EAA0BjpH,EAAIW,OAAO,CACzC2wH,gBAAiBtxH,EAAII,IAAI0oH,KAErBwB,EAAYtqH,EAAIW,OAAO,CAAE4pH,UAAWvqH,EAAII,IAAIJ,EAAI2B,QAChDK,EAAOhC,EAAIW,OAAO,CACtBgqH,gBAAiB3qH,EAAIa,IAAIb,EAAIgB,OAC7BuwH,qBAAsBvxH,EAAI2B,KAC1BipH,2BAA4B5qH,EAAIa,IAAIb,EAAI8E,MACxC+lH,wBAAyB7qH,EAAIa,IAAIb,EAAIgB,OACrC8pH,sCAAuC9qH,EAAIa,IACzC2mH,GAEFuD,kCAAmC/qH,EAAII,IAAIJ,EAAI2B,MAC/CupH,YAAalrH,EAAIa,IAAIb,EAAIgB,OACzBmqH,yBAA0BnrH,EAAIa,IAAIb,EAAIgB,OACtCoqH,kBAAmBprH,EAAIa,IAAIb,EAAI2B,MAC/B0pH,6BAA8BrrH,EAAIa,IAAIb,EAAIgB,OAC1CsqH,2BAA4BtrH,EAAIa,IAAIb,EAAIgB,OACxC0qH,iBAAkB1rH,EAAIa,IAAIb,EAAImB,OAC9BqwH,cAAexxH,EAAIa,IAAIb,EAAIgB,OAC3BywH,2BAA4BzxH,EAAI2B,KAChCkqH,oBAAqB7rH,EAAIa,IAAIb,EAAIgB,OACjC0wH,uBAAwB1xH,EAAI2B,KAC5BgwH,uBAAwB3xH,EAAI2B,KAC5BoqH,uCAAwC/rH,EAAIa,IAC1CwnH,GAEF2D,0BAA2BhsH,EAAIa,IAAIooH,GACnC2I,qBAAsB5xH,EAAIa,IAAIb,EAAI8E,MAClCwnH,wBAAyBtsH,EAAIa,IAAIb,EAAIgB,OACrCkuH,2BAA4BlvH,EAAI2B,KAChC4qH,iCAAkCvsH,EAAIa,IAAIb,EAAIgB,OAC9CyrH,qBAAsBzsH,EAAIa,IAAIypH,GAC9BoC,YAAa1sH,EAAIa,IAAIb,EAAIgB,OACzB2rH,iCAAkC3sH,EAAIa,IAAIb,EAAIgB,SAE1C6wH,EAAwB7xH,EAAIW,OAAO,CACvCmxH,oBAAqB9xH,EAAIa,IAAIb,EAAIK,aAE7BmI,EAAKxI,EAAIW,OAAO,CAAEoxH,aAAc/xH,EAAIa,IAAIb,EAAIgB,SAC5CyH,EAAMzI,EAAIW,OAAO,CACrBssB,YAAajtB,EAAIa,IAAIb,EAAI2B,MACzBqwH,WAAYhyH,EAAIa,IAAIb,EAAImnH,SAEpBt8G,EAAS7K,EAAIE,QAAQ,CAAEsI,GAAIA,EAAIC,IAAKA,IACpCwpH,EAAyBjyH,EAAIW,OAAO,CAAEwO,OAAQnP,EAAIa,IAAIgK,KACtDqnH,EAAoBlyH,EAAIW,OAAO,CACnCmhD,KAAM9hD,EAAIa,IAAIb,EAAImnH,OAClBl6F,YAAajtB,EAAI2B,OAEbwwH,EAAenyH,EAAIW,OAAO,CAC9B6J,IAAKxK,EAAIa,IAAIqxH,GACbE,iBAAkBpyH,EAAIa,IAAIb,EAAIK,aAE1BgyH,EAA6BryH,EAAIW,OAAO,CAC5C2xH,eAAgBtyH,EAAII,IAAI+xH,KAEpBI,EAAcvyH,EAAIE,QAAQ,CAC9BsI,GAAI6pH,EACJ5pH,IAAKypH,IAEDM,EAA+BxyH,EAAIW,OAAO,CAC9C8xH,YAAazyH,EAAIa,IAAI0xH,KAEjBG,EAAc1yH,EAAIW,OAAO,CAC7BgyH,QAAS3yH,EAAImB,MACbyxH,QAAS5yH,EAAImB,MACb0xH,QAAS7yH,EAAImB,MACb0zB,QAAS70B,EAAImB,MACb2xH,gBAAiB9yH,EAAImB,QAEjB4xH,EAAkB/yH,EAAIW,OAAO,CACjCmF,cAAe9F,EAAI2B,KACnBqwH,WAAYhyH,EAAImnH,QAEZ6L,EAAWhzH,EAAIW,OAAO,CAC1BsyH,iBAAkBjzH,EAAIa,IAAIkyH,KAEtBG,EAAgBlzH,EAAIE,QAAQ,CAChCsI,GAAIwqH,EACJvqH,IAAKypH,IAEDiB,EAAyCnzH,EAAIW,OAAO,CACxD8xH,YAAazyH,EAAIa,IAAIqyH,KAEjBE,EAAOpzH,EAAIW,OAAO,CACtB0yH,mCAAoCrzH,EAAIa,IAAIb,EAAIgB,OAChDsyH,2BAA4BtzH,EAAIa,IAAIb,EAAIgB,SAEpCkJ,EAAQlK,EAAIW,OAAO,CAAEkhB,QAAS7hB,EAAIa,IAAIb,EAAI2B,QAC1C4xH,EAAgBvzH,EAAIE,QAAQ,CAAEsI,GAAI4qH,EAAM3qH,IAAKyB,IAC7CspH,EAAuCxzH,EAAIW,OAAO,CACtD8xH,YAAazyH,EAAIa,IAAI0yH,KAEjBE,EAAgBzzH,EAAIE,QAAQ,CAChCsI,GAAIxI,EAAIW,OAAO,CAAC,GAChB8H,IAAKypH,IAEDwB,EAAoB1zH,EAAIW,OAAO,CACnC8xH,YAAazyH,EAAIa,IAAI4yH,KAEjBE,EAAuB3zH,EAAIW,OAAO,CACtCizH,iCAAkC5zH,EAAIa,IAAI2xH,GAC1CqB,iCAAkC7zH,EAAIa,IAAI6xH,GAC1CoB,2CAA4C9zH,EAAIa,IAC9CsyH,GAEFrtH,cAAe9F,EAAIa,IAAIb,EAAI2B,MAC3BoyH,yCAA0C/zH,EAAIa,IAC5C2yH,GAEFQ,qBAAsBh0H,EAAIa,IAAI6yH,GAC9BO,iBAAkBj0H,EAAIa,IAAI6xH,GAC1BwB,oBAAqBl0H,EAAIa,IAAI6xH,GAC7ByB,iBAAkBn0H,EAAIa,IAAI6xH,KAEtB0B,EAAoCp0H,EAAIW,OAAO,CACnD0zH,4BAA6Br0H,EAAIa,IAAI8yH,GACrCW,iCAAkCt0H,EAAIa,IAAIb,EAAI8E,MAC9CyvH,yBAA0Bv0H,EAAIa,IAAIb,EAAI8E,QAElC0vH,EAAuBx0H,EAAIW,OAAO,CACtC8zH,aAAcz0H,EAAIa,IAAIb,EAAIK,aAEtBq0H,EAAqB10H,EAAIW,OAAO,CACpCg0H,sBAAuB30H,EAAIa,IAAIb,EAAIgB,OACnC4zH,iCAAkC50H,EAAIgB,MACtC6zH,WAAY70H,EAAIgB,MAChB8zH,uBAAwB90H,EAAIa,IAAIb,EAAIgB,OACpC+zH,mCAAoC/0H,EAAIgB,QAEpCg0H,EAAah1H,EAAIW,OAAO,CAC5B84C,IAAKz5C,EAAIa,IAAI6zH,GACb/L,2BAA4B3oH,EAAIa,IAAIb,EAAI8E,QAEpCmwH,EAAwBj1H,EAAIW,OAAO,CACvCu0H,YAAal1H,EAAIa,IAAIm0H,KAEjBG,EAAyBn1H,EAAIW,OAAO,CAAEy0H,aAAcp1H,EAAIgB,QACxDq0H,EAAqBr1H,EAAIE,QAAQ,CACrCo1H,QAASt1H,EAAIQ,KACb+0H,SAAUv1H,EAAIQ,KACdg1H,QAASx1H,EAAIQ,OAETi1H,EAA+Bz1H,EAAIW,OAAO,CAC9C+0H,mBAAoB11H,EAAI0J,IACxBisH,YAAa31H,EAAII,IAAIJ,EAAIK,WACzBu1H,kBAAmB51H,EAAI0J,IACvBmsH,mBAAoB71H,EAAI0J,MAEpBosH,EAAyB91H,EAAIW,OAAO,CACxC4zB,OAAQ8gG,EACRU,YAAa/1H,EAAI0J,IACjB0xD,OAAQp7D,EAAI0J,IACZssH,SAAUP,EACVQ,2BAA4Bj2H,EAAI0J,IAChCwsH,YAAal2H,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAE7Bg0H,EAA0Bn2H,EAAIW,OAAO,CACzCy1H,mBAAoBp2H,EAAIa,IAAIb,EAAIq2H,SAChCC,oBAAqBt2H,EAAIa,IAAIb,EAAIgB,OACjCu1H,qBAAsBv2H,EAAIa,IAAIb,EAAIgB,OAClCqyH,mCAAoCrzH,EAAIa,IAAIb,EAAIgB,OAChDw1H,6BAA8Bx2H,EAAIa,IAAIb,EAAIgB,OAC1Cy1H,yBAA0Bz2H,EAAIa,IAAIb,EAAIgB,OACtC01H,gBAAiB12H,EAAIa,IAAIb,EAAIgB,SAEzB21H,EAAkB32H,EAAIW,OAAO,CAAE0D,KAAMrE,EAAIa,IAAImB,KAC7C40H,EAAuB52H,EAAIW,OAAO,CACtCk2H,6CAA8C72H,EAAIa,IAAIb,EAAIgB,OAC1D81H,UAAW92H,EAAIa,IAAIb,EAAImnH,OACvB4P,oDAAqD/2H,EAAIa,IAAIb,EAAIgB,SAE7Dg2H,EAAeh3H,EAAIW,OAAO,CAC9BsB,MAAOjC,EAAIa,IAAIb,EAAIK,WACnB6B,WAAYlC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAE5B80H,EAASj3H,EAAIW,OAAO,CACxBu2H,cAAel3H,EAAIgB,MACnBm2H,UAAWn3H,EAAIgB,MACf2C,QAAS3D,EAAIa,IAAIm2H,GACjBnO,eAAgB7oH,EAAIgB,QAEhBo2H,EAAOp3H,EAAIW,OAAO,CAAE02H,OAAQr3H,EAAIa,IAAIo2H,KACpCK,EAAQt3H,EAAIW,OAAO,CAAEqxH,WAAYhyH,EAAIa,IAAIb,EAAImnH,SAC7C78G,EAAWtK,EAAIE,QAAQ,CAAEsI,GAAI4uH,EAAM3uH,IAAK6uH,IACxCC,EAAwBv3H,EAAIW,OAAO,CAAEwO,OAAQnP,EAAIa,IAAIyJ,KACrDktH,EAASx3H,EAAIW,OAAO,CACxBkqH,wBAAyB7qH,EAAIgB,MAC7B8pH,sCAAuC9qH,EAAIa,IACzC2mH,GAEF0D,YAAalrH,EAAIgB,MACjBsqH,2BAA4BtrH,EAAIgB,MAChC0qH,iBAAkB1rH,EAAImB,MACtBqwH,cAAexxH,EAAIgB,MACnBy2H,mBAAoBz3H,EAAIa,IAAIb,EAAIgB,OAChCsrH,wBAAyBtsH,EAAIgB,MAC7BurH,iCAAkCvsH,EAAIa,IAAIb,EAAIgB,OAC9C0rH,YAAa1sH,EAAIgB,MACjB2rH,iCAAkC3sH,EAAIa,IAAIb,EAAIgB,SAE1C02H,EAA4B13H,EAAIW,OAAO,CAAEwyD,OAAQnzD,EAAIa,IAAI22H,KACzDG,EAAW33H,EAAIW,OAAO,CAAE0a,GAAIrb,EAAII,IAAIJ,EAAImC,QACxCy1H,GAAmB53H,EAAIW,OAAO,CAClC4oH,uBAAwBvpH,EAAIgB,MAC5BsmC,KAAMtnC,EAAIgB,MACV62H,UAAW73H,EAAII,IAAIu3H,KAEfG,GAAe93H,EAAIW,OAAO,CAC9BooH,iBAAkB/oH,EAAI2B,KACtBinH,cAAe5oH,EAAIgB,QAEf+2H,GAAmB/3H,EAAIW,OAAO,CAAEq3H,gBAAiBh4H,EAAI2B,OACrDs2H,GAAWj4H,EAAIE,QAAQ,CAC3Bg4H,cAAeJ,GACfK,OAAQJ,KAEJK,GAAkBp4H,EAAIW,OAAO,CACjC+Y,IAAK1Z,EAAIa,IAAI6zH,GACb2D,eAAgBr4H,EAAIa,IAAIb,EAAImnH,OAC5BmR,kBAAmBt4H,EAAIa,IAAI+2H,IAC3BW,SAAUv4H,EAAIa,IAAIo3H,MAEdvmC,GAAO1xF,EAAIW,OAAO,CACtB0zH,4BAA6Br0H,EAAIa,IAAI8yH,GACrC6E,eAAgBx4H,EAAII,IAAIg4H,IACxBK,eAAgBz4H,EAAIa,IAAIb,EAAIgB,OAC5B61H,6CAA8C72H,EAAIa,IAAIb,EAAIgB,OAC1D03H,0BAA2B14H,EAAIa,IAAIb,EAAI8E,MACvCwsH,gBAAiBtxH,EAAII,IAAI0oH,GACzBzkH,KAAMrE,EAAIa,IAAImB,GACd22H,+BAAgC34H,EAAIa,IAAIb,EAAI8E,MAC5CuuH,mCAAoCrzH,EAAIa,IAAIb,EAAIgB,OAChD43H,wDAAyD54H,EAAIa,IAAIb,EAAIgB,OACrEw1H,6BAA8Bx2H,EAAIa,IAAIb,EAAIgB,OAC1C81H,UAAW92H,EAAImnH,MACf0R,iCAAkC74H,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACtD40H,oDAAqD/2H,EAAIa,IAAIb,EAAIgB,OACjE83H,OAAQ94H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAMqzH,IACpC7hE,OAAQnzD,EAAIa,IAAI22H,GAChBuB,gCAAiC/4H,EAAIa,IAAIb,EAAIgB,SAEzCg4H,GAAeh5H,EAAIW,OAAO,CAC9By1H,mBAAoBp2H,EAAIi5H,QACxB3C,oBAAqBt2H,EAAIgB,MACzBu1H,qBAAsBv2H,EAAIa,IAAIb,EAAIgB,OAClCqyH,mCAAoCrzH,EAAIa,IAAIb,EAAIgB,OAChDw1H,6BAA8Bx2H,EAAIa,IAAIb,EAAIgB,OAC1Cy1H,yBAA0Bz2H,EAAIa,IAAIb,EAAIgB,OACtC01H,gBAAiB12H,EAAIa,IAAIb,EAAIgB,SAEzBk4H,GAAmBl5H,EAAIW,OAAO,CAClC6mG,KAAMxnG,EAAIa,IAAI6wF,IACdynC,QAASn5H,EAAIa,IAAIm4H,MAEbI,GAAuCp5H,EAAIW,OAAO,CACtD07C,OAAQr8C,EAAIa,IAAIb,EAAIgB,OACpBs7C,MAAOt8C,EAAIa,IAAIb,EAAImB,SAEfk4H,GAAgCr5H,EAAIW,OAAO,CAC/C07C,OAAQr8C,EAAIa,IAAIb,EAAImB,OACpBm7C,MAAOt8C,EAAIa,IAAIb,EAAImB,SAEfm4H,GAAct5H,EAAIW,OAAO,CAC7B44H,cAAev5H,EAAIa,IAAIm0H,GACvBwE,eAAgBx5H,EAAIa,IAAIb,EAAIK,aAExBo5H,GAAiCz5H,EAAIW,OAAO,CAChDuoH,aAAclpH,EAAII,IAAIk5H,MAElBI,GAA8B15H,EAAIW,OAAO,CAC7C07C,OAAQr8C,EAAIa,IAAIb,EAAIgB,OACpBs7C,MAAOt8C,EAAIa,IAAIb,EAAImB,SAEfw4H,GAA+B35H,EAAIW,OAAO,CAC9Ci5H,mBAAoB55H,EAAII,IAAIg4H,MAExByB,GAAuB75H,EAAIW,OAAO,CACtCuB,WAAYlC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAChC0mH,eAAgB7oH,EAAIgB,QAEhB84H,GAAoB95H,EAAIW,OAAO,CACnCo5H,4BAA6B/5H,EAAIgB,MACjCg5H,4BAA6Bh6H,EAAIgB,QAE7Bi5H,GAAQj6H,EAAIW,OAAO,CACvBu5H,oBAAqBl6H,EAAIa,IAAIi5H,IAC7BK,gBAAiBn6H,EAAIa,IAAIo2H,GACzBjF,WAAYhyH,EAAImnH,QAEZx8G,GAAW3K,EAAIE,QAAQ,CAAEsI,GAAI4uH,EAAM3uH,IAAKwxH,KACxCG,GAAwBp6H,EAAIW,OAAO,CAAEwO,OAAQnP,EAAIa,IAAI8J,MACrD0vH,GAAcr6H,EAAIW,OAAO,CAC7B2wH,gBAAiBtxH,EAAII,IAAI0oH,GACzB31D,OAAQnzD,EAAIa,IAAI22H,GAChBuB,gCAAiC/4H,EAAIa,IAAIb,EAAIgB,SAEzCs5H,GAA4Bt6H,EAAIW,OAAO,CAC3CyqH,kBAAmBprH,EAAIa,IAAIb,EAAI2B,MAC/B44H,MAAOv6H,EAAI2B,OAEP64H,GAA6Bx6H,EAAIW,OAAO,CAC5C85H,+BAAgCz6H,EAAIgB,MACpC05H,+BAAgC16H,EAAIgB,QAEtC,OAAOhB,EAAI2H,QAAQ,CACjBgzH,iBAAkB36H,EAAI6H,KACpB,CAACgqH,GACD,CAACI,GACD,IAEF2I,cAAe56H,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACgzH,GAAuB,IAClEkH,6BAA8B76H,EAAI6H,KAChC,CAAC7H,EAAIW,OAAO,CAAC,IACb,CAACyzH,GACD,CAAC,UAEH0G,gBAAiB96H,EAAI6H,KACnB,CAAC2sH,GACD,CAACS,GACD,CAAC,UAEH8F,iBAAkB/6H,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACw0H,GAAyB,IACvE6F,oBAAqBh7H,EAAI6H,KACvB,CAAC7H,EAAIW,OAAO,CAAC,IACb,CAACm1H,GACD,IAEFmF,kBAAmBj7H,EAAI6H,KACrB,CAAC7H,EAAIW,OAAO,CAAC,IACb,CAACw1H,GACD,CAAC,UAEH+E,SAAUl7H,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACg2H,GAAkB,CAAC,UACzDwE,cAAen7H,EAAI6H,KACjB,CAAC7H,EAAIW,OAAO,CAAC,IACb,CAACi2H,GACD,CAAC,UAEHwE,gBAAiBp7H,EAAI6H,KACnB,CAAC7H,EAAIW,OAAO,CAAC,IACb,CAAC42H,GACD,CAAC,UAEH8D,oBAAqBr7H,EAAI6H,KACvB,CAAC7H,EAAIW,OAAO,CAAC,IACb,CAAC+2H,GACD,CAAC,UAEH4D,UAAWt7H,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACu4H,IAAmB,CAAC,UAC3DqC,iCAAkCv7H,EAAI6H,KACpC,CAACuxH,IACD,CAACnQ,GACD,CAAC,UAEHuS,yBAA0Bx7H,EAAI6H,KAC5B,CAACwxH,IACD,CAACI,IACD,CAAC,UAEHgC,wBAAyBz7H,EAAI6H,KAC3B,CAAC6xH,IACD,CAACC,IACD,CAAC,UAEH+B,gBAAiB17H,EAAI6H,KACnB,CAACgyH,IACD,CAACO,IACD,IAEFuB,uBAAwB37H,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACy2H,GAAO,IAC3D1iH,KAAM1U,EAAI6H,KAAK,CAACwyH,IAAc,CAACr6H,EAAIW,OAAO,CAAC,IAAK,IAChDi7H,qBAAsB57H,EAAI6H,KACxB,CAACyyH,IACD,CAACE,IACD,IAEFqB,yBAA0B77H,EAAI6H,KAC5B,CAAC7H,EAAIW,OAAO,CAAC,IACb,CAAC6xH,GACD,KAEF,E,0SC5ZG,MAAMsJ,EAAWA,CAAO7yH,EAAoBH,IAAmBu1D,OAAA,6BACpE,OAAAt1D,EAAMC,OAAyB,CAC7BC,aACAnJ,WAAYi8H,EACZjzH,Y,ICPShJ,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMi8H,EAASh8H,EAAIW,OAAO,CACxBs7H,+BAAgCj8H,EAAIa,IAAIb,EAAIgB,OAC5Ck7H,6BAA8Bl8H,EAAIa,IAAIb,EAAIgB,OAC1Cm7H,wBAAyBn8H,EAAIa,IAAIb,EAAI8E,QAEjCs3H,EAAUp8H,EAAIW,OAAO,CACzButH,kBAAmBluH,EAAII,IAAIJ,EAAImC,MAC/BgsH,eAAgBnuH,EAAII,IAAIJ,EAAImC,MAC5BisH,eAAgBpuH,EAAII,IAAIJ,EAAImC,MAC5BksH,iBAAkBruH,EAAII,IAAIJ,EAAImC,MAC9BmsH,qBAAsBtuH,EAAII,IAAIJ,EAAImC,MAClCosH,gBAAiBvuH,EAAII,IAAIJ,EAAImC,QAEzBk6H,EAAWr8H,EAAIW,OAAO,CAAE27H,SAAUt8H,EAAII,IAAIg8H,KAC1CG,EAAqBv8H,EAAIW,OAAO,CACpC67H,cAAex8H,EAAIa,IAAIw7H,GACvBI,2BAA4Bz8H,EAAIa,IAAIb,EAAIgB,OACxC07H,4BAA6B18H,EAAIa,IAAIb,EAAIgB,SAErC27H,EAAQ38H,EAAIE,QAAQ,CACxB08H,uBAAwB58H,EAAIQ,KAC5Bq8H,qBAAsB78H,EAAIQ,KAC1Bs8H,yBAA0B98H,EAAIQ,KAC9Bu8H,uBAAwB/8H,EAAIQ,KAC5Bw8H,wBAAyBh9H,EAAIQ,KAC7By8H,WAAYj9H,EAAIQ,KAChB08H,uBAAwBl9H,EAAIQ,OAExB28H,EAA+Bn9H,EAAIW,OAAO,CAC9Cy8H,MAAOp9H,EAAIa,IAAI87H,GACfU,sBAAuBr9H,EAAIa,IAAIb,EAAIK,WACnCi9H,mBAAoBt9H,EAAIa,IAAIb,EAAIK,WAChCk9H,sBAAuBv9H,EAAIa,IAAIb,EAAI2B,MACnC67H,mBAAoBx9H,EAAIa,IAAIb,EAAI2B,QAE5B87H,EAAez9H,EAAIE,QAAQ,CAC/Bw9H,4BAA6B19H,EAAIW,OAAO,CAAC,GACzCw8H,6BAA8BA,IAE1BQ,EAAwB39H,EAAIW,OAAO,CACvC0a,GAAIrb,EAAIgB,MACRwP,KAAMxQ,EAAI2B,KACVsrB,YAAajtB,EAAIa,IAAIb,EAAI2B,MACzBi8H,cAAe59H,EAAIa,IAAI48H,KAEnBI,EAA0B79H,EAAIW,OAAO,CACzCm9H,mCAAoC99H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIgB,MAAOhB,EAAIq2H,UACrE0H,kCAAmC/9H,EAAIgB,MACvCg9H,iCAAkCh+H,EAAIgB,MACtCi9H,qCAAsCj+H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIgB,MAAOhB,EAAIgB,QACvEk9H,qDAAsDl+H,EAAIgB,MAC1Dm9H,wBAAyBn+H,EAAIgB,MAC7Bo9H,iBAAkBp+H,EAAIgB,MACtBq9H,+BAAgCr+H,EAAIgB,MACpCs9H,6BAA8Bt+H,EAAIgB,MAClCu9H,sBAAuBv+H,EAAIgB,MAC3Bw9H,mDAAoDx+H,EAAIgB,MACxDy9H,iCAAkCz+H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIgB,MAAOhB,EAAIgB,QACnE09H,yBAA0B1+H,EAAIgB,MAC9B29H,+BAAgC3+H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIgB,MAAOhB,EAAIq2H,UACjEuI,kBAAmB5+H,EAAIgB,QAEnB69H,EAAqB7+H,EAAIW,OAAO,CACpCm+H,qBAAsB9+H,EAAIa,IAAIb,EAAImnH,OAClC4X,6BAA8B/+H,EAAIa,IAAIb,EAAIgB,SAEtCg+H,EAAmBh/H,EAAIW,OAAO,CAClCs+H,mBAAoBj/H,EAAIa,IAAIu7H,GAC5B8C,mBAAoBl/H,EAAIa,IAAIu7H,GAC5B+C,0BAA2Bn/H,EAAIa,IAAIb,EAAI8E,QAEnCs6H,EAAoBp/H,EAAIW,OAAO,CACnC0+H,eAAgBr/H,EAAIa,IAAIb,EAAI2B,MAC5B66H,cAAex8H,EAAIa,IAAIw7H,KAEnBiD,EAAiBt/H,EAAIW,OAAO,CAChC4zB,OAAQv0B,EAAIa,IACVb,EAAIE,QAAQ,CACVq/H,QAASv/H,EAAIW,OAAO,CAAC,GACrB6+H,QAASx/H,EAAIW,OAAO,CAAC,GACrB8+H,gBAAiBz/H,EAAIW,OAAO,CAAC,GAC7B++H,aAAc1/H,EAAIW,OAAO,CAAEu9D,QAASl+D,EAAIa,IAAIu7H,QAGhDiD,eAAgBr/H,EAAIa,IAAIb,EAAI2B,QAExBg+H,EAAa3/H,EAAIW,OAAO,CAAE0a,GAAIrb,EAAIgB,QAClC4+H,EAAiB5/H,EAAIW,OAAO,CAChC8tH,gBAAiBzuH,EAAIa,IAAIu7H,GACzByD,iBAAkB7/H,EAAIa,IAAIu7H,GAC1Bv4H,OAAQ7D,EAAIa,IACVb,EAAIE,QAAQ,CACV4/H,gCAAiCH,EACjCI,oBAAqB//H,EAAIW,OAAO,CAAC,QAIjCq/H,EAAwBhgI,EAAIW,OAAO,CACvC67H,cAAex8H,EAAIa,IAAIw7H,KAEnB4D,EAAqBjgI,EAAIW,OAAO,CACpC0+H,eAAgBr/H,EAAIa,IAAIb,EAAI2B,MAC5Bs9H,mBAAoBj/H,EAAIa,IAAIu7H,GAC5B8C,mBAAoBl/H,EAAIa,IAAIu7H,KAExB8D,EAAsBlgI,EAAIW,OAAO,CACrCsS,MAAOjT,EAAIa,IACTb,EAAIE,QAAQ,CACV8+H,iBAAkBA,EAClBI,kBAAmBA,EACnBE,eAAgBA,EAChBM,eAAgBA,EAChBI,sBAAuBA,EACvBC,mBAAoBA,KAGxBrB,kBAAmB5+H,EAAIa,IAAIb,EAAIgB,SAE3Bm/H,EAAiBngI,EAAIW,OAAO,CAChCwvB,QAASnwB,EAAII,IAAI8/H,KAEbvI,EAAW33H,EAAIW,OAAO,CAAE0a,GAAIrb,EAAII,IAAIJ,EAAImC,QACxCi+H,EAAYpgI,EAAIW,OAAO,CAAEk3H,UAAW73H,EAAII,IAAIu3H,KAC5C0I,EAAmBrgI,EAAIW,OAAO,CAClCk3H,UAAW73H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIgB,MAAOo/H,MAEpCE,EAAuBtgI,EAAIW,OAAO,CACtC4/H,YAAavgI,EAAII,IAAIJ,EAAImnH,SAErBqZ,EAA0BxgI,EAAIW,OAAO,CACzCsqH,+BAAgCjrH,EAAIa,IAAIb,EAAIgB,OAC5C2qH,iCAAkC3rH,EAAIa,IAAIb,EAAIgB,OAC9CmrH,wCAAyCnsH,EAAIa,IAAIb,EAAIgB,OACrDy/H,uBAAwBzgI,EAAIa,IAAIb,EAAIgB,SAEhC0/H,EAA0B1gI,EAAIW,OAAO,CACzCggI,kBAAmB3gI,EAAIa,IAAIw/H,GAC3B5V,2BAA4BzqH,EAAIa,IAAIb,EAAIgB,OACxC0pH,oCAAqC1qH,EAAIa,IAAIb,EAAIgB,OACjD4/H,2BAA4B5gI,EAAIa,IAAIb,EAAIgB,OACxC6/H,qCAAsC7gI,EAAIa,IAAIb,EAAI8E,MAClDg8H,2BAA4B9gI,EAAIa,IAAIy/H,GACpCnV,yBAA0BnrH,EAAIa,IAAIb,EAAIgB,OACtC+/H,6BAA8B/gI,EAAIa,IAAIb,EAAIgB,OAC1CuqH,8BAA+BvrH,EAAIa,IAAIb,EAAIgB,OAC3CwqH,8CAA+CxrH,EAAIa,IAAIb,EAAIgB,OAC3DggI,gBAAiBhhI,EAAIa,IAAIb,EAAIgB,OAC7BigI,iCAAkCjhI,EAAIa,IAAIb,EAAImB,OAC9CyqH,yCAA0C5rH,EAAIa,IAAIb,EAAIgB,OACtDkgI,sBAAuBlhI,EAAIa,IAAIb,EAAIgB,OACnC6qH,oBAAqB7rH,EAAIa,IAAIb,EAAIgB,OACjCmgI,qCAAsCnhI,EAAIa,IAAIb,EAAIgB,OAClDirH,yBAA0BjsH,EAAIa,IAAIb,EAAIgB,OACtCogI,6BAA8BphI,EAAIa,IAAIy/H,GACtCe,0BAA2BrhI,EAAIa,IAAI2/H,GACnCc,6BAA8BthI,EAAIa,IAAIb,EAAI8E,MAC1Cy8H,oCAAqCvhI,EAAIa,IAAIb,EAAIgB,SAE7CwgI,EAAcxhI,EAAIW,OAAO,CAC7B8gI,+BAAgCzhI,EAAIa,IAAIb,EAAIgB,OAC5C0gI,yBAA0B1hI,EAAIgB,MAC9B2gI,sBAAuB3hI,EAAIa,IAAIb,EAAIgB,OACnC4gI,+BAAgC5hI,EAAIa,IAAIb,EAAIgB,OAC5C6gI,2BAA4B7hI,EAAIgB,MAChCs+B,MAAOt/B,EAAIgB,MACX8gI,kBAAmB9hI,EAAII,IAAIu/H,KAEvBoC,EAAiB/hI,EAAIW,OAAO,CAChCqhI,uBAAwBhiI,EAAIgB,MAC5BihI,sBAAuBjiI,EAAIgB,MAC3B0sH,YAAa1tH,EAAIa,IAAIb,EAAIgB,OACzBkhI,eAAgBliI,EAAIa,IAAIu7H,KAEpBrJ,EAAkB/yH,EAAIW,OAAO,CACjCmF,cAAe9F,EAAI2B,KACnBqwH,WAAYhyH,EAAImnH,QAEZ3D,EAAaxjH,EAAIW,OAAO,CAAEuB,WAAYlC,EAAII,IAAIJ,EAAImC,QAClDL,EAAU9B,EAAIW,OAAO,CACzBsB,MAAOjC,EAAIa,IAAIb,EAAIK,WACnB6B,WAAYlC,EAAIa,IAAI2iH,KAEhB2e,EAAUniI,EAAIW,OAAO,CAAE0+H,eAAgBr/H,EAAIa,IAAIb,EAAI2B,QACnDy8E,EAASp+E,EAAIW,OAAO,CAAEyhI,IAAKpiI,EAAIa,IAAIb,EAAIgB,SACvCqhI,EAAmBriI,EAAIW,OAAO,CAClC2hI,aAActiI,EAAIa,IAAIshI,GACtBI,eAAgBviI,EAAIa,IAAIshI,GACxB3iF,OAAQx/C,EAAIa,IAAIu9E,KAEZokD,EAAYxiI,EAAIW,OAAO,CAC3BsO,MAAOjP,EAAIa,IAAIb,EAAImnH,OACnBxjH,QAAS3D,EAAIa,IAAIiB,GACjB2gI,kBAAmBziI,EAAIa,IAAIwhI,GAC3BzD,kBAAmB5+H,EAAIa,IAAIb,EAAIgB,SAE3B0hI,EAA+B1iI,EAAIW,OAAO,CAC9CgiI,UAAW3iI,EAAIa,IAAI2hI,KAEfvU,EAAajuH,EAAIW,OAAO,CAC5ButH,kBAAmBluH,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACvCgsH,eAAgBnuH,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACpCisH,eAAgBpuH,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACpCksH,iBAAkBruH,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACtCmsH,qBAAsBtuH,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1CosH,gBAAiBvuH,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAEjCygI,EAAyC5iI,EAAIW,OAAO,CACxDuhI,eAAgBliI,EAAIa,IAAIotH,KAEpB4U,EAAkB7iI,EAAIE,QAAQ,CAClC4iI,yBAA0BJ,EAC1BK,cAAeL,EACfM,wBAAyBJ,IAErBK,EAASjjI,EAAIW,OAAO,CACxBuiI,KAAMljI,EAAImnH,MACVgc,uBAAwBnjI,EAAIgB,MAC5BoiI,aAAcpjI,EAAIgB,QAEdqiI,EAAarjI,EAAIW,OAAO,CAAE2iI,aAActjI,EAAIa,IAAIb,EAAIgB,SACpDuiI,EAAQvjI,EAAIW,OAAO,CACvB6iI,GAAIxjI,EAAIgB,MACRyiI,IAAKzjI,EAAIgB,MACT4rD,MAAO5sD,EAAIgB,MACX49H,kBAAmB5+H,EAAIgB,QAEnB0iI,EAA6B1jI,EAAIW,OAAO,CAC5C+0H,mBAAoB11H,EAAIa,IAAIb,EAAIgB,OAChC2iI,sBAAuB3jI,EAAIa,IAAIb,EAAIgB,OACnCyV,aAAczW,EAAII,IAAIJ,EAAIK,WAC1BujI,sBAAuB5jI,EAAIa,IAAIb,EAAIgB,OACnC6iI,eAAgB7jI,EAAIa,IAAIb,EAAImnH,OAC5B2c,kBAAmB9jI,EAAIa,IAAIb,EAAIgB,OAC/B40H,kBAAmB51H,EAAIa,IAAIb,EAAIgB,OAC/B60H,mBAAoB71H,EAAIa,IAAIb,EAAIgB,SAE5B+iI,EAA8B/jI,EAAIW,OAAO,CAC7CqjI,4BAA6BhkI,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIgB,MAAO27H,MAEtDsH,EAAwBjkI,EAAIW,OAAO,CACvC8V,aAAczW,EAAII,IAAIJ,EAAIK,aAEtByiI,EAA2B9iI,EAAIW,OAAO,CAC1CujI,cAAelkI,EAAImnH,MACnBgd,aAAcnkI,EAAIa,IAAIb,EAAIK,WAC1B+jI,cAAepkI,EAAIa,IAAI2iH,GACvBl8E,KAAMtnC,EAAIa,IAAIb,EAAIgB,OAClB6zH,WAAY70H,EAAIgB,QAEZqjI,EAAsBrkI,EAAIW,OAAO,CACrC2jI,iBAAkBtkI,EAAII,IAAIJ,EAAImC,MAC9BoiI,kBAAmBvkI,EAAII,IAAIJ,EAAII,IAAIJ,EAAImC,OACvCqiI,kBAAmBxkI,EAAIa,IAAIb,EAAIK,aAE3BokI,EAA+BzkI,EAAIW,OAAO,CAC9C+jI,kBAAmB1kI,EAAII,IAAIJ,EAAImC,MAC/BrB,KAAMd,EAAIa,IAAIb,EAAImnH,OAClBwd,YAAa3kI,EAAIa,IAAIb,EAAIK,WACzBukI,sBAAuB5kI,EAAIa,IAAIwjI,GAC/BQ,qBAAsB7kI,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAEtC2iI,EAA0B9kI,EAAIW,OAAO,CACzC8V,aAAczW,EAAII,IAAIJ,EAAIK,WAC1B0kI,gBAAiB/kI,EAAII,IAAIJ,EAAIK,aAEzB0iI,EAAgB/iI,EAAIW,OAAO,CAC/BwjI,aAAcnkI,EAAIa,IAAIb,EAAIK,WAC1B+jI,cAAepkI,EAAIa,IAAI2iH,GACvBl8E,KAAMtnC,EAAIa,IAAIb,EAAIgB,OAClB6zH,WAAY70H,EAAIa,IAAIb,EAAIgB,SAEpBgiI,EAA0BhjI,EAAIW,OAAO,CACzCqkI,WAAYhlI,EAAIa,IAAIotH,KAEhBgX,EAAoBjlI,EAAIW,OAAO,CACnCq5F,IAAKh6F,EAAIa,IAAIb,EAAI2B,MACjB0P,KAAMrR,EAAIa,IAAIb,EAAI2B,MAClB6O,KAAMxQ,EAAIa,IAAIb,EAAI2B,MAClBsrB,YAAajtB,EAAIa,IAAIb,EAAI2B,QAErBujI,EAAsCllI,EAAIW,OAAO,CACrDwkI,YAAanlI,EAAIgB,MACjBsjG,QAAStkG,EAAII,IAAIJ,EAAImC,QAEjBijI,GAAyBplI,EAAIW,OAAO,CACxCqqH,aAAchrH,EAAIa,IAAIb,EAAI2B,MAC1B0jI,aAAcrlI,EAAIa,IAAIb,EAAIgB,OAC1BorH,WAAYpsH,EAAIa,IAAIb,EAAI2B,MACxB0qH,WAAYrsH,EAAIa,IAAIb,EAAI2B,QAEpB2jI,GAAStlI,EAAIW,OAAO,CAAE4kI,YAAavlI,EAAI2B,OACvC6jI,GAASxlI,EAAIE,QAAQ,CACzBulI,8BAA+B/E,EAC/BgF,gCAAiC/H,EACjC+F,2BAA4BA,EAC5BiC,mCAAoC3lI,EAAIgB,MACxC+iI,4BAA6BA,EAC7B6B,wBAAyB5lI,EAAIW,OAAO,CAAC,GACrCsjI,sBAAuBA,EACvBnB,yBAA0BA,EAC1B2B,6BAA8BA,EAC9BK,wBAAyBA,EACzB/B,cAAeA,EACfC,wBAAyBA,EACzB6C,YAAa7lI,EAAIW,OAAO,CAAC,GACzBskI,kBAAmBA,EACnBC,oCAAqCA,EACrCE,uBAAwBA,GACxBE,OAAQA,KAEJQ,GAAW9lI,EAAIW,OAAO,CAC1Bq5F,IAAKh6F,EAAI2B,KACTiW,MAAO5X,EAAI2B,KACX4kC,OAAQvmC,EAAIa,IAAI2kI,IAChBO,QAAS/lI,EAAI2B,OAETqkI,GAAoBhmI,EAAIW,OAAO,CACnCslI,mCAAoCjmI,EAAIgB,QAEpCklI,GAAelmI,EAAIW,OAAO,CAC9B0a,GAAIrb,EAAIa,IAAI8+H,GACZwG,uBAAwBnmI,EAAIa,IAAIb,EAAI2B,MACpCy7H,MAAOp9H,EAAIa,IAAI87H,GACfp2F,OAAQvmC,EAAIgB,MACZolI,eAAgBpmI,EAAIa,IAAIkyH,GACxBsT,iBAAkBrmI,EAAIa,IAAIgiI,GAC1ByD,QAAStmI,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAMshI,IACrCsD,gCAAiCvmI,EAAIa,IAAIwiI,GACzCmD,mBAAoBxmI,EAAIgB,MACxBylI,yBAA0BzmI,EAAIgB,MAC9B0lI,mCAAoC1mI,EAAIa,IAAIb,EAAIgB,OAChD2lI,oCAAqC3mI,EAAIgB,MACzCuqH,8BAA+BvrH,EAAIgB,MACnCggI,gBAAiBhhI,EAAIgB,MACrB4lI,aAAc5mI,EAAIa,IAAI0iI,GACtB3X,yCAA0C5rH,EAAIgB,MAC9C6lI,0BAA2B7mI,EAAIgB,MAC/B8lI,SAAU9mI,EAAIa,IAAIilI,IAClBiB,SAAU/mI,EAAIa,IAAI82H,GAClBqP,qBAAsBhnI,EAAIa,IAAImlI,IAC9BiB,oCAAqCjnI,EAAIa,IAAIwiI,GAC7C6D,wBAAyBlnI,EAAI8E,KAC7BqiI,2BAA4BnnI,EAAIgB,QAE5BomI,GAAQpnI,EAAIW,OAAO,CAAE2mC,KAAMtnC,EAAIgB,MAAO6zH,WAAY70H,EAAIgB,QACtDqmI,GAASrnI,EAAIW,OAAO,CACxBwkI,YAAanlI,EAAIgB,MACjB62H,UAAW73H,EAAII,IAAIu3H,KAEf2P,GAAmBtnI,EAAIW,OAAO,CAClC2C,WAAYtD,EAAIa,IAAIiB,GACpBylI,uBAAwBvnI,EAAImB,QAExBqmI,GAA0BxnI,EAAIW,OAAO,CACzC8mI,0CAA2CznI,EAAI8E,OAE3C4iI,GAAwB1nI,EAAIW,OAAO,CACvCgnI,kCAAmC3nI,EAAImB,QAEnCymI,GAAuB5nI,EAAIW,OAAO,CACtCknI,2BAA4B7nI,EAAIgB,QAE5B8mI,GAAY9nI,EAAIE,QAAQ,CAC5BsnI,wBAAyBA,GACzBO,eAAgB/nI,EAAIW,OAAO,CAAC,GAC5BqnI,gBAAiBhoI,EAAIW,OAAO,CAAC,GAC7B+mI,sBAAuBA,GACvBE,qBAAsBA,KAElBK,GAAYjoI,EAAIW,OAAO,CAAEunI,UAAWloI,EAAIa,IAAIinI,MAC5CK,GAAenoI,EAAIW,OAAO,CAC9BuiI,KAAMljI,EAAImnH,MACV2f,SAAU9mI,EAAIa,IAAI8+H,KAEdyI,GAA2BpoI,EAAIW,OAAO,CAC1C0nI,2BAA4BroI,EAAIgB,MAChCsC,WAAYtD,EAAIa,IAAIiB,KAEhBwmI,GAAoBtoI,EAAIW,OAAO,CACnC2oH,WAAYtpH,EAAIa,IAAIb,EAAIK,WACxBinC,KAAMtnC,EAAIgB,QAENunI,GAAKvoI,EAAIE,QAAQ,CACrBooI,kBAAmBA,GACnB3Q,SAAU33H,EAAIW,OAAO,CAAC,KAElB6nI,GAAiBxoI,EAAIW,OAAO,CAAE8nI,GAAIzoI,EAAIa,IAAI0nI,MAC1CG,GAA0B1oI,EAAIW,OAAO,CACzCgoI,sBAAuB3oI,EAAIa,IAAIy/H,GAC/B7L,aAAcz0H,EAAIa,IAAIb,EAAIK,aAEtBuoI,GAAuB5oI,EAAIW,OAAO,CACtCkoI,mBAAoB7oI,EAAIa,IAAIy/H,GAC5B7L,aAAcz0H,EAAIa,IAAIb,EAAIK,aAEtByoI,GAAgB9oI,EAAIW,OAAO,CAAEooI,oBAAqB/oI,EAAImB,QACtD6nI,GAAShpI,EAAIW,OAAO,CAAEyhI,IAAKpiI,EAAIgB,QAC/BioI,GAAWjpI,EAAIW,OAAO,CAC1B2C,WAAYtD,EAAIa,IAAIiB,GACpB8B,OAAQ5D,EAAIa,IAAImoI,MAEZE,GAAYlpI,EAAIE,QAAQ,CAC5BknI,MAAOA,GACPC,OAAQA,GACRC,iBAAkBA,GAClBW,UAAWA,GACXE,aAAcA,GACdgB,YAAanpI,EAAIW,OAAO,CAAC,GACzByoI,aAActD,GACdsC,yBAA0BA,GAC1BiB,qBAAsBb,GACtBE,wBAAyBA,GACzBE,qBAAsBA,GACtBE,cAAeA,GACfG,SAAUA,KAENK,GAAwBtpI,EAAIW,OAAO,CACvC4oI,QAASvpI,EAAIa,IAAIqoI,IACjB/lC,UAAWnjG,EAAIgB,QAEXwoI,GAAmBxpI,EAAIW,OAAO,CAClC8N,UAAWzO,EAAIa,IAAIb,EAAIK,WACvBopI,gBAAiBzpI,EAAII,IAAIJ,EAAImnH,SAEzBuiB,GAAgB1pI,EAAIE,QAAQ,CAChCypI,qBAAsB3pI,EAAIgB,MAC1B4oI,8BAA+B5pI,EAAIgB,QAE/B6oI,GAA6B7pI,EAAIW,OAAO,CAC5CmpI,kCAAmC9pI,EAAIgB,MACvC6zH,WAAY70H,EAAIgB,MAChB+oI,uBAAwB/pI,EAAIa,IAAIiB,GAChCkoI,wCAAyChqI,EAAIa,IAAIb,EAAIgB,SAEjDipI,GAASjqI,EAAIW,OAAO,CACxB0a,GAAIrb,EAAIa,IAAI82H,GACZuS,+BAAgClqI,EAAIa,IAAIb,EAAIgB,OAC5Cu/H,YAAavgI,EAAII,IAAIopI,IACrBW,wBAAyBnqI,EAAIgB,MAC7BopI,wBAAyBpqI,EAAIgB,MAC7BqpI,0BAA2BrqI,EAAIgB,MAC/BspI,qBAAsBtqI,EAAIa,IAAIb,EAAIgB,OAClCupI,oBAAqBvqI,EAAIa,IAAIb,EAAI8E,MACjC0lI,8BAA+BxqI,EAAIgB,MACnCypI,eAAgBzqI,EAAIa,IAAI6oI,IACxBgB,mCAAoC1qI,EAAIgB,MACxCyoH,uBAAwBzpH,EAAIa,IAAIb,EAAIgB,OACpC2pI,8BAA+B3qI,EAAII,IAAIypI,IACvChS,UAAW73H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIgB,MAAOo/H,IACxCwK,gBAAiB5qI,EAAIgB,QA0BjB6pI,IAxBa7qI,EAAIW,OAAO,CAC5BgW,iBAAkB3W,EAAIa,IAAIb,EAAIK,WAC9ByqI,OAAQ9qI,EAAIa,IAAIm7H,GAChB+O,qBAAsB/qI,EAAIa,IAAI07H,GAC9ByO,+BAAgChrI,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIgB,MAAO28H,IAC7DsN,QAASjrI,EAAIa,IAAIg9H,GACjBqN,oBAAqBlrI,EAAIa,IAAIg+H,GAC7BsM,gBAAiBnrI,EAAIa,IAAIs/H,GACzBr/H,KAAMd,EAAImnH,MACVikB,WAAYprI,EAAIa,IAAI6/H,GACpB2K,gCAAiCrrI,EAAIa,IAAIb,EAAI8E,MAC7CwmI,iBAAkBtrI,EAAIa,IAAIu7H,GAC1BmP,8BAA+BvrI,EAAI2B,KACnC6pI,oBAAqBxrI,EAAIa,IAAI2gI,GAC7BiK,gBAAiBzrI,EAAIa,IAAIkhI,GACzBlU,iBAAkB7tH,EAAIa,IAAIb,EAAIK,WAC9BqW,mBAAoB1W,EAAIa,IAAIb,EAAIK,WAChCqrI,UAAW1rI,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIgB,MAAOklI,KACxCyF,mBAAoB3rI,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM2nI,KAChDsC,aAAc5rI,EAAIa,IAAIokI,GACtB4G,QAAS7rI,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAMsoI,KACrC/H,eAAgBliI,EAAIa,IAAIu7H,GACxB0P,0BAA2B9rI,EAAIgB,QAEdhB,EAAIW,OAAO,CAAEorI,WAAY/rI,EAAII,IAAIJ,EAAIK,cAClD2rI,GAAchsI,EAAIW,OAAO,CAC7BsrI,mBAAoBjsI,EAAIa,IAAIgqI,IAC5BqB,sBAAuBlsI,EAAIa,IAAIb,EAAIK,WACnCuoH,cAAe5oH,EAAIa,IAAIb,EAAIgB,SAEvBs4H,GAAct5H,EAAIE,QAAQ,CAC9B8rI,YAAaA,GACb7T,OAAQn4H,EAAIW,OAAO,CAAC,KAEhBwrI,GAAYnsI,EAAIW,OAAO,CAAEyrI,WAAYpsI,EAAII,IAAIu3H,KAC7C0U,GAAersI,EAAIW,OAAO,CAC9B2oH,WAAYtpH,EAAIa,IAAIb,EAAIK,WACxBkpH,uBAAwBvpH,EAAIa,IAAIb,EAAIgB,OACpCsrI,YAAatsI,EAAIa,IAAIy4H,IACrB9P,UAAWxpH,EAAIa,IAAIb,EAAIgB,OACvB62H,UAAW73H,EAAIa,IAAIsrI,IACnBI,UAAWvsI,EAAIa,IAAI82H,KAEf6U,GAAgBxsI,EAAIW,OAAO,CAC/B63H,eAAgBx4H,EAAII,IAAIisI,MAEpBI,GAA0BzsI,EAAIW,OAAO,CACzC63H,eAAgBx4H,EAAIa,IAAI2rI,MAEpBE,GAAa1sI,EAAIW,OAAO,CAC5B0a,GAAIrb,EAAIa,IAAI82H,GACZpjG,OAAQv0B,EAAImnH,QAERwlB,GAAqB3sI,EAAIW,OAAO,CACpCisI,aAAc5sI,EAAII,IAAIssI,MAElBG,GAAyB7sI,EAAIE,QAAQ,CACzCsI,GAAImkI,GACJlkI,IAAKzI,EAAImnH,QAEL2lB,GAA2B9sI,EAAIW,OAAO,CAC1CosI,0BAA2B/sI,EAAIa,IAAIgsI,MAE/BG,GAAgChtI,EAAIW,OAAO,CAC/CuqI,oBAAqBlrI,EAAIa,IAAIg+H,KAEzBoO,GAAsBjtI,EAAIW,OAAO,CACrCq5F,IAAKh6F,EAAIa,IAAIb,EAAI2B,MACjB0P,KAAMrR,EAAIa,IAAIb,EAAI2B,MAClB6O,KAAMxQ,EAAIa,IAAIb,EAAI2B,MAClBsrB,YAAajtB,EAAIa,IAAIb,EAAI2B,QAErBurI,GAAkBltI,EAAIW,OAAO,CAAEG,KAAMd,EAAIa,IAAIb,EAAImnH,SACjDgmB,GAAYntI,EAAIW,OAAO,CAAE4rI,UAAWvsI,EAAIa,IAAI82H,KAC5C9sH,GAAS7K,EAAIE,QAAQ,CAAEgK,MAAO6oH,EAAiBkX,OAAQA,KACvDmD,GAAoBptI,EAAIW,OAAO,CAAEwO,OAAQnP,EAAIa,IAAIgK,MACjDwiI,GAAcrtI,EAAIW,OAAO,CAAE+sH,YAAa1tH,EAAIa,IAAI8+H,KAChDr1H,GAAWtK,EAAIE,QAAQ,CAC3BgK,MAAO6oH,EACP+S,SAAUI,KAENoH,GAAsBttI,EAAIW,OAAO,CAAEwO,OAAQnP,EAAIa,IAAIyJ,MACnD+qH,GAAqBr1H,EAAIE,QAAQ,CACrCo1H,QAASt1H,EAAIQ,KACb+0H,SAAUv1H,EAAIQ,KACdg1H,QAASx1H,EAAIQ,OAETi1H,GAA+Bz1H,EAAIW,OAAO,CAC9C+0H,mBAAoB11H,EAAI0J,IACxBi6H,sBAAuB3jI,EAAIa,IAAIb,EAAI0J,KACnCisH,YAAa31H,EAAII,IAAIJ,EAAIK,WACzByjI,kBAAmB9jI,EAAIa,IAAIb,EAAI0J,KAC/BksH,kBAAmB51H,EAAI0J,IACvBmsH,mBAAoB71H,EAAI0J,MAEpB6jI,GAAavtI,EAAIW,OAAO,CAC5B6sI,6BAA8BxtI,EAAIa,IAAIb,EAAI0J,KAC1C+jI,uBAAwBztI,EAAIa,IAAIb,EAAI0J,KACpCgkI,gBAAiB1tI,EAAIa,IAAIb,EAAI0J,KAC7BikI,4BAA6B3tI,EAAIa,IAAIb,EAAI0J,OAErCosH,GAAyB91H,EAAIW,OAAO,CACxC4zB,OAAQ8gG,GACRU,YAAa/1H,EAAI0J,IACjB0xD,OAAQp7D,EAAI0J,IACZssH,SAAUP,GACVmY,YAAa5tI,EAAIa,IAAI0sI,IACrBtX,2BAA4Bj2H,EAAI0J,IAChCwsH,YAAal2H,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAE7B0rI,GAA+B7tI,EAAIW,OAAO,CAC9C2qI,iBAAkBtrI,EAAIa,IAAIu7H,GAC1BqP,gBAAiBzrI,EAAIa,IACnBb,EAAIW,OAAO,CACTqhI,uBAAwBhiI,EAAIgB,MAC5BihI,sBAAuBjiI,EAAIgB,MAC3B0sH,YAAa1tH,EAAIgB,MACjBkhI,eAAgBliI,EAAIa,IAAIu7H,QAIxB0R,GAAyC9tI,EAAIW,OAAO,CACxD4qI,8BAA+BvrI,EAAI2B,OAE/BosI,GAAoB/tI,EAAIW,OAAO,CAAEmqI,OAAQ9qI,EAAIa,IAAIm7H,KACjDgS,GAA2BhuI,EAAIW,OAAO,CAC1C07C,OAAQr8C,EAAIa,IAAIb,EAAIgB,OACpBs7C,MAAOt8C,EAAIa,IAAIb,EAAIgB,SAEfitI,GAA4BjuI,EAAIW,OAAO,CAC3CwqI,gBAAiBnrI,EAAIa,IAAIs/H,GACzB3D,cAAex8H,EAAIa,IAAIw7H,GACvBI,2BAA4Bz8H,EAAIa,IAAIb,EAAIgB,OACxCsqI,iBAAkBtrI,EAAIa,IAAIu7H,GAC1B8F,eAAgBliI,EAAIa,IAAIu7H,GACxB8R,4BAA6BluI,EAAIa,IAAIb,EAAIgB,SAErCmtI,GAAqCnuI,EAAIW,OAAO,CACpDytI,aAAcpuI,EAAII,IAAIJ,EAAIgB,OAC1BqtI,UAAWruI,EAAII,IAAIu9H,KAEf2Q,GAActuI,EAAIW,OAAO,CAC7B4tI,aAAcvuI,EAAIa,IAAIb,EAAIK,WAC1Bi8C,MAAOt8C,EAAImB,MACXqtI,cAAexuI,EAAIa,IAAI82H,KAEnB8W,GAAsBzuI,EAAIW,OAAO,CAAEkrI,QAAS7rI,EAAII,IAAI6pI,MACpDyE,GAAgB1uI,EAAIW,OAAO,CAC/BguI,sBAAuB3uI,EAAII,IAAIJ,EAAImnH,OACnCynB,gBAAiB5uI,EAAIa,IAAI8+H,GACzBrjF,MAAOt8C,EAAImB,MACX0tI,aAAc7uI,EAAII,IAAIJ,EAAIgB,OAC1B8tI,eAAgB9uI,EAAII,IAAIJ,EAAImnH,SAExB4nB,GAAwB/uI,EAAIW,OAAO,CACvCquI,0BAA2BhvI,EAAIa,IAAIb,EAAI8E,MACvC4mI,UAAW1rI,EAAII,IAAI8lI,MAEf+I,GAAoBjvI,EAAIW,OAAO,CAAC,GAChCuuI,GAAYlvI,EAAIW,OAAO,CAC3BwuI,iBAAkBnvI,EAAIa,IAAIb,EAAII,IAAIu9H,IAClCP,MAAOp9H,EAAIa,IAAI87H,GACfyS,YAAapvI,EAAIa,IAAIb,EAAI8E,MACzB0L,KAAMxQ,EAAIa,IAAIb,EAAI2B,MAClBsrB,YAAajtB,EAAIa,IAAIb,EAAI2B,MACzB0tI,iBAAkBrvI,EAAIa,IAAIb,EAAII,IAAIu9H,MAE9B2R,GAAqBtvI,EAAIW,OAAO,CACpC4uI,wBAAyBvvI,EAAIa,IAAIb,EAAII,IAAIu9H,IACzC6R,OAAQxvI,EAAIa,IAAIb,EAAII,IAAI8uI,OAEpBO,GAAgBzvI,EAAIW,OAAO,CAC/B+uI,oBAAqB1vI,EAAIa,IAAIb,EAAImB,SAE7BwuI,GAAU3vI,EAAIE,QAAQ,CAC1BknI,MAAOA,GACPC,OAAQA,GACRC,iBAAkBA,GAClBkB,eAAgBA,GAChBP,UAAWA,GACXE,aAAcA,GACdiB,aAActD,GACd2J,cAAeA,GACf/G,wBAAyBA,GACzBE,qBAAsBA,GACtBE,cAAeA,GACfG,SAAUA,KAEN2G,GAAe5vI,EAAIW,OAAO,CAC9BuB,WAAYlC,EAAII,IAAIJ,EAAImC,MACxBonI,QAASvpI,EAAIa,IAAI8uI,MAEbE,GAAgB7vI,EAAIW,OAAO,CAAEmvI,kBAAmB9vI,EAAIa,IAAI82H,KACxDoY,GAA2B/vI,EAAIW,OAAO,CAC1CqvI,qBAAsBhwI,EAAIgB,MAC1BivI,oBAAqBjwI,EAAIa,IAAIb,EAAIgB,SAE7BkvI,GAAyBlwI,EAAIW,OAAO,CACxCwvI,oBAAqBnwI,EAAIa,IAAI82H,KAEzByY,GAAwBpwI,EAAIW,OAAO,CACvC0vI,aAAcrwI,EAAIgB,MAClBsvI,oBAAqBtwI,EAAIgB,QAErBuvI,GAAwBvwI,EAAIW,OAAO,CACvC6vI,oBAAqBxwI,EAAIgB,MACzByvI,cAAezwI,EAAIgB,QAEf0vI,GAAmB1wI,EAAIW,OAAO,CAAEgwI,sBAAuB3wI,EAAIgB,QAC3D4vI,GAAY5wI,EAAIE,QAAQ,CAC5BgK,MAAO6oH,EACPqU,MAAOyI,GACPxI,OAAQrnI,EAAIW,OAAO,CAAC,GACpB2mI,iBAAkByI,GAClBvH,eAAgB0H,GAChBjI,UAAWjoI,EAAIW,OAAO,CAAC,GACvBwnI,aAAcnoI,EAAIW,OAAO,CAAC,GAC1ByoI,aAAciE,GACdwD,uBAAwB7wI,EAAIW,OAAO,CAAC,GACpC8uI,cAAeW,GACftH,cAAeyH,GACftH,SAAUyH,GACVI,oBAAqB9wI,EAAIW,OAAO,CAAC,KAE7BowI,GAAuB/wI,EAAIW,OAAO,CAAE4oI,QAASvpI,EAAIa,IAAI+vI,MACrDI,GAAUhxI,EAAIW,OAAO,CAAEG,KAAMd,EAAImnH,QACvC,OAAOnnH,EAAI2H,QAAQ,CACjBspI,mBAAoBjxI,EAAI6H,KAAK,CAAC4kI,IAA0B,CAACK,IAA2B,IACpFoE,+BAAgClxI,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACX,EAAIW,OAAO,CAAC,IAAK,IAC7EwwI,mBAAoBnxI,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAC9CyvI,wBAAyBpxI,EAAI6H,KAAK,GAAI,CAAC25H,GAAc,CAAC,UACtD6P,wBAAyBrxI,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACqsI,IAAgC,IACrFsE,aAActxI,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACssI,IAAsB,CAAC,UACjEsE,SAAUvxI,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACusI,IAAkB,CAAC,UACzDsE,8BAA+BxxI,EAAI6H,KAAK,CAAC7H,EAAIQ,MAAO,CAACkgI,GAA0B,CAAC,UAChF+Q,WAAYzxI,EAAI6H,KAAK,CAACslI,IAAY,CAACC,IAAoB,CAAC,UACxDsE,aAAc1xI,EAAI6H,KAAK,CAACwlI,IAAc,CAACC,IAAsB,CAAC,UAC9DqE,yBAA0B3xI,EAAI6H,KAAK,CAAC7H,EAAIQ,MAAO,CAACs1H,IAAyB,IACzE8b,wBAAyB5xI,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACktI,IAA+B,CAAC,UACrFgE,kCAAmC7xI,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACmtI,IAAyC,CAAC,UACzGgE,WAAY9xI,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACotI,IAAoB,CAAC,UAC7DgE,oBAAqB/xI,EAAI6H,KAAK,CAACmmI,IAA2B,CAACC,IAA4B,CAAC,UACxF+D,8BAA+BhyI,EAAI6H,KAAK,GAAI,CAACsmI,IAAqC,CAAC,UACnF8D,aAAcjyI,EAAI6H,KAAK,CAACymI,IAAc,CAACG,IAAsB,CAAC,UAC9DyD,eAAgBlyI,EAAI6H,KAAK,CAAC6mI,IAAgB,CAACK,IAAwB,CAAC,UACpEoD,YAAanyI,EAAI6H,KAAK,CAAConI,IAAoB,CAACK,IAAqB,CAAC,UAClE8C,cAAepyI,EAAI6H,KAAK,CAAC+nI,IAAe,CAACmB,IAAuB,IAChEsB,aAAcryI,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACX,EAAIW,OAAO,CAAC,IAAK,IAC3D2xI,SAAUtyI,EAAI6H,KAAK,CAACmpI,IAAU,CAAChxI,EAAIW,OAAO,CAAC,IAAK,KAChD,E,0SC1rBG,MAAM4xI,EAAiBA,CAAOtpI,EAAoBH,IAAmBu1D,OAAA,6BAC1E,OAAAt1D,EAAMC,OAA+B,CACnCC,aACAnJ,WAAY0yI,EACZ1pI,Y,ICPShJ,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMwzG,EAAkBvzG,EAAIE,QAAQ,CAClCuyI,kBAAmBzyI,EAAIQ,KACvBkyI,MAAO1yI,EAAIQ,KACXgnG,KAAMxnG,EAAIQ,KACVmyI,aAAc3yI,EAAIQ,KAClBoyI,kBAAmB5yI,EAAIQ,OAEnBqyI,EAAc7yI,EAAIW,OAAO,CAC7B0hB,GAAIriB,EAAI2B,KACR4kC,OAAQgtE,EACR5wF,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdmxI,eAAgB9yI,EAAI0J,IACpBgrB,KAAM10B,EAAI2B,KACVugF,KAAMliF,EAAI2B,KACVqlC,KAAMhnC,EAAIiK,IACVi3C,YAAalhD,EAAIq2H,QACjB0c,UAAW/yI,EAAI2B,KACfqxI,mBAAoBhzI,EAAIq2H,QACxB4c,OAAQjzI,EAAI2B,KACZuxI,gBAAiBlzI,EAAI0J,IACrBypI,eAAgBnzI,EAAI2B,KACpBm9G,UAAW9+G,EAAIq2H,QACftX,UAAW/+G,EAAIq2H,QACflzB,UAAWnjG,EAAIiK,IACfmpI,mBAAoBpzI,EAAIq2H,QACxBgd,eAAgBrzI,EAAIq2H,QACpBid,eAAgBtzI,EAAI2B,KACpB4xI,UAAWvzI,EAAIq2H,QACfmd,aAAcxzI,EAAIq2H,QAClBod,aAAczzI,EAAIq2H,QAClBqd,QAAS1zI,EAAI0J,IACbkZ,aAAc5iB,EAAI2B,KAClBgyI,eAAgB3zI,EAAIq2H,QACpBr1E,YAAahhD,EAAIq2H,QACjBvzG,aAAc9iB,EAAI2B,KAClBqgB,OAAQhiB,EAAI2B,OAERihH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChDiyI,EAAqB5zI,EAAIW,OAAO,CACpC0a,GAAIrb,EAAI0J,IACRmqI,kBAAmB7zI,EAAIq2H,QACvByd,YAAa9zI,EAAIq2H,QACjB0d,YAAa/zI,EAAIq2H,QACjB1zG,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdqyI,gBAAiBh0I,EAAIq2H,QACrB4d,eAAgBj0I,EAAIq2H,QACpB6d,UAAWl0I,EAAIq2H,QACfj5E,KAAMp9C,EAAI2B,KACVqlC,KAAMhnC,EAAIiK,IACVg2C,UAAWjgD,EAAI0J,IACfw3C,YAAalhD,EAAIq2H,QACjB8d,QAASn0I,EAAI0J,IACb0qI,kBAAmBp0I,EAAIq2H,QACvBge,UAAWr0I,EAAIq2H,QACfie,QAASt0I,EAAIq2H,QACbke,gBAAiBv0I,EAAIq2H,QACrB8c,eAAgBnzI,EAAI2B,KACpB6yI,QAASx0I,EAAI0J,IACb2pI,eAAgBrzI,EAAIq2H,QACpBid,eAAgBtzI,EAAI2B,KACpBihB,aAAc5iB,EAAI2B,KAClBgyI,eAAgB3zI,EAAIq2H,QACpBr1E,YAAahhD,EAAIq2H,QACjBvzG,aAAc9iB,EAAI2B,OAEd8yI,EAAsBz0I,EAAIW,OAAO,CACrC0a,GAAIrb,EAAI0J,IACRoqI,YAAa9zI,EAAIq2H,QACjB0d,YAAa/zI,EAAIq2H,QACjB4d,eAAgBj0I,EAAIq2H,QACpB7lH,KAAMxQ,EAAI2B,KACV0yI,UAAWr0I,EAAIq2H,QACfie,QAASt0I,EAAIq2H,QACbqe,eAAgB10I,EAAIq2H,QACpB5xH,QAASzE,EAAI2B,KACb6yI,QAASx0I,EAAIiK,IACbg3C,SAAUjhD,EAAIq2H,QACd7sH,SAAUxJ,EAAI2B,KACd2O,OAAQtQ,EAAI2B,OAERgzI,EAAU30I,EAAI2B,KACpB,OAAO3B,EAAI2H,QAAQ,CACjBitI,SAAU50I,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,IACxCw0I,cAAe70I,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI8E,MAAO,GAAI,IAClDgwI,eAAgB90I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,UACnDozI,gBAAiB/0I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,UACpDqzI,eAAgBh1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,UACnDszI,YAAaj1I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIyyI,IAAe,GAAI,IAClDhuI,MAAO7E,EAAI6H,KAAK,GAAI,GAAI,IACxBk7G,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzCsyB,YAAal1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIwzI,IAAsB,CAAC,UAC1Dx1C,aAAcp+F,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIq0I,IAAuB,CAAC,UAC5DU,eAAgBn1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,CAAC,UACxD+0I,iBAAkBp1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UAC3C2rI,gBAAiBr1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAIiK,KAAM,CAAC,UAC1CqrI,UAAWt1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,CAAC,UACnDk1I,iBAAkBv1I,EAAI6H,KACpB,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI0J,OACjC,CAAC,UAEH8rI,iBAAkBx1I,EAAI6H,KACpB,CAAC7H,EAAI2B,MACL,CAAC3B,EAAII,IAAIwzI,IACT,CAAC,UAEH6B,eAAgBz1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,UACnD+zI,YAAa11I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,CAAC,UACvC6wI,cAAe31I,EAAI6H,KACjB,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI8E,KAAM9E,EAAI2B,QAC3C,CAAC,UAEHi0I,kBAAmB51I,EAAI6H,KACrB,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI0J,OACjC,CAAC,UAEHmsI,sBAAuB71I,EAAI6H,KAAK,GAAI,CAAC7H,EAAIq2H,QAASr2H,EAAI0J,KAAM,CAAC,UAC7DosI,iBAAkB91I,EAAI6H,KACpB,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI0J,OACjC,CAAC,UAEHqsI,OAAQ/1I,EAAI6H,KAAK,CAACgrI,GAAc,GAAI,IACpCmD,YAAah2I,EAAI6H,KACf,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI2B,QACjC,CAAC,UAEHs0I,YAAaj2I,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC3B,EAAIa,IAAIb,EAAI2B,OAAQ,CAAC,UACxDu0I,kBAAmBl2I,EAAI6H,KAAK,CAAC7H,EAAI8E,MAAO,CAAC9E,EAAI8E,MAAO,IACpDqxI,eAAgBn2I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAI2B,MAAO3B,EAAI8E,MAAO,GAAI,IAC5DsxI,mBAAoBp2I,EAAI6H,KAAK,CAAC7H,EAAI8E,MAAO,CAAC9E,EAAI8E,MAAO,IACrDuxI,kBAAmBr2I,EAAI6H,KAAK,CAAC7H,EAAI8E,MAAO,CAAC9E,EAAI8E,MAAO,IACpDwxI,aAAct2I,EAAI6H,KAAK,GAAI,GAAI,IAC/B0uI,aAAcv2I,EAAI6H,KAChB,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI2B,QACjC,CAAC,UAEH60I,aAAcx2I,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC3B,EAAIa,IAAIb,EAAI2B,OAAQ,CAAC,UACzD80I,YAAaz2I,EAAI6H,KACf,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI2B,QACjC,CAAC,UAEHg2D,YAAa33D,EAAI6H,KAAK,CAAC8sI,GAAU,CAAC30I,EAAIa,IAAIb,EAAI2B,OAAQ,CAAC,WACvD,ECpJS+0I,EAAaA,IACxB3tI,EAAMC,OAAkB,CACtBgD,UAAWC,EAAUgkC,UACrBnwC,WAAY62I,ICPH72I,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMwzG,EAAkBvzG,EAAIE,QAAQ,CAClCuyI,kBAAmBzyI,EAAIQ,KACvB2rG,WAAYnsG,EAAIW,OAAO,CACrBi2I,eAAgB52I,EAAI0J,IACpBq6C,WAAY/jD,EAAI0J,IAChBmtI,UAAW72I,EAAIiK,IACf6sI,eAAgB92I,EAAI0J,MAEtBgpI,MAAO1yI,EAAIQ,KACXgnG,KAAMxnG,EAAIQ,KACVmyI,aAAc3yI,EAAIQ,KAClBu2I,iBAAkB/2I,EAAI0J,IACtBkpI,kBAAmB5yI,EAAIQ,OAEnBw2I,EAAoBh3I,EAAIW,OAAO,CACnC0hB,GAAIriB,EAAI2B,KACRkmD,UAAW7nD,EAAIiK,IACfs8B,OAAQgtE,EACR0jC,eAAgBj3I,EAAIiK,IACpB0Y,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdu1I,kBAAmBl3I,EAAI0J,IACvBopI,eAAgB9yI,EAAI0J,IACpBgrB,KAAM10B,EAAI2B,KACVqlC,KAAMhnC,EAAIiK,IACVktI,QAASn3I,EAAI0J,IACbqpI,UAAW/yI,EAAI2B,KACfqxI,mBAAoBhzI,EAAI0J,IACxB0tI,kBAAmBp3I,EAAI0J,IACvBwpI,gBAAiBlzI,EAAI0J,IACrBypI,eAAgBnzI,EAAI2B,KACpBm9G,UAAW9+G,EAAI0J,IACfq1G,UAAW/+G,EAAI0J,IACfy5F,UAAWnjG,EAAIiK,IACfmpI,mBAAoBpzI,EAAI0J,IACxB4pI,eAAgBtzI,EAAI2B,KACpBsqD,MAAOjsD,EAAI0J,IACXsY,OAAQhiB,EAAI2B,OAER01I,EAAcr3I,EAAIW,OAAO,CAC7BgiB,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdy7C,KAAMp9C,EAAI2B,KACV21I,OAAQt3I,EAAIq2H,QACZzzG,aAAc5iB,EAAI2B,KAClBmhB,aAAc9iB,EAAI2B,OAEd41I,EAAiBv3I,EAAIW,OAAO,CAChC0hB,GAAIriB,EAAI2B,KACRkmD,UAAW7nD,EAAIiK,IACfs8B,OAAQgtE,EACR0jC,eAAgBj3I,EAAIiK,IACpB0Y,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdu1I,kBAAmBl3I,EAAI0J,IACvBopI,eAAgB9yI,EAAI0J,IACpBgrB,KAAM10B,EAAI2B,KACVqlC,KAAMhnC,EAAIiK,IACVktI,QAASn3I,EAAI0J,IACbqpI,UAAW/yI,EAAI2B,KACfqxI,mBAAoBhzI,EAAI0J,IACxB0tI,kBAAmBp3I,EAAI0J,IACvBwpI,gBAAiBlzI,EAAI0J,IACrBypI,eAAgBnzI,EAAI2B,KACpBm9G,UAAW9+G,EAAI0J,IACfq1G,UAAW/+G,EAAI0J,IACfy5F,UAAWnjG,EAAIiK,IACfmpI,mBAAoBpzI,EAAI0J,IACxB4pI,eAAgBtzI,EAAI2B,KACpBsqD,MAAOjsD,EAAI0J,IACXsY,OAAQhiB,EAAI2B,OAER61I,EAAgBx3I,EAAIW,OAAO,CAC/B25C,KAAMi9F,EACNz7H,MAAO9b,EAAI2B,KACXwhG,UAAWnjG,EAAIiK,MAEX24G,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChD81I,EAAez3I,EAAIW,OAAO,CAC9BoD,IAAK/D,EAAIiK,IACT0Y,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdy7C,KAAMp9C,EAAI2B,KACVwxI,eAAgBnzI,EAAI2B,KACpB0xI,eAAgBrzI,EAAIq2H,QACpBid,eAAgBtzI,EAAI2B,KACpBihB,aAAc5iB,EAAI2B,KAClBgyI,eAAgB3zI,EAAIq2H,QACpBvzG,aAAc9iB,EAAI2B,OAEd+1I,EAAa13I,EAAIW,OAAO,CAC5B4Q,QAASvR,EAAI2B,KACboyI,YAAa/zI,EAAIq2H,QACjBshB,SAAU33I,EAAIq2H,QACdp1E,SAAUjhD,EAAIq2H,UAEVtS,EAAc/jH,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI2B,MACtCqiH,EAAchkH,EAAIW,OAAO,CAC7Bq5F,IAAKh6F,EAAI2B,KACTsiH,OAAQjkH,EAAI2B,KACZo4G,KAAM/5G,EAAII,IAAIJ,EAAImC,MAClB+hH,QAASlkH,EAAII,IAAI2jH,KAEbx6G,EAAQvJ,EAAIW,OAAO,CAAEi3I,eAAgB53I,EAAI2B,OACzCk2I,EAAgC73I,EAAIW,OAAO,CAC/CsO,MAAOjP,EAAIa,IAAI0I,GACfwwG,KAAM/5G,EAAII,IAAIJ,EAAImC,QAEd21I,EAAmB93I,EAAIW,OAAO,CAClCsO,MAAO1F,EACPgzB,SAAUv8B,EAAI6H,KAAK,CAAC0B,GAAQ,CAACsuI,GAAgC,CAAC,YAE1DE,EAAoB/3I,EAAIE,QAAQ,CAAE83I,SAAUF,IAC5C3zB,EAAenkH,EAAIW,OAAO,CAC9Bo5G,KAAM/5G,EAAII,IAAIJ,EAAImC,MAClB+hH,QAASlkH,EAAII,IAAI2jH,GACjBz/G,QAAStE,EAAIa,IAAIb,EAAI8E,MACrBmzI,mBAAoBj4I,EAAIa,IAAIk3I,GAC5B3zB,YAAapkH,EAAIqkH,QAEnB,OAAOrkH,EAAI2H,QAAQ,CACjBuwI,UAAWl4I,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,IACzC83I,gBAAiBn4I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAC3Cy2I,YAAap4I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,UAChD02I,UAAWr4I,EAAI6H,KAAK,CAAC7H,EAAII,IAAI42I,IAAqB,GAAI,IACtDsB,mBAAoBt4I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIi3I,IAAe,GAAI,IACzDkB,iCAAkCv4I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAIq2H,WAAY,GAAI,IAC5FmiB,eAAgBx4I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIo3I,IAAiB,IACvDz0B,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzCsyB,YAAal1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIq3I,IAAgB,CAAC,UACpDgB,eAAgBz4I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,IAClD+2I,WAAY14I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,CAAC,UACpD80I,eAAgBn1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,CAAC,UACxDs4I,aAAc34I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAI42I,IAAqB,CAAC,UAC1D4B,aAAc54I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIo3I,IAAiB,CAAC,UACtDqB,iBAAkB74I,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAIq2H,SAAU,CAAC,UAC5DyiB,qBAAsB94I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAIiK,OAAQ,CAAC,UAC7E8uI,WAAY/4I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIi3I,IAAe,CAAC,UAClD5B,eAAgBz1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,UACnDq3I,gBAAiBh5I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI0J,MAAO1J,EAAIiK,KAAM,CAAC,UACjFgvI,aAAcj5I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACxC+zI,YAAa11I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,CAAC,UACvCo0I,sBAAuBl5I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM+1I,KAAe,CAAC,UACjFyB,gCAAiCn5I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI0J,MAAO1J,EAAIiK,KAAM,CAAC,UACjG26G,aAAc5kH,EAAI6H,KAAK,CAACm8G,GAAc,CAACG,GAAe,CAAC,UACvDvtG,KAAM5W,EAAI6H,KAAK,CAACmvI,GAAoB,GAAI,IACxCoC,oBAAqBp5I,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,IACnDg5I,eAAgBr5I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIo3I,IAAiB,IACvDrB,eAAgBn2I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAI2B,MAAO3B,EAAI8E,MAAO,GAAI,IAC5Dw0I,4BAA6Bt5I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACvD43I,wBAAyBv5I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,UAC5D63I,qBAAsBx5I,EAAI6H,KAAK,CAAC7H,EAAIq2H,SAAU,GAAI,IAClDojB,oBAAqBz5I,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI2B,KAAM3B,EAAI0J,KAAM,GAAI,KACtE,EC3JS5J,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMwzG,EAAkBvzG,EAAIE,QAAQ,CAClCuyI,kBAAmBzyI,EAAIQ,KACvBkyI,MAAO1yI,EAAIQ,KACXgnG,KAAMxnG,EAAIQ,KACVmyI,aAAc3yI,EAAIQ,KAClBoyI,kBAAmB5yI,EAAIQ,OAEnBqyI,EAAc7yI,EAAIW,OAAO,CAC7B0hB,GAAIriB,EAAI2B,KACR4kC,OAAQgtE,EACR5wF,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdmxI,eAAgB9yI,EAAI0J,IACpBgrB,KAAM10B,EAAI2B,KACVugF,KAAMliF,EAAI2B,KACVqlC,KAAMhnC,EAAIiK,IACVi3C,YAAalhD,EAAIq2H,QACjB0c,UAAW/yI,EAAI2B,KACfqxI,mBAAoBhzI,EAAIq2H,QACxB4c,OAAQjzI,EAAI2B,KACZuxI,gBAAiBlzI,EAAI0J,IACrBypI,eAAgBnzI,EAAI2B,KACpBm9G,UAAW9+G,EAAIq2H,QACftX,UAAW/+G,EAAIq2H,QACflzB,UAAWnjG,EAAIiK,IACfmpI,mBAAoBpzI,EAAIq2H,QACxBgd,eAAgBrzI,EAAIq2H,QACpBid,eAAgBtzI,EAAI2B,KACpB4xI,UAAWvzI,EAAIq2H,QACfmd,aAAcxzI,EAAIq2H,QAClBod,aAAczzI,EAAIq2H,QAClBqd,QAAS1zI,EAAI0J,IACbkZ,aAAc5iB,EAAI2B,KAClBgyI,eAAgB3zI,EAAIq2H,QACpBr1E,YAAahhD,EAAIq2H,QACjBvzG,aAAc9iB,EAAI2B,KAClBqgB,OAAQhiB,EAAI2B,OAERihH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChD+3I,EAAa15I,EAAIW,OAAO,CAC5ByM,QAASpN,EAAII,IAAIyyI,GACjBx2F,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAErB,OAAO1J,EAAI2H,QAAQ,CACjBgyI,UAAW35I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClD40I,YAAaj1I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIyyI,IAAe,GAAI,IAClDhuI,MAAO7E,EAAI6H,KAAK,GAAI,GAAI,IACxBk7G,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzCg3B,cAAe55I,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC+3I,GAAa,CAAC,UAC9EG,UAAW75I,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,MAAO,CAAC+3I,GAAa,CAAC,UACjEI,WAAY95I,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,MAAO,CAAC+3I,GAAa,CAAC,UAClEpE,UAAWt1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,IAClD05I,WAAY/5I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACrCqsI,OAAQ/1I,EAAI6H,KAAK,CAACgrI,GAAc,GAAI,KACpC,EC/CSmH,EAAalxI,GACxBC,EAAMC,OAAkB,CACtBlJ,WAAYm6I,EACZjuI,UAAWC,EAAUiuI,UACrBpxI,aAGSsvI,EAAcA,CAAC/8H,EAAYvS,IACtCC,EAAMC,OAAoB,CACxBlJ,WAAYq6I,EACZlxI,WAAYoS,EACZvS,aCtBShJ,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM6iH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChDy4I,EAAcp6I,EAAIW,OAAO,CAC7B22I,OAAQt3I,EAAIq2H,QACZgkB,aAAcr6I,EAAIq2H,UAEdikB,EAAqBt6I,EAAIW,OAAO,CACpC0zI,UAAWr0I,EAAIq2H,QACfie,QAASt0I,EAAIq2H,QACbihB,OAAQt3I,EAAIq2H,QACZme,QAASx0I,EAAIiK,MAEf,OAAOjK,EAAI2H,QAAQ,CACjBitI,SAAU50I,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,IACxC0iH,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzC23B,cAAev6I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAIq2H,WAAY,CAAC,UAC1EmkB,eAAgBx6I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAIq2H,WAAY,CAAC,UAC3EoiB,eAAgBz4I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,IAClD2zI,UAAWt1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,IAClDo6I,eAAgBz6I,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACy4I,GAAc,CAAC,UACrDM,gBAAiB16I,EAAI6H,KAAK,GAAI,CAACyyI,GAAqB,CAAC,UACrDrB,aAAcj5I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACxCg5I,aAAc36I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,CAAC,UACxC81I,YAAa56I,EAAI6H,KAAK,GAAI,CAAC7H,EAAIiK,KAAM,CAAC,UACtC4wI,gBAAiB76I,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACy4I,GAAc,CAAC,UACtDU,gBAAiB96I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,CAAC,UAC3Ci2I,0BAA2B/6I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACrDq5I,sBAAuBh7I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,UAC1Ds5I,WAAYj7I,EAAI6H,KAAK,GAAI,GAAI,IAC7BqzI,QAASl7I,EAAI6H,KAAK,GAAI,GAAI,IAC1BszI,cAAen7I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,CAAC,UACzCs2I,uBAAwBp7I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAClD05I,mBAAoBr7I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,WACvD,EClCS7B,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMu7I,EAAet7I,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OACnD45I,EAAyBv7I,EAAIW,OAAO,CACxC0a,GAAIrb,EAAIiK,IACRoqI,UAAWr0I,EAAIq2H,QACfie,QAASt0I,EAAIq2H,QACbihB,OAAQt3I,EAAIq2H,QACZlzB,UAAWnjG,EAAIiK,IACfuqI,QAASx0I,EAAIiK,MAEf,OAAOjK,EAAI2H,QAAQ,CACjBgyI,UAAW35I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClD0iH,eAAgB/iH,EAAI6H,KAAK,GAAI,CAACyzI,GAAe,IAC7Ct4B,aAAchjH,EAAI6H,KAAK,GAAI,CAACyzI,GAAe,CAAC,UAC5CE,aAAcx7I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIm7I,IAA0B,CAAC,UAC/DjG,UAAWt1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,IAClD01I,OAAQ/1I,EAAI6H,KAAK,CAAC0zI,GAAyB,GAAI,KAC/C,ECjBSz7I,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM07I,EAAez7I,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OACnD+5I,EAAkB17I,EAAIW,OAAO,CACjC0a,GAAIrb,EAAI0J,IACR4tI,OAAQt3I,EAAIq2H,QACZlzB,UAAWnjG,EAAIiK,MAEjB,OAAOjK,EAAI2H,QAAQ,CACjBgyI,UAAW35I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClD0iH,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC4zI,GAAe,IAC7Cz4B,aAAchjH,EAAI6H,KAAK,GAAI,CAAC4zI,GAAe,CAAC,UAC5CnG,UAAWt1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,IAClDs7I,gBAAiB37I,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC1J,EAAII,IAAIs7I,IAAmB,CAAC,UACrFE,iBAAkB57I,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC1J,EAAII,IAAIs7I,IAAmB,CAAC,UACtF3F,OAAQ/1I,EAAI6H,KACV,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM+5I,IAAmB17I,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM+5I,KAC5E,CAAC17I,EAAI0J,KACL,KAEF,ECNSmyI,EAAe/yI,GAC1BC,EAAMC,OAAoB,CACxBlJ,WAAYg8I,EACZ9vI,UAAWC,EAAUikC,YACrBpnC,aAGSizI,EAAiB1gI,GAC5BtS,EAAMC,OAAsB,CAC1BlJ,WAAYk8I,EACZ/yI,WAAYoS,IAGH4gI,EAAYA,CAAC5gI,EAAYvS,IACpCC,EAAMC,OAAkB,CACtBlJ,WAAYo8I,EACZjzI,WAAYoS,EACZvS,aC9BShJ,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM6iH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChDiyI,EAAqB5zI,EAAIW,OAAO,CACpC0a,GAAIrb,EAAI0J,IACRoqI,YAAa9zI,EAAIq2H,QACjB0d,YAAa/zI,EAAIq2H,QACjB1zG,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdsyI,eAAgBj0I,EAAIq2H,QACpB6d,UAAWl0I,EAAIq2H,QACfj5E,KAAMp9C,EAAI2B,KACVqlC,KAAMhnC,EAAIiK,IACVg2C,UAAWjgD,EAAI0J,IACfw3C,YAAalhD,EAAIq2H,QACjB8d,QAASn0I,EAAI0J,IACb2qI,UAAWr0I,EAAIq2H,QACfie,QAASt0I,EAAIq2H,QACb8c,eAAgBnzI,EAAI2B,KACpB6yI,QAASx0I,EAAI0J,IACb2pI,eAAgBrzI,EAAIq2H,QACpBid,eAAgBtzI,EAAI2B,KACpBihB,aAAc5iB,EAAI2B,KAClBgyI,eAAgB3zI,EAAIq2H,QACpBr1E,YAAahhD,EAAIq2H,QACjBvzG,aAAc9iB,EAAI2B,OAEdw6I,EAAyBn8I,EAAIW,OAAO,CACxC0a,GAAIrb,EAAIiK,IACRoqI,UAAWr0I,EAAIq2H,QACflzB,UAAWnjG,EAAIiK,IACfuqI,QAASx0I,EAAIiK,MAETspG,EAAkBvzG,EAAIE,QAAQ,CAClCuyI,kBAAmBzyI,EAAIQ,KACvBkyI,MAAO1yI,EAAIQ,KACXgnG,KAAMxnG,EAAIQ,KACVmyI,aAAc3yI,EAAIQ,KAClBoyI,kBAAmB5yI,EAAIQ,OAEnBqyI,EAAc7yI,EAAIW,OAAO,CAC7B0hB,GAAIriB,EAAI2B,KACR4kC,OAAQgtE,EACR5wF,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdmxI,eAAgB9yI,EAAI0J,IACpBgrB,KAAM10B,EAAI2B,KACVugF,KAAMliF,EAAI2B,KACVqlC,KAAMhnC,EAAIiK,IACVi3C,YAAalhD,EAAIq2H,QACjB0c,UAAW/yI,EAAI2B,KACfqxI,mBAAoBhzI,EAAIq2H,QACxB4c,OAAQjzI,EAAI2B,KACZuxI,gBAAiBlzI,EAAI0J,IACrBypI,eAAgBnzI,EAAI2B,KACpBm9G,UAAW9+G,EAAIq2H,QACftX,UAAW/+G,EAAIq2H,QACflzB,UAAWnjG,EAAIiK,IACfmpI,mBAAoBpzI,EAAIq2H,QACxBgd,eAAgBrzI,EAAIq2H,QACpBid,eAAgBtzI,EAAI2B,KACpB4xI,UAAWvzI,EAAIq2H,QACfmd,aAAcxzI,EAAIq2H,QAClBod,aAAczzI,EAAIq2H,QAClBqd,QAAS1zI,EAAI0J,IACbkZ,aAAc5iB,EAAI2B,KAClBgyI,eAAgB3zI,EAAIq2H,QACpBr1E,YAAahhD,EAAIq2H,QACjBvzG,aAAc9iB,EAAI2B,KAClBqgB,OAAQhiB,EAAI2B,OAEd,OAAO3B,EAAI2H,QAAQ,CACjBgyI,UAAW35I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClD0iH,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzCsyB,YAAal1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIwzI,IAAsB,CAAC,UAC1D0B,UAAWt1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,IAClDiL,QAAStL,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACiyI,GAAqB,CAAC,UACrDwI,iBAAkBp8I,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC1J,EAAII,IAAI+7I,IAA0B,CAAC,UAC7FE,oBAAqBr8I,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC1J,EAAII,IAAIyyI,IAAe,CAAC,UACrFkD,OAAQ/1I,EAAI6H,KAAK,CAACgrI,GAAc,GAAI,KACpC,EC5ESoD,EAAcA,CAAC56H,EAAYvS,IACtCC,EAAMC,OAAoB,CACxBlJ,WAAYw8I,EACZrzI,WAAYoS,EACZvS,aCRShJ,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM6iH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChD8yI,EAAsBz0I,EAAIW,OAAO,CACrC0a,GAAIrb,EAAI0J,IACRoqI,YAAa9zI,EAAIq2H,QACjB0d,YAAa/zI,EAAIq2H,QACjB4d,eAAgBj0I,EAAIq2H,QACpB7lH,KAAMxQ,EAAI2B,KACV0yI,UAAWr0I,EAAIq2H,QACfie,QAASt0I,EAAIq2H,QACbqe,eAAgB10I,EAAIq2H,QACpB5xH,QAASzE,EAAI2B,KACb6yI,QAASx0I,EAAIiK,IACbg3C,SAAUjhD,EAAIq2H,QACd7sH,SAAUxJ,EAAI2B,KACd2O,OAAQtQ,EAAI2B,OAER46I,EAAWv8I,EAAIW,OAAO,CAC1BoD,IAAK/D,EAAIiK,IACT0Y,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdy7C,KAAMp9C,EAAI2B,KACVu/C,YAAalhD,EAAIq2H,QACjB8c,eAAgBnzI,EAAI2B,KACpB0xI,eAAgBrzI,EAAIq2H,QACpBid,eAAgBtzI,EAAI2B,KACpBihB,aAAc5iB,EAAI2B,KAClBgyI,eAAgB3zI,EAAIq2H,QACpBr1E,YAAahhD,EAAIq2H,QACjBvzG,aAAc9iB,EAAI2B,OAEd66I,EAA0Bx8I,EAAIW,OAAO,CACzC0a,GAAIrb,EAAIiK,IACRoqI,UAAWr0I,EAAIq2H,QACflzB,UAAWnjG,EAAIiK,IACfuqI,QAASx0I,EAAIiK,MAETwyI,EAAwBz8I,EAAIW,OAAO,CACvC0a,GAAIrb,EAAIiK,IACRyyI,IAAK18I,EAAIq2H,QACTsmB,KAAM38I,EAAIq2H,QACV5vF,MAAOzmC,EAAIq2H,QACX3hH,KAAM1U,EAAIq2H,QACVlzB,UAAWnjG,EAAIiK,MAEXspG,EAAkBvzG,EAAIE,QAAQ,CAClCuyI,kBAAmBzyI,EAAIQ,KACvBkyI,MAAO1yI,EAAIQ,KACXgnG,KAAMxnG,EAAIQ,KACVmyI,aAAc3yI,EAAIQ,KAClBoyI,kBAAmB5yI,EAAIQ,OAEnBqyI,EAAc7yI,EAAIW,OAAO,CAC7B0hB,GAAIriB,EAAI2B,KACR4kC,OAAQgtE,EACR5wF,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdmxI,eAAgB9yI,EAAI0J,IACpBgrB,KAAM10B,EAAI2B,KACVugF,KAAMliF,EAAI2B,KACVqlC,KAAMhnC,EAAIiK,IACVi3C,YAAalhD,EAAIq2H,QACjB0c,UAAW/yI,EAAI2B,KACfqxI,mBAAoBhzI,EAAIq2H,QACxB4c,OAAQjzI,EAAI2B,KACZuxI,gBAAiBlzI,EAAI0J,IACrBypI,eAAgBnzI,EAAI2B,KACpBm9G,UAAW9+G,EAAIq2H,QACftX,UAAW/+G,EAAIq2H,QACflzB,UAAWnjG,EAAIiK,IACfmpI,mBAAoBpzI,EAAIq2H,QACxBgd,eAAgBrzI,EAAIq2H,QACpBid,eAAgBtzI,EAAI2B,KACpB4xI,UAAWvzI,EAAIq2H,QACfmd,aAAcxzI,EAAIq2H,QAClBod,aAAczzI,EAAIq2H,QAClBqd,QAAS1zI,EAAI0J,IACbkZ,aAAc5iB,EAAI2B,KAClBgyI,eAAgB3zI,EAAIq2H,QACpBr1E,YAAahhD,EAAIq2H,QACjBvzG,aAAc9iB,EAAI2B,KAClBqgB,OAAQhiB,EAAI2B,OAEd,OAAO3B,EAAI2H,QAAQ,CACjBgyI,UAAW35I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClD0iH,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzCxkB,aAAcp+F,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIq0I,IAAuB,CAAC,UAC5Da,UAAWt1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,IAClDm1I,iBAAkBx1I,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC3B,EAAII,IAAIm8I,IAAY,CAAC,UAC7DK,SAAU58I,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC8yI,GAAsB,CAAC,UACvDoI,kBAAmB78I,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC1J,EAAII,IAAIo8I,IAA2B,CAAC,UAC/FM,mBAAoB98I,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAIiK,IAAKjK,EAAIiK,IAAKjK,EAAI0J,KAAM,CAAC1J,EAAII,IAAIq8I,IAAyB,CAAC,UACvGM,qBAAsB/8I,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC1J,EAAII,IAAIyyI,IAAe,CAAC,UACtFkD,OAAQ/1I,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAMkxI,GAAc,GAAI,KAC9C,EC3FS2D,EAAeA,CAACn7H,EAAYvS,IACvCC,EAAMC,OAAqB,CACzBlJ,WAAYk9I,EACZ/zI,WAAYoS,EACZvS,aCRShJ,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMwzG,EAAkBvzG,EAAIE,QAAQ,CAClCuyI,kBAAmBzyI,EAAIQ,KACvBkyI,MAAO1yI,EAAIQ,KACXgnG,KAAMxnG,EAAIQ,KACVmyI,aAAc3yI,EAAIQ,KAClBoyI,kBAAmB5yI,EAAIQ,OAEnBqyI,EAAc7yI,EAAIW,OAAO,CAC7B0hB,GAAIriB,EAAI2B,KACR4kC,OAAQgtE,EACR5wF,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdmxI,eAAgB9yI,EAAI0J,IACpBgrB,KAAM10B,EAAI2B,KACVugF,KAAMliF,EAAI2B,KACVqlC,KAAMhnC,EAAIiK,IACVi3C,YAAalhD,EAAIq2H,QACjB0c,UAAW/yI,EAAI2B,KACfqxI,mBAAoBhzI,EAAIq2H,QACxB4c,OAAQjzI,EAAI2B,KACZuxI,gBAAiBlzI,EAAI0J,IACrBypI,eAAgBnzI,EAAI2B,KACpBm9G,UAAW9+G,EAAIq2H,QACftX,UAAW/+G,EAAIq2H,QACflzB,UAAWnjG,EAAIiK,IACfmpI,mBAAoBpzI,EAAIq2H,QACxBgd,eAAgBrzI,EAAIq2H,QACpBid,eAAgBtzI,EAAI2B,KACpB4xI,UAAWvzI,EAAIq2H,QACfmd,aAAcxzI,EAAIq2H,QAClBod,aAAczzI,EAAIq2H,QAClBqd,QAAS1zI,EAAI0J,IACbkZ,aAAc5iB,EAAI2B,KAClBgyI,eAAgB3zI,EAAIq2H,QACpBr1E,YAAahhD,EAAIq2H,QACjBvzG,aAAc9iB,EAAI2B,KAClBqgB,OAAQhiB,EAAI2B,OAERihH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChDgzI,EAAU30I,EAAI2B,KACd+3I,EAAa15I,EAAIW,OAAO,CAC5ByM,QAASpN,EAAII,IAAIyyI,GACjBx2F,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAErB,OAAO1J,EAAI2H,QAAQ,CACjBgyI,UAAW35I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClD40I,YAAaj1I,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAII,IAAIyyI,IAAe,GAAI,IAC5DhuI,MAAO7E,EAAI6H,KAAK,GAAI,GAAI,IACxBk7G,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzChrD,IAAK53D,EAAI6H,KAAK,CAAC8sI,EAAS30I,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC+3I,GAAa,CAAC,UAC7EpE,UAAWt1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,IAClD01I,OAAQ/1I,EAAI6H,KAAK,CAACgrI,GAAc,GAAI,KACpC,ECpDSl7E,EAAcA,CAACt8C,EAAYvS,IACtCC,EAAMC,OAAoB,CACxBlJ,WAAYm9I,EACZh0I,WAAYoS,EACZvS,aCRShJ,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMwzG,EAAkBvzG,EAAIE,QAAQ,CAClCuyI,kBAAmBzyI,EAAIQ,KACvB2rG,WAAYnsG,EAAIW,OAAO,CACrBi2I,eAAgB52I,EAAI0J,IACpBq6C,WAAY/jD,EAAI0J,IAChBmtI,UAAW72I,EAAIiK,IACf6sI,eAAgB92I,EAAI0J,MAEtBgpI,MAAO1yI,EAAIQ,KACXgnG,KAAMxnG,EAAIQ,KACVmyI,aAAc3yI,EAAIQ,KAClBu2I,iBAAkB/2I,EAAI0J,IACtBkpI,kBAAmB5yI,EAAIQ,OAEnBqyI,EAAc7yI,EAAIW,OAAO,CAC7B0hB,GAAIriB,EAAI2B,KACR4kC,OAAQgtE,EACR5wF,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdmxI,eAAgB9yI,EAAI0J,IACpBgrB,KAAM10B,EAAI2B,KACVugF,KAAMliF,EAAI2B,KACVqlC,KAAMhnC,EAAIiK,IACVi3C,YAAalhD,EAAIq2H,QACjB0c,UAAW/yI,EAAI2B,KACfqxI,mBAAoBhzI,EAAIq2H,QACxB4c,OAAQjzI,EAAI2B,KACZuxI,gBAAiBlzI,EAAI0J,IACrBypI,eAAgBnzI,EAAI2B,KACpBm9G,UAAW9+G,EAAIq2H,QACftX,UAAW/+G,EAAIq2H,QACflzB,UAAWnjG,EAAIiK,IACfmpI,mBAAoBpzI,EAAIq2H,QACxBgd,eAAgBrzI,EAAIq2H,QACpBid,eAAgBtzI,EAAI2B,KACpB4xI,UAAWvzI,EAAIq2H,QACfmd,aAAcxzI,EAAIq2H,QAClBod,aAAczzI,EAAIq2H,QAClBqd,QAAS1zI,EAAI0J,IACbkZ,aAAc5iB,EAAI2B,KAClBgyI,eAAgB3zI,EAAIq2H,QACpBr1E,YAAahhD,EAAIq2H,QACjBvzG,aAAc9iB,EAAI2B,KAClBqgB,OAAQhiB,EAAI2B,OAERihH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChD+3I,EAAa15I,EAAIW,OAAO,CAC5ByM,QAASpN,EAAII,IAAIyyI,GACjBx2F,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAErB,OAAO1J,EAAI2H,QAAQ,CACjBgyI,UAAW35I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClD40I,YAAaj1I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIyyI,IAAe,GAAI,IAClD9vB,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzChrD,IAAK53D,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC+3I,GAAa,CAAC,UACpEG,UAAW75I,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,MAAO,CAAC+3I,GAAa,CAAC,UACjEI,WAAY95I,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,MAAO,CAAC+3I,GAAa,CAAC,UAClEwD,cAAel9I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACxC4rI,UAAWt1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,IAClD88I,MAAOn9I,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACgwI,GAAa,CAAC,UACnDK,WAAY/5I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACrCqsI,OAAQ/1I,EAAI6H,KAAK,CAACgrI,GAAc,GAAI,KACpC,EC9DSuK,EAA+B/hI,GAC1CtS,EAAMC,OAAoC,CACxClJ,WAAYu9I,EACZp0I,WAAYoS,ICPHvb,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMsd,EAAQrd,EAAIs9I,MACZhhC,EAAMt8G,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM0b,IACxCA,EAAMnC,KACJlb,EAAIE,QAAQ,CACV+J,IAAKjK,EAAIiK,IACTqyG,IAAKA,EACL5yG,IAAK1J,EAAI0J,IACT1I,MAAOhB,EAAIgB,MACXu8I,KAAMv9I,EAAII,IAAIJ,EAAImC,MAClBR,KAAM3B,EAAI2B,KACV89B,MAAOz/B,EAAII,IAAIid,MAGnB,MAAMmgI,EAAQngI,EACRvb,EAAU9B,EAAIW,OAAO,CACzBsB,MAAOjC,EAAIK,UACX6B,WAAYlC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAE5B0wI,EAAc7yI,EAAIW,OAAO,CAC7B+mG,KAAM1nG,EAAIa,IACRb,EAAIW,OAAO,CACT+zB,KAAM5yB,EACNwlC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1Bs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,OAGhBg0I,KAAM19I,EAAI2B,KACV8lG,KAAMznG,EAAIa,IACRb,EAAIW,OAAO,CACT0hB,GAAIvgB,EACJwlC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1Bs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,OAGhBy5F,UAAWnjG,EAAIgB,MACf+2D,SAAU/3D,EAAIa,IACZb,EAAIW,OAAO,CACT0hB,GAAIvgB,EACJ4yB,KAAM5yB,EACNwlC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1Bs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,SAIlB,OAAO1J,EAAI2H,QAAQ,CACjBg2I,cAAe39I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAII,IAAIJ,EAAImC,QAAS,GAAI,IAC1Dy7I,WAAY59I,EAAI6H,KACd,CAAC7H,EAAIW,OAAO,CAAEwH,MAAOnI,EAAI0J,IAAKtB,OAAQpI,EAAI0J,OAC1C,CAAC1J,EAAIW,OAAO,CAAEk9I,OAAQ79I,EAAII,IAAIo9I,MAC9B,CAAC,UAEHM,gBAAiB99I,EAAI6H,KAAK,CAAC7H,EAAIgB,OAAQ,CAAChB,EAAIa,IAAIgyI,IAAe,CAAC,UAChEkL,iBAAkB/9I,EAAI6H,KACpB,CAAC7H,EAAIW,OAAO,CAAEwH,MAAOnI,EAAI0J,IAAKtB,OAAQpI,EAAI0J,OAC1C,CAAC1J,EAAIW,OAAO,CAAE2iF,aAActjF,EAAII,IAAIyyI,MACpC,CAAC,UAEHmL,mBAAoBh+I,EAAI6H,KAAK,GAAI,CAAC7H,EAAIgB,OAAQ,CAAC,WAC/C,EC9DSlB,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMyjH,EAAaxjH,EAAII,IAAIJ,EAAImC,MACzBL,EAAU9B,EAAIW,OAAO,CACzBsB,MAAOjC,EAAIK,UACX6B,WAAYlC,EAAIa,IAAI2iH,KAEhBplC,EAASp+E,EAAI0J,IACb2T,EAAQrd,EAAIE,QAAQ,CACxB+J,IAAKjK,EAAIiK,IACTP,IAAK1J,EAAI0J,IACT6zI,KAAMv9I,EAAII,IAAIJ,EAAImC,MAClBR,KAAM3B,EAAI2B,OAENs8I,EAAOj+I,EAAII,IAAIJ,EAAImC,MACnB+7I,EAAYl+I,EAAIgB,MAChBm9I,EAAUn+I,EAAI0J,IACd00I,EAAgBp+I,EAAIE,QAAQ,CAChC2F,aAAc7F,EAAIW,OAAO,CACvBkhB,QAAS7hB,EAAI2B,KACboE,WAAY/F,EAAI0J,MAElB1D,uBAAwBhG,EAAIQ,KAC5B69I,QAASr+I,EAAIW,OAAO,CAAE+iH,gBAAiBtlC,IACvCkgE,UAAWt+I,EAAIW,OAAO,CAAE49I,aAAcJ,IACtCK,OAAQx+I,EAAIW,OAAO,CAAE89I,aAAcrgE,IACnCsgE,gBAAiB1+I,EAAIW,OAAO,CAAEg+I,YAAaT,IAC3CU,OAAQ5+I,EAAIQ,KACZ2F,kBAAmBnG,EAAIW,OAAO,CAAEyF,QAASg4E,MAErCygE,EAAiB7+I,EAAIE,QAAQ,CAAEsI,GAAI21I,EAAS11I,IAAK21I,IACjDU,EAAyB9+I,EAAIW,OAAO,CACxCwH,MAAOnI,EAAI0J,IACXtB,OAAQpI,EAAI0J,MAERq1I,EAAO/+I,EAAIW,OAAO,CACtB+zB,KAAM5yB,EACNwlC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1Bs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,MAERs1I,EAAOh/I,EAAIW,OAAO,CACtB0hB,GAAIvgB,EACJwlC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1Bs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,MAERu1I,EAAWj/I,EAAIW,OAAO,CAC1B0hB,GAAIvgB,EACJiC,IAAK/D,EAAIa,IAAIb,EAAI0J,KACjBgrB,KAAM5yB,EACNwlC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1Bs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,MAERmpI,EAAc7yI,EAAIW,OAAO,CAC7B+mG,KAAM1nG,EAAIa,IAAIk+I,GACdrB,KAAM19I,EAAI2B,KACV8lG,KAAMznG,EAAIa,IAAIm+I,GACd77C,UAAWnjG,EAAIgB,MACf+2D,SAAU/3D,EAAIa,IAAIo+I,KAEdC,EAA2Bl/I,EAAIW,OAAO,CAC1C47B,SAAUv8B,EAAI6H,KAAK,CAACi3I,GAAyB,CAAC9+I,EAAIW,OAAO,CAAE2iF,aAActjF,EAAII,IAAIyyI,MAAkB,CAAC,UACpG1qI,MAAOnI,EAAI0J,IACXtB,OAAQpI,EAAI0J,MAERy1I,EAA0Bn/I,EAAIW,OAAO,CACzCy+I,YAAap/I,EAAI0J,IACjB21I,WAAYr/I,EAAI0J,IAChB45E,aAActjF,EAAII,IAAIyyI,GACtByM,sBAAuBt/I,EAAII,IAAI8+I,KA6BjC,OA3Bel/I,EAAI2H,QAAQ,CACzBo2I,iBAAkB/9I,EAAI6H,KAAK,CAACi3I,GAAyB,CAACK,GAA0B,CAAC,UACjFI,iBAAkBv/I,EAAI6H,KAAK,CAAC/F,GAAU,CAACs8E,GAAS,CAAC,UACjDohE,eAAgBx/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAImC,MAAO,CAAC,UAC1Cs9I,UAAWz/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACpCg2I,eAAgB1/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM0b,KAAU,CAAC,UACrEsiI,sBAAuB3/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAIa,IAAIiB,IAAW,CAAC,UACzD89I,WAAY5/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtCs3D,0BAA2Bj5D,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIW,OAAO,CAAEq5F,IAAKh6F,EAAI2B,KAAM6O,KAAMxQ,EAAI2B,SAAW,CAAC,UACnGk+I,aAAc7/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACxCm+I,mBAAoB9/I,EAAI6H,KAAK,GAAI,CAACu2E,GAAS,CAAC,UAC5C2hE,WAAY//I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtCq+I,eAAgBhgJ,EAAI6H,KAClB,CACE7H,EAAIW,OAAO,CACT0hB,GAAIvgB,EACJiC,IAAK/D,EAAIa,IAAIu9E,GACb92C,KAAMtnC,EAAIa,IAAIo9I,GACdp3I,gBAAiB7G,EAAIa,IAAI2iH,GACzBi6B,gBAAiBz9I,EAAIa,IAAIq9I,GACzBt6I,OAAQw6E,KAGZ,CAACygE,GACD,KAGS,ECnGF/+I,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMsd,EAAQrd,EAAIs9I,MACZl9I,EAAMJ,EAAIs9I,MACV2C,EAAgBjgJ,EAAIE,QAAQ,CAChC+J,IAAKjK,EAAIiK,IACTP,IAAK1J,EAAI0J,IACT6zI,KAAMv9I,EAAII,IAAIJ,EAAImC,MAClBR,KAAM3B,EAAI2B,OAENG,EAAU9B,EAAIW,OAAO,CACzBsB,MAAOjC,EAAIK,UACX6B,WAAYlC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAE5B+9I,EAAqBlgJ,EAAIE,QAAQ,CACrCigJ,MAAOr+I,EACPs+I,MAAOpgJ,EAAIQ,OAEP6/I,EAAergJ,EAAIW,OAAO,CAAE0I,MAAOrJ,EAAI8E,OACvCpE,EAAcV,EAAIW,OAAO,CAC7BqqH,aAAchrH,EAAIa,IAAIb,EAAI2B,MAC1B0jI,aAAcrlI,EAAIa,IAAIb,EAAI0J,KAC1ButC,SAAUj3C,EAAIa,IAAIb,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAMs+I,KAC9CK,2BAA4BtgJ,EAAIa,IAAIb,EAAIgB,OACxCu/I,gCAAiCvgJ,EAAIa,IAAIb,EAAIgB,OAC7Cw/I,qBAAsBxgJ,EAAIa,IAAIq/I,GAC9BO,gBAAiBzgJ,EAAIa,IAAIb,EAAIqkH,OAC7BgI,WAAYrsH,EAAIa,IAAIb,EAAI2B,MACxB++I,cAAe1gJ,EAAIa,IAAIw/I,KAEnBM,EAAiB3gJ,EAAIW,OAAO,CAChCigJ,sBAAuB5gJ,EAAIgB,MAC3B6/I,8BAA+B7gJ,EAAIa,IAAIb,EAAIgB,OAC3C8/I,kBAAmB9gJ,EAAIgB,MACvB+/I,uBAAwB/gJ,EAAIa,IAAIb,EAAIgB,OACpCggJ,4BAA6BhhJ,EAAIa,IAAIb,EAAIgB,OACzCigJ,2BAA4BjhJ,EAAIa,IAAIb,EAAIgB,OACxCkgJ,cAAelhJ,EAAIK,YAEfoB,EAAWzB,EAAIW,OAAO,CAC1BoP,SAAU/P,EAAIa,IAAIb,EAAImC,MACtB6oH,aAAchrH,EAAI2B,KAClB0jI,aAAcrlI,EAAI0J,IAClButC,SAAUj3C,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAMs+I,IACtCx8B,gBAAiB3hH,EACjBq/I,iBAAkBnhJ,EAAII,IAAIJ,EAAIy7D,MAAM35D,EAAS9B,EAAI0J,MACjD42I,2BAA4BtgJ,EAAIa,IAAIb,EAAIgB,OACxCu/I,gCAAiCvgJ,EAAIa,IAAIb,EAAIgB,OAC7CogJ,sBAAuBphJ,EAAIa,IAAIiB,GAC/Bu/I,gBAAiBV,EACjBF,gBAAiBzgJ,EAAIa,IAAIb,EAAIqkH,OAC7BgI,WAAYrsH,EAAI2B,KAChB++I,cAAe1gJ,EAAIa,IAAIw/I,KAMnBiB,GAJiBthJ,EAAIE,QAAQ,CACjC6B,QAAS/B,EAAIa,IAAIH,GACjBsB,KAAMP,IAEiBzB,EAAIW,OAAO,CAClCwH,MAAOnI,EAAI0J,IACXtB,OAAQpI,EAAI0J,OAEdtJ,EAAI8a,KACFlb,EAAII,IACFJ,EAAIE,QAAQ,CACV+J,IAAKjK,EAAIiK,IACTqyG,IAAKt8G,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM0b,IACjC3T,IAAK1J,EAAI0J,IACT1I,MAAOhB,EAAIgB,MACXu8I,KAAMv9I,EAAII,IAAIJ,EAAImC,MAClBR,KAAM3B,EAAI2B,KACV89B,MAAOr/B,MAIbid,EAAMnC,KACJlb,EAAIE,QAAQ,CACV+J,IAAKjK,EAAIiK,IACTqyG,IAAKt8G,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM0b,IACjC3T,IAAK1J,EAAI0J,IACT1I,MAAOhB,EAAIgB,MACXu8I,KAAMv9I,EAAII,IAAIJ,EAAImC,MAClBR,KAAM3B,EAAI2B,KACV89B,MAAOr/B,KAGX,MAAMmhJ,EAAavhJ,EAAIW,OAAO,CAAEk9I,OAAQ79I,EAAII,IAAIid,KAC1CmkI,EAAgBxhJ,EAAIW,OAAO,CAC/B47B,SAAUv8B,EAAI6H,KAAK,CAACy5I,GAAmB,CAACC,GAAa,CAAC,UACtDp5I,MAAOnI,EAAI0J,IACXtB,OAAQpI,EAAI0J,MAER+3I,EAAoBzhJ,EAAIW,OAAO,CACnC+gJ,YAAa1hJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACjCi9I,YAAap/I,EAAI0J,IACjBm0I,OAAQ79I,EAAII,IAAIid,GAChBskI,aAAc3hJ,EAAIgB,MAClB4gJ,gBAAiB5hJ,EAAII,IAAIohJ,KAErBK,EAAkB7hJ,EAAIW,OAAO,CACjC+gJ,YAAa1hJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACjC2/I,UAAW9hJ,EAAII,IAAIJ,EAAImC,QAEnB48I,EAAO/+I,EAAIW,OAAO,CACtB+zB,KAAM5yB,EACNwlC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1Bs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,IACZy1C,QAASn/C,EAAIa,IAAIiB,KAEbk9I,EAAOh/I,EAAIW,OAAO,CACtB0hB,GAAIvgB,EACJwlC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1Bs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,MAERq4I,EAAU/hJ,EAAIW,OAAO,CACzBoD,IAAK/D,EAAIa,IAAIb,EAAI0J,KACjBgrB,KAAM5yB,EACNwlC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1Bs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,IACZs4I,mBAAoBhiJ,EAAIa,IAAIb,EAAI0J,KAChCu4I,WAAYjiJ,EAAIa,IAAIb,EAAIgB,OACxBm+C,QAASr9C,IAELm9I,EAAWj/I,EAAIW,OAAO,CAC1B0hB,GAAIvgB,EACJiC,IAAK/D,EAAIa,IAAIb,EAAI0J,KACjBgrB,KAAM5yB,EACNwlC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1Bs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,IACZy1C,QAASn/C,EAAIa,IAAIiB,KAEb+wI,EAAc7yI,EAAIW,OAAO,CAC7B+mG,KAAM1nG,EAAIa,IAAIk+I,GACdrB,KAAM19I,EAAI2B,KACV8lG,KAAMznG,EAAIa,IAAIm+I,GACd3/F,QAASr/C,EAAIa,IAAIkhJ,GACjB5+C,UAAWnjG,EAAIgB,MACf+2D,SAAU/3D,EAAIa,IAAIo+I,KAEdiD,EAAmBliJ,EAAIW,OAAO,CAClC2iF,aAActjF,EAAII,IAAIyyI,KAElBsP,EAAkBniJ,EAAIW,OAAO,CACjC47B,SAAUv8B,EAAI6H,KAAK,CAACy5I,GAAmB,CAACY,GAAmB,CAAC,UAC5D/5I,MAAOnI,EAAI0J,IACXtB,OAAQpI,EAAI0J,MAERy1I,EAA0Bn/I,EAAIW,OAAO,CACzCy+I,YAAap/I,EAAI0J,IACjB21I,WAAYr/I,EAAI0J,IAChB45E,aAActjF,EAAII,IAAIyyI,GACtByM,sBAAuBt/I,EAAII,IAAI+hJ,KAE3BC,EAAiBpiJ,EAAIW,OAAO,CAAEq5F,IAAKh6F,EAAI2B,KAAM6O,KAAMxQ,EAAI2B,OACvD0gJ,EAAcriJ,EAAIW,OAAO,CAC7B0hB,GAAIvgB,EACJiC,IAAK/D,EAAIa,IAAIb,EAAI0J,KACjB49B,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1B0E,gBAAiB7G,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACrCs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,MAER00I,EAAgBp+I,EAAIE,QAAQ,CAChC2F,aAAc7F,EAAIW,OAAO,CACvBkhB,QAAS7hB,EAAI2B,KACboE,WAAY/F,EAAI0J,MAElB1D,uBAAwBhG,EAAIQ,KAC5B69I,QAASr+I,EAAIW,OAAO,CAAE+iH,gBAAiB1jH,EAAI0J,MAC3C40I,UAAWt+I,EAAIW,OAAO,CAAE49I,aAAcv+I,EAAI0J,MAC1C80I,OAAQx+I,EAAIW,OAAO,CAAE89I,aAAcz+I,EAAI0J,MACvCg1I,gBAAiB1+I,EAAIW,OAAO,CAAEg+I,YAAa3+I,EAAIgB,QAC/C49I,OAAQ5+I,EAAIQ,KACZ2F,kBAAmBnG,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,QAEzCmB,EAAS7K,EAAIE,QAAQ,CAAEsI,GAAIxI,EAAI0J,IAAKjB,IAAK21I,IACzCkE,EAAgBtiJ,EAAIW,OAAO,CAC/BgD,QAAS7B,EACTq9C,QAASr9C,IAELygJ,EAAYviJ,EAAIW,OAAO,CAC3BqG,UAAWhH,EAAI0J,IACfu4I,WAAYjiJ,EAAIa,IAAIb,EAAIgB,SAEpBwhJ,EAAcxiJ,EAAIW,OAAO,CAC7BoD,IAAK/D,EAAIa,IAAIb,EAAI0J,KACjB49B,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1B0E,gBAAiB7G,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACrCs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,IACZs4I,mBAAoBhiJ,EAAIa,IAAIb,EAAI0J,KAChCu4I,WAAYjiJ,EAAIa,IAAIb,EAAIgB,OACxBm+C,QAASr9C,IAEL2gJ,EAAeziJ,EAAIE,QAAQ,CAC/B2F,aAAc7F,EAAIW,OAAO,CACvBkhB,QAAS7hB,EAAI2B,KACboE,WAAY/F,EAAI0J,MAElB1D,uBAAwBhG,EAAIQ,KAC5B89I,UAAWt+I,EAAIW,OAAO,CAAE49I,aAAcv+I,EAAI0J,MAC1C80I,OAAQx+I,EAAIW,OAAO,CAAE89I,aAAcz+I,EAAI0J,MACvCg5I,iBAAkB1iJ,EAAIW,OAAO,CAAEgiJ,kBAAmB3iJ,EAAI0J,MACtDg1I,gBAAiB1+I,EAAIW,OAAO,CAAEg+I,YAAa3+I,EAAIgB,QAC/C49I,OAAQ5+I,EAAIQ,KACZoiJ,QAAS5iJ,EAAIW,OAAO,CAAEg+I,YAAa3+I,EAAIgB,QACvCmF,kBAAmBnG,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,QAEzCY,EAAWtK,EAAIE,QAAQ,CAAEsI,GAAIxI,EAAI0J,IAAKjB,IAAKg6I,IAC3CI,EAAmB7iJ,EAAIW,OAAO,CAClC0hB,GAAIvgB,EACJiC,IAAK/D,EAAIa,IAAIb,EAAI0J,KACjBo5I,mBAAoB9iJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACxCuyB,KAAM5yB,EACNwlC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1Bs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,MAERq5I,EAAoB/iJ,EAAIE,QAAQ,CACpC2F,aAAc7F,EAAIW,OAAO,CACvBkhB,QAAS7hB,EAAI2B,KACboE,WAAY/F,EAAI0J,MAElB1D,uBAAwBhG,EAAIQ,KAC5BuG,sBAAuB/G,EAAIW,OAAO,CAAEqG,UAAWhH,EAAI0J,MACnD20I,QAASr+I,EAAIW,OAAO,CAAE+iH,gBAAiB1jH,EAAI0J,MAC3C40I,UAAWt+I,EAAIW,OAAO,CAAE49I,aAAcv+I,EAAI0J,MAC1C80I,OAAQx+I,EAAIW,OAAO,CAAE89I,aAAcz+I,EAAI0J,MACvCg1I,gBAAiB1+I,EAAIW,OAAO,CAAEg+I,YAAa3+I,EAAIgB,QAC/C49I,OAAQ5+I,EAAIQ,KACZ2F,kBAAmBnG,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,QAEzCiB,EAAW3K,EAAIE,QAAQ,CAAEsI,GAAIxI,EAAI0J,IAAKjB,IAAKs6I,IACjD,OAAO/iJ,EAAI2H,QAAQ,CACjBi2I,WAAY59I,EAAI6H,KAAK,CAACy5I,GAAmB,CAACG,GAAoB,CAAC,UAC/DuB,qBAAsBhjJ,EAAI6H,KAAK,GAAI,CAACg6I,GAAkB,CAAC,UACvD9D,iBAAkB/9I,EAAI6H,KAAK,CAACy5I,GAAmB,CAACnC,GAA0B,CAAC,UAC3EI,iBAAkBv/I,EAAI6H,KAAK,CAAC/F,GAAU,CAAC9B,EAAI0J,KAAM,CAAC,UAClD81I,eAAgBx/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAImC,MAAO,CAAC,UAC1Cs9I,UAAWz/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACpCg2I,eAAgB1/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAMs+I,KAAkB,CAAC,UAC7EN,sBAAuB3/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAIa,IAAIiB,IAAW,CAAC,UACzD89I,WAAY5/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtCs3D,0BAA2Bj5D,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIgiJ,IAAkB,CAAC,UACpEvC,aAAc7/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACxCm+I,mBAAoB9/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UAC7Cs2I,eAAgBhgJ,EAAI6H,KAAK,CAACw6I,GAAc,CAACx3I,GAAS,IAClDo4I,gBAAiBjjJ,EAAI6H,KAAK,CAACy6I,GAAgB,CAACC,GAAY,CAAC,UACzDW,cAAeljJ,EAAI6H,KAAK,CAAC26I,GAAc,CAACl4I,GAAW,IACnD64I,oBAAqBnjJ,EAAI6H,KAAK,CAACg7I,GAAmB,CAACl4I,GAAW,KAC9D,EClPSy4I,EAAen6I,GAC1BF,EAAMC,OAAoB,CACxBlJ,WAAYujJ,EACZp6I,eAGS+vD,EAAQA,CAAC/vD,EAAoBH,IACxCC,EAAMC,OAAsB,CAC1BF,WACAhJ,WAAYwjJ,EACZr6I,eAGSI,GAAQA,CAACJ,EAAoBH,IACxCC,EAAMC,OAAc,CAClBF,WACAhJ,WAAYyjJ,EACZt6I,eC5BJ,GAAelJ,IAAY,IAAX,IAAEC,GAAKD,EACrB,MAAMyjJ,EAAUxjJ,EAAIE,QAAQ,CAC1B6G,sBAAuB/G,EAAIQ,KAC3B+5D,oBAAqBv6D,EAAIQ,KACzBg6D,oBAAqBx6D,EAAIQ,KACzBi6D,aAAcz6D,EAAIQ,KAClBk6D,WAAY16D,EAAIQ,KAChBm6D,QAAS36D,EAAIQ,KACbo6D,MAAO56D,EAAIQ,KACXq6D,UAAW76D,EAAIQ,KACfs6D,eAAgB96D,EAAIQ,OAEhB85D,EAAYt6D,EAAIE,QAAQ,CAAEsI,GAAIxI,EAAI0J,IAAKjB,IAAK+6I,IAC5CC,EAAgBzjJ,EAAIgB,MACpB0iJ,EAAY1jJ,EAAIE,QAAQ,CAC5Bq6D,oBAAqBv6D,EAAIQ,KACzB4uE,qBAAsBpvE,EAAIQ,KAC1B6uE,uBAAwBrvE,EAAIQ,OAExBmjJ,EAAa3jJ,EAAIE,QAAQ,CAAEsI,GAAIi7I,EAAeh7I,IAAKi7I,IACnDE,EAAoB5jJ,EAAIE,QAAQ,CACpC2jJ,OAAQ7jJ,EAAIQ,KACZsjJ,UAAW9jJ,EAAIQ,OAEXujJ,EAAc/jJ,EAAIE,QAAQ,CAC9B6hJ,QAAS/hJ,EAAIW,OAAO,CAAE0hB,GAAIriB,EAAIK,UAAWq0B,KAAM10B,EAAIK,YACnD0+I,KAAM/+I,EAAIW,OAAO,CAAE0hB,GAAIriB,EAAIK,UAAWq0B,KAAM10B,EAAIK,YAChD2+I,KAAMh/I,EAAIW,OAAO,CAAE0hB,GAAIriB,EAAIK,YAC3B2jJ,gBAAiBhkJ,EAAIW,OAAO,CAC1B+zB,KAAM10B,EAAIK,UACVytC,SAAU9tC,EAAIK,YAEhB4jJ,eAAgBjkJ,EAAIW,OAAO,CACzB+zB,KAAM10B,EAAIK,UACV6jJ,YAAalkJ,EAAI2B,KACjBmsC,SAAU9tC,EAAIK,YAEhB4+I,SAAUj/I,EAAIW,OAAO,CAAE0hB,GAAIriB,EAAIK,UAAWq0B,KAAM10B,EAAIK,YACpD8jJ,aAAcnkJ,EAAIW,OAAO,CACvB0hB,GAAIriB,EAAIK,UACRq0B,KAAM10B,EAAIK,UACV+jJ,OAAQpkJ,EAAIK,cAGV+C,EAAQpD,EAAIW,OAAO,CACvBoD,IAAK/D,EAAIgB,MACTuzB,OAAQqvH,EACRlG,KAAMqG,EACN3oF,OAAQp7D,EAAIgB,MACZmiG,UAAWnjG,EAAIgB,QAEXqjJ,EAAmBrkJ,EAAIW,OAAO,CAClC25C,KAAMt6C,EAAII,IAAIgD,GACdkhJ,YAAab,EACbc,iBAAkBvkJ,EAAIa,IAAIb,EAAIK,aAE1B06D,EAAW/6D,EAAIW,OAAO,CAC1BoD,IAAK/D,EAAI0J,IACTqG,SAAU/P,EAAImC,KACdF,MAAOjC,EAAIK,UACXgR,KAAMrR,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACVw1C,YAAan3C,EAAI0J,IACjB4G,OAAQtQ,EAAI2B,OAERmmI,EAAY9nI,EAAIE,QAAQ,CAC5Bw8D,aAAc18D,EAAIQ,KAClBknG,KAAM1nG,EAAIQ,KACVinG,KAAMznG,EAAIQ,KACV6+C,QAASr/C,EAAIQ,KACbgkJ,eAAgBxkJ,EAAIQ,KACpBu3D,SAAU/3D,EAAIQ,KACdikJ,gBAAiBzkJ,EAAIQ,OAEjBkkJ,EAAO1kJ,EAAIiK,IACX06I,EAAW3kJ,EAAIW,OAAO,CAC1BikJ,GAAI9c,EACJzlH,GAAIriB,EAAIK,UACR0D,IAAK/D,EAAI0J,IACT6qB,OAAQqvH,EACRlvH,KAAM10B,EAAIK,UACV8iG,UAAWuhD,EACXN,OAAQpkJ,EAAIa,IAAIb,EAAIK,WACpB8W,MAAOnX,EAAI0J,IACX9F,OAAQ5D,EAAI0J,MAERm7I,EAAY7kJ,EAAIE,QAAQ,CAAEmvE,uBAAwBrvE,EAAIQ,OACtDskJ,EAAa9kJ,EAAIE,QAAQ,CAAEsI,GAAIi7I,EAAeh7I,IAAKo8I,IACnDE,EAAQ/kJ,EAAIW,OAAO,CACvBoD,IAAK/D,EAAI0J,IACTs7I,gBAAiBhlJ,EAAIgB,MACrBoF,QAASpG,EAAIgB,MACbikJ,YAAajlJ,EAAIgB,MACjBkkJ,qBAAsBllJ,EAAIgB,MAC1BmkJ,wBAAyBnlJ,EAAIgB,MAC7Bm3D,OAAQn4D,EAAI0J,IACZ07I,YAAaplJ,EAAIgB,MACjBqkJ,gBAAiBrlJ,EAAIgB,MACrBskJ,kBAAmBtlJ,EAAIgB,MACvBukJ,eAAgBvlJ,EAAIgB,QAEhBwkJ,EAAaxlJ,EAAIE,QAAQ,CAC7BsI,GAAIxI,EAAIW,OAAO,CAAE8kJ,OAAQzlJ,EAAII,IAAIJ,EAAImC,QACrCsG,IAAKzI,EAAI2B,OAEL+jJ,EAAe1lJ,EAAIE,QAAQ,CAC/BsI,GAAIxI,EAAIW,OAAO,CAAEgkI,YAAa3kI,EAAIK,YAClCoI,IAAKzI,EAAI2B,OAELgkJ,EAAa3lJ,EAAIE,QAAQ,CAAEsI,GAAIxI,EAAIQ,KAAMiI,IAAKzI,EAAI2B,OACxD,OAAO3B,EAAI2H,QAAQ,CACjBX,UAAWhH,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAIK,WAAY,CAACL,EAAI0J,KAAM,CAAC,UAChE21C,QAASr/C,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAAC4wD,GAAY,IACzDl0D,QAASpG,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIb,EAAIK,YAAa,CAACL,EAAIgB,OAAQ,IACzDs6D,UAAWt7D,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAI0J,KAAM,CAAC,UACjDg+F,KAAM1nG,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAEgkI,YAAa3kI,EAAIK,UAAWuD,OAAQ5D,EAAIgB,SAAW,CAAC2iJ,GAAa,IAC9F5zI,SAAU/P,EAAI6H,KAAK,GAAI,CAAC7H,EAAImC,MAAO,CAAC,UACpCyjJ,OAAQ5lJ,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAE07C,OAAQr8C,EAAIa,IAAIb,EAAIgB,OAAQs7C,MAAOt8C,EAAIqkH,SAAW,CAACggC,GAAmB,CAAC,UACtGtoF,YAAa/7D,EAAI6H,KAAK,GAAI,CAACkzD,GAAW,CAAC,UACvC8qF,eAAgB7lJ,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAACi7I,GAAW,IAChDmB,gBAAiB9lJ,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC1J,EAAII,IAAIukJ,IAAY,IACnE7G,gBAAiB99I,EAAI6H,KAAK,CAAC47I,GAAgB,CAACzjJ,EAAIa,IAAIuC,IAAS,IAC7D2iJ,KAAM/lJ,EAAI6H,KAAK,GAAI,GAAI,IACvBszD,YAAan7D,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACtC2H,KAAMrR,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAChC8lG,KAAMznG,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAACo7I,GAAa,IACvDt0I,KAAMxQ,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAChCqkJ,UAAWhmJ,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACrCskJ,MAAOjmJ,EAAI6H,KAAK,GAAI,CAACk9I,GAAQ,CAAC,UAC9Bz0I,OAAQtQ,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAClCw1C,YAAan3C,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACtCquD,SAAU/3D,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAAC4wD,GAAY,IAC1D4rF,cAAelmJ,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAAC4wD,GAAY,IAC/DoC,aAAc18D,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAIK,UAAWL,EAAI0J,KAAM,CAAC4wD,GAAY,IAC7E6rF,eAAgBnmJ,EAAI6H,KAAK,GAAI,CAAC7H,EAAIW,OAAO,CAAEiD,OAAQ5D,EAAIgB,SAAW,CAAC,UACnEolJ,YAAapmJ,EAAI6H,KACf,CACE7H,EAAIW,OAAO,CACTkhC,KAAM7hC,EAAII,IAAIJ,EAAImC,MAClBi5D,OAAQp7D,EAAIgB,MACZkjJ,YAAalkJ,EAAI2B,KACjBmsC,SAAU9tC,EAAIK,aAGlB,CAACmlJ,GACD,IAEFa,uBAAwBrmJ,EAAI6H,KAC1B,CACE7H,EAAIW,OAAO,CACT2oH,WAAYtpH,EAAIa,IAAIb,EAAIK,WACxB+6D,OAAQp7D,EAAIgB,SAGhB,CAAC0kJ,GACD,IAEFY,qBAAsBtmJ,EAAI6H,KACxB,CACE7H,EAAIW,OAAO,CACT2oH,WAAYtpH,EAAIa,IAAIb,EAAIK,WACxB+6D,OAAQp7D,EAAIgB,SAGhB,CAAC0kJ,GACD,IAEFa,YAAavmJ,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAEmtC,SAAU9tC,EAAIK,UAAWuD,OAAQ5D,EAAIgB,SAAW,CAAC2kJ,GAAa,KAErG,ECzKD,GAAe5lJ,IAAiB,IAAhB,IAAEC,GAAUD,EAC1B,MAAMu6D,EAAYt6D,EAAIE,QAAQ,CAC5BsI,GAAIxI,EAAI0J,IACRjB,IAAKzI,EAAIE,QAAQ,CACf6G,sBAAuB/G,EAAIQ,KAC3B+5D,oBAAqBv6D,EAAIQ,KACzBg6D,oBAAqBx6D,EAAIQ,KACzBi6D,aAAcz6D,EAAIQ,KAClBk6D,WAAY16D,EAAIQ,KAChBm6D,QAAS36D,EAAIQ,KACbo6D,MAAO56D,EAAI2B,KACXk5D,UAAW76D,EAAIQ,KACfs6D,eAAgB96D,EAAIQ,SAGlBu6D,EAAW/6D,EAAIW,OAAO,CAC1BoD,IAAK/D,EAAI0J,IACTqG,SAAU/P,EAAImC,KACdF,MAAOjC,EAAIK,UACXgR,KAAMrR,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACVw1C,YAAan3C,EAAI0J,IACjB4G,OAAQtQ,EAAI2B,OAER+iJ,EAAO1kJ,EAAIiK,IACX+wD,EAAYh7D,EAAIW,OAAO,CAC3Bs6D,aAAcj7D,EAAI0J,IAClBwxD,WAAYwpF,EACZztG,SAAU8jB,EACVI,YAAan7D,EAAI0J,IACjB0xD,OAAQp7D,EAAI0J,IACZ2xD,MAAOr7D,EAAIK,YAEb,OAAOL,EAAI2H,QAAQ,CACjBX,UAAWhH,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAIK,WAAY,CAACL,EAAI0J,KAAM,CAAC,UAChE21C,QAASr/C,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAAC4wD,GAAY,IACzDgB,UAAWt7D,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAI0J,KAAM,CAAC,UACjDg+F,KAAM1nG,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAAC4wD,GAAY,IACvCvqD,SAAU/P,EAAI6H,KAAK,GAAI,CAAC7H,EAAImC,MAAO,CAAC,UACpCy5D,iBAAkB57D,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UAC3C88I,WAAYxmJ,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC1J,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAI0J,OAAQ,CAAC,UACxFqyD,YAAa/7D,EAAI6H,KAAK,GAAI,CAACkzD,GAAW,CAAC,UACvCmB,YAAal8D,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACtC4uD,aAAct4D,EAAI6H,KAAK,GAAI,CAACmzD,GAAY,CAAC,UACzCmB,iBAAkBn8D,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAI0J,OAAQ,CAAC,UAC3FyxD,YAAan7D,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACtC2H,KAAMrR,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAChC8lG,KAAMznG,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAAC4wD,GAAY,IACtD9pD,KAAMxQ,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAChC06D,OAAQr8D,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,GAAI,CAAC,WACjC+8I,SAAUzmJ,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,CAAC,WACzCi8D,QAASt8D,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,GAAI,CAAC,WACnC66D,QAASx8D,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,GAAI,CAAC,WACnC86D,SAAUz8D,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,CAAC,WACzCiQ,OAAQtQ,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAClCw1C,YAAan3C,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACtCquD,SAAU/3D,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAAC4wD,GAAY,IAC1DoC,aAAc18D,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAIK,UAAWL,EAAI0J,KAAM,CAAC4wD,GAAY,KAEhF,EC3DD,GAAev6D,IAAY,IAAX,IAAEC,GAAKD,EACrB,OAAOC,EAAI2H,QAAQ,CACjB2zD,UAAWt7D,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAI0J,KAAM,KAEnD,ECJD,GAAe3J,IAAY,IAAX,IAAEC,GAAKD,EACrB,OAAOC,EAAI2H,QAAQ,CACjBwvC,YAAan3C,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,KAExC,ECSYg9I,GAAO59I,GAClBC,EAAMC,OAAY,CAChBF,WACAhJ,WAAY6mJ,GACZ19I,WAAY,gCAGH29I,GAAQA,CAAC39I,EAAoBH,IACxCC,EAAMC,OAAc,CAClBF,WACAhJ,WAAY+mJ,GACZ59I,eAGS69I,GAAoBA,CAC/B79I,EACAH,IAEAC,EAAMC,OAAqB,CACzBF,WACAhJ,WAAYinJ,GACZ99I,eAGS+9I,GAAmBA,CAC9B/9I,EACAH,IAEAC,EAAMC,OAAoB,CACxBF,WACAhJ,WAAYmnJ,GACZh+I,eC5CSnJ,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMmnJ,EAAUlnJ,EAAI0J,IACd4zD,EAAoBt9D,EAAI2B,KACxBwlJ,EAAOnnJ,EAAIE,QAAQ,CACvBuO,UAAWzO,EAAIK,UACfoE,QAAS64D,IAELzf,EAAa79C,EAAII,IAAIJ,EAAImC,MACzBilJ,EAAmBpnJ,EAAIW,OAAO,CAClCsB,MAAOklJ,EACPjlJ,WAAYlC,EAAIa,IAAIg9C,GACpBsB,QAASn/C,EAAIK,YAETgnJ,EAAarnJ,EAAI0J,IACjB49I,EAAkBtnJ,EAAI2B,KACtB4lJ,EAAiBvnJ,EAAIE,QAAQ,CACjCq6D,oBAAqBv6D,EAAIQ,KACzBgnJ,aAAcF,EACd7sF,aAAc6C,EACd1C,MAAO56D,EAAI2B,OAEPgJ,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAI88I,EAAY78I,IAAK+8I,IAC9CE,EAAiBznJ,EAAIW,OAAO,CAChCuB,WAAYlC,EAAIa,IAAIg9C,GACpB72C,UAAWkgJ,EACX/nG,QAASn/C,EAAIK,YAETwiH,EAAW7iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAK+8I,IAC5CG,EAAiB1nJ,EAAIW,OAAO,CAChCsO,MAAOq4I,EACP7pF,KAAM0pF,IAEFh9I,EAAcnK,EAAIE,QAAQ,CAC9Bq6D,oBAAqBv6D,EAAIQ,KACzBgnJ,aAAcF,EACd7sF,aAAc6C,EACd1C,MAAO56D,EAAI2B,OAEPgmJ,EAAkB3nJ,EAAIE,QAAQ,CAAEqK,GAAI28I,EAAS18I,IAAKL,IAClDy9I,EAAW5nJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAK+8I,IAC3CM,EAAY7nJ,EAAI2B,KAChBmmJ,EAAiB9nJ,EAAIW,OAAO,CAChC07C,OAAQr8C,EAAIa,IAAIb,EAAI0J,KACpB4yC,MAAOt8C,EAAIa,IAAIb,EAAI0J,OAEfq+I,EAAS/nJ,EAAIW,OAAO,CACxByF,QAASpG,EAAI0J,IACb/F,QAAS25D,IAEL0qF,EAAShoJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAI2nJ,GACjB1rG,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfu+I,EAAWjoJ,EAAIE,QAAQ,CAAEqK,GAAIy9I,EAAQx9I,IAAKL,IAC1C+9I,EAAWloJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAK+8I,IAC5CxsF,EAAW/6D,EAAIE,QAAQ,CAC3BioJ,SAAUnoJ,EAAIW,OAAO,CACnBoP,SAAU/P,EAAImC,KACdimJ,aAAc9qF,EACdrmB,SAAUj3C,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC9BqO,KAAMxQ,EAAI2B,KACV2O,OAAQtQ,EAAI2B,OAEd0mJ,YAAaroJ,EAAIW,OAAO,CAAEs2C,SAAUj3C,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,WAEpDohH,EAAWvjH,EAAIE,QAAQ,CAAEqK,GAAIwwD,EAAUvwD,IAAK+8I,IAC5Ce,EAActoJ,EAAIW,OAAO,CAAE0hB,GAAI8kI,EAAMvjJ,OAAQsjJ,IAC7CqB,EAAmBvoJ,EAAIE,QAAQ,CACnCqK,GAAI28I,EACJ18I,IAAKxK,EAAIE,QAAQ,CACf6G,sBAAuB/G,EAAIQ,KAC3BgoJ,aAAclrF,EACd/C,oBAAqBv6D,EAAIQ,KACzBgnJ,aAAcF,EACdmB,SAAUzoJ,EAAIQ,KACdi6D,aAAc6C,EACd1C,MAAO56D,EAAI2B,SAGT+mJ,EAAuB1oJ,EAAI2B,KAC3BgnJ,EAAU3oJ,EAAIE,QAAQ,CAC1BuO,UAAWzO,EAAIK,UACfoE,QAAS64D,IAELhzD,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKL,IAC3Cy+I,EAAqB5oJ,EAAIW,OAAO,CACpCuhF,KAAMliF,EAAIa,IAAIb,EAAI2B,MAClB87D,KAAMz9D,EAAIa,IAAIsmJ,GACd9qG,OAAQr8C,EAAIa,IAAIb,EAAI0J,KACpB4yC,MAAOt8C,EAAIa,IAAIb,EAAI0J,KACnByN,MAAOnX,EAAIa,IAAIb,EAAI0J,OAEfm/I,EAAY7oJ,EAAIE,QAAQ,CAC5BwnG,KAAM1nG,EAAIQ,KACVinG,KAAMznG,EAAIQ,KACV6+C,QAASr/C,EAAIQ,KACbu3D,SAAU/3D,EAAIQ,OAEVqyI,EAAc7yI,EAAIW,OAAO,CAC7B0hB,GAAIi7C,EACJv5D,IAAKmjJ,EACL3yH,OAAQv0B,EAAI2B,KACZmnJ,UAAWD,EACXn0H,KAAM4oC,EACN4kB,KAAMliF,EAAI2B,KACV2lC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1BghG,UAAWnjG,EAAIiK,IACfkN,MAAOnX,EAAI0J,IACX9F,OAAQsjJ,IAEJrjC,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIyyI,GACjBx2F,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfmB,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKL,IACtC8zI,EAAOj+I,EAAII,IAAIJ,EAAImC,MACnB4mJ,EAAkB/oJ,EAAIW,OAAO,CACjC0hB,GAAI8kI,EACJl4I,MAAOq4I,EACP0B,OAAQhpJ,EAAI8E,KACZ4vB,KAAMyyH,EACN7/G,KAAM22G,EACN/7I,WAAYlC,EAAIa,IAAIg9C,GACpBi1D,MAAO9yG,EAAIa,IAAIb,EAAI0J,KACnB9F,OAAQsjJ,IAwBV,OAtBclnJ,EAAI2H,QAAQ,CACxBX,UAAWhH,EAAI6H,KAAK,CAACu/I,GAAmB,CAACz8I,GAAW,CAAC,UACrD00C,QAASr/C,EAAI6H,KAAK,CAAC4/I,GAAiB,CAAC5kC,GAAW,IAChDz8G,QAASpG,EAAI6H,KAAK,CAAC6/I,GAAiB,CAACC,GAAkB,CAAC,UACxD5kC,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+/I,GAAW,IACzC5kC,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+/I,GAAW,CAAC,UACxCqB,WAAYjpJ,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIynJ,IAAa,CAAC,UAChDqB,OAAQlpJ,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,CAAC,UAClCw+I,QAASnpJ,EAAI6H,KAAK,CAACigJ,GAAiB,CAACG,GAAW,CAAC,UACjD52I,KAAMrR,EAAI6H,KAAK,GAAI,CAACqgJ,GAAW,CAAC,UAChCjxG,SAAUj3C,EAAI6H,KAAK,GAAI,CAAC07G,GAAW,CAAC,UACpC9b,KAAMznG,EAAI6H,KAAK,CAACygJ,GAAc,CAACC,GAAmB,IAClDa,SAAUppJ,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMitF,EAAsBrB,KAAe,CAAC,UAChFhrF,OAAQr8D,EAAI6H,KAAK,CAACw/I,GAAa,CAACxkC,GAAW,IAC3C4jC,SAAUzmJ,EAAI6H,KAAK,CAAC8gJ,GAAU,CAAC9lC,GAAW,IAC1CvmD,QAASt8D,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACkhH,GAAW,IAC1C1qD,OAAQn4D,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,CAAC,UAClC0+I,aAAcrpJ,EAAI6H,KAAK,GAAI,CAACyC,GAAW,CAAC,UACxCg5E,aAActjF,EAAI6H,KAAK,CAAC+gJ,GAAqB,CAAC/9I,GAAS,CAAC,UACxDktD,SAAU/3D,EAAI6H,KAAK,CAACkhJ,GAAkB,CAACR,GAAmB,IAC1D7rF,aAAc18D,EAAI6H,KAAK,CAACkhJ,GAAkB,CAACR,GAAmB,KAEpD,ECxJDzoJ,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMmnJ,EAAUlnJ,EAAI0J,IACd4zD,EAAoBt9D,EAAI2B,KACxBwlJ,EAAOnnJ,EAAIE,QAAQ,CACvBuO,UAAWzO,EAAIK,UACfoE,QAAS64D,IAELzf,EAAa79C,EAAII,IAAIJ,EAAImC,MACzBilJ,EAAmBpnJ,EAAIW,OAAO,CAClCsB,MAAOklJ,EACPjlJ,WAAYlC,EAAIa,IAAIg9C,GACpBsB,QAASn/C,EAAIK,YAETgnJ,EAAarnJ,EAAI0J,IACjB49I,EAAkBtnJ,EAAI2B,KACtB4lJ,EAAiBvnJ,EAAIE,QAAQ,CACjCq6D,oBAAqBv6D,EAAIQ,KACzBgnJ,aAAcF,EACd7sF,aAAc6C,EACd1C,MAAO56D,EAAI2B,OAEP4hH,EAAWvjH,EAAIE,QAAQ,CAAEqK,GAAI88I,EAAY78I,IAAK+8I,IAC9CE,EAAiBznJ,EAAIW,OAAO,CAChCuB,WAAYlC,EAAIa,IAAIg9C,GACpB72C,UAAWkgJ,EACX/nG,QAASn/C,EAAIK,YAET6nJ,EAAWloJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAK+8I,IAC5CG,EAAiB1nJ,EAAIW,OAAO,CAChCsO,MAAOq4I,EACP7pF,KAAM0pF,IAEFh9I,EAAcnK,EAAIE,QAAQ,CAC9Bq6D,oBAAqBv6D,EAAIQ,KACzBgnJ,aAAcF,EACd7sF,aAAc6C,EACd1C,MAAO56D,EAAI2B,OAEPgmJ,EAAkB3nJ,EAAIE,QAAQ,CAAEqK,GAAI28I,EAAS18I,IAAKL,IAClDm/I,EAAYtpJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAK+8I,IAC5CM,EAAY7nJ,EAAI2B,KAChBmmJ,EAAiB9nJ,EAAIW,OAAO,CAChC07C,OAAQr8C,EAAIa,IAAIb,EAAI0J,KACpB4yC,MAAOt8C,EAAIa,IAAIb,EAAI0J,OAEfq+I,EAAS/nJ,EAAIW,OAAO,CACxByF,QAASpG,EAAI0J,IACb/F,QAAS25D,IAELisF,EAASvpJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAI2nJ,GACjB1rG,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf8/I,EAAWxpJ,EAAIE,QAAQ,CAAEqK,GAAIg/I,EAAQ/+I,IAAKL,IAC1Cs/I,EAAWzpJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAK+8I,IAC5CxsF,EAAW/6D,EAAIE,QAAQ,CAC3BioJ,SAAUnoJ,EAAIW,OAAO,CACnBoP,SAAU/P,EAAImC,KACdimJ,aAAc9qF,EACdrmB,SAAUj3C,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC9BqO,KAAMxQ,EAAI2B,KACV2O,OAAQtQ,EAAI2B,OAEd0mJ,YAAaroJ,EAAIW,OAAO,CAAEs2C,SAAUj3C,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,WAEpDylJ,EAAW5nJ,EAAIE,QAAQ,CAAEqK,GAAIwwD,EAAUvwD,IAAK+8I,IAC5CmC,EAAc1pJ,EAAIgB,MAClBsnJ,EAActoJ,EAAIW,OAAO,CAAE0hB,GAAI8kI,EAAMwC,YAAaD,IAClDzB,EAAWjoJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKL,IAC5Cu+I,EAAuB1oJ,EAAI2B,KAC3BgnJ,EAAU3oJ,EAAIE,QAAQ,CAC1BuO,UAAWzO,EAAIK,UACfoE,QAAS64D,IAELulD,EAAW7iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKL,IAC3Cy+I,EAAqB5oJ,EAAIW,OAAO,CACpCuhF,KAAMliF,EAAIa,IAAIb,EAAI2B,MAClB87D,KAAMz9D,EAAIa,IAAIsmJ,GACd9qG,OAAQr8C,EAAIa,IAAIb,EAAI0J,KACpB4yC,MAAOt8C,EAAIa,IAAIb,EAAI0J,KACnByN,MAAOnX,EAAIa,IAAIb,EAAI0J,OAEfm/I,EAAY7oJ,EAAIE,QAAQ,CAC5BwnG,KAAM1nG,EAAIQ,KACVinG,KAAMznG,EAAIQ,KACV6+C,QAASr/C,EAAIQ,KACbu3D,SAAU/3D,EAAIQ,OAEVqyI,EAAc7yI,EAAIW,OAAO,CAC7B0hB,GAAIi7C,EACJv5D,IAAKmjJ,EACL3yH,OAAQv0B,EAAI2B,KACZmnJ,UAAWD,EACXn0H,KAAM4oC,EACN4kB,KAAMliF,EAAI2B,KACV2lC,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1BghG,UAAWnjG,EAAIiK,IACfkN,MAAOnX,EAAI0J,IACX9F,OAAQsjJ,IAEJc,EAAShoJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAIyyI,GACjBx2F,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfiB,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAIy9I,EAAQx9I,IAAKL,IAC1C8zI,EAAOj+I,EAAII,IAAIJ,EAAImC,MACnB4mJ,EAAkB/oJ,EAAIW,OAAO,CACjC0hB,GAAI8kI,EACJl4I,MAAOq4I,EACP0B,OAAQhpJ,EAAI8E,KACZ4vB,KAAMyyH,EACN7/G,KAAM22G,EACN/7I,WAAYlC,EAAIa,IAAIg9C,GACpBi1D,MAAO9yG,EAAIa,IAAIb,EAAI0J,KACnB9F,OAAQsjJ,IAEJqB,EAAmBvoJ,EAAIE,QAAQ,CACnCqK,GAAI28I,EACJ18I,IAAKxK,EAAIE,QAAQ,CACf6G,sBAAuB/G,EAAIQ,KAC3BgoJ,aAAclrF,EACd/C,oBAAqBv6D,EAAIQ,KACzBgnJ,aAAcF,EACdmB,SAAUzoJ,EAAIQ,KACdi6D,aAAc6C,EACd1C,MAAO56D,EAAI2B,SAGTioJ,EAAkB5pJ,EAAIW,OAAO,CAAE0hB,GAAI8kI,EAAMvjJ,OAAQsjJ,IACjD2C,EAAiB7pJ,EAAIgB,MACrBsJ,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIs/I,EAAgBr/I,IAAKL,IAClD2/I,EAAc9pJ,EAAIW,OAAO,CAC7B88D,KAAMz9D,EAAIa,IAAIsmJ,GACd9qG,OAAQr8C,EAAIa,IAAIb,EAAI0J,KACpB4yC,MAAOt8C,EAAIa,IAAIb,EAAI0J,KACnByN,MAAOnX,EAAIa,IAAIb,EAAI0J,OAEfugC,EAAOjqC,EAAIgB,MACX+oJ,EAAW/pJ,EAAIE,QAAQ,CAAEmU,KAAMrU,EAAIQ,KAAMwpJ,OAAQhqJ,EAAIQ,OACrDypJ,EAAajqJ,EAAIW,OAAO,CAC5B0hB,GAAIi7C,EACJw+C,KAAM7xE,EACNvV,KAAM4oC,EACN4sF,SAAUH,EACVJ,YAAaD,EACbvyI,MAAOnX,EAAI0J,IACX9F,OAAQsjJ,IAEJrjC,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAI6pJ,GACjB5tG,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfmB,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKL,IAyB5C,OAxBkBnK,EAAI2H,QAAQ,CAC5BX,UAAWhH,EAAI6H,KAAK,CAACu/I,GAAmB,CAAC7jC,GAAW,CAAC,UACrDlkE,QAASr/C,EAAI6H,KAAK,CAAC4/I,GAAiB,CAACS,GAAW,IAChD9hJ,QAASpG,EAAI6H,KAAK,CAAC6/I,GAAiB,CAACC,GAAkB,CAAC,UACxD5kC,eAAgB/iH,EAAI6H,KAAK,GAAI,CAACyhJ,GAAY,IAC1CtmC,aAAchjH,EAAI6H,KAAK,GAAI,CAACyhJ,GAAY,CAAC,UACzCL,WAAYjpJ,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIynJ,IAAa,CAAC,UAChDqB,OAAQlpJ,EAAI6H,KAAK,GAAI,CAAC07G,GAAW,CAAC,UAClC4lC,QAASnpJ,EAAI6H,KAAK,CAACigJ,GAAiB,CAAC0B,GAAW,CAAC,UACjDn4I,KAAMrR,EAAI6H,KAAK,GAAI,CAAC4hJ,GAAW,CAAC,UAChCxyG,SAAUj3C,EAAI6H,KAAK,GAAI,CAAC+/I,GAAW,CAAC,UACpCngD,KAAMznG,EAAI6H,KAAK,CAACygJ,GAAc,CAACL,GAAW,IAC1CmB,SAAUppJ,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMitF,EAAsBrB,KAAe,CAAC,UAChFhrF,OAAQr8D,EAAI6H,KAAK,CAACw/I,GAAa,CAACa,GAAW,IAC3CzB,SAAUzmJ,EAAI6H,KAAK,CAAC8gJ,GAAU,CAACT,GAAW,IAC1C5rF,QAASt8D,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACumJ,GAAW,IAC1C/vF,OAAQn4D,EAAI6H,KAAK,GAAI,CAAC07G,GAAW,CAAC,UAClC8lC,aAAcrpJ,EAAI6H,KAAK,GAAI,CAACg7G,GAAW,CAAC,UACxCv/B,aAActjF,EAAI6H,KAAK,CAAC+gJ,GAAqB,CAACj+I,GAAW,CAAC,UAC1DotD,SAAU/3D,EAAI6H,KAAK,CAACkhJ,GAAkB,CAACR,GAAmB,IAC1D7rF,aAAc18D,EAAI6H,KAAK,CAACkhJ,GAAkB,CAACR,GAAmB,IAC9DxjG,SAAU/kD,EAAI6H,KAAK,CAAC+hJ,GAAkB,CAACt/I,GAAW,IAClD6/I,UAAWnqJ,EAAI6H,KAAK,CAACiiJ,GAAc,CAACj/I,GAAS,KAE/B,EC7KLu/I,GAAMA,CAACnhJ,EAAoBH,IACtCC,EAAMC,OAAiB,CACrBF,WACAG,aACAnJ,WAAYuqJ,KAGHC,GAAWxhJ,GACtBC,EAAMC,OAAgB,CACpBgD,UAAWC,EAAUqiC,KACrBxlC,WACAhJ,WAAYyqJ,KCrBHzqJ,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM+B,EAAU9B,EAAIW,OAAO,CACzBsB,MAAOjC,EAAIK,UACX6B,WAAYlC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAE5BzB,EAAcV,EAAIW,OAAO,CAC7B2/I,2BAA4BtgJ,EAAIa,IAAIb,EAAIgB,OACxC2+I,sBAAuB3/I,EAAIa,IAAIiB,KAE3Bs8E,EAASp+E,EAAIW,OAAO,CAAEyhI,IAAKpiI,EAAIgB,QAC/BwpJ,EAAWxqJ,EAAIW,OAAO,CAAE8pJ,KAAMzqJ,EAAIgB,MAAO0pJ,MAAO1qJ,EAAImB,QACpDw/I,EAAiB3gJ,EAAIW,OAAO,CAChCigJ,sBAAuB5gJ,EAAIgB,MAC3B6/I,8BAA+B7gJ,EAAIa,IAAIb,EAAIgB,OAC3C8/I,kBAAmB9gJ,EAAIgB,MACvB+/I,uBAAwB/gJ,EAAIa,IAAIb,EAAIgB,OACpCggJ,4BAA6BhhJ,EAAIa,IAAIb,EAAIgB,OACzCigJ,2BAA4BjhJ,EAAIa,IAAIb,EAAIgB,OACxCkgJ,cAAelhJ,EAAIK,YAEfoB,EAAWzB,EAAIW,OAAO,CAC1BgqJ,eAAgB3qJ,EAAII,IAAIJ,EAAIK,WAC5B2qH,aAAchrH,EAAIa,IAAIb,EAAI2B,MAC1B0jI,aAAcrlI,EAAIa,IAAIu9E,GACtBqlC,gBAAiBzjH,EAAI2B,KACrBipJ,mBAAoB5qJ,EAAIa,IAAI2pJ,GAC5BzJ,uBAAwB/gJ,EAAIa,IAAIb,EAAIgB,OACpC2+I,sBAAuB3/I,EAAIa,IAAIiB,GAC/Bu/I,gBAAiBrhJ,EAAIa,IAAI8/I,GACzBkK,eAAgB7qJ,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAMy8E,IAC5CiuC,WAAYrsH,EAAIa,IAAIb,EAAI2B,QAMpBmpJ,GAJwB9qJ,EAAIE,QAAQ,CACxC6B,QAAS/B,EAAIa,IAAIH,GACjBsB,KAAMP,IAEyBzB,EAAIW,OAAO,CAC1CgD,QAAS3D,EAAII,IAAIJ,EAAImC,SAEjB4oJ,EAAqB/qJ,EAAIW,OAAO,CAAEgD,QAAS3D,EAAI2B,OAC/CqpJ,EAAchrJ,EAAIW,OAAO,CAAEgkI,YAAa3kI,EAAIK,YAC5C4qJ,EAAWjrJ,EAAIW,OAAO,CAAEuqJ,SAAUlrJ,EAAII,IAAI4qJ,KAC1CG,EAAWnrJ,EAAIW,OAAO,CAAEoP,SAAU/P,EAAImB,QACtC8+I,EAAgBjgJ,EAAIE,QAAQ,CAChC+J,IAAKjK,EAAIiK,IACTP,IAAK1J,EAAI0J,IACT6zI,KAAMv9I,EAAII,IAAIJ,EAAImC,MAClBR,KAAM3B,EAAI2B,OAENygJ,EAAiBpiJ,EAAIW,OAAO,CAAEq5F,IAAKh6F,EAAI2B,KAAM6O,KAAMxQ,EAAI2B,OACvD0gJ,EAAcriJ,EAAIW,OAAO,CAC7B0hB,GAAIvgB,EACJiC,IAAK/D,EAAIa,IAAIb,EAAI0J,KACjB49B,KAAMtnC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC1B0E,gBAAiB7G,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACrCs7I,gBAAiBz9I,EAAIa,IAAIb,EAAIgB,OAC7B4C,OAAQ5D,EAAI0J,MAER00I,EAAgBp+I,EAAIE,QAAQ,CAChC2F,aAAc7F,EAAIW,OAAO,CACvBkhB,QAAS7hB,EAAI2B,KACboE,WAAY/F,EAAI0J,MAElB1D,uBAAwBhG,EAAIQ,KAC5B69I,QAASr+I,EAAIW,OAAO,CAAE+iH,gBAAiB1jH,EAAI0J,MAC3C40I,UAAWt+I,EAAIW,OAAO,CAAE49I,aAAcv+I,EAAI0J,MAC1C80I,OAAQx+I,EAAIW,OAAO,CAAE89I,aAAcz+I,EAAI0J,MACvCg1I,gBAAiB1+I,EAAIW,OAAO,CAAEg+I,YAAa3+I,EAAIgB,QAC/C49I,OAAQ5+I,EAAIQ,KACZ2F,kBAAmBnG,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,QAEzCmB,EAAS7K,EAAIE,QAAQ,CAAEsI,GAAIxI,EAAI0J,IAAKjB,IAAK21I,IACzCgN,EAAOprJ,EAAIW,OAAO,CAAE6P,KAAMxQ,EAAI2B,OAC9B0pJ,EAAgBrrJ,EAAIW,OAAO,CAC/BwH,MAAOnI,EAAIgB,MACXoH,OAAQpI,EAAIgB,QAERsqJ,EAAYtrJ,EAAIW,OAAO,CAAE4qJ,gBAAiBvrJ,EAAIgB,QAC9CwqJ,EAAkBxrJ,EAAIE,QAAQ,CAClC6hJ,QAAS/hJ,EAAIW,OAAO,CAClBoD,IAAKq6E,EACL1pD,KAAM10B,EAAII,IAAIJ,EAAImC,MAClBspJ,cAAezrJ,EAAIiK,IACnBjD,UAAWo3E,EACX6jE,WAAYjiJ,EAAIa,IAAIyqJ,GACpBnsG,QAASn/C,EAAII,IAAIJ,EAAImC,QAEvB48I,KAAM/+I,EAAIW,OAAO,CAAE+zB,KAAM10B,EAAII,IAAIJ,EAAImC,MAAOyB,OAAQw6E,IACpD4gE,KAAMh/I,EAAIW,OAAO,CAAE0hB,GAAIriB,EAAII,IAAIJ,EAAImC,MAAOyB,OAAQw6E,IAClD6gE,SAAUj/I,EAAIW,OAAO,CACnB0hB,GAAIriB,EAAII,IAAIJ,EAAImC,MAChB4B,IAAKq6E,EACL1pD,KAAM10B,EAAII,IAAIJ,EAAImC,MAClByB,OAAQw6E,IAEV+lE,aAAcnkJ,EAAIW,OAAO,CACvB0hB,GAAIriB,EAAII,IAAIJ,EAAImC,MAChB4B,IAAKq6E,EACL1pD,KAAM10B,EAAII,IAAIJ,EAAImC,MAClByB,OAAQw6E,EACRj/B,QAASn/C,EAAII,IAAIJ,EAAImC,UAGnBupJ,EAAoB1rJ,EAAIW,OAAO,CACnC2mC,KAAMtnC,EAAIgB,MACV2qJ,WAAY3rJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAChC+lI,UAAWloI,EAAIa,IAAI2qJ,GACnB/N,gBAAiB6N,IAEbM,EAAc5rJ,EAAIW,OAAO,CAC7B+9D,YAAagtF,EACbvoD,UAAWmoD,EACXO,YAAa7rJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAE7Bo/I,EAAavhJ,EAAIW,OAAO,CAAEk9I,OAAQ79I,EAAII,IAAIwrJ,KAC1CE,EAAiB9rJ,EAAIE,QAAQ,CACjC6rJ,mBAAoB/rJ,EAAIW,OAAO,CAC7BqrJ,gBAAiBhsJ,EAAIgB,MACrBirJ,kBAAmBjsJ,EAAIgB,QAEzB45D,MAAO56D,EAAIW,OAAO,CAChBmF,cAAe9F,EAAI2B,KACnBoE,WAAY/F,EAAIgB,UAGdkrJ,EAAsBlsJ,EAAIW,OAAO,CACrC47B,SAAUv8B,EAAI6H,KAAK,CAACwjJ,GAAgB,CAACrrJ,EAAIE,QAAQ,CAAEsI,GAAI+4I,EAAY94I,IAAKqjJ,KAAoB,CAAC,UAC7F3jJ,MAAOnI,EAAIgB,MACXoH,OAAQpI,EAAIgB,QAERmrJ,EAAsBnsJ,EAAIW,OAAO,CACrC+gJ,YAAa1hJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACjC07I,OAAQ79I,EAAII,IAAIwrJ,GAChBjK,aAAc3hJ,EAAIgB,MAClBorJ,kBAAmBpsJ,EAAIgB,MACvB4gJ,gBAAiB5hJ,EAAII,IAAI8rJ,KAErBG,EAA6BrsJ,EAAIW,OAAO,CAC5C47B,SAAUv8B,EAAI6H,KACZ,CAACwjJ,GACD,CACErrJ,EAAIE,QAAQ,CACVsI,GAAIxI,EAAII,IAAIJ,EAAII,IAAIJ,EAAImC,OACxBsG,IAAKqjJ,KAGT,CAAC,UAEH3jJ,MAAOnI,EAAIgB,MACXoH,OAAQpI,EAAIgB,QAERsrJ,EAA6BtsJ,EAAIW,OAAO,CAC5C+gJ,YAAa1hJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACjC07I,OAAQ79I,EAAII,IAAIJ,EAAII,IAAIJ,EAAImC,OAC5Bw/I,aAAc3hJ,EAAIgB,MAClBorJ,kBAAmBpsJ,EAAIgB,MACvB4gJ,gBAAiB5hJ,EAAII,IAAIisJ,KAErBE,EAAWvsJ,EAAIW,OAAO,CAC1B0hB,GAAIriB,EAAI2B,KACRoC,IAAKq6E,EACL92C,KAAMtnC,EAAIgB,MACV6F,gBAAiB7G,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACrCs7I,gBAAiBz9I,EAAIa,IAAIyqJ,GACzB1nJ,OAAQw6E,IAEJouE,EAASxsJ,EAAIW,OAAO,CAAE2P,OAAQtQ,EAAI2B,OAClC8qJ,EAAezsJ,EAAIW,OAAO,CAC9B0hB,GAAIriB,EAAII,IAAIJ,EAAImC,MAChB4B,IAAKq6E,EACL92C,KAAMtnC,EAAIgB,MACV6F,gBAAiB7G,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACrCs7I,gBAAiBz9I,EAAIa,IAAIyqJ,GACzB1nJ,OAAQw6E,IAEJsuE,EAAkB1sJ,EAAIE,QAAQ,CAClCysJ,SAAU3sJ,EAAIW,OAAO,CAAEisJ,qBAAsB5sJ,EAAIgB,QACjDw9I,OAAQx+I,EAAIW,OAAO,CAAE89I,aAAcrgE,IACnCyuE,YAAa7sJ,EAAIW,OAAO,CAAE49I,aAAcv+I,EAAIgB,QAC5C8rJ,kBAAmB9sJ,EAAIQ,KACvB2F,kBAAmBnG,EAAIW,OAAO,CAAEyF,QAASg4E,MAErC9zE,EAAWtK,EAAIE,QAAQ,CAAEsI,GAAIxI,EAAIgB,MAAOyH,IAAKikJ,IAC7CK,EAAc/sJ,EAAIW,OAAO,CAAE0kI,aAAcjnD,IAC/C,OAAOp+E,EAAI2H,QAAQ,CACjBqlJ,gBAAiBhtJ,EAAI6H,KAAK,CAACijJ,GAA2B,CAAC1sE,GAAS,CAAC,UACjE6uE,oBAAqBjtJ,EAAI6H,KAAK,CAACkjJ,GAAqB,CAAC3sE,GAAS,CAAC,UAC/D8sE,SAAUlrJ,EAAI6H,KAAK,GAAI,CAACojJ,GAAW,CAAC,UACpCl7I,SAAU/P,EAAI6H,KAAK,GAAI,CAACsjJ,GAAW,CAAC,UACpC5L,iBAAkBv/I,EAAI6H,KAAK,CAAC/F,GAAU,CAAC9B,EAAI0J,KAAM,CAAC,UAClD81I,eAAgBx/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAImC,MAAO,CAAC,UAC1Cs9I,UAAWz/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACpCg2I,eAAgB1/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAMs+I,KAAkB,CAAC,UAC7EN,sBAAuB3/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAIa,IAAIiB,IAAW,CAAC,UACzD89I,WAAY5/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtCs3D,0BAA2Bj5D,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIgiJ,IAAkB,CAAC,UACpEvC,aAAc7/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACxCm+I,mBAAoB9/I,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UAC7Cs2I,eAAgBhgJ,EAAI6H,KAAK,CAACw6I,GAAc,CAACx3I,GAAS,IAClD2F,KAAMxQ,EAAI6H,KAAK,GAAI,CAACujJ,GAAO,CAAC,UAC5B8B,aAAcltJ,EAAI6H,KAAK,CAACwjJ,GAAgB,CAACc,GAAsB,CAAC,UAChEgB,qBAAsBntJ,EAAI6H,KAAK,CAACwjJ,GAAgB,CAACiB,GAA6B,CAAC,UAC/Ec,SAAUptJ,EAAI6H,KAAK,CAAC0kJ,GAAW,CAACvsJ,EAAIgB,OAAQ,IAC5CsP,OAAQtQ,EAAI6H,KAAK,GAAI,CAAC2kJ,GAAS,CAAC,UAChCz0F,SAAU/3D,EAAI6H,KAAK,CAAC4kJ,GAAe,CAACniJ,GAAW,IAC/C+6H,aAAcrlI,EAAI6H,KAAK,CAAC7H,EAAIW,OAAO,CAAC,IAAK,CAACosJ,GAAc,CAAC,WACzD,E,gBCxMG,MAAMM,GAAiBvkJ,GAC5BC,EAAMC,OAAe,CACnBlJ,WAAYwtJ,GACZrkJ,WAAYqsG,GAAAA,GACZxsG,WACAgoC,KAAMsuD,EAAAA,ICXGt/F,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM6iH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChDghH,EAAa3iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAClD27D,EAAoBt9D,EAAI2B,KACxB4rJ,EAASvtJ,EAAIW,OAAO,CAAE6sJ,EAAGxtJ,EAAI2B,KAAM8rJ,EAAGztJ,EAAI2B,OAC1C+rJ,EAAe1tJ,EAAIW,OAAO,CAC9BgtJ,IAAK3tJ,EAAI2B,KACTisJ,QAAStwF,EACTuwF,QAAS7tJ,EAAII,IAAImtJ,GACjBO,UAAW9tJ,EAAI2B,KACfM,MAAOq7D,EACP9sD,KAAMxQ,EAAI2B,KACVosJ,WAAY/tJ,EAAIiK,IAChBktC,YAAan3C,EAAI0J,IACjBg5G,aAAc1iH,EAAI2B,KAClBqsJ,WAAYhuJ,EAAI0J,IAChBukJ,UAAWjuJ,EAAI0J,IACfwkJ,MAAOluJ,EAAI2B,OAEPwsJ,EAAmBnuJ,EAAIE,QAAQ,CACnCqK,GAAImjJ,EACJljJ,IAAKxK,EAAI2B,OAELysJ,EAAkBpuJ,EAAIW,OAAO,CACjCktJ,QAAS7tJ,EAAII,IAAImtJ,GACjBO,UAAW9tJ,EAAI2B,KACf6O,KAAMxQ,EAAI2B,KACV+gH,aAAc1iH,EAAI2B,KAClBssJ,UAAWjuJ,EAAI0J,IACfwkJ,MAAOluJ,EAAI2B,OAEP0sJ,EAAaruJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKxK,EAAI2B,OAClD2sJ,EAAiBtuJ,EAAIE,QAAQ,CACjCqK,GAAIvK,EAAIy7D,MAAMz7D,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,KAAM3B,EAAI2B,MAC9C6I,IAAKxK,EAAI2B,OAEL4sJ,EAAevuJ,EAAIW,OAAO,CAC9ByM,QAASpN,EAAII,IAAIstJ,GACjBrxG,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf8kJ,EAAmBxuJ,EAAIE,QAAQ,CACnCqK,GAAIgkJ,EACJ/jJ,IAAKxK,EAAI2B,OAEL8sJ,EAAmBzuJ,EAAIE,QAAQ,CACnCqK,GAAIvK,EAAIy7D,MAAMz7D,EAAI0J,IAAK1J,EAAI2B,KAAM3B,EAAI2B,KAAM3B,EAAI2B,MAC/C6I,IAAKxK,EAAI2B,OAELkiH,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIstJ,GACjBrxG,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfglJ,EAAmB1uJ,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OACpDgtJ,EAAmB3uJ,EAAIE,QAAQ,CACnCqK,GAAIvK,EAAII,IAAIJ,EAAI2B,MAChB6I,IAAKxK,EAAI2B,OAEX,OAAO3B,EAAI2H,QAAQ,CACjB6/C,IAAKxnD,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI0J,KAAM,CAACk5G,GAAY,IAChDE,SAAU9iH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC7CisC,aAAc5uJ,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACwsJ,GAAmB,CAAC,UACxDnlJ,OAAQhJ,EAAI6H,KAAK,CAACumJ,GAAkB,CAACC,GAAa,IAClDtrC,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IACxCljD,OAAQ1/D,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC3CksC,wBAAyB7uJ,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC5DmsC,QAAS9uJ,EAAI6H,KAAK,GAAI,CAACymJ,GAAiB,CAAC,UACzCS,aAAc/uJ,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC8kJ,GAAmB,CAAC,UAChEQ,mBAAoBhvJ,EAAI6H,KAAK,GAAI,CAAC4mJ,GAAmB,CAAC,UACtDQ,iBAAkBjvJ,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACglJ,GAAmB,CAAC,UACpEQ,iBAAkBlvJ,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC8kJ,GAAmB,CAAC,UAC9EtrC,aAAcljH,EAAI6H,KAAK,GAAI,CAAC8mJ,GAAmB,CAAC,UAChDQ,SAAUnvJ,EAAI6H,KAAK,GAAI,CAAC86G,GAAa,IACrCozB,OAAQ/1I,EAAI6H,KAAK,CAAC6lJ,GAAe,CAAC9qC,GAAY,IAC9CS,YAAarjH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAChDysC,kBAAmBpvJ,EAAI6H,KACrB,CAAC7H,EAAI0J,IAAK1J,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAImB,OACvE,CAACwhH,GACD,IAEF0sC,WAAYrvJ,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,KAAM3B,EAAI2B,MAAO,CAAC2sJ,GAAiB,IAC/EhyF,QAASt8D,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI2B,MAAO,CAACghH,GAAa,KACtD,ECtFS7iH,GAAaC,IAAY,IAAX,IAAEC,GAAKD,EAChC,MAAMunJ,EAAkBtnJ,EAAI2B,KACtB27D,EAAoBt9D,EAAI2B,KACxBwlJ,EAAOnnJ,EAAIE,QAAQ,CACvB,UAAcF,EAAIK,UAClB,QAAYi9D,IAER8pF,EAAmBpnJ,EAAIW,OAAO,CAClC,MAAU2mJ,EACV,MAAUH,EACV,QAAYnnJ,EAAIK,YAEZgnJ,EAAarnJ,EAAI0J,IACjBS,EAAcnK,EAAIE,QAAQ,CAC9B,oBAAwBF,EAAIQ,KAC5B,aAAiB8mJ,EACjB,aAAiBhqF,EACjB,MAAUt9D,EAAI2B,OAEV2I,EAAWtK,EAAIE,QAAQ,CAAE,GAAOmnJ,EAAY,IAAQl9I,IACpD0zC,EAAa79C,EAAII,IAAIJ,EAAImC,MACzB+kJ,EAAUlnJ,EAAI0J,IACd+9I,EAAiBznJ,EAAIW,OAAO,CAChC,MAAU2mJ,EACV,WAAetnJ,EAAIa,IAAIg9C,GACvB,UAAcqpG,EACd,QAAYlnJ,EAAIK,YAEZivJ,EAAoBtvJ,EAAIW,OAAO,CACnC,SAAaX,EAAI8E,KACjB,QAAYqiJ,IAERxkC,EAAa3iH,EAAIE,QAAQ,CAAE,GAAOF,EAAI8E,KAAM,IAAQ9E,EAAI2B,OACxD+lJ,EAAiB1nJ,EAAIW,OAAO,CAChC,MAAU2mJ,EACV,KAASH,IAELI,EAAiBvnJ,EAAIE,QAAQ,CACjC,oBAAwBF,EAAIQ,KAC5B,aAAiB8mJ,EACjB,aAAiBhqF,EACjB,MAAUt9D,EAAI2B,OAEVgmJ,EAAkB3nJ,EAAIE,QAAQ,CAClC,GAAOgnJ,EACP,IAAQK,IAEJgI,EAAqBvvJ,EAAI2B,KACzB+mJ,EAAuB1oJ,EAAI2B,KAC3B4hH,EAAWvjH,EAAIE,QAAQ,CAC3B,GAAOwoJ,EACP,IAAQv+I,IAEJqlJ,EAAuBxvJ,EAAI2B,KAC3B8tJ,EAAYzvJ,EAAIW,OAAO,CAAE,EAAMX,EAAI2B,KAAM,EAAM3B,EAAI2B,OACnD+rJ,EAAe1tJ,EAAIW,OAAO,CAC9B,IAAQX,EAAI2B,KACZ,QAAY6tJ,EACZ,QAAYxvJ,EAAII,IAAIqvJ,GACpB,UAAczvJ,EAAI2B,KAClB,MAAU6tJ,EACV,KAASxvJ,EAAI2B,KACb,WAAe3B,EAAIiK,IACnB,YAAgBjK,EAAI0J,IACpB,aAAiB1J,EAAI2B,KACrB,WAAe3B,EAAI0J,IACnB,UAAc1J,EAAI0J,IAClB,MAAU1J,EAAI2B,OAEV+tJ,EAAmB1vJ,EAAIE,QAAQ,CACnC,GAAOwtJ,EACP,IAAQ1tJ,EAAI2B,OAERguJ,EAAa3vJ,EAAImB,MACjBktJ,EAAaruJ,EAAIE,QAAQ,CAAE,GAAOF,EAAI2B,KAAM,IAAQ3B,EAAI2B,OACxDiuJ,EAAQ5vJ,EAAIW,OAAO,CACvB,QAAYX,EAAII,IAAIJ,EAAImC,MACxB,SAAanC,EAAI0J,MAEbk5G,EAAY5iH,EAAIE,QAAQ,CAAE,GAAOF,EAAI0J,IAAK,IAAQ1J,EAAI2B,OACtDkmJ,EAAY7nJ,EAAI2B,KAChBgnJ,EAAU3oJ,EAAIE,QAAQ,CAC1B,UAAcF,EAAIK,UAClB,QAAYi9D,IAERuyF,EAAgB7vJ,EAAImB,MACpBosJ,EAASvtJ,EAAIW,OAAO,CAAE,EAAMX,EAAI2B,KAAM,EAAM3B,EAAI2B,OAChDmuJ,EAAc9vJ,EAAIW,OAAO,CAC7B,IAAQX,EAAI2B,KACZ,QAAYkuJ,EACZ,MAAUvyF,EACV,SAAat9D,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACjC,KAASnC,EAAI2B,KACb,KAAS3B,EAAI2B,KACb,OAAW27D,EACX,SAAat9D,EAAI2B,KACjB,SAAa3B,EAAI2B,KACjB,SAAa3B,EAAIiK,IACjB,aAAiBjK,EAAI2B,KACrB,WAAe3B,EAAII,IAAImtJ,GACvB,UAAcvtJ,EAAI0J,IAClB,QAAY1J,EAAI2B,KAChB,WAAe3B,EAAI2B,OAEfqmJ,EAAShoJ,EAAIW,OAAO,CACxB,QAAYX,EAAII,IAAI0vJ,GACpB,OAAW9vJ,EAAI0J,IACf,MAAU1J,EAAI0J,IACd,cAAkB1J,EAAI0J,MAElBykJ,EAAmBnuJ,EAAIE,QAAQ,CAAE,GAAO8nJ,EAAQ,IAAQhoJ,EAAI2B,OAC5DouJ,EAAS/vJ,EAAI2B,KACbs8I,EAAOj+I,EAAII,IAAIJ,EAAImC,MACnB0mJ,EAAY7oJ,EAAIE,QAAQ,CAC5B,KAASF,EAAIQ,KACb,KAASR,EAAIQ,KACb,QAAYR,EAAIQ,KAChB,SAAaR,EAAIQ,OAEbwvJ,EAAiBhwJ,EAAIW,OAAO,CAChC,GAAO28D,EACP,OAAWyyF,EACX,QAAYF,EACZ,KAASvyF,EACT,KAASt9D,EAAI2B,KACb,KAAS3B,EAAIa,IAAIo9I,GACjB,KAASj+I,EAAIiK,IACb,UAAcjK,EAAI2B,KAClB,OAAWknJ,EACX,OAAWvrF,EACX,MAAU4pF,EACV,OAAWA,IAEPrjC,EAAO7jH,EAAIW,OAAO,CACtB,QAAYX,EAAII,IAAI4vJ,GACpB,OAAWhwJ,EAAI0J,IACf,MAAU1J,EAAI0J,IACd,cAAkB1J,EAAI0J,MAElB+kJ,EAAmBzuJ,EAAIE,QAAQ,CAAE,GAAO2jH,EAAM,IAAQ7jH,EAAI2B,OAC1D+sJ,EAAmB1uJ,EAAIE,QAAQ,CACnC,GAAOF,EAAIy7D,MAAMz7D,EAAI0J,IAAK1J,EAAI0J,KAC9B,IAAQ1J,EAAI2B,OAERo5D,EAAW/6D,EAAIE,QAAQ,CAC3B,SAAaF,EAAIW,OAAO,CACtB,SAAaX,EAAImC,KACjB,aAAiBm7D,EACjB,SAAat9D,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACjC,KAASnC,EAAI2B,KACb,OAAW3B,EAAI2B,OAEjB,YAAgB3B,EAAIW,OAAO,CAAE,SAAaX,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,WAE1D4hH,EAAc/jH,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI2B,MACtCqiH,EAAchkH,EAAIW,OAAO,CAC7B,IAAQX,EAAI2B,KACZ,OAAW3B,EAAI2B,KACf,KAAS3B,EAAII,IAAIJ,EAAImC,MACrB,QAAYnC,EAAII,IAAI2jH,KAEhBksC,EAA4BjwJ,EAAIW,OAAO,CAC3C,IAAQX,EAAI2B,KACZ,MAAU3B,EAAI0J,IACd,iBAAqB1J,EAAI2B,OAErBo2I,EAAoB/3I,EAAIE,QAAQ,CACpC,SAAaF,EAAIW,OAAO,CACtB,MAAUsvJ,EACV,SAAajwJ,EAAI6H,KAAK,GAAI,GAAI,QAG5Bs8G,EAAenkH,EAAIW,OAAO,CAC9B,KAASX,EAAII,IAAIJ,EAAImC,MACrB,QAAYnC,EAAII,IAAI2jH,GACpB,mBAAuB/jH,EAAIa,IAAIk3I,GAC/B,YAAgB/3I,EAAIqkH,QAEhB6rC,EAAyBlwJ,EAAIW,OAAO,CACxC,IAAQX,EAAI2B,KACZ,MAAU3B,EAAI0J,IACd,iBAAqB1J,EAAI2B,OAErBk2I,EAAgC73I,EAAIW,OAAO,CAC/C,MAAUX,EAAIa,IAAIovJ,GAClB,KAASjwJ,EAAII,IAAIJ,EAAImC,QAEjBqsJ,EAAmBxuJ,EAAIE,QAAQ,CACnC,GAAO4vJ,EACP,IAAQ9vJ,EAAI2B,OAER2sJ,EAAiBtuJ,EAAIE,QAAQ,CAAE,GAAOmnJ,EAAY,IAAQrnJ,EAAI2B,OAC9DkhH,EAAW7iH,EAAIE,QAAQ,CAAE,GAAOF,EAAI2B,KAAM,IAAQ3B,EAAI2B,OACtDgJ,EAAW3K,EAAIE,QAAQ,CAAE,GAAO66D,EAAU,IAAQ5wD,IAClDgmJ,GAAiBnwJ,EAAIW,OAAO,CAChC,MAAUwmJ,EACV,SAAannJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACjC,KAASnC,EAAI2B,KACb,KAAS3B,EAAI2B,KACb,SAAa3B,EAAI2B,KACjB,SAAa3B,EAAI2B,KACjB,aAAiB3B,EAAI2B,KACrB,WAAe3B,EAAII,IAAImtJ,GACvB,UAAcvtJ,EAAI0J,IAClB,QAAY1J,EAAI2B,KAChB,MAAU3B,EAAI2B,KACd,WAAe3B,EAAI2B,OAEfgtJ,GAAmB3uJ,EAAIE,QAAQ,CAAE,GAAOyvJ,EAAY,IAAQ3vJ,EAAI2B,OAChE2mJ,GAActoJ,EAAIW,OAAO,CAC7B,GAAOwmJ,EACP,SAAannJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAE7BiuJ,GAAkBpwJ,EAAIW,OAAO,CACjC,MAAUwmJ,EACV,SAAannJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACjC,KAASnC,EAAI2B,KACb,KAAS3B,EAAI2B,KACb,MAAU3B,EAAI0J,IACd,SAAa1J,EAAI2B,KACjB,SAAa3B,EAAI2B,KACjB,aAAiB3B,EAAI2B,KACrB,WAAe3B,EAAII,IAAImtJ,GACvB,UAAcvtJ,EAAI0J,IAClB,QAAY1J,EAAI2B,KAChB,MAAU3B,EAAI2B,KACd,WAAe3B,EAAI2B,OAEf+iJ,GAAO1kJ,EAAIiK,IACXomJ,GAAUrwJ,EAAIW,OAAO,CACzB,OAAWX,EAAIa,IAAI6jJ,IACnB,OAAW1kJ,EAAIK,UACf,MAAUL,EAAIgB,QAEV6J,GAAS7K,EAAIE,QAAQ,CACzB,GAAOF,EAAII,IACTJ,EAAIy7D,MAAMk0F,EAAY3vJ,EAAIa,IAAIwvJ,IAAUrwJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAE9D,IAAQgI,IAEJ4+I,GAAkB/oJ,EAAIW,OAAO,CACjC,GAAOwmJ,EACP,MAAUG,EACV,OAAWtnJ,EAAI8E,KACf,KAASqiJ,EACT,KAASlJ,EACT,WAAej+I,EAAIa,IAAIg9C,GACvB,MAAU79C,EAAIa,IAAIb,EAAI0J,KACtB,OAAWw9I,IAEPqB,GAAmBvoJ,EAAIE,QAAQ,CACnC,GAAOgnJ,EACP,IAAQlnJ,EAAIE,QAAQ,CAClB,sBAA0BF,EAAIQ,KAC9B,aAAiB88D,EACjB,oBAAwBt9D,EAAIQ,KAC5B,aAAiB8mJ,EACjB,SAAatnJ,EAAIQ,KACjB,aAAiB88D,EACjB,MAAUt9D,EAAI2B,SA0GlB,OAvG2B3B,EAAI2H,QAAQ,CACrC,aAAiB3H,EAAI6H,KAAK,GAAI,GAAI,IAClC,UAAc7H,EAAI6H,KAAK,CAACu/I,GAAmB,CAAC98I,GAAW,CAAC,UACxD,QAAYtK,EAAI6H,KAAK,CAAC4/I,GAAiB,GAAI,IAC3C,cAAkBznJ,EAAI6H,KAAK,CAACynJ,GAAoB,CAAC3sC,GAAa,IAC9D,gBAAoB3iH,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UAC7C,QAAY1J,EAAI6H,KAAK,CAAC6/I,GAAiB,CAACC,GAAkB,CAAC,UAC3D,OAAW3nJ,EAAI6H,KAAK,CAAC0nJ,GAAqB,CAAChsC,GAAW,CAAC,UACvD,aAAiBvjH,EAAI6H,KAAK,GAAI,CAAC6nJ,GAAmB,CAAC,UACnD,UAAc1vJ,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACvC,WAAe1J,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,IACxC,aAAiB9E,EAAI6H,KACjB,CACE7H,EAAIW,OAAO,CACT,SAAaX,EAAI0J,IACjB,aAAiB1J,EAAI2B,KACrB,UAAc3B,EAAII,IAAIJ,EAAI0J,QAG9B,GACA,IAEJ,OAAW1J,EAAI6H,KAAK,CAAC6lJ,EAAciC,EAAY3vJ,EAAI2B,MAAO,CAAC0sJ,GAAa,IACxE,aAAiBruJ,EAAI6H,KAAK,GAAI,CAAC7H,EAAIW,OAAO,CAAE,SAAaX,EAAI0J,OAAS,IACtE,aAAiB1J,EAAI6H,KACjB,CAAC+nJ,GACD,CAAC5vJ,EAAIW,OAAO,CAAE,SAAaX,EAAI0J,OAC/B,IAEJ,eAAmB1J,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC7C,aAAiB5iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC3C,WAAe5iH,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIynJ,IAAa,CAAC,UACnD,eAAmB7nJ,EAAI6H,KAAK,GAAI,CAACwmJ,GAAa,IAC9C,cAAkBruJ,EAAI6H,KAClB,CAAC8gJ,EAAS3oJ,EAAI0J,IAAK1J,EAAI0J,KACvB,CAACykJ,GACD,CAAC,UAEL,gBAAoBnuJ,EAAI6H,KACpB,CAAC7H,EAAII,IAAIJ,EAAI2B,MAAO3B,EAAI0J,IAAK1J,EAAI0J,KACjC,CAACykJ,GACD,CAAC,UAEL,kBAAsBnuJ,EAAI6H,KACtB,CAAC8gJ,EAAS3oJ,EAAI0J,IAAK1J,EAAI0J,KACvB,CAAC+kJ,GACD,CAAC,UAEL,aAAiBzuJ,EAAI6H,KACjB,CAACy/I,EAAiBtnJ,EAAI0J,IAAK1J,EAAI0J,KAC/B,CAAC+kJ,GACD,CAAC,UAEL,cAAkBzuJ,EAAI6H,KAClB,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAY3vJ,EAAII,IAAIsoJ,MACvC,CAAC,UAEL,UAAc1oJ,EAAI6H,KAAK,GAAI,CAAC7H,EAAIK,WAAY,CAAC,UAC7C,WAAeL,EAAI6H,KAAK,GAAI,CAAC6mJ,GAAmB,CAAC,UACjD,YAAgB1uJ,EAAI6H,KAChB,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAYjH,KAC/B,CAAC,UAEL,UAAc1oJ,EAAI6H,KACd,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAY50F,KAC/B,CAAC,UAEL,aAAiB/6D,EAAI6H,KAAK,CAACm8G,GAAc,CAACG,GAAe,CAAC,UAC1D,gCAAoCnkH,EAAI6H,KACpC,CAACqoJ,GACD,CAACrY,GACD,CAAC,UAEL,YAAgB73I,EAAI6H,KAAK,CAAC8nJ,GAAa,CAACnB,GAAmB,CAAC,UAC5D,gBAAoBxuJ,EAAI6H,KACpB,CAAC6gJ,EAAsBA,GACvB,CAAC/lC,GACD,CAAC,UAEL,kBAAsB3iH,EAAI6H,KACtB,CAAC8nJ,EAAYjH,EAAsBA,GACnC,CAAC4F,GACD,CAAC,UAEL,YAAgBtuJ,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAACm5G,GAAW,IAChD,SAAa7iH,EAAI6H,KAAK,CAAC0nJ,GAAqB,CAAC5kJ,GAAW,CAAC,UACzD,KAAS3K,EAAI6H,KAAK,CAACsoJ,IAAiB,CAACxB,IAAmB,IACxD,QAAY3uJ,EAAI6H,KAAK,CAACygJ,IAAc,CAACqH,GAAa,IAClD,WAAe3vJ,EAAI6H,KAAK,CAACuoJ,IAAkB,CAACzB,IAAmB,IAC/D,cAAkB3uJ,EAAI6H,KAAK,CAAC8gJ,GAAU,CAAC2F,GAAiB,CAAC,UACzD,kBAAsBtuJ,EAAI6H,KAAK,CAACynJ,GAAoB,CAAC3sC,GAAa,IAClE,eAAmB3iH,EAAI6H,KAAK,CAAC4/I,GAAiB,CAAC9kC,GAAa,IAC5D,cAAkB3iH,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIb,EAAI2B,OAAQ,CAACghH,GAAa,IAC9D,QAAY3iH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC/C,UAAc3iH,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,IAC5C,sBAA0BL,EAAI6H,KAAK,CAACy/I,GAAkB,CAAC3kC,GAAa,IACpE,OAAW3iH,EAAI6H,KAAK,CAAC0nJ,GAAqB,CAACjlJ,GAAW,CAAC,UACvD,WAAetK,EAAI6H,KAAK,CAAC6gJ,GAAuB,CAAC79I,IAAS,CAAC,UAC3D,SAAa7K,EAAI6H,KAAK,CAACkhJ,IAAkB,CAACR,IAAmB,KAEtC,EC7WdzoJ,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM4iH,EAAa3iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAClDkuJ,EAAgB7vJ,EAAImB,MACpBmvJ,EAAatwJ,EAAIW,OAAO,CAC5B4vJ,OAAQvwJ,EAAI2B,KACZ6uJ,WAAYX,IAERjtC,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChD+tJ,EAAmB1vJ,EAAIE,QAAQ,CACnCqK,GAAIvK,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI2B,MAC5B6I,IAAKxK,EAAI2B,OAEL+iJ,EAAO1kJ,EAAIiK,IACXqzD,EAAoBt9D,EAAI2B,KACxB8uJ,EAAYzwJ,EAAIW,OAAO,CAC3BgtJ,IAAK3tJ,EAAI2B,KACT4uJ,OAAQvwJ,EAAI2B,KACZ6uJ,WAAYX,EACZ3tE,KAAMliF,EAAI2B,KACVya,KAAMpc,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACV85G,KAAMipC,EACNgM,OAAQpzF,EACRqzF,SAAU3wJ,EAAI2B,KACdivJ,SAAU5wJ,EAAI2B,KACdkvJ,OAAQvzF,EACRolD,aAAc1iH,EAAI2B,KAClBssJ,UAAWjuJ,EAAI0J,IACfonJ,WAAY9wJ,EAAI2B,KAChBsqD,MAAOjsD,EAAI0J,MAEPs+I,EAAShoJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAIqwJ,GACjBp0G,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfykJ,EAAmBnuJ,EAAIE,QAAQ,CAAEqK,GAAIy9I,EAAQx9I,IAAKxK,EAAI2B,OACtD+mJ,EAAuB1oJ,EAAI2B,KAC3BguJ,EAAa3vJ,EAAImB,MACjB4vJ,EAAiB/wJ,EAAIW,OAAO,CAChCgtJ,IAAK3tJ,EAAI2B,KACT4uJ,OAAQvwJ,EAAI2B,KACZqvJ,MAAOhxJ,EAAI0J,IACX8mJ,WAAYX,EACZ3tE,KAAMliF,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACV85G,KAAMipC,EACNgM,OAAQpzF,EACR2zF,mBAAoBjxJ,EAAI2B,KACxBuvJ,mBAAoBlxJ,EAAI2B,KACxBwvJ,aAAcnxJ,EAAI0J,IAClBinJ,SAAU3wJ,EAAI2B,KACdivJ,SAAU5wJ,EAAI2B,KACdyvJ,YAAapxJ,EAAI2B,KACjBkvJ,OAAQvzF,EACR+zF,SAAUrxJ,EAAI2B,KACd2vJ,aAActxJ,EAAI0J,IAClB6wH,MAAOj9D,EACPrR,MAAOjsD,EAAI0J,MAEPm6G,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAI2wJ,GACjB10G,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf+kJ,EAAmBzuJ,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OACpD+sJ,EAAmB1uJ,EAAIE,QAAQ,CACnCqK,GAAIvK,EAAII,IAAIJ,EAAI2B,MAChB6I,IAAKxK,EAAI2B,OAEL6sJ,EAAmBxuJ,EAAIE,QAAQ,CAAEqK,GAAIkmJ,EAAWjmJ,IAAKxK,EAAI2B,OACzD4vJ,EAAevxJ,EAAIW,OAAO,CAC9B6wJ,YAAaxxJ,EAAI0J,IACjB+nJ,SAAUzxJ,EAAI0J,IACdgoJ,cAAe1xJ,EAAI0J,IACnBioJ,SAAU3xJ,EAAI0J,IACdkoJ,SAAU5xJ,EAAI0J,IACdmoJ,SAAU7xJ,EAAI0J,MAEVilJ,EAAmB3uJ,EAAIE,QAAQ,CACnCqK,GAAIgnJ,EACJ/mJ,IAAKxK,EAAI2B,OAEL2sJ,EAAiBtuJ,EAAIE,QAAQ,CACjCqK,GAAIvK,EAAIy7D,MAAMz7D,EAAI8E,KAAM9E,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI0J,KAC9Cc,IAAKxK,EAAI2B,OAELmwJ,EAAgB9xJ,EAAIW,OAAO,CAC/B4vJ,OAAQvwJ,EAAI2B,KACZ6uJ,WAAYX,IAERkC,EAAc/xJ,EAAIW,OAAO,CAC7B4vJ,OAAQvwJ,EAAI2B,KACZ6uJ,WAAYX,EACZ5jG,MAAOjsD,EAAI0J,MAEb,OAAO1J,EAAI2H,QAAQ,CACjBm7G,SAAU9iH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC7C3F,IAAKh9G,EAAI6H,KAAK,CAACyoJ,GAAa,CAAC3tC,GAAa,IAC1CtmF,OAAQr8B,EAAI6H,KAAK,CAAC7H,EAAImB,MAAOnB,EAAI2B,MAAO,CAACghH,GAAa,IACtDqvC,YAAahyJ,EAAI6H,KAAK,CAAC7H,EAAImB,OAAQ,CAACwhH,GAAa,IACjDsvC,aAAcjyJ,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IACjDI,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IACxCsvC,eAAgBlyJ,EAAI6H,KAAK,GAAI,CAAC6nJ,GAAmB,IACjDyC,sBAAuBnyJ,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACykJ,GAAmB,CAAC,UACnFiE,cAAepyJ,EAAI6H,KACjB,CACE7H,EAAIa,IAAIb,EAAI2B,MACZ3B,EAAIa,IAAIb,EAAI2B,MACZ3B,EAAIa,IAAI6nJ,GACR1oJ,EAAIa,IAAI8uJ,GACR3vJ,EAAI0J,IACJ1J,EAAI0J,IACJ1J,EAAI2B,KACJ3B,EAAI8E,MAEN,CAACqpJ,GACD,CAAC,UAEHkE,cAAeryJ,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACykJ,GAAmB,CAAC,UACjEmE,mBAAoBtyJ,EAAI6H,KACtB,CAAC8nJ,EAAY3vJ,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,KAAM3B,EAAI8E,MACvD,CAACqpJ,GACD,CAAC,UAEHoE,gBAAiBvyJ,EAAI6H,KACnB,CAAC8nJ,EAAY3vJ,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,KAAM3B,EAAI8E,MACvD,CAAC2pJ,GACD,CAAC,UAEH+D,WAAYxyJ,EAAI6H,KACd,CAAC7H,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAI8uJ,GAAa3vJ,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,KAAM3B,EAAI8E,MAC5F,CAAC2pJ,GACD,CAAC,UAEHgE,eAAgBzyJ,EAAI6H,KAClB,CAAC6gJ,EAAsB1oJ,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,KAAM3B,EAAI8E,MAC7F,CAAC2pJ,GACD,CAAC,UAEHp/F,WAAYrvD,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtCuhH,aAAcljH,EAAI6H,KAAK,GAAI,CAAC6mJ,GAAmB,CAAC,UAChDgE,SAAU1yJ,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAMguJ,GAAa,CAACnB,GAAmB,CAAC,UAChEmE,QAAS3yJ,EAAI6H,KAAK,GAAI,CAAC8mJ,GAAmB,CAAC,UAC3CiE,cAAe5yJ,EAAI6H,KAAK,GAAI,CAACymJ,GAAiB,CAAC,UAC/CjrC,YAAarjH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAChDkwC,WAAY7yJ,EAAI6H,KAAK,GAAI,CAAC86G,GAAa,IACvCzF,OAAQl9G,EAAI6H,KAAK,CAACiqJ,GAAgB,CAACnvC,GAAa,IAChD1F,KAAMj9G,EAAI6H,KAAK,CAACkqJ,GAAc,CAACpvC,GAAa,IAC5CmwC,cAAe9yJ,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI2B,OAAQ,CAACghH,GAAa,IACjGnnF,SAAUx7B,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI2B,KAAM3B,EAAI2B,MAAO,CAACghH,GAAa,IACjEowC,cAAe/yJ,EAAI6H,KAAK,CAAC7H,EAAI8E,MAAO,CAAC69G,GAAa,IAClDqwC,OAAQhzJ,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAMguJ,GAAa,CAAChtC,GAAa,KACvD,EC5JS7iH,GAAaC,IAAY,IAAX,IAAEC,GAAKD,EAChC,MAAM4iH,EAAa3iH,EAAIE,QAAQ,CAAE,GAAOF,EAAI8E,KAAM,IAAQ9E,EAAI2B,OACxDihH,EAAY5iH,EAAIE,QAAQ,CAAE,GAAOF,EAAI0J,IAAK,IAAQ1J,EAAI2B,OACtDsxJ,EAAgBjzJ,EAAIW,OAAO,CAC/B,IAAQX,EAAI2B,KACZ,YAAgB3B,EAAI0J,IACpB,SAAa1J,EAAI0J,IACjB,KAAS1J,EAAI2B,KACb,cAAkB3B,EAAI0J,IACtB,WAAe1J,EAAI0J,IACnB,SAAa1J,EAAI0J,IACjB,SAAa1J,EAAI0J,IACjB,SAAa1J,EAAI0J,IACjB,iBAAqB1J,EAAI0J,MAErBm6G,EAAO7jH,EAAIW,OAAO,CACtB,QAAYX,EAAII,IAAI6yJ,GACpB,OAAWjzJ,EAAI0J,IACf,MAAU1J,EAAI0J,IACd,cAAkB1J,EAAI0J,MAElBglJ,EAAmB1uJ,EAAIE,QAAQ,CAAE,GAAO2jH,EAAM,IAAQ7jH,EAAI2B,OAC1D6sJ,EAAmBxuJ,EAAIE,QAAQ,CACnC,GAAOF,EAAII,IAAIJ,EAAI2B,MACnB,IAAQ3B,EAAI2B,OAERgtJ,EAAmB3uJ,EAAIE,QAAQ,CACnC,GAAO+yJ,EACP,IAAQjzJ,EAAI2B,OAER4vJ,EAAevxJ,EAAIW,OAAO,CAC9B,YAAgBX,EAAI0J,IACpB,SAAa1J,EAAI0J,IACjB,cAAkB1J,EAAI0J,IACtB,SAAa1J,EAAI0J,IACjB,SAAa1J,EAAI0J,IACjB,SAAa1J,EAAI0J,MAEb4kJ,EAAiBtuJ,EAAIE,QAAQ,CAAE,GAAOqxJ,EAAc,IAAQvxJ,EAAI2B,OACtE,OAAO3B,EAAI2H,QAAQ,CACjB,SAAa3H,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAChD,eAAmB3iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC7C,aAAiB5iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC3C,iBAAqB5iH,EAAI6H,KACrB,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KACd,CAACglJ,GACD,CAAC,UAEL,aAAiB1uJ,EAAI6H,KACjB,CAAC7H,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,KACxB,CAACglJ,GACD,CAAC,UAEL,aAAiB1uJ,EAAI6H,KAAK,GAAI,CAAC2mJ,GAAmB,CAAC,UACnD,gBAAoBxuJ,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACgtJ,GAAmB,CAAC,UAC9D,YAAgB3uJ,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACgtJ,GAAmB,CAAC,UAC1D,QAAY3uJ,EAAI6H,KAAK,GAAI,CAACymJ,GAAiB,CAAC,UAC5C,KAAStuJ,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IACnC,SAAa5iH,EAAI6H,KACb,CAAC7H,EAAI2B,KAAM3B,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI8E,MAClC,CAAC69G,GACD,IAEJ,YAAgB3iH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IACnD,cAAkB3iH,EAAI6H,KAClB,CAAC7H,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI2B,OACnD,CAACghH,GACD,IAEJ,UAAc3iH,EAAI6H,KACd,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,KAAM3B,EAAI2B,MACjC,CAACghH,GACD,KAEJ,EC1EJ,GAAe5iH,IAAiB,IAAhB,IAAEC,GAAUD,EAC1B,MAAMmzJ,EAAOlzJ,EAAIs9I,MACXqS,EAAa3vJ,EAAI0J,IACjBy9I,EAAOnnJ,EAAI2B,KACXwxJ,EAAmBnzJ,EAAIW,OAAO,CAClC6+C,OAAQx/C,EAAII,IAAIuvJ,GAChByD,MAAOpzJ,EAAII,IAAI+mJ,KAEXC,EAAmBpnJ,EAAIW,OAAO,CAClCsO,MAAO0gJ,EACP1tJ,MAAOklJ,EACPhoG,QAASgoG,IAELE,EAAarnJ,EAAI0J,IACjBiB,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAI88I,EAAY78I,IAAKxK,EAAI2B,OAClDulJ,EAAUlnJ,EAAI0J,IACd+9I,EAAiBznJ,EAAIW,OAAO,CAChCsO,MAAO0gJ,EACP3oJ,UAAWkgJ,EACX/nG,QAASgoG,IAELc,EAAWjoJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAChD+lJ,EAAiB1nJ,EAAIW,OAAO,CAAEsO,MAAO0gJ,EAAYlyF,KAAM0pF,IACvDkM,EAAoBrzJ,EAAIE,QAAQ,CAAEqK,GAAI28I,EAAS18I,IAAKxK,EAAI2B,OACxDkuJ,EAAgB7vJ,EAAI0J,IACpBk+I,EAAW5nJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKxK,EAAI2B,OAChD2xJ,EAAetzJ,EAAIW,OAAO,CAAEmhD,KAAM9hD,EAAI2B,KAAM4xJ,MAAOvzJ,EAAI2B,OACvDgnJ,EAAU3oJ,EAAI2B,KACd4rJ,EAASvtJ,EAAIW,OAAO,CAAE6sJ,EAAGxtJ,EAAI2B,KAAM8rJ,EAAGztJ,EAAI2B,OAC1C6xJ,EAAkBxzJ,EAAIW,OAAO,CACjC8yJ,IAAKzzJ,EAAI2B,KACT4P,QAASvR,EAAI0J,IACbzH,MAAOklJ,EACP/qI,KAAMpc,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACV+uJ,OAAQvJ,EACRwJ,SAAU3wJ,EAAI2B,KACdivJ,SAAU5wJ,EAAI2B,KACd+xJ,SAAU1zJ,EAAIiK,IACdy4G,aAAc1iH,EAAI2B,KAClBgyJ,WAAY3zJ,EAAII,IAAImtJ,GACpBU,UAAWjuJ,EAAI0J,IACfkqJ,QAAS5zJ,EAAI2B,KACbmvJ,WAAY9wJ,EAAI2B,OAEZkyJ,EAAiB7zJ,EAAIW,OAAO,CAChCyM,QAASpN,EAAII,IAAIozJ,GACjBn3G,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfw+I,EAAWloJ,EAAIE,QAAQ,CAAEqK,GAAIspJ,EAAgBrpJ,IAAKxK,EAAI2B,OACtDs8I,EAAOj+I,EAAI2B,KACXmyJ,EAAS9zJ,EAAIE,QAAQ,CACzB6zJ,QAAS/zJ,EAAIQ,KACbinG,KAAMznG,EAAIQ,KACVk+D,YAAa1+D,EAAIQ,OAEbwzJ,EAAmBh0J,EAAIW,OAAO,CAClC0hB,GAAI8kI,EACJ51I,QAASo+I,EACTj7H,KAAMyyH,EACN7/G,KAAM22G,EACNxiC,KAAMz7G,EAAIiK,IACVgqJ,UAAWj0J,EAAI2B,KACfuyJ,OAAQJ,EACR1P,OAAQ+C,EACRl7F,MAAOi7F,EACPtjJ,OAAQsjJ,IAEJqH,EAAevuJ,EAAIW,OAAO,CAC9ByM,QAASpN,EAAII,IAAI4zJ,GACjB33G,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf65G,EAAWvjH,EAAIE,QAAQ,CAAEqK,GAAIgkJ,EAAc/jJ,IAAKxK,EAAI2B,OACpDwyJ,EAAgBn0J,EAAIW,OAAO,CAC/ByzJ,OAAQp0J,EAAI0J,IACZ2qJ,KAAMr0J,EAAI0J,IACV4qJ,KAAMt0J,EAAI0J,IACV6qJ,SAAUv0J,EAAI0J,IACd8qJ,OAAQx0J,EAAI0J,IACZ+qJ,SAAUz0J,EAAI0J,MAEVgrJ,EAAc10J,EAAIW,OAAO,CAC7Bg0J,aAAc30J,EAAI0J,IAClBkrJ,eAAgB50J,EAAI0J,IACpBmrJ,mBAAoB70J,EAAI0J,IACxBorJ,gBAAiB90J,EAAI0J,MAEjBqrJ,EAAY/0J,EAAIW,OAAO,CAC3BsO,MAAO0gJ,EACP7tG,KAAM9hD,EAAI2B,KACV4xJ,MAAOvzJ,EAAI2B,OAEPqzJ,EAAmBh1J,EAAIW,OAAO,CAAEs0J,UAAWj1J,EAAII,IAAI20J,KACnDlyC,EAAW7iH,EAAIE,QAAQ,CAAEqK,GAAIipJ,EAAiBhpJ,IAAKxK,EAAI2B,OACvDuzJ,EAAgBl1J,EAAIW,OAAO,CAC/BsB,MAAOklJ,EACP/qI,KAAMpc,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACVgvJ,SAAU3wJ,EAAI2B,KACdivJ,SAAU5wJ,EAAI2B,KACd+gH,aAAc1iH,EAAI2B,KAClBgyJ,WAAY3zJ,EAAII,IAAImtJ,GACpBU,UAAWjuJ,EAAI0J,IACfkqJ,QAAS5zJ,EAAI2B,KACbusJ,MAAOluJ,EAAI2B,KACXmvJ,WAAY9wJ,EAAI2B,OAEZ2I,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIslJ,EAAerlJ,IAAKxK,EAAI2B,OACrDwzJ,EAAiBn1J,EAAIW,OAAO,CAChCsB,MAAOklJ,EACP/qI,KAAMpc,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACVyqC,MAAOpsC,EAAI0J,IACXinJ,SAAU3wJ,EAAI2B,KACdivJ,SAAU5wJ,EAAI2B,KACd+gH,aAAc1iH,EAAI2B,KAClBgyJ,WAAY3zJ,EAAII,IAAImtJ,GACpBU,UAAWjuJ,EAAI0J,IACfkqJ,QAAS5zJ,EAAI2B,KACbusJ,MAAOluJ,EAAI2B,KACXmvJ,WAAY9wJ,EAAI2B,OAElBuxJ,EAAKh4I,KAAKlb,EAAIa,IAAIb,EAAIy7D,MAAMz7D,EAAI2B,KAAMuxJ,KACtC,MAAMkC,EAAap1J,EAAIW,OAAO,CAC5BwO,OAAQ+jJ,EACRtmG,MAAO5sD,EAAI0J,IACX2rJ,WAAYr1J,EAAI0J,IAChB4rJ,eAAgBt1J,EAAI0J,MAEhBmB,EAAS7K,EAAIE,QAAQ,CACzBqK,GAAIvK,EAAIy7D,MAAMz7D,EAAI0J,IAAK1J,EAAI0J,KAC3Bc,IAAKxK,EAAI2B,OAELonJ,EAAkB/oJ,EAAIW,OAAO,CACjC0hB,GAAI8kI,EACJl4I,MAAO0gJ,EACPj7H,KAAMyyH,EACN7/G,KAAM22G,EACNr6I,OAAQsjJ,IAEJqO,EAAqBv1J,EAAIE,QAAQ,CAAEqK,GAAI28I,EAAS18I,IAAKxK,EAAI2B,OAC/D,OAAO3B,EAAI2H,QAAQ,CACjB6tJ,QAASx1J,EAAI6H,KAAK,CAACsrJ,GAAmB,CAACnzJ,EAAI8E,KAAM9E,EAAI2B,MAAO,IAC5D8zJ,WAAYz1J,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI8E,MAAO,GAAI,IAC9C4wJ,UAAW11J,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI8E,KAAM9E,EAAI8E,KAAM9E,EAAI0J,KAAM,CAAC,UAC1E1C,UAAWhH,EAAI6H,KAAK,CAACu/I,GAAmB,CAACz8I,GAAW,CAAC,UACrD00C,QAASr/C,EAAI6H,KAAK,CAAC4/I,GAAiB,CAACQ,GAAW,IAChD7hJ,QAASpG,EAAI6H,KAAK,CAAC6/I,GAAiB,CAAC2L,GAAoB,CAAC,UAC1DsC,OAAQ31J,EAAI6H,KAAK,CAACgoJ,GAAgB,CAACjI,GAAW,CAAC,UAC/ClV,MAAO1yI,EAAI6H,KAAK,CAACyrJ,GAAe,CAACrL,GAAW,IAC5CllC,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IACxCs5G,aAAchjH,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IACtCksJ,eAAgB51J,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,UACnDk0J,cAAe71J,EAAI6H,KAAK,CAAC8gJ,EAAS3oJ,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACw+I,GAAW,CAAC,UAClE4N,gBAAiB91J,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAI2B,MAAO3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACw+I,GAAW,CAAC,UAC9E6N,kBAAmB/1J,EAAI6H,KAAK,CAAC8gJ,EAAS3oJ,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC65G,GAAW,CAAC,UACtEyyC,aAAch2J,EAAI6H,KAAK,CAACgoJ,EAAe7vJ,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC65G,GAAW,CAAC,UACvE0yC,iBAAkBj2J,EAAI6H,KAAK,GAAI,CAACssJ,GAAgB,CAAC,UACjD+B,WAAYl2J,EAAI6H,KAAK,GAAI,CAAC6sJ,GAAc,CAAC,UACzCyB,cAAen2J,EAAI6H,KAAK,CAACmtJ,GAAmB,GAAI,CAAC,WACjD/9G,SAAUj3C,EAAI6H,KAAK,CAACgoJ,GAAgB,CAAChtC,GAAW,CAAC,UACjDpb,KAAMznG,EAAI6H,KAAK,CAACqtJ,GAAgB,CAAC5qJ,GAAW,IAC5C8rJ,QAASp2J,EAAI6H,KAAK,CAACqtJ,GAAgB,CAAC5qJ,GAAW,IAC/C+rJ,SAAUr2J,EAAI6H,KAAK,CAACstJ,GAAiB,CAAC7qJ,GAAW,IACjDgsJ,WAAYt2J,EAAI6H,KAAK,CAACstJ,GAAiB,CAAC7qJ,GAAW,IACnDisJ,cAAev2J,EAAI6H,KAAK,CAAC8gJ,GAAU,CAAC0K,GAAoB,CAAC,UACzDmD,gBAAiBx2J,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC0rJ,GAAa,CAAC,UAC7DqB,cAAez2J,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI8E,MAAO,GAAI,IACjD4xJ,cAAe12J,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI8E,MAAO,GAAI,IAClDqzD,OAAQn4D,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,CAAC,UAClCgsJ,SAAU32J,EAAI6H,KAAK,CAACqtJ,EAAel1J,EAAIK,WAAY,CAACiK,GAAW,IAC/DssJ,WAAY52J,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACkJ,GAAS,CAAC,UAC5CktD,SAAU/3D,EAAI6H,KAAK,CAACkhJ,GAAkB,CAACwM,GAAqB,KAE/D,EClLYz1J,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM82J,EAAc72J,EAAI2B,KAClB+mJ,EAAuB1oJ,EAAI2B,KAC3BguJ,EAAa3vJ,EAAImB,MACjB21J,EAAgB92J,EAAII,IAAIJ,EAAImC,MAC5BmlJ,EAAkBtnJ,EAAI2B,KACtB27D,EAAoBt9D,EAAI2B,KACxBwlJ,EAAOnnJ,EAAIE,QAAQ,CACvBuO,UAAWzO,EAAIK,UACfoE,QAAS64D,IAELoqF,EAAiB1nJ,EAAIW,OAAO,CAChCsO,MAAOq4I,EACP7pF,KAAM0pF,IAEFD,EAAUlnJ,EAAI0J,IACd69I,EAAiBvnJ,EAAIE,QAAQ,CACjCsnJ,aAAcF,EACd1sF,MAAO56D,EAAI2B,OAEPgmJ,EAAkB3nJ,EAAIE,QAAQ,CAClCqK,GAAI28I,EACJ18I,IAAK+8I,IAEDgI,EAAqBvvJ,EAAI2B,KACzBwI,EAAcnK,EAAIE,QAAQ,CAC9BsnJ,aAAcF,EACd1sF,MAAO56D,EAAI2B,OAEPimJ,EAAW5nJ,EAAIE,QAAQ,CAC3BqK,GAAIm+I,EACJl+I,IAAKL,IAEDu6I,EAAO1kJ,EAAIiK,IACXomJ,EAAUrwJ,EAAIW,OAAO,CACzBk/F,OAAQ7/F,EAAIa,IAAI6jJ,GAChBmM,OAAQ7wJ,EAAIK,UACZ4rD,MAAOjsD,EAAIgB,QAEPsoJ,EAAYtpJ,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIy7D,MAAMitF,EAAsB1oJ,EAAIa,IAAIwvJ,IAC5C7lJ,IAAKL,IAED4sJ,EAAU/2J,EAAImB,MACd61J,EAAUh3J,EAAImB,MACd81J,EAAYj3J,EAAIE,QAAQ,CAC5BiqB,MAAOnqB,EAAI2B,KACXmsC,SAAU9tC,EAAIW,OAAO,CAAE0a,GAAI07I,EAASjpH,SAAU9tC,EAAI2B,OAClDu1J,OAAQl3J,EAAII,IAAI42J,KAEZnP,EAAY7nJ,EAAI2B,KAChBw1J,EAAcn3J,EAAIW,OAAO,CAC7BsO,MAAOsgJ,EACP1oJ,gBAAiB7G,EAAIa,IAAIi2J,GACzB7qG,MAAOjsD,EAAIa,IAAIb,EAAIgB,SAEf6hH,EAAW7iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAIQ,KAAMgK,IAAKL,IAC5C81I,EAAgBjgJ,EAAIy7D,MACxBz7D,EAAI2B,KACJ3B,EAAIE,QAAQ,CACVk3J,IAAKp3J,EAAI0J,IACT2tJ,KAAMr3J,EAAII,IAAIJ,EAAImC,MAClBm1J,KAAMt3J,EAAImC,KACV2c,KAAM9e,EAAI2B,QAGR41J,EAAoBv3J,EAAIE,QAAQ,CACpCm3J,KAAMr3J,EAAII,IAAIJ,EAAImC,MAClBm4C,KAAMt6C,EAAII,IAAI6/I,GACdrlG,KAAM56C,EAAI2B,OAENo5D,EAAW/6D,EAAIE,QAAQ,CAC3BioJ,SAAUnoJ,EAAIW,OAAO,CACnBoP,SAAU/P,EAAImC,KACd80C,SAAUj3C,EAAIa,IAAI02J,GAClB/mJ,KAAMxQ,EAAI2B,KACV2O,OAAQtQ,EAAI2B,OAEd0mJ,YAAaroJ,EAAIW,OAAO,CACtB62J,UAAWx3J,EAAI2B,KACf81J,MAAOz3J,EAAI2B,KACXs1C,SAAUj3C,EAAIa,IAAI02J,GAClB/mJ,KAAMxQ,EAAI2B,SAGR6nJ,EAAWxpJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAIy7D,MAAMitF,EAAsB1oJ,EAAIgB,OACxCwJ,IAAKL,IAED0oI,EAAc7yI,EAAIW,OAAO,CAC7BsO,MAAO0gJ,EACPl0C,KAAMipC,EACNmM,OAAQnI,EACRnuB,MAAOmuB,EACPz8F,MAAOjsD,EAAIgB,QAEPyoJ,EAAWzpJ,EAAIE,QAAQ,CAAEqK,GAAIwwD,EAAUvwD,IAAKL,IAC5CutJ,EAAc13J,EAAIE,QAAQ,CAC9B0rG,IAAK+jD,EACLgI,KAAM33J,EAAII,IAAIuvJ,GACd1yC,KAAMj9G,EAAIgB,QAEN42J,EAAU53J,EAAIW,OAAO,CACzBk3J,QAASnT,EACTxiJ,WAAY40J,EACZgB,MAAOpP,EACP9kJ,OAAQ5D,EAAIgB,MACZ+2J,SAAUL,IAENM,EAAmBh4J,EAAIW,OAAO,CAClCs3J,IAAKvT,EACLx7B,aAAclpH,EAAII,IAAIsoJ,GACtBl4I,KAAMxQ,EAAI2B,KACV26C,MAAOt8C,EAAIy7D,MAAMz7D,EAAIgB,MAAOhB,EAAIgB,OAChCk3J,QAASl4J,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIgB,MAAOhB,EAAIgB,QAC1CmH,MAAOu8I,IAEHyT,EAAgBn4J,EAAIE,QAAQ,CAChCk4J,OAAQp4J,EAAIQ,KACZknG,KAAM1nG,EAAIQ,KACV63J,KAAM3P,IAEF4P,EAAOt4J,EAAIW,OAAO,CACtBs3J,IAAKvT,EACL6T,OAAQv4J,EAAII,IAAI43J,GAChB7vJ,MAAOu8I,EACP8T,SAAUx4J,EAAI0J,IACd+uJ,UAAWN,IAEPjQ,EAAWloJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAIy7D,MAAMitF,EAAsB1oJ,EAAIgB,OACxCwJ,IAAKxK,EAAI2B,OAEL+2J,EAAkB14J,EAAIW,OAAO,CACjC0a,GAAIrb,EAAI0J,IACRuuJ,IAAKvT,EACLl0I,KAAMxQ,EAAI2B,KACV+I,UAAW1K,EAAI8E,KACfozJ,QAASl4J,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIgB,MAAOhB,EAAIgB,QAC1CmH,MAAOu8I,IAEHiU,EAAc34J,EAAIW,OAAO,CAC7Bs3J,IAAKvT,EACL6T,OAAQv4J,EAAII,IAAIs4J,GAChBvwJ,MAAOu8I,EACP8T,SAAUx4J,EAAI0J,IACd+uJ,UAAWz4J,EAAI0J,MAEX65G,EAAWvjH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAIQ,KAAMgK,IAAKxK,EAAI2B,OAChDi3J,EAAkB54J,EAAIW,OAAO,CACjC86G,KAAMipC,EACNmM,OAAQ7wJ,EAAIK,UACZm/C,OAAQx/C,EAAII,IAAIuvJ,GAChBp1B,MAAOmuB,EACPz8F,MAAOjsD,EAAIgB,QAEPi9I,EAAOj+I,EAAII,IAAIJ,EAAImC,MACnB07C,EAAa79C,EAAII,IAAIJ,EAAImC,MACzB4mJ,EAAkB/oJ,EAAIW,OAAO,CACjC0hB,GAAI8kI,EACJl4I,MAAOq4I,EACP0B,OAAQhpJ,EAAI8E,KACZ4vB,KAAMyyH,EACN7/G,KAAM22G,EACN/7I,WAAYlC,EAAIa,IAAIg9C,GACpBj6C,OAAQsjJ,IAEJqB,EAAmBvoJ,EAAIE,QAAQ,CACnCqK,GAAI28I,EACJ18I,IAAKxK,EAAIE,QAAQ,CACfsoJ,aAAclrF,EACd/C,oBAAqBv6D,EAAIQ,KACzBgnJ,aAAcF,EACdmB,SAAUzoJ,EAAIQ,KACdi6D,aAAc6C,EACd1C,MAAO56D,EAAI2B,SAGT0lJ,EAAarnJ,EAAI0J,IACjBiB,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAI88I,EAAY78I,IAAKL,IAC9C0uJ,EAAiB74J,EAAIE,QAAQ,CACjCioJ,SAAUnoJ,EAAIW,OAAO,CACnBoP,SAAU/P,EAAImC,KACd80C,SAAUj3C,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC9BqO,KAAMxQ,EAAI2B,KACV2O,OAAQtQ,EAAI2B,OAEd0mJ,YAAaroJ,EAAIW,OAAO,CAAEs2C,SAAUj3C,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,WAEpD4hH,EAAc/jH,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI2B,MACtCqiH,EAAchkH,EAAIW,OAAO,CAC7Bq5F,IAAKh6F,EAAI2B,KACTsiH,OAAQjkH,EAAI2B,KACZo4G,KAAM/5G,EAAII,IAAIJ,EAAImC,MAClB+hH,QAASlkH,EAAII,IAAI2jH,KAEb+0C,EAA6B94J,EAAIW,OAAO,CAC5CoJ,IAAK/J,EAAI2B,KACTo3J,OAAQ/4J,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC5BgV,MAAOnX,EAAI0J,IACXsvJ,iBAAkBh5J,EAAI2B,OAElBs3J,EAAgCj5J,EAAIW,OAAO,CAC/CsO,MAAOjP,EAAIa,IAAIi4J,GACf/+C,KAAM/5G,EAAII,IAAIJ,EAAImC,QAEd+2J,EAAwBl5J,EAAIE,QAAQ,CACxC83I,SAAUh4I,EAAIW,OAAO,CACnBsO,MAAO6pJ,EACPv8H,SAAUv8B,EAAI6H,KACZ,CAACixJ,GACD,CAACG,GACD,CAAC,cAID90C,EAAenkH,EAAIW,OAAO,CAC9Bo5G,KAAM/5G,EAAII,IAAIJ,EAAImC,MAClB+hH,QAASlkH,EAAII,IAAI2jH,GACjBz/G,QAAStE,EAAI8E,KACbmzI,mBAAoBj4I,EAAIa,IAAIq4J,GAC5B90C,YAAapkH,EAAIqkH,QAEb4jC,GAAWjoJ,EAAIE,QAAQ,CAAEqK,GAAIsuJ,EAAgBruJ,IAAKL,IAClDgvJ,GAAen5J,EAAIW,OAAO,CAC9By4J,UAAW1U,EACX9uC,UAAW51G,EAAI8E,KACfu0J,YAAar5J,EAAI0J,IACjB4vJ,KAAMt5J,EAAI0J,IACV6vJ,YAAav5J,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIgB,MAAOhB,EAAIgB,QAC9Cw4J,cAAe9U,EACf+U,UAAWz5J,EAAIgB,MACfy3J,UAAWz4J,EAAI0J,IACfuiD,MAAOjsD,EAAIgB,QAEPsJ,GAAWtK,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIuvJ,GACZnlJ,IAAKL,IAEDU,GAAS7K,EAAIE,QAAQ,CACzBqK,GAAIvK,EAAII,IACNJ,EAAIy7D,MAAMk0F,EAAY3vJ,EAAIa,IAAIwvJ,GAAUrwJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAE9DqI,IAAKL,IAEP,OAAOnK,EAAI2H,QAAQ,CACjB+xJ,aAAc15J,EAAI6H,KAAK,GAAI,GAAI,IAC/B8xJ,SAAU35J,EAAI6H,KACZ,CAACgvJ,EAAa72J,EAAImB,MAAOnB,EAAI2B,KAAM3B,EAAI2B,KAAM3B,EAAI2B,MACjD,GACA,IAEFi4J,aAAc55J,EAAI6H,KAAK,CAACgvJ,EAAa72J,EAAII,IAAIJ,EAAImC,OAAQ,GAAI,IAC7D03J,mBAAoB75J,EAAI6H,KAAK,GAAI,GAAI,IACrCiyJ,YAAa95J,EAAI6H,KACf,CAAC7H,EAAI2B,KAAM+mJ,EAAsBA,GACjC,CAAC1oJ,EAAI2B,MACL,IAEFo4J,oBAAqB/5J,EAAI6H,KAAK,GAAI,GAAI,IACtCmyJ,eAAgBh6J,EAAI6H,KAClB,GACA,CACE7H,EAAII,IACFJ,EAAIy7D,MACFk0F,EACA3vJ,EAAIW,OAAO,CACTuB,WAAY40J,EACZjG,OAAQ7wJ,EAAIK,UACZk6H,MAAOmuB,EACPz8F,MAAOjsD,EAAIgB,WAKnB,CAAC,UAEHi5J,gBAAiBj6J,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UAC1CtD,QAASpG,EAAI6H,KAAK,CAAC6/I,GAAiB,CAACC,GAAkB,CAAC,UACxDgO,OAAQ31J,EAAI6H,KAAK,CAAC0nJ,GAAqB,CAAC3H,GAAW,CAAC,UACpDsS,QAASl6J,EAAI6H,KAAK,CAAC0nJ,GAAqB,CAACjG,GAAY,CAAC,UACtD6Q,qBAAsBn6J,EAAI6H,KAAK,GAAI,GAAI,IACvCuyJ,UAAWp6J,EAAI6H,KAAK,GAAI,CAAC7H,EAAIK,WAAY,CAAC,UAC1Cg6J,aAAcr6J,EAAI6H,KAChB,CAACgvJ,EAAa72J,EAAI2B,KAAM3B,EAAI2B,KAAMs1J,EAAWj3J,EAAI0J,KACjD,GACA,IAEF4wJ,gBAAiBt6J,EAAI6H,KAAK,CAACgvJ,GAAc,CAAC72J,EAAI8E,MAAO,CAAC,UACtDy1J,cAAev6J,EAAI6H,KAAK,CAAC7H,EAAI8E,KAAM9E,EAAI0J,KAAM,CAAC1J,EAAI8E,MAAO,CAAC,UAC1D01J,gBAAiBx6J,EAAI6H,KACnB,CAACgvJ,EAAa72J,EAAII,IAAIJ,EAAImC,MAAOnC,EAAI8E,MACrC,CAAC9E,EAAI8E,MACL,IAEF21J,YAAaz6J,EAAI6H,KAAK,CAAC6/I,GAAiB,CAACC,GAAkB,CAAC,UAC5D+S,WAAY16J,EAAI6H,KAAK,CAAC0nJ,GAAqB,CAAC3H,GAAW,CAAC,UACxD+S,YAAa36J,EAAI6H,KAAK,GAAI,GAAI,IAC9B+yJ,YAAa56J,EAAI6H,KACf,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMitF,EAAsBoO,KACzC,CAAC,UAEH+D,eAAgB76J,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIynJ,IAAa,CAAC,UACpDiT,oBAAqB96J,EAAI6H,KAAK,CAACsvJ,GAAc,CAACt0C,GAAW,IACzDk4C,wBAAyB/6J,EAAI6H,KAC3B,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAYU,EAASt1F,KACxC,CAAC,UAEHigG,wBAAyBh7J,EAAI6H,KAC3B,CAAC0nJ,EAAoBvvJ,EAAIgB,MAAO0nJ,GAChC,CAACc,GACD,IAEFyR,sBAAuBj7J,EAAI6H,KAAK,CAAC6gJ,GAAuB,CAAC7lC,GAAW,IACpEq4C,qBAAsBl7J,EAAI6H,KACxB,GACA,CAAC7H,EAAIgB,MAAOhB,EAAIgB,MAAOhB,EAAIgB,MAAOhB,EAAIgB,MAAOhB,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI0J,KACnE,CAAC,UAEHyxJ,4BAA6Bn7J,EAAI6H,KAC/B,GACA,CAAC7H,EAAII,IAAIyyI,IACT,CAAC,UAEHuoB,aAAcp7J,EAAI6H,KAAK,CAAC0nJ,GAAqB,CAAC9F,GAAW,CAAC,UAC1D4R,SAAUr7J,EAAI6H,KACZ,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMitF,EAAsB3tF,KACzC,CAAC/6D,EAAII,IAAIuvJ,IACT,IAEF2L,aAAct7J,EAAI6H,KAChB,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMitF,EAAsBkP,KACzC,CAAC,UAEH2D,gBAAiBv7J,EAAI6H,KAAK,GAAI,GAAI,IAClC2zJ,cAAex7J,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,IACxC22J,gBAAiBz7J,EAAI6H,KAAK,GAAI,CAAC7H,EAAIa,IAAIy3J,IAAQ,CAAC,UAChDoD,YAAa17J,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,IACtC62J,aAAc37J,EAAI6H,KAChB,CAAC7H,EAAII,IAAI43J,GAAmBG,EAAen4J,EAAII,IAAIsoJ,IACnD,CAAC1oJ,EAAI8E,MACL,IAEF82J,cAAe57J,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,IACxC+2J,iBAAkB77J,EAAI6H,KACpB,CAAC7H,EAAI0J,IAAK1J,EAAIgB,MAAOhB,EAAIgB,MAAO0nJ,GAChC,CAACR,GACD,IAEF4T,eAAgB97J,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,IACzCi3J,iBAAkB/7J,EAAI6H,KACpB,CAAC6gJ,GACD,CAAC1oJ,EAAIa,IAAI83J,IACT,CAAC,UAEHqD,eAAgBh8J,EAAI6H,KAAK,CAAC6gJ,GAAuB,CAACnlC,GAAW,IAC7D04C,qBAAsBj8J,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIw4J,IAAmB,CAAC,UAChEsD,eAAgBl8J,EAAI6H,KAClB,CACE7H,EAAIa,IAAIb,EAAII,IAAI43J,IAChBh4J,EAAIa,IAAIs3J,GACRn4J,EAAIa,IAAIb,EAAII,IAAIsoJ,KAElB,CAAC1oJ,EAAI8E,MACL,IAEFq3J,aAAcn8J,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,IAC5C+7J,0BAA2Bp8J,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI2B,MAAO,GAAI,IAC9D06J,uBAAwBr8J,EAAI6H,KAAK,CAAC68I,GAAO,GAAI,IAC7C4X,aAAct8J,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,IAC5Ck8J,eAAgBv8J,EAAI6H,KAAK,CAAC6gJ,EAAsB1oJ,EAAIgB,OAAQ,GAAI,IAChEw7J,aAAcx8J,EAAI6H,KAAK,CAACkhJ,GAAkB,CAACR,GAAmB,IAC9DkU,eAAgBz8J,EAAI6H,KAAK,CAAC0nJ,GAAqB,CAAC5kJ,GAAW,CAAC,UAC5Ds+I,WAAYjpJ,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIynJ,IAAa,CAAC,UAChD6U,YAAa18J,EAAI6H,KACf,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMitF,EAAsBoO,KACzC,CAAC,UAEH/6F,YAAa/7D,EAAI6H,KACf,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAYkJ,KAC/B,CAAC,UAEH8D,UAAW38J,EAAI6H,KAAK,GAAI,CAAC7H,EAAIK,WAAY,CAAC,UAC1Cu8J,YAAa58J,EAAI6H,KACf,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAYjH,KAC/B,CAAC,UAEHmU,UAAW78J,EAAI6H,KACb,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAYkJ,KAC/B,CAAC,UAEHiE,yBAA0B98J,EAAI6H,KAAK,GAAI,GAAI,IAC3Ck1J,oBAAqB/8J,EAAI6H,KAAK,GAAI,GAAI,IACtCm1J,wBAAyBh9J,EAAI6H,KAAK,GAAI,GAAI,IAC1Co1J,mBAAoBj9J,EAAI6H,KAAK,GAAI,GAAI,IACrCq1J,oBAAqBl9J,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,CAAC,UAC/Cq4J,6BAA8Bn9J,EAAI6H,KAAK,GAAI,GAAI,IAC/Cu1J,kBAAmBp9J,EAAI6H,KACrB,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI0J,OACjC,CAAC,UAEH2zJ,gBAAiBr9J,EAAI6H,KAAK,GAAI,GAAI,IAClCy1J,eAAgBt9J,EAAI6H,KAAK,GAAI,GAAI,IACjC+8G,aAAc5kH,EAAI6H,KAAK,CAACm8G,GAAc,CAACG,GAAe,CAAC,UACvDo5C,gCAAiCv9J,EAAI6H,KACnC,CAACixJ,GACD,CAACG,GACD,CAAC,UAEHuE,oBAAqBx9J,EAAI6H,KAAK,CAACm8G,GAAc,CAACG,GAAe,IAC7Ds5C,mBAAoBz9J,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,CAAC,UAC9C6sD,KAAM3xD,EAAI6H,KAAK,CAACsvJ,GAAc,CAACt0C,GAAW,IAC1C66C,SAAU19J,EAAI6H,KACZ,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAYU,EAASwI,KACxC,CAAC,UAEH8E,KAAM39J,EAAI6H,KACR,CAAC0nJ,EAAoBvvJ,EAAIgB,MAAO0nJ,EAAsBoO,GACtD,CAAClP,GACD,IAEF3wG,SAAUj3C,EAAI6H,KAAK,CAAC0nJ,GAAqB,CAACtH,IAAW,CAAC,UACtD2V,QAAS59J,EAAI6H,KACX,CAAC7H,EAAIgB,MAAOhB,EAAIgB,MAAO0nJ,EAAsBoO,GAC7C,CAAC5O,GACD,IAEF2V,SAAU79J,EAAI6H,KAAK,CAAC6gJ,GAAuB,CAACnlC,GAAW,IACvDu6C,iBAAkB99J,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIw4J,IAAmB,CAAC,UAC5DmF,cAAe/9J,EAAI6H,KAAK,CAAC6gJ,GAAuB,CAACyQ,IAAe,CAAC,UACjE6E,UAAWh+J,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,IACzC49J,OAAQj+J,EAAI6H,KAAK,CAAC0nJ,GAAqB,CAAC1sC,GAAW,IACnDq7C,YAAal+J,EAAI6H,KACf,GACA,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAYjH,EAAsB1oJ,EAAIgB,SACzD,CAAC,UAEHilJ,MAAOjmJ,EAAI6H,KACT,GACA,CAAC7H,EAAIgB,MAAOhB,EAAIgB,MAAOhB,EAAIgB,MAAOhB,EAAIgB,MAAOhB,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI0J,KACnE,CAAC,UAEHyuD,OAAQn4D,EAAI6H,KAAK,CAAC0nJ,GAAqB,CAAC5kJ,GAAW,CAAC,UACpD60C,OAAQx/C,EAAI6H,KAAK,CAAC6gJ,GAAuB,CAACp+I,IAAW,CAAC,UACtD6zJ,WAAYn+J,EAAI6H,KAAK,CAAC6gJ,GAAuB,CAAC79I,IAAS,CAAC,UACxDy4E,aAActjF,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIyyI,IAAe,CAAC,UACpD96E,SAAU/3D,EAAI6H,KAAK,CAACkhJ,GAAkB,CAACR,GAAmB,KAC1D,ECnbS75G,GAAyB5lC,GACpCC,EAAMC,OAAgC,CACpCgD,UAAWC,EAAUyiC,sBACrB5lC,WACAhJ,WAAYs+J,KAGHhiD,GAAcA,CAACnzG,EAAoBH,IAC9CC,EAAMC,OAAoB,CACxBC,aACAH,WACAkD,UAAWC,EAAUmwG,YACrBt8G,WAAYu+J,KAGHlhD,GAAoBr0G,GACxBC,EAAMC,OAAwB,CACnCF,WACAkD,UAAWC,EAAUkxG,iBACrBr9G,WAAYw+J,KAIHC,GAAgBz1J,GACpBC,EAAMC,OAAoB,CAC/BF,WACAkD,UAAWC,EAAUsyJ,aACrBz+J,WAAY0+J,KAIHC,GAASA,CAACx1J,EAAoBH,IAClCC,EAAMC,OAAsB,CACjCF,WACAhJ,WAAY4+J,GACZz1J,eAYS01J,GAAUA,CAAC11J,EAAoBH,IACnCC,EAAMC,OAAsB,CACjCF,WACAhJ,WAAY8+J,GACZ31J,eCxESnJ,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM8+J,EAAa7+J,EAAIE,QAAQ,CAC7B4+J,eAAgB9+J,EAAIQ,KACpBu+J,aAAc/+J,EAAIQ,OAEdw+J,EAAQh/J,EAAIW,OAAO,CAAEs+J,MAAOJ,EAAYvuJ,OAAQtQ,EAAI2B,OACpDu9J,EAAoBl/J,EAAIE,QAAQ,CACpCi/J,6BAA8Bn/J,EAAIQ,KAClC4+J,yBAA0Bp/J,EAAIQ,KAC9B6+J,qBAAsBr/J,EAAIQ,KAC1B8+J,uBAAwBt/J,EAAIQ,KAC5B++J,wBAAyBv/J,EAAIQ,KAC7Bg/J,0BAA2Bx/J,EAAIQ,KAC/Bi/J,oBAAqBz/J,EAAIQ,KACzBk/J,0BAA2B1/J,EAAIQ,KAC/Bm/J,YAAa3/J,EAAIQ,KACjBo/J,uBAAwB5/J,EAAIQ,KAC5Bo6D,MAAO56D,EAAIW,OAAO,CAAEmhD,KAAM9hD,EAAImB,MAAO8rB,YAAajtB,EAAI2B,OACtDk+J,sBAAuB7/J,EAAIQ,KAC3Bs/J,gBAAiB9/J,EAAIQ,KACrBu/J,wBAAyB//J,EAAIQ,KAC7Bw/J,uBAAwBhgK,EAAIQ,KAC5BmG,QAAS3G,EAAIQ,OAET0J,EAAQlK,EAAIW,OAAO,CACvBkhB,QAASq9I,EACT/7D,UAAWnjG,EAAIiK,MAEXg2J,EAAkBjgK,EAAIW,OAAO,CACjCoP,SAAU/P,EAAImB,MACdk6E,KAAMr7E,EAAIgB,MACV8a,MAAO9b,EAAIa,IAAIqJ,GACfi5F,UAAWnjG,EAAIgB,MACfk/J,aAAclgK,EAAI2B,KAClBw+J,YAAangK,EAAI2B,KACjBy+J,YAAapgK,EAAI2B,KACjB0+J,WAAYrgK,EAAI2B,OAElB,OAAO3B,EAAI2H,QAAQ,CACjB24J,UAAWtgK,EAAI6H,KAAK,CAACm3J,EAAOA,GAAQ,GAAI,IACxCuB,kBAAmBvgK,EAAI6H,KAAK,GAAI,GAAI,IACpC24J,WAAYxgK,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMujG,EAAOA,KAAU,CAAC,UAC9Dl9D,kBAAmB9hG,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACs+J,GAAkB,CAAC,UAC5DQ,mBAAoBzgK,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAI6/J,IAAmB,CAAC,WAC9D,ECzCSp+D,GAAeA,IAC1B94F,EAAMC,OAAqB,CACzBC,WAAY,8BACZnJ,WAAY4gK,KCNH5gK,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM4gK,EAAW3gK,EAAIE,QAAQ,CAC3B0gK,KAAM5gK,EAAIQ,KACVqgK,UAAW7gK,EAAIQ,KACfsgK,OAAQ9gK,EAAIQ,OAERugK,EAAa/gK,EAAIW,OAAO,CAC5BqgK,gDAAiDhhK,EAAIa,IAAIb,EAAI2B,MAC7Ds/J,uBAAwBjhK,EAAIa,IAAIb,EAAI0J,KACpCw3J,WAAYlhK,EAAIa,IAAIb,EAAIK,WACxB8gK,6BAA8BnhK,EAAIa,IAAIb,EAAIK,WAC1C+gK,8BAA+BphK,EAAIa,IAAIb,EAAI2B,MAC3C0/J,gCAAiCrhK,EAAIa,IAAIb,EAAI0J,KAC7C43J,0BAA2BthK,EAAIa,IAAIb,EAAI2B,MACvC4/J,0BAA2BvhK,EAAIa,IAAIb,EAAI0J,KACvC83J,kDAAmDxhK,EAAIa,IAAIb,EAAI0J,KAC/D+3J,sBAAuBzhK,EAAIa,IAAI8/J,KAE3Be,EAAkB1hK,EAAIE,QAAQ,CAClCoB,QAAStB,EAAIQ,KACbmhK,QAAS3hK,EAAIQ,OAETohK,EAAU5hK,EAAIW,OAAO,CACzBkhK,iBAAkBH,EAClBI,0BAA2B9hK,EAAI0J,IAC/BhI,eAAgB1B,EAAI2B,KACpBs/J,uBAAwBjhK,EAAI0J,IAC5B9H,UAAW5B,EAAIK,UACfihK,0BAA2BthK,EAAIa,IAAIb,EAAI2B,MACvC4/J,0BAA2BvhK,EAAI0J,IAC/B+3J,sBAAuBd,IAMnBoB,GAJY/hK,EAAIE,QAAQ,CAC5B6gK,WAAYA,EACZa,QAASA,IAEa5hK,EAAIW,OAAO,CACjCqhK,kBAAmBhiK,EAAIK,UACvB4hK,SAAUjiK,EAAI0J,IACdjF,QAASzE,EAAI2B,KACbugK,qBAAsBliK,EAAI2B,QAEtBwgK,EAA6BniK,EAAIW,OAAO,CAC5CqhK,kBAAmBhiK,EAAIK,YAEnB+hK,EAA0BpiK,EAAIW,OAAO,CACzC0hK,yBAA0BriK,EAAI0J,IAC9B44J,gBAAiBtiK,EAAI0J,IACrB64J,oBAAqBviK,EAAI0J,IACzBy5F,UAAWnjG,EAAIa,IAAIb,EAAIgB,OACvBwhK,UAAWxiK,EAAI0J,MAEX2rH,EAAqBr1H,EAAIE,QAAQ,CACrCo1H,QAASt1H,EAAIQ,KACb+0H,SAAUv1H,EAAIQ,KACdg1H,QAASx1H,EAAIQ,OAETiiK,EAAgBziK,EAAIE,QAAQ,CAChCy1H,YAAa31H,EAAIQ,KACjBkiK,OAAQ1iK,EAAIQ,OAERmiK,EAA2B3iK,EAAIW,OAAO,CAC1C+0H,mBAAoB11H,EAAI0J,IACxBisH,YAAa31H,EAAII,IAAIJ,EAAIK,WACzBujI,sBAAuB5jI,EAAI0J,IAC3Bm6H,eAAgB4+B,EAChB3+B,kBAAmB9jI,EAAI0J,IACvBksH,kBAAmB51H,EAAI0J,IACvBmsH,mBAAoB71H,EAAI0J,MAEpB6jI,EAAavtI,EAAIW,OAAO,CAC5B6sI,6BAA8BxtI,EAAI0J,IAClC+jI,uBAAwBztI,EAAI0J,IAC5BgkI,gBAAiB1tI,EAAI0J,IACrBikI,4BAA6B3tI,EAAI0J,MAE7Bk5J,EAAyB5iK,EAAIW,OAAO,CACxC4zB,OAAQ8gG,EACRU,YAAa/1H,EAAI0J,IACjB0xD,OAAQp7D,EAAI0J,IACZssH,SAAU2sC,EACV/0B,YAAaL,EACbtX,2BAA4Bj2H,EAAI0J,IAChCwsH,YAAal2H,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACjC0gK,gBAAiB7iK,EAAI0J,MAEjB85G,EAAaxjH,EAAII,IAAIJ,EAAImC,MACzB2gK,EAAc9iK,EAAIW,OAAO,CAC7BoiK,iBAAkB/iK,EAAI2B,KACtBqhK,UAAWhjK,EAAI0J,MAEXu5J,EAAsBjjK,EAAIW,OAAO,CACrCuiK,YAAaljK,EAAI2B,KACjBW,MAAOtC,EAAI0J,IACX24J,yBAA0BriK,EAAI0J,IAC9B4wC,KAAMt6C,EAAII,IAAIJ,EAAImC,MAClBmgK,gBAAiBtiK,EAAI0J,IACrBu4J,SAAUjiK,EAAI0J,IACdopG,MAAO9yG,EAAI0J,IACX84J,UAAWxiK,EAAI0J,IACfy5J,YAAanjK,EAAII,IACfJ,EAAIW,OAAO,CACTyiK,aAAcpjK,EAAII,IAAIJ,EAAII,IAAIJ,EAAImC,OAClCsC,QAASzE,EAAI2B,UAIb0hK,EAAqBrjK,EAAIE,QAAQ,CACrCojK,QAAStjK,EAAIW,OAAO,CAClB4iK,wBAAyBvjK,EAAI0J,IAC7B9H,UAAW5B,EAAIK,UACfmjK,0BAA2BxjK,EAAI0J,MAEjC+5J,MAAOzjK,EAAIW,OAAO,CAAE+iK,kBAAmB1jK,EAAI0J,QAEvCi6J,EAAqB3jK,EAAIW,OAAO,CACpCijK,oBAAqB5jK,EAAI0J,IACzB6qB,OAAQv0B,EAAIE,QAAQ,CAAEq/H,QAASv/H,EAAIQ,KAAMqjK,QAAS7jK,EAAIQ,OACtDuiK,iBAAkB/iK,EAAI2B,KACtBmiK,WAAY9jK,EAAI2B,KAChBoiK,aAAc/jK,EAAI0J,IAClBs6J,SAAUhkK,EAAI0J,MAEVtG,EAAQpD,EAAIW,OAAO,CACvBwiG,UAAWnjG,EAAIgB,MACfsjG,QAAStkG,EAAIE,QAAQ,CACnB+jK,aAAcjkK,EAAIW,OAAO,CACvBojK,aAAc/jK,EAAI0J,IAClBw6J,iBAAkBlkK,EAAIa,IAAIb,EAAI2B,QAEhCwiK,qBAAsBnkK,EAAIW,OAAO,CAC/B8N,UAAWzO,EAAIK,UACf0iK,iBAAkB/iK,EAAI2B,KACtBW,MAAOtC,EAAI0J,IACXs5J,UAAWhjK,EAAI0J,IACfxH,WAAYlC,EAAIa,IAAI2iH,GACpBugD,aAAc/jK,EAAI0J,IAClB2vC,uBAAwBr5C,EAAI2B,KAC5ByiK,aAAcpkK,EAAI2B,OAEpB0iK,kBAAmBrkK,EAAIW,OAAO,CAC5B2jK,gBAAiBtkK,EAAI2B,KACrB4iK,cAAevkK,EAAI0J,MAErB3H,QAASg/J,EACT/+J,KAAM4/J,EACN4C,kBAAmBxkK,EAAIW,OAAO,CAC5BqhK,kBAAmBhiK,EAAIK,UACvB4hK,SAAUjiK,EAAI0J,IACdjF,QAASzE,EAAI2B,KACbugK,qBAAsBliK,EAAI2B,OAE5B8iK,mCAAoCzkK,EAAIW,OAAO,CAC7CojK,aAAc/jK,EAAI0J,MAEpBg7J,mBAAoB1kK,EAAIW,OAAO,CAAEgkK,aAAc7B,IAC/C8B,cAAe5kK,EAAIW,OAAO,CAAEojK,aAAc/jK,EAAI0J,MAC9Cm7J,gBAAiB7kK,EAAIW,OAAO,CAC1B8N,UAAWzO,EAAIK,UACf0iK,iBAAkB/iK,EAAI2B,KACtBW,MAAOtC,EAAI0J,IACXs5J,UAAWhjK,EAAI0J,IACfxH,WAAYlC,EAAIa,IAAI2iH,GACpBugD,aAAc/jK,EAAI0J,IAClB06J,aAAcpkK,EAAI2B,OAEpBmjK,oBAAqB9kK,EAAIW,OAAO,CAC9B4jK,cAAevkK,EAAI0J,IACnBg1D,YAAaukG,IAEf8B,yBAA0B/kK,EAAIW,OAAO,CAAEwW,MAAOksJ,IAC9C2B,YAAahlK,EAAIW,OAAO,CACtBgkK,aAAc7B,EACdv9J,iBAAkBvF,EAAI0J,MAExBu7J,wBAAyBjlK,EAAIW,OAAO,CAClCoiK,iBAAkB/iK,EAAIa,IAAIb,EAAI2B,MAC9B4iK,cAAevkK,EAAI0J,IACnBw7J,kBAAmBllK,EAAI0J,IACvBy7J,oBAAqBnlK,EAAI0J,MAE3B07J,6BAA8BplK,EAAIW,OAAO,CACvC0hB,GAAIriB,EAAIK,UACRkkK,cAAevkK,EAAI0J,IACnBw7J,kBAAmBllK,EAAI0J,IACvB06H,cAAepkI,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAErCkjK,0BAA2BrlK,EAAIW,OAAO,CACpC2kK,cAAetlK,EAAI0J,IACnBq5J,iBAAkB/iK,EAAIa,IAAIb,EAAI2B,MAC9B4iK,cAAevkK,EAAI0J,IACnBw7J,kBAAmBllK,EAAI0J,IACvB9H,UAAW5B,EAAIK,UACf8kK,oBAAqBnlK,EAAI0J,MAE3B67J,cAAevlK,EAAIW,OAAO,CACxBgkK,aAAc7B,EACdzpH,uBAAwBr5C,EAAI2B,KAC5B4D,iBAAkBvF,EAAI0J,IACtBw4J,qBAAsBliK,EAAI2B,OAE5B6jK,mBAAoBxlK,EAAIW,OAAO,CAC7B4jK,cAAevkK,EAAI0J,IACnBg1D,YAAaukG,IAEfwC,eAAgBzlK,EAAIW,OAAO,CACzBgkK,aAAc7B,EACdj/J,OAAQ7D,EAAI2B,OAEd+jK,mBAAoB1lK,EAAIW,OAAO,CAAEojK,aAAc/jK,EAAI0J,MACnDi8J,+BAAgC3lK,EAAIW,OAAO,CACzC4iK,wBAAyBvjK,EAAI0J,IAC7Bw5J,YAAaljK,EAAI2B,KACjBqgK,kBAAmBhiK,EAAIK,UACvBulK,kBAAmB5lK,EAAI0J,IACvBgrB,KAAM10B,EAAIK,UACVwlK,WAAY7lK,EAAIgB,MAChB6F,gBAAiB7G,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACrCk3C,uBAAwBr5C,EAAI2B,KAC5B6hK,0BAA2BxjK,EAAI0J,IAC/B64J,oBAAqBviK,EAAI0J,MAE3Bo8J,6BAA8B9lK,EAAIW,OAAO,CACvC+iK,kBAAmB1jK,EAAI0J,IACvBw5J,YAAaljK,EAAI2B,KACjBikK,kBAAmB5lK,EAAI0J,IACvBgrB,KAAM10B,EAAIK,UACVwlK,WAAY7lK,EAAIa,IAAIb,EAAIgB,OACxB6F,gBAAiB7G,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAEvC4jK,qBAAsB/lK,EAAIW,OAAO,CAC/B4jK,cAAevkK,EAAI0J,IACnBs8J,oBAAqBrC,QAIrBsC,EAAejmK,EAAIW,OAAO,CAC9B04C,uBAAwBr5C,EAAI2B,KAC5B+U,mBAAoB1W,EAAIK,UACxB6hK,qBAAsBliK,EAAI2B,OAEtBukK,EAAiBlmK,EAAIW,OAAO,CAChC0hK,yBAA0BriK,EAAI0J,IAC9B44J,gBAAiBtiK,EAAI0J,IACrBy5F,UAAWnjG,EAAIgB,QAEXwE,EAAaxF,EAAIW,OAAO,CAC5BqgK,gDAAiDhhK,EAAIa,IAAIb,EAAI2B,MAC7DwkK,YAAanmK,EAAIa,IAAIb,EAAI0J,KACzB08J,4BAA6BpmK,EAAIa,IAAIb,EAAI2B,MACzC0kK,2BAA4BrmK,EAAIa,IAAIb,EAAI0J,KACxCw3J,WAAYlhK,EAAIa,IAAIb,EAAIK,WACxB+gK,8BAA+BphK,EAAIa,IAAIb,EAAI2B,MAC3C0/J,gCAAiCrhK,EAAIa,IAAIb,EAAI0J,KAC7CkvC,yBAA0B54C,EAAIa,IAAIb,EAAII,IAAI6lK,IAC1CK,sBAAuBtmK,EAAIa,IAAIqlK,GAC/BK,gBAAiBvmK,EAAIa,IAAIb,EAAIK,WAC7BmmK,uBAAwBxmK,EAAIa,IAAIb,EAAI2B,MACpC8kK,8BAA+BzmK,EAAIa,IAAIb,EAAI0J,KAC3C63J,0BAA2BvhK,EAAIa,IAAIb,EAAI0J,KACvCg9J,eAAgB1mK,EAAIa,IAAIb,EAAII,IAAIJ,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,IAAK2vC,uBAAwBr5C,EAAI2B,SAC3FglK,eAAgB3mK,EAAIa,IAAIb,EAAI2B,MAC5B6/J,kDAAmDxhK,EAAIa,IAAIb,EAAI0J,KAC/D+3J,sBAAuBzhK,EAAIa,IAAI8/J,KAE3BiG,EAAiB5mK,EAAIW,OAAO,CAAEoiK,iBAAkB/iK,EAAI2B,OACpDklK,EAAoB7mK,EAAIE,QAAQ,CACpCq/H,QAASv/H,EAAIW,OAAO,CAClBoiK,iBAAkB/iK,EAAI2B,KACtBmlK,0BAA2B9mK,EAAIa,IAAIb,EAAI0J,OAEzCq9J,WAAY/mK,EAAIW,OAAO,CACrBoiK,iBAAkB/iK,EAAI2B,KACtBujK,kBAAmBllK,EAAI0J,IACvBy7J,oBAAqBnlK,EAAI0J,MAE3Bs9J,qBAAsBJ,IAElBK,EAAoBjnK,EAAIE,QAAQ,CACpCgnK,SAAUlnK,EAAIQ,KACd2mK,YAAaN,EACbO,OAAQR,EACRS,UAAWrnK,EAAIQ,KACfmG,QAAS3G,EAAIQ,OAET8mK,EAAmBtnK,EAAIW,OAAO,CAClCqhK,kBAAmBhiK,EAAIK,UACvB0yI,UAAW/yI,EAAI2B,KACf4lK,sBAAuBvnK,EAAIa,IAAI2iH,GAC/BgkD,wBAAyBxnK,EAAIa,IAAI2iH,GACjC5/G,OAAQ5D,EAAI0J,MAER+9J,EAAuBznK,EAAIW,OAAO,CACtC+mK,oBAAqB1nK,EAAI0J,IACzBi+J,kBAAmB3nK,EAAI0J,MAEnBk+J,EAAc5nK,EAAIE,QAAQ,CAC9B8F,uBAAwBhG,EAAI2B,KAC5BoF,sBAAuB/G,EAAIW,OAAO,CAChCqqH,aAAchrH,EAAI2B,KAClBC,UAAW5B,EAAIK,UACf2G,UAAWhH,EAAI0J,IACfm+J,mBAAoB7nK,EAAI0J,MAE1BxD,aAAclG,EAAIW,OAAO,CACvBmnK,oBAAqB9nK,EAAI0J,IACzBshH,aAAchrH,EAAI2B,KAClBC,UAAW5B,EAAIK,UACfwnK,mBAAoB7nK,EAAI0J,MAE1BvD,kBAAmBnG,EAAIW,OAAO,CAC5ByF,QAASpG,EAAI0J,IACbshH,aAAchrH,EAAI2B,KAClBC,UAAW5B,EAAIK,UACfwnK,mBAAoB7nK,EAAI0J,QAGtBq+J,EAAqB/nK,EAAIE,QAAQ,CACrC8nK,kBAAmBhoK,EAAIW,OAAO,CAC5BsnK,iBAAkBjoK,EAAII,IAAI6lK,KAE5BjgK,uBAAwBhG,EAAI2B,KAC5BumK,mBAAoBloK,EAAIW,OAAO,CAC7Bmb,MAAO8rJ,EACPD,kBAAmB3nK,EAAI0J,MAEzBy+J,iBAAkBnoK,EAAIW,OAAO,CAAEmb,MAAO8rJ,IACtCQ,wBAAyBpoK,EAAIW,OAAO,CAAE8D,QAASzE,EAAI2B,SAE/C0mK,EAAgBroK,EAAIW,OAAO,CAC/BoyI,UAAW/yI,EAAI2B,KACfkF,gBAAiB7G,EAAIa,IAAI2iH,GACzB5/G,OAAQ5D,EAAI0J,MAER4+J,EAAqBtoK,EAAIW,OAAO,CAAEyD,YAAapE,EAAI0J,MACnD6+J,EAAkBvoK,EAAIE,QAAQ,CAClC8F,uBAAwBhG,EAAI2B,KAC5BoF,sBAAuB/G,EAAIW,OAAO,CAAEqG,UAAWhH,EAAI0J,MACnDxD,aAAclG,EAAIW,OAAO,CAAE6nK,sBAAuBxoK,EAAI0J,MACtD0+J,wBAAyBpoK,EAAIW,OAAO,CAAE8D,QAASzE,EAAI2B,OACnDwE,kBAAmBnG,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,QAEzC5H,EAAU9B,EAAIW,OAAO,CACzBsB,MAAOjC,EAAIK,UACX6B,WAAYlC,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAE5BsmK,EAA4BzoK,EAAIE,QAAQ,CAC5CwoK,YAAa1oK,EAAI2B,KACjBgnK,gBAAiB7mK,EACjB8mK,eAAgB5oK,EAAIgB,QAEhB6nK,EAAmB7oK,EAAIE,QAAQ,CACnCinK,YAAaN,EACbO,OAAQR,EACRS,UAAWrnK,EAAIQ,KACfmG,QAAS3G,EAAIQ,OAETsoK,EAAmB9oK,EAAIW,OAAO,CAClC4zB,OAAQs0I,EACR79C,aAAchrH,EAAI2B,KAClBikK,kBAAmB5lK,EAAI0J,IACvB66J,cAAevkK,EAAIgB,MACnB0zB,KAAM10B,EAAIK,UACVwG,gBAAiB7G,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACrCogK,oBAAqBviK,EAAIa,IAAIb,EAAI0J,KACjCq/J,kBAAmB/oK,EAAI2B,OAEzB,OAAO3B,EAAI2H,QAAQ,CACjBqhK,kBAAmBhpK,EAAI6H,KAAK,CAACk6J,GAAkB,GAAI,IACnDkH,2BAA4BjpK,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIshK,IAA8B,CAACC,GAA0B,CAAC,UACxGpnC,oBAAqBh7H,EAAI6H,KAAK,GAAI,CAAC+6J,GAAyB,IAC5D16J,WAAYlI,EAAI6H,KACd,CAAC7H,EAAIW,OAAO,CAAEwH,MAAOnI,EAAIgB,MAAOoH,OAAQpI,EAAIgB,SAC5C,CACEhB,EAAIW,OAAO,CACTuoK,kBAAmBlpK,EAAIgB,MACvB4kJ,OAAQ5lJ,EAAII,IAAIgD,MAGpB,CAAC,UAEHiF,gBAAiBrI,EAAI6H,KAAK,GAAI,CAACrC,GAAa,CAAC,UAC7C2jK,mBAAoBnpK,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC3B,EAAI8E,MAAO,CAAC,UACtD6hK,eAAgB3mK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,IACzCynK,oBAAqBppK,EAAI6H,KAAK,CAAC7H,EAAIgB,OAAQ,CAACimK,GAAoB,IAChET,uBAAwBxmK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAClD0nK,eAAgBrpK,EAAI6H,KAClB,CAACy/J,GACD,CACEtnK,EAAIE,QAAQ,CACVsI,GAAIi/J,EACJh/J,IAAKs/J,KAGT,IAEFuB,aAActpK,EAAI6H,KAAK,CAACwgK,GAAgB,CAACroK,EAAIE,QAAQ,CAAEsI,GAAI8/J,EAAoB7/J,IAAK8/J,KAAqB,IACzGgB,kBAAmBvpK,EAAI6H,KAAK,CAAC4gK,GAA4B,CAACzoK,EAAII,IAAI0oK,IAAoB,CAAC,WACvF,EC3YSU,GAAoBA,CAACvgK,EAAoBH,IACpDC,EAAMC,OAA8B,CAClCC,aACAnJ,WAAY2pK,GACZ3gK,aCPShJ,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM8K,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAC9CgJ,EAAW3K,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIK,WAChBmK,IAAKxK,EAAI2B,OAEL+nK,EAAc1pK,EAAIW,OAAO,CAC7BgpK,UAAW3pK,EAAI8E,KACfu9D,MAAOriE,EAAIa,IAAIb,EAAI2B,MACnBioK,cAAe5pK,EAAIa,IAAIb,EAAIK,WAC3BuB,UAAW5B,EAAIK,YAEXwjH,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAI2B,OAC9C06C,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfY,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OAClD,OAAO3B,EAAI2H,QAAQ,CACjBkiK,kBAAmB7pK,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI2B,MAAO,CAACkJ,GAAS,IACjEi/J,mBAAoB9pK,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACwK,GAAS,IACxDm4G,aAAchjH,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IACtC66G,UAAWvkH,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,CAAC,UACrCo/J,uBAAwB/pK,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAI2B,QAAS,CAAC,UACrFqoK,kBAAmBhqK,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAIa,IAAIb,EAAI2B,OAAQ,CAAC,UACnEsoK,0BAA2BjqK,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAI2B,QAAS,CAAC,UACrGuoK,2BAA4BlqK,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,CAACL,EAAII,IAAIspK,IAAe,CAAC,UACxFS,wBAAyBnqK,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACY,GAAW,CAAC,UACnEu6G,UAAW7kH,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClD+pK,eAAgBpqK,EAAI6H,KAAK,GAAI,CAACgD,GAAS,KACvC,EC1BSw/J,GAAiBA,IAC5BthK,EAAMC,OAA8B,CAClCgD,UAAWC,EAAUq+J,eACrBxqK,WAAYyqK,KCRHzqK,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM4K,EAAW3K,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIK,WAChBmK,IAAKxK,EAAI2B,OAEL6oK,EAAexqK,EAAIW,OAAO,CAC9BsO,MAAOjP,EAAIK,UACX+F,QAASpG,EAAIq2H,UAETo0C,EAAgBzqK,EAAIW,OAAO,CAC/B88D,KAAMz9D,EAAIK,UACVm/C,OAAQx/C,EAAII,IAAIoqK,GAChBE,aAAc1qK,EAAIq2H,UAEd/rH,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIkgK,EAAejgK,IAAKxK,EAAI2B,OACrDgpK,EAAiB3qK,EAAIW,OAAO,CAChC88D,KAAMz9D,EAAI2B,KACV69C,OAAQx/C,EAAII,IAAIoqK,KAEZ3mD,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIuqK,GACjBtuH,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfmB,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OAC1CipK,EAAa5qK,EAAIW,OAAO,CAC5B88D,KAAMz9D,EAAIK,UACVm/C,OAAQx/C,EAAII,IAAIoqK,KAEZK,EAAiB7qK,EAAIW,OAAO,CAAEmqK,YAAa9qK,EAAII,IAAIwqK,KACzD,OAAO5qK,EAAI2H,QAAQ,CACjBq7G,aAAchjH,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IACtC66G,UAAWvkH,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,CAAC,UACrCogK,YAAa/qK,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAIq2H,SAAU,IACtD20C,cAAehrK,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACiK,GAAW,CAAC,UACtD2gK,gBAAiBjrK,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACmB,GAAS,CAAC,UACzDg6G,UAAW7kH,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClD6qK,iBAAkBlrK,EAAI6H,KAAK,CAACgjK,GAAiB,CAAC7qK,EAAI8E,MAAO,KACzD,ECpCSqmK,GAAkBA,IAC7BpiK,EAAMC,OAAoB,CACxBC,WAAY,8BACZnJ,WAAYsrK,KCNHtrK,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMsrK,EAAcrrK,EAAIW,OAAO,CAAEoD,IAAK/D,EAAI0J,IAAK9F,OAAQ5D,EAAI0J,MACrDQ,EAAQlK,EAAIE,QAAQ,CACxBiK,YAAanK,EAAIQ,KACjB4J,cAAepK,EAAI2B,KACnB0I,iBAAkBrK,EAAI2B,KACtBwE,kBAAmBnG,EAAIQ,OAEnBqK,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKN,IACzCI,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKN,IAC5CohK,EAAetrK,EAAIW,OAAO,CAAEoD,IAAK/D,EAAI0J,IAAK9F,OAAQ5D,EAAI0J,MAC5D,OAAO1J,EAAI2H,QAAQ,CACjB2zD,UAAWt7D,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAI0J,KAAM,IAChD68C,QAASvmD,EAAI6H,KAAK,CAACwjK,GAAc,CAACxgK,GAAS,IAC3C27C,YAAaxmD,EAAI6H,KAAK,CAACwjK,GAAc,CAACxgK,GAAS,IAC/C0gK,gBAAiBvrK,EAAI6H,KACnB,CAAC7H,EAAIK,UAAWL,EAAIK,UAAWL,EAAI0J,KACnC,CAACY,GACD,IAEFkhK,cAAexrK,EAAI6H,KAAK,GAAI,CAAC7H,EAAIK,WAAY,CAAC,UAC9CorK,YAAazrK,EAAI6H,KAAK,GAAI,CAAC7H,EAAIK,WAAY,CAAC,UAC5C42C,SAAUj3C,EAAI6H,KACZ,GACA,CACE7H,EAAIW,OAAO,CACT+qK,cAAe1rK,EAAI0J,IACnBysF,SAAUn2F,EAAIK,UACdsrK,WAAY3rK,EAAIK,aAGpB,IAEFurK,gBAAiB5rK,EAAI6H,KACnB,CAAC7H,EAAIK,UAAWL,EAAIK,UAAWL,EAAI0J,KACnC,CAACY,GACD,IAEFy6C,SAAU/kD,EAAI6H,KAAK,CAACyjK,GAAe,CAACzgK,GAAS,KAC7C,ECvCS/K,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM8rK,EAAa7rK,EAAIW,OAAO,CAC5B0hB,GAAIriB,EAAI2B,KACRghB,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdi1I,eAAgB52I,EAAIq2H,QACpByc,eAAgB9yI,EAAI0J,IACpBgrB,KAAM10B,EAAI2B,KACVugF,KAAMliF,EAAI2B,KACVqlC,KAAMhnC,EAAIiK,IACV8oI,UAAW/yI,EAAI2B,KACfqxI,mBAAoBhzI,EAAIq2H,QACxBtyE,WAAY/jD,EAAI0J,IAChBwpI,gBAAiBlzI,EAAI0J,IACrBypI,eAAgBnzI,EAAI2B,KACpBm9G,UAAW9+G,EAAIq2H,QACftX,UAAW/+G,EAAIq2H,QACflzB,UAAWnjG,EAAIiK,IACfmpI,mBAAoBpzI,EAAIq2H,QACxBgd,eAAgBrzI,EAAIq2H,QACpBid,eAAgBtzI,EAAI2B,KACpB+xI,QAAS1zI,EAAI0J,IACbkZ,aAAc5iB,EAAI2B,KAClBsqD,MAAOjsD,EAAI0J,IACXiqI,eAAgB3zI,EAAIq2H,QACpBvzG,aAAc9iB,EAAI2B,KAClBqgB,OAAQhiB,EAAI2B,KACZm1I,eAAgB92I,EAAIq2H,UAEhBzT,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChDmqK,EAAc9rK,EAAIW,OAAO,CAC7BisD,MAAO5sD,EAAI0J,IACXqiK,QAAS/rK,EAAII,IAAIyrK,GACjBG,SAAUhsK,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIiK,IAAKjK,EAAIK,cAE3C,OAAOL,EAAI2H,QAAQ,CACjBitI,SAAU50I,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,IACxC40I,YAAaj1I,EAAI6H,KAAK,CAAC7H,EAAII,IAAIyrK,IAAc,GAAI,IACjD9oD,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzChrD,IAAK53D,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAIiK,IAAKjK,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACoiK,GAAc,CAAC,UACrE32B,eAAgBn1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,CAAC,UACxDi1I,UAAWt1I,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,CAAC,WACnD,EC3CSP,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMunJ,EAAkBtnJ,EAAI2B,KACtB27D,EAAoBt9D,EAAI2B,KACxBwlJ,EAAOnnJ,EAAIE,QAAQ,CACvBuO,UAAWzO,EAAIK,UACfoE,QAAS64D,IAEL8pF,EAAmBpnJ,EAAIW,OAAO,CAClCsO,MAAOq4I,EACPrlJ,MAAOklJ,EACPhoG,QAASn/C,EAAIK,YAET8J,EAAcnK,EAAIE,QAAQ,CAC9Bq6D,oBAAqBv6D,EAAIQ,KACzBgnJ,aAAcF,EACd7sF,aAAc6C,EACd1C,MAAO56D,EAAI2B,OAEPsqK,EAAYjsK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKL,IAC5C0zC,EAAa79C,EAAII,IAAIJ,EAAImC,MACzB+kJ,EAAUlnJ,EAAI0J,IACd+9I,EAAiBznJ,EAAIW,OAAO,CAChCsO,MAAOq4I,EACPplJ,WAAYlC,EAAIa,IAAIg9C,GACpB72C,UAAWkgJ,EACX/nG,QAASn/C,EAAIK,YAETivJ,EAAoBtvJ,EAAIW,OAAO,CACnCurK,SAAUlsK,EAAI8E,KACdq6C,QAASgoG,IAELtkC,EAAW7iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAChD+lJ,EAAiB1nJ,EAAIW,OAAO,CAChCsO,MAAOq4I,EACP7pF,KAAM0pF,IAEFQ,EAAkB3nJ,EAAIE,QAAQ,CAAEqK,GAAI28I,EAAS18I,IAAKL,IAClDgiK,EAAYnsK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKL,IAC7CylJ,EAAQ5vJ,EAAIW,OAAO,CACvByM,QAASpN,EAAII,IAAIJ,EAAImC,MACrBiqK,SAAUpsK,EAAI0J,MAEVm+I,EAAY7nJ,EAAI2B,KAChBguJ,EAAa3vJ,EAAImB,MACjBosJ,EAASvtJ,EAAIW,OAAO,CAAE6sJ,EAAGxtJ,EAAI2B,KAAM8rJ,EAAGztJ,EAAI2B,OAC1C4gH,EAAgBviH,EAAIW,OAAO,CAC/B8yJ,IAAKzzJ,EAAI2B,KACT4P,QAASo+I,EACT1tJ,MAAOq7D,EACPrmB,SAAUj3C,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC9Bia,KAAMpc,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACV+uJ,OAAQpzF,EACRqzF,SAAU3wJ,EAAI2B,KACdivJ,SAAU5wJ,EAAI2B,KACd+xJ,SAAU1zJ,EAAIiK,IACdy4G,aAAc1iH,EAAI2B,KAClBgyJ,WAAY3zJ,EAAII,IAAImtJ,GACpBU,UAAWjuJ,EAAI0J,IACfkqJ,QAAS5zJ,EAAI2B,KACbmvJ,WAAY9wJ,EAAI2B,OAEZqmJ,EAAShoJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAImiH,GACjBlmE,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf2iK,EAAYrsK,EAAIE,QAAQ,CAAEqK,GAAIy9I,EAAQx9I,IAAKxK,EAAI2B,OAC/CouJ,EAAS/vJ,EAAI2B,KACbs8I,EAAOj+I,EAAII,IAAIJ,EAAImC,MACnB0mJ,EAAY7oJ,EAAIE,QAAQ,CAC5BwnG,KAAM1nG,EAAIQ,KACVinG,KAAMznG,EAAIQ,KACV6+C,QAASr/C,EAAIQ,KACbu3D,SAAU/3D,EAAIQ,OAEVwvJ,EAAiBhwJ,EAAIW,OAAO,CAChC0hB,GAAIi7C,EACJgvG,OAAQvc,EACRx+I,QAASo+I,EACTj7H,KAAM4oC,EACN4kB,KAAMliF,EAAI2B,KACV2lC,KAAMtnC,EAAIa,IAAIo9I,GACdxiC,KAAMz7G,EAAIiK,IACVgqJ,UAAWj0J,EAAI2B,KACfuyJ,OAAQrL,EACRzE,OAAQ9mF,EACRrR,MAAOi7F,EACPtjJ,OAAQsjJ,IAEJrjC,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAI4vJ,GACjB3zG,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf6iK,EAAYvsK,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OAC7C8tJ,EAAYzvJ,EAAIW,OAAO,CAAE6sJ,EAAGxtJ,EAAI2B,KAAM8rJ,EAAGztJ,EAAI2B,OAC7C+rJ,EAAe1tJ,EAAIW,OAAO,CAC9BgtJ,IAAK3tJ,EAAI2B,KACTisJ,QAAStwF,EACTuwF,QAAS7tJ,EAAII,IAAIqvJ,GACjB3B,UAAW9tJ,EAAI2B,KACfM,MAAOq7D,EACP9sD,KAAMxQ,EAAI2B,KACVosJ,WAAY/tJ,EAAIiK,IAChBktC,YAAan3C,EAAI0J,IACjBg5G,aAAc1iH,EAAI2B,KAClBqsJ,WAAYhuJ,EAAI0J,IAChBukJ,UAAWjuJ,EAAI0J,IACfwkJ,MAAOluJ,EAAI2B,OAEP6qK,EAAYxsK,EAAIE,QAAQ,CAAEqK,GAAImjJ,EAAcljJ,IAAKxK,EAAI2B,OACrD8I,EAAYzK,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,IAAKgB,UAAW1K,EAAI0J,MAC1DQ,EAAQlK,EAAIE,QAAQ,CACxBiK,YAAanK,EAAIQ,KACjB4J,cAAepK,EAAI2B,KACnB0I,iBAAkBrK,EAAI2B,KACtBwE,kBAAmBnG,EAAIQ,OAEnBisK,EAAYzsK,EAAIE,QAAQ,CAAEqK,GAAIE,EAAWD,IAAKN,IAC9CwiK,EAAY1sK,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIy7D,MAAMz7D,EAAI0J,IAAK1J,EAAI0J,KAC3Bc,IAAKxK,EAAI2B,OAEL2nJ,EAAYtpJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAIJ,EAAI2B,MAAO6I,IAAKxK,EAAI2B,OAC1DsmJ,EAAWjoJ,EAAIE,QAAQ,CAAEqK,GAAIolJ,EAAYnlJ,IAAKxK,EAAI2B,OAClD2I,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKxK,EAAI2B,OAChDoiH,EAAc/jH,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI2B,MACtCqiH,EAAchkH,EAAIW,OAAO,CAC7Bq5F,IAAKh6F,EAAI2B,KACTsiH,OAAQjkH,EAAI2B,KACZo4G,KAAM/5G,EAAII,IAAIJ,EAAImC,MAClB+hH,QAASlkH,EAAII,IAAI2jH,KAEbmsC,EAAyBlwJ,EAAIW,OAAO,CACxCoJ,IAAK/J,EAAI2B,KACTwV,MAAOnX,EAAI0J,IACXsvJ,iBAAkBh5J,EAAI2B,OAElBo2I,EAAoB/3I,EAAIE,QAAQ,CACpC83I,SAAUh4I,EAAIW,OAAO,CACnBsO,MAAOihJ,EACP3zH,SAAUv8B,EAAI6H,KAAK,GAAI,GAAI,QAGzBs8G,EAAenkH,EAAIW,OAAO,CAC9Bo5G,KAAM/5G,EAAII,IAAIJ,EAAImC,MAClB+hH,QAASlkH,EAAII,IAAI2jH,GACjBk0B,mBAAoBj4I,EAAIa,IAAIk3I,GAC5B3zB,YAAapkH,EAAIqkH,QAEbwzB,EAAgC73I,EAAIW,OAAO,CAC/CsO,MAAOjP,EAAIa,IAAIqvJ,GACfn2C,KAAM/5G,EAAII,IAAIJ,EAAImC,QAEdqnJ,EAAWxpJ,EAAIE,QAAQ,CAAEqK,GAAIg4G,EAAe/3G,IAAKxK,EAAI2B,OACrD8nJ,EAAWzpJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAC/Co5D,EAAW/6D,EAAIE,QAAQ,CAC3BioJ,SAAUnoJ,EAAIW,OAAO,CACnBoP,SAAU/P,EAAImC,KACdimJ,aAAc9qF,EACdrmB,SAAUj3C,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC9BqO,KAAMxQ,EAAI2B,KACV2O,OAAQtQ,EAAI2B,OAEd0mJ,YAAaroJ,EAAIW,OAAO,CAAEs2C,SAAUj3C,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,WAEpDylJ,EAAW5nJ,EAAIE,QAAQ,CAAEqK,GAAIwwD,EAAUvwD,IAAKL,IAC5Cm+I,EAActoJ,EAAIW,OAAO,CAC7BsB,MAAOklJ,EACPlwG,SAAUj3C,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OAC9Bia,KAAMpc,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACVgvJ,SAAU3wJ,EAAI2B,KACdivJ,SAAU5wJ,EAAI2B,KACd+gH,aAAc1iH,EAAI2B,KAClBgyJ,WAAY3zJ,EAAII,IAAImtJ,GACpBU,UAAWjuJ,EAAI0J,IACfkqJ,QAAS5zJ,EAAI2B,KACbusJ,MAAOluJ,EAAI2B,KACXmvJ,WAAY9wJ,EAAI2B,OAEZumJ,EAAWloJ,EAAIE,QAAQ,CAAEqK,GAAI28I,EAAS18I,IAAKxK,EAAI2B,OAC/C4H,EAAQvJ,EAAIW,OAAO,CAAE8D,QAASzE,EAAI2B,KAAM6H,SAAUxJ,EAAI2B,OACtDgrK,EAAsB3sK,EAAIW,OAAO,CACrCoD,IAAK/D,EAAI0J,IACTy2C,UAAWngD,EAAIiK,IACfssD,yBAA0Bv2D,EAAI0J,IAC9B0zC,KAAMp9C,EAAI2B,KACVs+C,UAAWjgD,EAAI0J,IACf4sD,yBAA0Bt2D,EAAI0J,IAC9Bq6C,WAAY/jD,EAAI2B,KAChBiI,OAAQL,EACRM,OAAQN,EACR22C,UAAWlgD,EAAIiK,MAEXs5G,EAAWvjH,EAAIE,QAAQ,CAC3BqK,GAAIoiK,EACJniK,IAAKxK,EAAI2B,OAELgJ,GAAW3K,EAAIE,QAAQ,CAAEqK,GAAI28I,EAAS18I,IAAKL,IAC3Cu6I,GAAO1kJ,EAAIiK,IACXomJ,GAAUrwJ,EAAIW,OAAO,CACzBk/F,OAAQ7/F,EAAIa,IAAI6jJ,IAChBmM,OAAQ7wJ,EAAIK,UACZ4rD,MAAOjsD,EAAIgB,QAEP6J,GAAS7K,EAAIE,QAAQ,CACzBqK,GAAIvK,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAY3vJ,EAAIa,IAAIwvJ,IAAUrwJ,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SACxEqI,IAAKL,IAED4+I,GAAkB/oJ,EAAIW,OAAO,CACjC0hB,GAAI8kI,EACJl4I,MAAOq4I,EACP0B,OAAQhpJ,EAAI8E,KACZ4vB,KAAMyyH,EACN7/G,KAAM22G,EACN/7I,WAAYlC,EAAIa,IAAIg9C,GACpBi1D,MAAO9yG,EAAIa,IAAIb,EAAI0J,KACnB9F,OAAQsjJ,IAEJqB,GAAmBvoJ,EAAIE,QAAQ,CACnCqK,GAAI28I,EACJ18I,IAAKxK,EAAIE,QAAQ,CACf6G,sBAAuB/G,EAAIQ,KAC3BgoJ,aAAclrF,EACd/C,oBAAqBv6D,EAAIQ,KACzBgnJ,aAAcF,EACdmB,SAAUzoJ,EAAIQ,KACdi6D,aAAc6C,EACd1C,MAAO56D,EAAI2B,SAkEf,OA/DgB3B,EAAI2H,QAAQ,CAC1BX,UAAWhH,EAAI6H,KAAK,CAACu/I,GAAmB,CAAC6kB,GAAY,CAAC,UACtD5sH,QAASr/C,EAAI6H,KAAK,CAAC4/I,GAAiB,GAAI,IACxCmlB,cAAe5sK,EAAI6H,KAAK,CAACynJ,GAAoB,CAACzsC,GAAW,IACzDz8G,QAASpG,EAAI6H,KAAK,CAAC6/I,GAAiB,CAACC,GAAkB,CAAC,UACxDgO,OAAQ31J,EAAI6H,KAAK,CAACy/I,GAAkB,CAAC6kB,GAAY,CAAC,UAClDU,cAAe7sK,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI2B,KAAM3B,EAAI2B,MAAO,CAAC3B,EAAI8E,MAAO,IACpEgoK,UAAW9sK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACpCqjK,WAAY/sK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,IACrCkoK,aAAchtK,EAAI6H,KAChB,CACE7H,EAAIW,OAAO,CACTyrK,SAAUpsK,EAAI0J,IACdujK,aAAcjtK,EAAI2B,KAClBurK,UAAWltK,EAAII,IAAIJ,EAAI0J,QAG3B,GACA,IAEFyjK,aAAcntK,EAAI6H,KAAK,GAAI,CAAC7H,EAAIW,OAAO,CAAEyrK,SAAUpsK,EAAI0J,OAAS,IAChE0jK,aAAcptK,EAAI6H,KAAK,CAAC+nJ,GAAQ,CAAC5vJ,EAAIW,OAAO,CAAE0sK,SAAUrtK,EAAI0J,OAAS,IACrEqB,WAAY/K,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,GAAI,IACrCsnJ,WAAYjpJ,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIynJ,IAAa,CAAC,UAChDylB,qBAAsBttK,EAAI6H,KAAK,CAACs/I,EAAMnnJ,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC2iK,GAAY,CAAC,UACvExW,cAAe71J,EAAI6H,KAAK,CAACs/I,EAAMnnJ,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC2iK,GAAY,CAAC,UAChEkB,oBAAqBvtK,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC2iK,GAAY,CAAC,UAC1EvW,gBAAiB91J,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAI2B,MAAO3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC2iK,GAAY,CAAC,UAC/EtW,kBAAmB/1J,EAAI6H,KAAK,CAACs/I,EAAMnnJ,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC6iK,GAAY,CAAC,UACpEvW,aAAch2J,EAAI6H,KAAK,CAACy/I,EAAiBtnJ,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC6iK,GAAY,CAAC,UAC1EiB,cAAextK,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAY3vJ,EAAII,IAAIk9D,MAAuB,CAAC,UAC3FmwG,gBAAiBztK,EAAI6H,KAAK,GAAI,CAAC2kK,GAAY,CAAC,UAC5CnhK,aAAcrL,EAAI6H,KAAK,GAAI,CAAC4kK,GAAY,IACxC9P,UAAW38J,EAAI6H,KAAK,GAAI,CAAC7H,EAAIK,WAAY,CAAC,UAC1C61J,WAAYl2J,EAAI6H,KAAK,GAAI,CAAC6kK,GAAY,CAAC,UACvC9P,YAAa58J,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAY3vJ,EAAI2B,QAAS,CAAC,UACvE6J,gBAAiBxL,EAAI6H,KAAK,GAAI,CAACyhJ,GAAY,CAAC,UAC5CokB,WAAY1tK,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI2B,MAAO,CAACsmJ,GAAW,CAAC,UACxD4U,UAAW78J,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMk0F,EAAYptC,KAAkB,CAAC,UAC1EorD,mBAAoB3tK,EAAI6H,KAAK,GAAI,CAACyC,GAAW,CAAC,UAC9Cs6G,aAAc5kH,EAAI6H,KAAK,CAACm8G,GAAc,CAACG,GAAe,CAAC,UACvDo5C,gCAAiCv9J,EAAI6H,KAAK,CAACqoJ,GAAyB,CAACrY,GAAgC,CAAC,UACtG+1B,YAAa5tK,EAAI6H,KAAK,CAAC8nJ,GAAa,CAACnG,GAAW,CAAC,UACjDqkB,oBAAqB7tK,EAAI6H,KAAK,CAAC6lJ,EAAciC,EAAY3vJ,EAAI2B,MAAO,CAAC2I,GAAW,IAChFwjK,gBAAiB9tK,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI2B,MAAO,CAACkhH,GAAW,CAAC,UAC7DkrD,kBAAmB/tK,EAAI6H,KAAK,CAAC8nJ,EAAY3vJ,EAAI2B,KAAM3B,EAAI2B,MAAO,CAAC8nJ,GAAW,CAAC,UAC3EukB,YAAahuK,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAACY,GAAW,IAC7C2sC,SAAUj3C,EAAI6H,KAAK,CAACy/I,GAAkB,CAACM,GAAW,CAAC,UACnDngD,KAAMznG,EAAI6H,KAAK,CAACygJ,GAAc,CAACL,GAAW,IAC1CsO,cAAev2J,EAAI6H,KAAK,CAACs/I,GAAO,CAACe,GAAW,CAAC,UAC7C3nG,UAAWvgD,EAAI6H,KAAK,CAAC8nJ,GAAa,CAACpsC,GAAW,IAC9C0qD,kBAAmBjuK,EAAI6H,KAAK,CAACynJ,GAAoB,CAACzsC,GAAW,IAC7DqrD,eAAgBluK,EAAI6H,KAAK,CAAC4/I,GAAiB,CAAC5kC,GAAW,IACvDp3G,WAAYzL,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,GAAI,IACrC26D,QAASt8D,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACkhH,GAAW,IAC1Cm7C,UAAWh+J,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,IACzC8tK,mBAAoBnuK,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIb,EAAI2B,OAAQ,CAACkhH,GAAW,IAC9DurD,sBAAuBpuK,EAAI6H,KAAK,CAACy/I,GAAkB,CAACzkC,GAAW,IAC/D1qD,OAAQn4D,EAAI6H,KAAK,CAACy/I,GAAkB,CAAC38I,IAAW,CAAC,UACjD0jK,SAAUruK,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAACY,GAAW,IAC1C6zJ,WAAYn+J,EAAI6H,KAAK,CAACy1D,GAAoB,CAACzyD,IAAS,CAAC,UACrDktD,SAAU/3D,EAAI6H,KAAK,CAACkhJ,IAAkB,CAACR,IAAmB,KAE9C,EC1SHzoJ,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMuuK,EAAWtuK,EAAIW,OAAO,CAC1BoD,IAAK/D,EAAI0J,IACTE,OAAQ5J,EAAIK,UACZwJ,OAAQ7J,EAAIK,YAER6J,EAAQlK,EAAIE,QAAQ,CACxBiK,YAAanK,EAAIQ,KACjB4J,cAAepK,EAAI2B,KACnB0I,iBAAkBrK,EAAI2B,KACtBwE,kBAAmBnG,EAAIQ,OAEnB8J,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAIQ,KAAMgK,IAAKN,IAC5CqkK,EAAgBvuK,EAAIW,OAAO,CAC/B6tK,OAAQxuK,EAAI0J,IACZusD,OAAQj2D,EAAI2B,KACZ8sK,WAAYzuK,EAAI2B,KAChBsH,WAAYjJ,EAAIK,YAEZkJ,EAAQvJ,EAAIW,OAAO,CAAE8D,QAASzE,EAAI2B,KAAM6H,SAAUxJ,EAAI2B,OACtD8H,EAAiBzJ,EAAIW,OAAO,CAChCoD,IAAK/D,EAAI0J,IACTC,aAAc3J,EAAI2B,KAClBiI,OAAQL,EACRM,OAAQN,EACR0sD,OAAQj2D,EAAIa,IAAIb,EAAI2B,QAEhBmI,EAAW9J,EAAIW,OAAO,CAC1BoD,IAAK/D,EAAI0J,IACTK,IAAK/J,EAAI2B,KACTqI,YAAahK,EAAIiK,IACjBL,OAAQL,EACRM,OAAQN,EACRN,WAAYjJ,EAAIK,YAEZopJ,EAAWzpJ,EAAIE,QAAQ,CAAEqK,GAAIT,EAAUU,IAAKN,IAC5CwkK,EAAsB1uK,EAAIW,OAAO,CACrCguK,OAAQ3uK,EAAI8E,KACZq+F,UAAWnjG,EAAI0J,MAEXklK,EAAkB5uK,EAAIW,OAAO,CACjCkuK,gBAAiBH,EACjBI,OAAQ9uK,EAAIW,OAAO,CACjBguK,OAAQ3uK,EAAI8E,KACZiqK,OAAQ/uK,EAAI8E,KACZkqK,WAAYhvK,EAAI0J,IAChBy5F,UAAWnjG,EAAI0J,MAEjBulK,KAAMP,EACNQ,iBAAkBlvK,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACtCgtK,gBAAiBnvK,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACrCitK,iBAAkBV,EAClBpqK,QAASoqK,EACTvmK,MAAOumK,EACP5kJ,SAAUhgB,IAEN0iK,EAAYxsK,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIa,IAAI+tK,GACZpkK,IAAKN,IAEDO,EAAYzK,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,IAAKgB,UAAW1K,EAAI0J,MAC1D+iK,EAAYzsK,EAAIE,QAAQ,CAAEqK,GAAIE,EAAWD,IAAKN,IAC9CwiK,EAAY1sK,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIa,IAAIb,EAAIK,WAChBmK,IAAKN,IAEDo/I,EAAYtpJ,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CACb0uK,QAASrvK,EAAIK,UACbivK,0BAA2BtvK,EAAIK,UAC/BkvK,cAAevvK,EAAIa,IAAIb,EAAIK,WAC3BmvK,mBAAoBxvK,EAAIK,UACxBovK,UAAWzvK,EAAIK,UACfqvK,eAAgB1vK,EAAIK,YAEtBmK,IAAKN,IAEDs/I,EAAWxpJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAIkuK,GAAW9jK,IAAKN,IACrD09I,EAAW5nJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIwuK,GACZpkK,IAAKN,IAEDU,EAAc5K,EAAIW,OAAO,CAC7BoD,IAAK/D,EAAI0J,IACTE,OAAQL,EACRM,OAAQN,IAEJ0+I,EAAWjoJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAII,IAAIwuK,KAC7CpkK,IAAKN,IAEDq5G,EAAWvjH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAI0J,GAAWU,IAAKN,IACrDg+I,EAAWloJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAII,IAAIkuK,KAC7C9jK,IAAKN,IAEDylK,EAAiB3vK,EAAIW,OAAO,CAChCivK,KAAMhB,EACNzrE,UAAWnjG,EAAI0J,IACfmmK,SAAU7vK,EAAI2B,OAEVkhH,EAAW7iH,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIuvK,GACZnlK,IAAKN,IAED4lK,EAA+B9vK,EAAIW,OAAO,CAC9CovK,mBAAoB/vK,EAAIa,IAAIb,EAAIgwK,OAChChjG,SAAUhtE,EAAI2B,OAEVsuK,EAA2BjwK,EAAIW,OAAO,CAC1Cs2C,SAAU64H,EACVI,YAAalwK,EAAIa,IACfb,EAAIE,QAAQ,CACViwK,eAAgBnwK,EAAIQ,KACpB4vK,YAAapwK,EAAIW,OAAO,CACtB0vK,oBAAqBrwK,EAAIqkH,MACzBisD,eAAgBtwK,EAAIqkH,aAKtBksD,EAA8BvwK,EAAIW,OAAO,CAC7Ck/C,IAAK7/C,EAAII,IAAIJ,EAAImC,MACjB8hH,OAAQjkH,EAAI2B,KACZ6uK,iBAAkBP,IAEdQ,EAAuBzwK,EAAIE,QAAQ,CACvCwwK,mBAAoB1wK,EAAIW,OAAO,CAC7BgwK,MAAO3wK,EAAII,IAAIJ,EAAIW,OAAO,CAAEiwK,MAAO5wK,EAAII,IAAIJ,EAAI2B,WAEjDkvK,sBAAuB7wK,EAAI2B,OAEvBmvK,EAAoB9wK,EAAIW,OAAO,CACnCs2C,SAAU64H,EACViB,gBAAiBN,IAEbO,EAAkBhxK,EAAIW,OAAO,CAAEssB,YAAajtB,EAAI2B,OAChDsvK,EAAcjxK,EAAIE,QAAQ,CAC9B2F,aAAc7F,EAAIW,OAAO,CACvBssB,YAAajtB,EAAI2B,KACjBoE,WAAY/F,EAAI0J,MAElBwnK,oBAAqBF,EACrBG,wBAAyBH,EACzBI,0BAA2BJ,IAEvBK,EAA+BrxK,EAAIE,QAAQ,CAC/CsI,GAAIsoK,EACJroK,IAAKwoK,IAEDK,EAA+BtxK,EAAIW,OAAO,CAC9C4wK,gBAAiBvxK,EAAII,IAAIJ,EAAI2B,QAEzBgJ,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKN,IAC5CsnK,EAAkBxxK,EAAIW,OAAO,CAAEyuG,QAASpvG,EAAII,IAAIJ,EAAIK,aACpDwK,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKN,IAChD,OAAOlK,EAAI2H,QAAQ,CACjB8pK,YAAazxK,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWiuK,GAAW,CAAChkK,GAAW,IAC7DonK,mBAAoB1xK,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAC1EsxK,kBAAmB3xK,EAAI6H,KAAK,CAAC7H,EAAII,IAAImuK,IAAiB,GAAI,IAC1DqD,0BAA2B5xK,EAAI6H,KAAK,CAAC7H,EAAII,IAAImuK,IAAiB,CAACvuK,EAAIE,QAAQ,CAAEsI,GAAIxI,EAAI2B,KAAM8G,IAAKzI,EAAI2B,QAAU,IAC9GkwK,wBAAyB7xK,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,WAAYL,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IACxFyxK,sBAAuB9xK,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAC9D0xK,2BAA4B/xK,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,WAAYL,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAC3F2xK,iBAAkBhyK,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,CAACiK,GAAW,IACjE2nK,mBAAoBjyK,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,WAAYL,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IACnF6xK,sBAAuBlyK,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,WAAYL,EAAI8E,MAAO,GAAI,IACxEqtK,iCAAkCnyK,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,WAAYL,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC2I,GAAW,IACpG8nK,gCAAiCpyK,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,WAAYL,EAAI8E,MAAO,GAAI,IAClFutK,wBAAyBryK,EAAI6H,KAAK,GAAI,GAAI,IAC1CyqK,iBAAkBtyK,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAI2B,MAAO,IACxD4wK,2BAA4BvyK,EAAI6H,KAAK,GAAI,GAAI,IAC7CiD,WAAY9K,EAAI6H,KAAK,CAAC4B,GAAiB,CAACggJ,GAAW,IACnD+oB,eAAgBxyK,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWiuK,GAAW,CAAChkK,GAAW,IAChEi6G,UAAWvkH,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,CAAC,UACnDoyK,sBAAuBzyK,EAAI6H,KAAK,GAAI,CAAC2kK,GAAY,CAAC,UAClDnhK,aAAcrL,EAAI6H,KAAK,GAAI,CAAC4kK,GAAY,IACxCiG,iBAAkB1yK,EAAI6H,KAAK,GAAI,CAAC6kK,GAAY,CAAC,UAC7CiG,YAAa3yK,EAAI6H,KAAK,GAAI,CAACyhJ,GAAY,CAAC,UACxCspB,uBAAwB5yK,EAAI6H,KAAK,GAAI,CAAC7H,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,QAAS,CAAC,UACpE0wK,mBAAoB7yK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UAC9CmxK,wBAAyB9yK,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACmpJ,GAAW,CAAC,UAChEupB,0BAA2B/yK,EAAI6H,KAAK,GAAI,CAAC+/I,GAAW,CAAC,UACrDt8I,QAAStL,EAAI6H,KAAK,CAAC+C,GAAc,CAAC6+I,GAAW,CAAC,UAC9CupB,kBAAmBhzK,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAImuK,IAAiB,CAAC,UAC3D0E,sBAAuBjzK,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACunJ,GAAW,CAAC,UAC9DsrB,0BAA2BlzK,EAAI6H,KAAK,GAAI,CAACogJ,GAAW,CAAC,UACrD18I,SAAUvL,EAAI6H,KAAK,GAAI,CAAC07G,GAAW,CAAC,UACpC4vD,sBAAuBnzK,EAAI6H,KAAK,GAAI,CAACqgJ,GAAW,CAAC,UACjD18I,gBAAiBxL,EAAI6H,KAAK,GAAI,CAAC07G,GAAW,CAAC,UAC3C6vD,yBAA0BpzK,EAAI6H,KAAK,GAAI,CAACg7G,GAAW,CAAC,UACpDwwD,WAAYrzK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtC2xK,2BAA4BtzK,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIW,OAAO,CAAEq5F,IAAKh6F,EAAI2B,KAAM6O,KAAMxQ,EAAI2B,SAAW,CAAC,UACpG4xK,qCAAsCvzK,EAAI6H,KAAK,CAAC0oK,GAA8B,CAACc,GAA+B,IAC9GmC,uBAAwBxzK,EAAI6H,KAAK,GAAI,CAACypK,GAA+B,IACrE7lK,WAAYzL,EAAI6H,KAAK,CAAC+C,GAAc,CAAC5K,EAAI2B,MAAO,IAChD8xK,sBAAuBzzK,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAC7EqzK,oBAAqB1zK,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,GAAI,IACnDszK,4BAA6B3zK,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAIE,QAAQ,CAAEsI,GAAIxI,EAAI2B,KAAM8G,IAAKzI,EAAI2B,QAAU,IACvGiyK,uBAAwB5zK,EAAI6H,KAAK,GAAI,CAACyC,GAAW,IACjDu6G,UAAW7kH,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClDwzK,wBAAyB7zK,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAACgJ,GAAW,IACnEmpK,uBAAwB9zK,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAImC,OAAQ,GAAI,IAC1D4xK,+BAAgC/zK,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAImC,OAAQ,CAACnC,EAAIE,QAAQ,CAAEsI,GAAIxI,EAAI2B,KAAM8G,IAAKzI,EAAI2B,QAAU,IAC9GqyK,cAAeh0K,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IACrE4zK,iBAAkBj0K,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI8E,MAAO,GAAI,IAC1DovK,mBAAoBl0K,EAAI6H,KAAK,CAAC2pK,GAAkB,CAAClnK,GAAW,IAC5D6pK,yBAA0Bn0K,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAIK,WAAY,CAACwK,GAAS,KAC7E,EChNS/K,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMq0K,EAAiBp0K,EAAIW,OAAO,CAChCojD,WAAY/jD,EAAI0J,IAChBmtI,UAAW72I,EAAIiK,MAEXC,EAAQlK,EAAIE,QAAQ,CACxBiK,YAAanK,EAAIQ,KACjB4J,cAAepK,EAAI2B,KACnB0I,iBAAkBrK,EAAI2B,KACtBwE,kBAAmBnG,EAAIQ,OAEnBmK,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKN,IAC5CmqK,EAAiBr0K,EAAIW,OAAO,CAChCk2D,SAAU72D,EAAI0J,IACdotD,SAAU92D,EAAI0J,MAEV4qK,EAASt0K,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWg0K,IAC1Ch4H,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf6qK,EAAYv0K,EAAIE,QAAQ,CAAEqK,GAAI+pK,EAAQ9pK,IAAKN,IAC3CsqK,EAAYx0K,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CACb8zK,YAAaz0K,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI0J,IAAK1J,EAAIW,OAAO,CAAE8pD,YAAazqD,EAAI0J,IAAKghD,YAAa1qD,EAAI0J,QAC5FgrK,iBAAkB10K,EAAI0J,IACtBirK,iBAAkB30K,EAAI0J,MAExBc,IAAKN,IAED0qK,EAAY50K,EAAIW,OAAO,CAAEojD,WAAY/jD,EAAI0J,MACzCmrK,EAAY70K,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CAAEigD,QAAS5gD,EAAI0J,IAAKq3C,QAAS/gD,EAAI0J,MAChDc,IAAKN,IAED4qK,EAAwB90K,EAAIW,OAAO,CACvCs/C,UAAWjgD,EAAI2B,KACfoiD,WAAY/jD,EAAI0J,MAEZ2hK,EAAcrrK,EAAIW,OAAO,CAC7BoD,IAAK/D,EAAI0J,IACTuF,MAAOjP,EAAI2B,KACXiC,OAAQ5D,EAAI0J,MAERmB,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKN,IACzC6qK,EAAqB/0K,EAAIW,OAAO,CACpCw/C,UAAWngD,EAAIiK,IACf+qK,KAAMh1K,EAAI0J,IACVurK,KAAMj1K,EAAI0J,IACVk3C,QAAS5gD,EAAI0J,IACbq3C,QAAS/gD,EAAI0J,IACbwrK,cAAel1K,EAAIK,UACnB80K,eAAgBn1K,EAAI2B,KACpByzK,eAAgBp1K,EAAI2B,KACpBu+C,UAAWlgD,EAAIiK,MAEXQ,EAAYzK,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,IAAKgB,UAAW1K,EAAI0J,MAC1D2rK,EAAYr1K,EAAIE,QAAQ,CAAEqK,GAAIE,EAAWD,IAAKN,IAC9CorK,EAAYt1K,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CACb40K,qBAAsBv1K,EAAI0J,IAC1B8rK,qBAAsBx1K,EAAI0J,MAE5Bc,IAAKN,IAEDX,EAAQvJ,EAAIW,OAAO,CAAE8D,QAASzE,EAAI2B,KAAM6H,SAAUxJ,EAAI2B,OACtD8zK,EAAYz1K,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CACb0uK,QAASrvK,EAAIK,UACbivK,0BAA2BtvK,EAAIK,UAC/BuJ,OAAQL,EACRM,OAAQN,EACRmmK,eAAgB1vK,EAAIK,YAEtBmK,IAAKN,IAEDwrK,EAAgB11K,EAAIW,OAAO,CAC/BwiG,UAAWnjG,EAAI0J,IACfmtI,UAAW72I,EAAIiK,MAEX0rK,EAAkB31K,EAAIW,OAAO,CACjCi1K,eAAgB51K,EAAI0J,IACpBktI,eAAgB52I,EAAI0J,IACpBzH,MAAOjC,EAAIK,UACXy2I,eAAgB92I,EAAI0J,MAEhBmsK,EAAY71K,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAII,IAAIJ,EAAIy7D,MAAMi6G,EAAeC,IACrCnrK,IAAKN,IAED4rK,EAAY91K,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CACbo1K,iBAAkB/1K,EAAII,IAAIJ,EAAIy7D,MAAMi6G,EAAeC,IACnDK,iBAAkBh2K,EAAII,IAAIJ,EAAIy7D,MAAMi6G,EAAeC,MAErDnrK,IAAKN,IAED+rK,EAAkBj2K,EAAIW,OAAO,CACjCw/C,UAAWngD,EAAIiK,IACfi2C,UAAWlgD,EAAIiK,MAEXisK,EAAel2K,EAAIW,OAAO,CAC9B8pD,YAAazqD,EAAI0J,IACjBghD,YAAa1qD,EAAI0J,IACjB6sD,yBAA0Bv2D,EAAI0J,IAC9Bu2C,UAAWjgD,EAAI0J,IACf4sD,yBAA0Bt2D,EAAI0J,MAE1BysK,EAAYn2K,EAAIE,QAAQ,CAAEqK,GAAI2rK,EAAc1rK,IAAKN,IACjDksK,EAAqBp2K,EAAIW,OAAO,CACpC0a,GAAIrb,EAAI2B,KACR8oD,YAAazqD,EAAI0J,IACjBghD,YAAa1qD,EAAI0J,IACjB6sD,yBAA0Bv2D,EAAI0J,IAC9Bu2C,UAAWjgD,EAAI0J,IACf4sD,yBAA0Bt2D,EAAI0J,MAE1B2sK,EAASr2K,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAIg2K,GACjB/5H,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf4sK,EAAYt2K,EAAIE,QAAQ,CAAEqK,GAAI8rK,EAAQ7rK,IAAKN,IAC3CqsK,EAAYv2K,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAII,IACNJ,EAAIW,OAAO,CACTi1K,eAAgB51K,EAAI0J,IACpBktI,eAAgB52I,EAAI0J,IACpBy5F,UAAWnjG,EAAI0J,IACfmtI,UAAW72I,EAAIiK,IACf6sI,eAAgB92I,EAAI0J,OAGxBc,IAAKN,IAEDqpG,EAAkBvzG,EAAIE,QAAQ,CAClCuyI,kBAAmBzyI,EAAIQ,KACvB2rG,WAAYnsG,EAAIW,OAAO,CACrBi2I,eAAgB52I,EAAI0J,IACpBq6C,WAAY/jD,EAAI0J,IAChBotI,eAAgB92I,EAAI0J,MAEtBgpI,MAAO1yI,EAAIQ,KACXgnG,KAAMxnG,EAAIQ,KACVmyI,aAAc3yI,EAAIQ,KAClBu2I,iBAAkB/2I,EAAI0J,IACtBkpI,kBAAmB5yI,EAAIQ,OAEnB+2I,EAAiBv3I,EAAIW,OAAO,CAChC0hB,GAAIriB,EAAI2B,KACRkmD,UAAW7nD,EAAIiK,IACfs8B,OAAQgtE,EACR0jC,eAAgBj3I,EAAIiK,IACpB0Y,SAAU3iB,EAAI2B,KACd+gB,SAAU1iB,EAAI2B,KACdu1I,kBAAmBl3I,EAAI0J,IACvBopI,eAAgB9yI,EAAI0J,IACpBgrB,KAAM10B,EAAI2B,KACVqlC,KAAMhnC,EAAIiK,IACVktI,QAASn3I,EAAI0J,IACbqpI,UAAW/yI,EAAI2B,KACfqxI,mBAAoBhzI,EAAI0J,IACxB0tI,kBAAmBp3I,EAAI0J,IACvBwpI,gBAAiBlzI,EAAI0J,IACrBypI,eAAgBnzI,EAAI2B,KACpB60K,UAAWx2K,EAAIiK,IACfwsK,UAAWz2K,EAAIiK,IACf60G,UAAW9+G,EAAI0J,IACfq1G,UAAW/+G,EAAI0J,IACfy5F,UAAWnjG,EAAIiK,IACfmpI,mBAAoBpzI,EAAI0J,IACxB4pI,eAAgBtzI,EAAI2B,KACpBsqD,MAAOjsD,EAAI0J,IACXsY,OAAQhiB,EAAI2B,OAER+0K,EAAY12K,EAAIW,OAAO,CAAE86G,KAAMz7G,EAAIiK,IAAK4X,QAAS7hB,EAAI2B,OACrDg1K,EAAY32K,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CACb0uK,QAASrvK,EAAI2B,KACboqK,QAAS/rK,EAAII,IAAIm3I,GACjBq/B,OAAQ52K,EAAII,IAAIs2K,GAChB1H,WAAYhvK,EAAI0J,MAElBc,IAAKN,IAED2sK,EAAY72K,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIiK,IAAKjK,EAAI0J,MACnCc,IAAKN,IAED4sK,EAAoB92K,EAAIW,OAAO,CACnCo2K,UAAW/2K,EAAIiK,IACf+sK,cAAeh3K,EAAI0J,IACnButK,aAAcj3K,EAAIiK,IAClBitK,OAAQl3K,EAAI0J,IACZytK,OAAQn3K,EAAI0J,IACZ0tK,eAAgBp3K,EAAI0J,IACpB2tK,cAAer3K,EAAI0J,MAEf4tK,EAASt3K,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAI02K,GACjBz6H,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfuiK,EAAYjsK,EAAIE,QAAQ,CAAEqK,GAAI+sK,EAAQ9sK,IAAKN,IAC3CqtK,EAAiBv3K,EAAIW,OAAO,CAChC0a,GAAIrb,EAAI2B,KACR61K,YAAax3K,EAAI8E,KACjB2yK,sBAAuBz3K,EAAI0J,IAC3BguK,+BAAgC13K,EAAI0J,IACpCutK,aAAcj3K,EAAIiK,IAClB0tK,eAAgB33K,EAAI0J,IACpB0tK,eAAgBp3K,EAAI0J,IACpBkuK,sBAAuB53K,EAAI0J,IAC3BmuK,sBAAuB73K,EAAIiK,MAEvBs/I,EAASvpJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAIm3K,GACjBl7H,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfyiK,EAAYnsK,EAAIE,QAAQ,CAAEqK,GAAIg/I,EAAQ/+I,IAAKN,IAC3CmiK,EAAYrsK,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CACbm3K,mBAAoB93K,EAAI0J,IACxBi3C,aAAc3gD,EAAI0J,IAClBquK,gBAAiB/3K,EAAI2B,KACrBm/C,aAAc9gD,EAAI0J,IAClBsuK,mBAAoBh4K,EAAI0J,MAE1Bc,IAAKN,IAEDmT,EAAQrd,EAAIE,QAAQ,CACxB+J,IAAKjK,EAAIiK,IACTP,IAAK1J,EAAI0J,IACT6zI,KAAMv9I,EAAII,IAAIJ,EAAImC,MAClBR,KAAM3B,EAAI2B,OAENs2K,EAAcj4K,EAAIW,OAAO,CAC7B0hB,GAAIriB,EAAIK,UACR0D,IAAK/D,EAAI0J,IACTyF,OAAQnP,EAAI2B,KACZsN,MAAO1F,EACPg9B,OAAQvmC,EAAI2B,KACZu2K,iBAAkBl4K,EAAI0J,IACtBzH,MAAOjC,EAAIK,UACXq0B,KAAM10B,EAAIK,UACV83K,eAAgBn4K,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACpCghG,UAAWnjG,EAAI0J,IACfyN,MAAOnX,EAAI0J,IACX9F,OAAQ5D,EAAI0J,IACZmmK,SAAU7vK,EAAI2B,KACdy2K,aAAcp4K,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,SAE9BoqK,EAAYvsK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAI63K,GAAcztK,IAAKN,IACzDI,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKN,IAC5CsiK,EAAYxsK,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CACb03K,oBAAqBr4K,EAAII,IAAIJ,EAAIW,OAAO,CAAEi1K,eAAgB51K,EAAI0J,IAAKy5F,UAAWnjG,EAAI0J,OAClF4uK,mBAAoBt4K,EAAII,IAAIJ,EAAIW,OAAO,CAAEi1K,eAAgB51K,EAAI0J,IAAKy5F,UAAWnjG,EAAI0J,SAEnFc,IAAKN,IAEDquK,EAAmBv4K,EAAIW,OAAO,CAClCw/C,UAAWngD,EAAIiK,IACfwgD,YAAazqD,EAAI0J,IACjBghD,YAAa1qD,EAAI0J,IACjB6sD,yBAA0Bv2D,EAAI0J,IAC9Bu2C,UAAWjgD,EAAI0J,IACf4sD,yBAA0Bt2D,EAAI0J,IAC9Bw2C,UAAWlgD,EAAIiK,MAEXwiK,EAAYzsK,EAAIE,QAAQ,CAAEqK,GAAIguK,EAAkB/tK,IAAKN,IACrDwiK,EAAY1sK,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAII,IAAIJ,EAAI0J,OAC5Cc,IAAKN,IAEDo/I,EAAYtpJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAIJ,EAAI0J,KAAMc,IAAKN,IACrDsuK,EAAkCx4K,EAAIW,OAAO,CACjD0a,GAAIrb,EAAI0J,IACRy2C,UAAWngD,EAAIiK,IACfwgD,YAAazqD,EAAI0J,IACjBghD,YAAa1qD,EAAI0J,IACjB6sD,yBAA0Bv2D,EAAI0J,IAC9Bu2C,UAAWjgD,EAAI0J,IACf4sD,yBAA0Bt2D,EAAI0J,IAC9Bi3C,aAAc3gD,EAAI0J,IAClBo3C,aAAc9gD,EAAI0J,IAClBw2C,UAAWlgD,EAAIiK,MAEX+9I,EAAShoJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAIo4K,GACjBn8H,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf8/I,GAAWxpJ,EAAIE,QAAQ,CAAEqK,GAAIy9I,EAAQx9I,IAAKN,IAC1CuuK,GAAyBz4K,EAAIW,OAAO,CACxC0a,GAAIrb,EAAI0J,IACRy2C,UAAWngD,EAAIiK,IACfwgD,YAAazqD,EAAI0J,IACjBghD,YAAa1qD,EAAI0J,IACjB6sD,yBAA0Bv2D,EAAI0J,IAC9Bu2C,UAAWjgD,EAAI0J,IACf4sD,yBAA0Bt2D,EAAI0J,IAC9Bw2C,UAAWlgD,EAAIiK,MAEX45G,GAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIq4K,IACjBp8H,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf+/I,GAAWzpJ,EAAIE,QAAQ,CAAEqK,GAAIs5G,GAAMr5G,IAAKN,IACxC09I,GAAW5nJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIq4K,IACZjuK,IAAKN,IAED+9I,GAAWjoJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAIW,OAAO,CAAEk2D,SAAU72D,EAAI0J,IAAKotD,SAAU92D,EAAI0J,MAClDc,IAAKN,IAED4lK,GAA+B9vK,EAAIW,OAAO,CAC9CovK,mBAAoB/vK,EAAIa,IAAIb,EAAIgwK,OAChChjG,SAAUhtE,EAAI2B,OAEVsuK,GAA2BjwK,EAAIW,OAAO,CAC1Cs2C,SAAU64H,GACVI,YAAalwK,EAAIa,IACfb,EAAIE,QAAQ,CACViwK,eAAgBnwK,EAAIQ,KACpB4vK,YAAapwK,EAAIW,OAAO,CACtB0vK,oBAAqBrwK,EAAIqkH,MACzBisD,eAAgBtwK,EAAIqkH,aAKtBksD,GAA8BvwK,EAAIW,OAAO,CAC7Ck/C,IAAK7/C,EAAII,IAAIJ,EAAImC,MACjB8hH,OAAQjkH,EAAI2B,KACZ6uK,iBAAkBP,KAEdQ,GAAuBzwK,EAAIE,QAAQ,CACvCwwK,mBAAoB1wK,EAAIW,OAAO,CAC7BgwK,MAAO3wK,EAAII,IAAIJ,EAAIW,OAAO,CAAEiwK,MAAO5wK,EAAII,IAAIJ,EAAI2B,WAEjDkvK,sBAAuB7wK,EAAI2B,OAEvBmvK,GAAoB9wK,EAAIW,OAAO,CACnCs2C,SAAU64H,GACViB,gBAAiBN,KAEbO,GAAkBhxK,EAAIW,OAAO,CAAEssB,YAAajtB,EAAI2B,OAChDsvK,GAAcjxK,EAAIE,QAAQ,CAC9B2F,aAAc7F,EAAIW,OAAO,CACvBssB,YAAajtB,EAAI2B,KACjBoE,WAAY/F,EAAI0J,MAElBwnK,oBAAqBF,GACrBG,wBAAyBH,GACzBI,0BAA2BJ,KAEvBK,GAA+BrxK,EAAIE,QAAQ,CAC/CsI,GAAIsoK,GACJroK,IAAKwoK,KAEDK,GAA+BtxK,EAAIW,OAAO,CAC9C4wK,gBAAiBvxK,EAAII,IAAIJ,EAAI2B,QAEzB+2K,GAAwB14K,EAAIW,OAAO,CACvCojD,WAAY/jD,EAAI0J,IAChByrK,eAAgBn1K,EAAI2B,KACpByzK,eAAgBp1K,EAAI2B,OAEhBg3K,GAAe34K,EAAIW,OAAO,CAC9BoD,IAAK/D,EAAI0J,IACTK,IAAK/J,EAAI2B,KACTgI,aAAc3J,EAAI0J,IAClBs9B,KAAMhnC,EAAIiK,IACVg2C,UAAWjgD,EAAI0J,IACfE,OAAQL,EACRM,OAAQN,EACRqvK,oBAAqB54K,EAAI0J,IACzBmvK,eAAgB74K,EAAI0J,MAEhBw+I,GAAWloJ,EAAIE,QAAQ,CAAEqK,GAAIouK,GAAcnuK,IAAKN,IAChD4uK,GAAW94K,EAAIW,OAAO,CAC1BoD,IAAK/D,EAAI0J,IACTy2C,UAAWngD,EAAIiK,IACfL,OAAQ5J,EAAI2B,KACZkI,OAAQ7J,EAAI2B,KACZwzK,eAAgBn1K,EAAI2B,KACpByzK,eAAgBp1K,EAAI2B,KACpBu+C,UAAWlgD,EAAIiK,MAEX8uK,GAAW/4K,EAAIW,OAAO,CAC1BqtD,SAAUhuD,EAAI2B,KACdsxD,WAAYjzD,EAAI8E,KAChB4xD,iBAAkB12D,EAAI2B,OAElB4hH,GAAWvjH,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAIW,OAAO,CAAE8pD,YAAazqD,EAAI0J,IAAKghD,YAAa1qD,EAAI0J,MACxDc,IAAKN,IAED24G,GAAW7iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAIiK,IAAKO,IAAKN,IAC3CohK,GAAetrK,EAAIW,OAAO,CAC9BoD,IAAK/D,EAAI0J,IACTuF,MAAOjP,EAAI2B,KACXiC,OAAQ5D,EAAI0J,MAERsvK,GAA2Bh5K,EAAIW,OAAO,CAC1CoD,IAAK/D,EAAI0J,IACTuF,MAAOjP,EAAI2B,KACXO,WAAYlC,EAAII,IAAIJ,EAAImC,MACxByB,OAAQ5D,EAAI0J,MAEd,OAAO1J,EAAI2H,QAAQ,CACjBsxK,cAAej5K,EAAI6H,KAAK,CAACusK,GAAiB,CAACzpK,GAAW,IACtDuuK,gBAAiBl5K,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC6qK,GAAY,CAAC,UAC5D4E,gBAAiBn5K,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAACiB,GAAW,IAChEyuK,mBAAoBp5K,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAI0J,MAAO,CAAC8qK,GAAY,CAAC,UAC/D6E,yBAA0Br5K,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAACiB,GAAW,CAAC,UAC1E+nI,MAAO1yI,EAAI6H,KAAK,CAAC+sK,GAAY,CAACC,GAAY,IAC1CpiC,kBAAmBzyI,EAAI6H,KAAK,CAACitK,GAAwB,CAACD,GAAY,IAClEtuH,QAASvmD,EAAI6H,KAAK,CAACwjK,GAAc,CAACxgK,GAAS,IAC3CyuK,kBAAmBt5K,EAAI6H,KAAK,CAACktK,GAAqB,CAAClqK,GAAS,IAC5D27C,YAAaxmD,EAAI6H,KAAK,CAACwjK,GAAc,CAACxgK,GAAS,IAC/C05G,UAAWvkH,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,CAAC,UACnD8K,qBAAsBnL,EAAI6H,KACxB,GACA,CACE7H,EAAIW,OAAO,CACTyK,UAAWpL,EAAII,IAAIJ,EAAIK,WACvBqK,UAAW1K,EAAI8E,QAGnB,CAAC,UAEHy0K,YAAav5K,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,UAChD0J,aAAcrL,EAAI6H,KAAK,GAAI,CAACwtK,GAAY,IACxCmE,mBAAoBx5K,EAAI6H,KAAK,GAAI,CAACytK,GAAY,CAAC,UAC/C3C,YAAa3yK,EAAI6H,KAAK,GAAI,CAAC4tK,GAAY,CAAC,UACxCgE,+BAAgCz5K,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,CAAC,UAC1D+uK,mBAAoB15K,EAAI6H,KAAK,GAAI,CAACguK,GAAY,CAAC,UAC/C8D,eAAgB35K,EAAI6H,KAAK,GAAI,CAACiuK,GAAY,CAAC,UAC3C8D,sBAAuB55K,EAAI6H,KAAK,CAAC0B,GAAQ,CAACsB,GAAS,IACnDgvK,YAAa75K,EAAI6H,KAAK,CAACouK,GAAkB,CAACE,GAAY,CAAC,UACvD2D,aAAc95K,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC4sK,GAAY,CAAC,UACzDyD,yBAA0B/5K,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACk2K,GAAY,CAAC,UAClEyD,mBAAoBh6K,EAAI6H,KAAK,GAAI,CAAC8uK,GAAY,CAAC,UAC/CsD,eAAgBj6K,EAAI6H,KAAK,GAAI,CAACgvK,GAAY,CAAC,UAC3CqD,aAAcl6K,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACuiK,GAAY,CAAC,UACzDkO,SAAUn6K,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACyiK,GAAY,CAAC,UACrDiO,oBAAqBp6K,EAAI6H,KAAK,GAAI,CAACwkK,GAAY,CAAC,UAChDzuH,gBAAiB59C,EAAI6H,KAAK,GAAI,CAAC7H,EAAIW,OAAO,CAAEiJ,OAAQ5J,EAAI0J,IAAKG,OAAQ7J,EAAI0J,OAAS,IAClF2wK,aAAcr6K,EAAI6H,KAChB,GACA,CACE7H,EAAIW,OAAO,CACTiJ,OAAQ5J,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM0b,IACpCxT,OAAQ7J,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM0b,IACpCyhG,UAAW9+G,EAAIa,IAAIb,EAAI0J,KACvBq1G,UAAW/+G,EAAIa,IAAIb,EAAI0J,QAG3B,IAEF4wK,gBAAiBt6K,EAAI6H,KAAK,GAAI,CAAC0kK,GAAY,CAAC,UAC5CgO,oBAAqBv6K,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAACY,GAAW,CAAC,UACtDkwK,mBAAoBx6K,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACmsK,GAAY,CAAC,UAC5DiO,gBAAiBz6K,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAAC+iK,GAAY,CAAC,UACnDziJ,mBAAoBhqB,EAAI6H,KAAK,GAAI,CAAC6kK,GAAY,CAAC,UAC/Cl4G,8BAA+Bx0D,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACipJ,GAAY,CAAC,UACvEoxB,+BAAgC16K,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC8/I,IAAW,CAAC,UAC1EmxB,iBAAkB36K,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC+/I,IAAW,CAAC,UAC5DmxB,4BAA6B56K,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACunJ,IAAW,CAAC,UACpEizB,qBAAsB76K,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAAC4nJ,IAAW,CAAC,UAC7DorB,WAAYrzK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtC2xK,2BAA4BtzK,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAIW,OAAO,CAAEq5F,IAAKh6F,EAAI2B,KAAM6O,KAAMxQ,EAAI2B,SAAW,CAAC,UACpG4xK,qCAAsCvzK,EAAI6H,KAAK,CAAC0oK,IAA8B,CAACc,IAA+B,IAC9GmC,uBAAwBxzK,EAAI6H,KAAK,GAAI,CAACypK,IAA+B,IACrE1+B,kBAAmB5yI,EAAI6H,KAAK,CAAC6wK,IAAwB,CAAC7tK,GAAS,IAC/DxG,KAAMrE,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAIiK,IAAKjK,EAAI0J,KAAM,GAAI,IAChDutC,SAAUj3C,EAAI6H,KAAK,GAAI,CAACqgJ,IAAW,CAAC,UACpCzgD,KAAMznG,EAAI6H,KAAK,CAACixK,IAAW,CAACjuK,GAAS,IACrC+iD,MAAO5tD,EAAI6H,KAAK,CAACkxK,IAAW,CAACluK,GAAS,CAAC,UACvCiwK,YAAa96K,EAAI6H,KAAK,CAACkxK,IAAW,CAACluK,GAAS,CAAC,UAC7CkwK,cAAe/6K,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAAC65G,IAAW,CAAC,UAChDy3D,uBAAwBh7K,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI8E,MAAO,GAAI,IAC1Dm2K,iBAAkBj7K,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAACiB,GAAW,IAClDk6G,UAAW7kH,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClDqL,aAAc1L,EAAI6H,KAAK,CAAC7H,EAAI8E,MAAO,GAAI,IACvCo2K,uBAAwBl7K,EAAI6H,KAAK,CAAC7H,EAAI8E,MAAO,GAAI,IACjDgH,aAAc9L,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IACrD86K,QAASn7K,EAAI6H,KAAK,GAAI,CAACg7G,IAAW,CAAC,UACnCrb,KAAMxnG,EAAI6H,KAAK,CAACkxK,IAAW,CAACluK,GAAS,IACrCksI,iBAAkB/2I,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAIK,UAAWL,EAAI0J,KAAM,CAACiB,GAAW,IAChFywK,qBAAsBp7K,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACiK,GAAW,IAC5Dy6C,SAAU/kD,EAAI6H,KAAK,CAACyjK,IAAe,CAACzgK,GAAS,IAC7CwwK,2BAA4Br7K,EAAI6H,KAAK,CAAC0B,GAAQ,CAACsB,GAAS,IACxDywK,qBAAsBt7K,EAAI6H,KAAK,CAACmxK,IAA2B,CAACnuK,GAAS,KACrE,ECzfS/K,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMmK,EAAQlK,EAAIE,QAAQ,CACxBiK,YAAanK,EAAIQ,KACjB4J,cAAepK,EAAI2B,KACnB0I,iBAAkBrK,EAAI2B,KACtBwE,kBAAmBnG,EAAIQ,OAEnBqK,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKN,IAC1C24G,EAAW7iH,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIK,WAChBmK,IAAKN,IAEDO,EAAYzK,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,IAAKgB,UAAW1K,EAAI0J,MAC1DiB,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAIE,EAAWD,IAAKN,IAC7CI,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAIJ,EAAI2B,MAAO6I,IAAKN,IAa3D,OAZsBlK,EAAI2H,QAAQ,CAChC4zK,UAAWv7K,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACkJ,GAAS,IAC1CsqI,eAAgBn1I,EAAI6H,KAAK,GAAI,CAACg7G,GAAW,CAAC,UAC1Cx3G,aAAcrL,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,IACvCY,SAAUvL,EAAI6H,KAAK,GAAI,CAACyC,GAAW,CAAC,UACpCkxK,aAAcx7K,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC2I,GAAW,CAAC,UAChDmxK,gBAAiBz7K,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAII,IAAIJ,EAAI2B,SAAU,GAAI,IACjF+5K,aAAc17K,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACkJ,GAAS,IAC7C8wK,yBAA0B37K,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACkJ,GAAS,IACzDgB,UAAW7L,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClDu7K,cAAe57K,EAAI6H,KAAK,GAAI,GAAI,KAEd,EC3BT/H,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM2sK,EAAY1sK,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAII,IAAIJ,EAAIK,WAChBmK,IAAKxK,EAAI2B,OAELk6K,EAAe77K,EAAIW,OAAO,CAC9Bm7K,SAAU97K,EAAIq2H,QACd0lD,SAAU/7K,EAAIq2H,QACdj5E,KAAMp9C,EAAIK,UACV27K,UAAWh8K,EAAIq2H,UAEXizB,EAAYtpJ,EAAIE,QAAQ,CAAEqK,GAAIsxK,EAAcrxK,IAAKxK,EAAI2B,OACrDs6K,EAAoBj8K,EAAIW,OAAO,CACnCkpF,IAAK7pF,EAAIq2H,QACT6lD,aAAcl8K,EAAI0J,IAClByyK,gBAAiBn8K,EAAI0J,IACrBpH,MAAOtC,EAAIq2H,QACX+lD,mBAAoBp8K,EAAI0J,IACxB2yK,KAAMr8K,EAAIq2H,QACVj5E,KAAMp9C,EAAIK,UACV0jD,WAAY/jD,EAAI0J,IAChBi3C,aAAc3gD,EAAI0J,IAClB4yK,eAAgBt8K,EAAIq2H,QACpBkmD,MAAOv8K,EAAI0J,IACXo3C,aAAc9gD,EAAI0J,IAClB8yK,gBAAiBx8K,EAAI0J,IACrB+yK,mBAAoBz8K,EAAI0J,IACxBgzK,eAAgB18K,EAAIq2H,UAEhBmzB,EAAWxpJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAI67K,GACZzxK,IAAKxK,EAAI2B,OAELg7K,EAAa38K,EAAIW,OAAO,CAC5Bi8K,WAAY58K,EAAIq2H,QAChBj5E,KAAMp9C,EAAIK,UACVw8K,aAAc78K,EAAIq2H,QAClBymD,aAAc98K,EAAIq2H,QAClB0mD,YAAa/8K,EAAIq2H,QACjB2mD,YAAah9K,EAAIq2H,QACjB4mD,YAAaj9K,EAAIq2H,UAEbozB,EAAWzpJ,EAAIE,QAAQ,CAAEqK,GAAIoyK,EAAYnyK,IAAKxK,EAAI2B,OAClDu7K,EAAqBl9K,EAAIW,OAAO,CACpCw8K,qBAAsBn9K,EAAI0J,IAC1B0zK,cAAep9K,EAAII,IAAIJ,EAAI2B,MAC3B07K,aAAcr9K,EAAI0J,IAClB4zK,WAAYt9K,EAAI8E,KAChBy4K,gBAAiBv9K,EAAI2B,KACrB67K,oBAAqBx9K,EAAI0J,IACzB+zK,MAAOz9K,EAAI2B,KACX+7K,MAAO19K,EAAI2B,KACXg8K,MAAO39K,EAAI2B,KACXi8K,MAAO59K,EAAI2B,KACXk8K,MAAO79K,EAAI2B,KACXm8K,wBAAyB99K,EAAI0J,IAC7Bq0K,WAAY/9K,EAAI0J,IAChBs0K,qBAAsBh+K,EAAI8E,KAC1Bm5K,QAASj+K,EAAI0J,MAETw0K,EAAkBl+K,EAAIW,OAAO,CACjCy8K,cAAep9K,EAAII,IAAIJ,EAAI2B,MAC3B07K,aAAcr9K,EAAI0J,IAClB4zK,WAAYt9K,EAAI8E,KAChBy4K,gBAAiBv9K,EAAI2B,KACrB67K,oBAAqBx9K,EAAI0J,IACzBy0K,YAAan+K,EAAI0J,IACjB+zK,MAAOz9K,EAAI2B,KACX+7K,MAAO19K,EAAI2B,KACXg8K,MAAO39K,EAAI2B,KACXi8K,MAAO59K,EAAI2B,KACXy8K,uBAAwBp+K,EAAI0J,IAC5Bq0K,WAAY/9K,EAAI0J,IAChB20K,kBAAmBr+K,EAAI8E,KACvBm5K,QAASj+K,EAAI0J,MAET40K,EAAat+K,EAAIW,OAAO,CAC5Bw8K,qBAAsBn9K,EAAI0J,IAC1B60K,qBAAsBv+K,EAAI0J,IAC1B80K,cAAex+K,EAAI0J,IACnB4zK,WAAYt9K,EAAI8E,KAChBq5K,YAAan+K,EAAI0J,IACjB+0K,iBAAkBz+K,EAAI8E,KACtB45K,qBAAsB1+K,EAAI0J,IAC1Bi1K,mBAAoB3+K,EAAI0J,IACxB00K,uBAAwBp+K,EAAI0J,IAC5Bq0K,WAAY/9K,EAAI0J,IAChBk1K,wBAAyB5+K,EAAI0J,IAC7Bs0K,qBAAsBh+K,EAAI8E,KAC1B+5K,wBAAyB7+K,EAAI0J,IAC7B20K,kBAAmBr+K,EAAI8E,KACvBm5K,QAASj+K,EAAI0J,MAETk+I,EAAW5nJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IACNJ,EAAIW,OAAO,CACTkpF,IAAK7pF,EAAIq2H,QACT6lD,aAAcl8K,EAAI0J,IAClB6yK,MAAOv8K,EAAI0J,IACXsY,OAAQhiB,EAAI2B,QAGhB6I,IAAKxK,EAAI2B,OAELm9K,EAAuB9+K,EAAIW,OAAO,CACtC+7I,IAAK18I,EAAIq2H,QACT6lD,aAAcl8K,EAAI0J,IAClBq1K,aAAc/+K,EAAIq2H,QAClB2oD,aAAch/K,EAAIq2H,QAClB6d,UAAWl0I,EAAIq2H,QACfsmB,KAAM38I,EAAIq2H,QACV5vF,MAAOzmC,EAAIq2H,QACX3hH,KAAM1U,EAAIq2H,QACVn1E,YAAalhD,EAAIq2H,QACjBge,UAAWr0I,EAAIq2H,QACfie,QAASt0I,EAAIq2H,QACbihB,OAAQt3I,EAAIq2H,QACZ4oD,mBAAoBj/K,EAAIq2H,QACxBme,QAASx0I,EAAIiK,IACbi1K,eAAgBl/K,EAAI2B,KACpB46K,MAAOv8K,EAAI0J,IACXy1K,eAAgBn/K,EAAI2B,KACpBy9K,mBAAoBp/K,EAAIq2H,QACxBr1E,YAAahhD,EAAIq2H,QACjBr0G,OAAQhiB,EAAI2B,OAER4nJ,EAASvpJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAI0+K,GACjBziI,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfu+I,EAAWjoJ,EAAIE,QAAQ,CAAEqK,GAAIg/I,EAAQ/+I,IAAKxK,EAAI2B,OAC9CumJ,EAAWloJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IACNJ,EAAIW,OAAO,CACTu7K,aAAcl8K,EAAI0J,IAClBuiD,MAAOjsD,EAAIq2H,QACXgpD,OAAQr/K,EAAI0J,IACZ6yK,MAAOv8K,EAAI0J,IACXsY,OAAQhiB,EAAIK,aAGhBmK,IAAKxK,EAAI2B,OAEL4hH,EAAWvjH,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IACNJ,EAAIW,OAAO,CACTkpF,IAAK7pF,EAAIq2H,QACT6lD,aAAcl8K,EAAI0J,IAClBq6C,WAAY/jD,EAAI0J,IAChB6yK,MAAOv8K,EAAI0J,IACXsY,OAAQhiB,EAAIK,aAGhBmK,IAAKxK,EAAI2B,OAELqmJ,EAAShoJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAI67K,GACjB5/H,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfm5G,EAAW7iH,EAAIE,QAAQ,CAAEqK,GAAIy9I,EAAQx9I,IAAKxK,EAAI2B,OAC9CgJ,EAAW3K,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IACNJ,EAAIW,OAAO,CACTu7K,aAAcl8K,EAAI0J,IAClB2yK,KAAMr8K,EAAIq2H,QACVtyE,WAAY/jD,EAAI0J,IAChB6yK,MAAOv8K,EAAI0J,IACXsY,OAAQhiB,EAAIK,aAGhBmK,IAAKxK,EAAI2B,OAEL2I,EAAWtK,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IACNJ,EAAIW,OAAO,CACTu7K,aAAcl8K,EAAI0J,IAClBpH,MAAOtC,EAAIq2H,QACXtyE,WAAY/jD,EAAI0J,IAChB6yK,MAAOv8K,EAAI0J,IACXsY,OAAQhiB,EAAIK,aAGhBmK,IAAKxK,EAAI2B,OAELkiH,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIu8K,GACjBtgI,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfmB,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OAChD,OAAO3B,EAAI2H,QAAQ,CACjBq7G,aAAchjH,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IACtC66G,UAAWvkH,EAAI6H,KAAK,GAAI,CAAC6kK,GAAY,CAAC,UACtC4S,gBAAiBt/K,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACipJ,GAAY,CAAC,UACzDi2B,kBAAmBv/K,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAAC8/I,GAAW,CAAC,UACnEg2B,cAAex/K,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACopJ,GAAW,CAAC,UACtDkJ,QAAS3yJ,EAAI6H,KAAK,GAAI,CAACq1K,GAAqB,CAAC,UAC7CuC,aAAcz/K,EAAI6H,KAAK,GAAI,CAACq2K,GAAkB,CAAC,UAC/CwB,UAAW1/K,EAAI6H,KAAK,GAAI,CAACy2K,GAAa,CAAC,UACvCqB,aAAc3/K,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,CAAC,UACxC86K,iBAAkB5/K,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACunJ,GAAW,CAAC,UACzDi4B,uBAAwB7/K,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACu+I,GAAW,CAAC,UAClE63B,mBAAoB9/K,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAAC6nJ,GAAW,CAAC,UAC3D63B,qBAAsB//K,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAAC65G,GAAW,CAAC,UACtEy8D,2BAA4BhgL,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACm5G,GAAW,CAAC,UACzFo9D,sBAAuBjgL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAACiB,GAAW,CAAC,UACvEu1K,uBAAwBlgL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAACY,GAAW,CAAC,UACxE61K,oBAAqBngL,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACmB,GAAS,CAAC,UAC7Dg6G,UAAW7kH,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClD+/K,aAAcpgL,EAAI6H,KAAK,CAAC7H,EAAI8E,MAAO,CAAC9E,EAAI8E,MAAO,IAC/Cu7K,qBAAsBrgL,EAAI6H,KAAK,GAAI,GAAI,IACvCy4K,kBAAmBtgL,EAAI6H,KAAK,GAAI,GAAI,IACpC04K,iBAAkBvgL,EAAI6H,KAAK,GAAI,GAAI,KACnC,ECxMS24K,GAAW13K,GACtBC,EAAMC,OAAgB,CACpBgD,UAAWC,EAAU0iC,gBACrB7lC,WACAhJ,WAAY2gL,KAGHC,GAAe53K,GAC1BC,EAAMC,OAAoB,CACxBgD,UAAWC,EAAUC,YACrBpD,WACAhJ,WAAY6gL,KAGHpsH,GAAWA,CAACtrD,EAAoBH,IAC3CC,EAAMC,OAAiB,CACrBF,WACAG,aACAnJ,WAAY8gL,KASHC,GAAgB/3K,GAC3BC,EAAMC,OAAsB,CAC1BgD,UAAWC,EAAU+zC,SACrBlgD,WAAYghL,GACZh4K,aAGSi4K,GAAiBA,IAC5Bh4K,EAAMC,OAA8B,CAClCgD,UAAWC,EAAU+0K,eACrBlhL,WAAYmhL,KCvDHnhL,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM4K,EAAW3K,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIK,WAChBmK,IAAKxK,EAAI2B,OAELu/K,EAAiBlhL,EAAIW,OAAO,CAChCwgL,aAAcnhL,EAAIq2H,QAClBtmH,SAAU/P,EAAI0J,IACd03K,SAAUphL,EAAIK,UACdy5D,UAAW95D,EAAI2B,KACf6O,KAAMxQ,EAAI2B,KACV0/K,kBAAmBrhL,EAAI0J,IACvBy/I,QAASnpJ,EAAI0J,IACb4G,OAAQtQ,EAAI2B,KACZ2/K,aAActhL,EAAIq2H,UAEd/rH,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAI22K,EAAgB12K,IAAKxK,EAAI2B,OACtDkiH,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAI8gL,GACjB7kI,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfmB,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OAC1CkpK,EAAiB7qK,EAAIW,OAAO,CAAE4gL,WAAYvhL,EAAII,IAAI8gL,KACxD,OAAOlhL,EAAI2H,QAAQ,CACjBq7G,aAAchjH,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IACtC66G,UAAWvkH,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,CAAC,UACrC62K,aAAcxhL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACiK,GAAW,CAAC,UACrDygK,YAAa/qK,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAIq2H,SAAU,IACtDorD,gBAAiBzhL,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACmB,GAAS,CAAC,UACzDg6G,UAAW7kH,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClDqhL,gBAAiB1hL,EAAI6H,KAAK,CAACgjK,GAAiB,CAAC7qK,EAAI8E,MAAO,KACxD,E,2SC5BG,MAAM68K,GAAgBA,IAAWtjH,QAAA,6BACtC,OAAAt1D,EAAMC,OAA6B,CACjClJ,WAAY8hL,GACZ51K,UAAWC,EAAU41K,e,+SCElB,MAAMC,GAAyBh5K,GAAmBu1D,QAAA,6BACvD,OAAAt1D,EAAMC,OAA+B,CACnCF,WACAhJ,WAAYiiL,GACZ/1K,UAAWC,EAAU0jC,iB,IAGZqyI,GAAmBA,IAAW3jH,QAAA,6BACzC,OAAAt1D,EAAMC,OAAgC,CACpClJ,WAAYmiL,GACZj2K,UAAWC,EAAUi2K,kB,ICpBZpiL,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMwJ,EAAQvJ,EAAIW,OAAO,CAAE8D,QAASzE,EAAI2B,KAAM6H,SAAUxJ,EAAI2B,OACtDwgL,EAAiBniL,EAAIW,OAAO,CAChCy4J,UAAWp5J,EAAI0J,IACf04K,eAAgBpiL,EAAI0J,IACpBwsF,YAAa3sF,EACb84K,QAASriL,EAAI0J,IACb44K,aAActiL,EAAI0J,IAClB0zC,KAAMp9C,EAAIK,UACVkiL,SAAUviL,EAAIK,UACdmiL,iBAAkBxiL,EAAI8E,KACtB29K,kBAAmBziL,EAAI0J,IACvBg5K,kBAAmB1iL,EAAI0J,MAEnB65G,EAAWvjH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKxK,EAAI2B,OAChDuI,EAAQlK,EAAIE,QAAQ,CACxBiK,YAAanK,EAAIQ,KACjB4J,cAAepK,EAAI2B,KACnB0I,iBAAkBrK,EAAI2B,KACtBwE,kBAAmBnG,EAAIQ,OAEnBqiH,EAAW7iH,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIK,WAChBmK,IAAKN,IAEDO,EAAYzK,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,IAAKgB,UAAW1K,EAAI0J,MAC1DiB,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAIE,EAAWD,IAAKN,IAC7CI,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKN,IAC3CW,EAAS7K,EAAIE,QAAQ,CACzBqK,GAAIvK,EAAIW,OAAO,CACbgiL,aAAc3iL,EAAIK,UAClBkvK,cAAevvK,EAAIa,IAAIb,EAAIK,WAC3BqvK,eAAgB1vK,EAAIK,YAEtBmK,IAAKN,IAEP,OAAOlK,EAAI2H,QAAQ,CACjBi7K,mBAAoB5iL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAC1E2I,OAAQhJ,EAAI6H,KAAK,CAACs6K,GAAiB,CAAC5+D,GAAW,IAC/CgB,UAAWvkH,EAAI6H,KAAK,GAAI,CAACg7G,GAAW,CAAC,UACrCggE,YAAa7iL,EAAI6H,KAAK,GAAI,CAACg7G,GAAW,CAAC,UACvCx3G,aAAcrL,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,IACvCu+I,OAAQlpJ,EAAI6H,KAAK,GAAI,CAACyC,GAAW,CAAC,UAClCqoK,YAAa3yK,EAAI6H,KAAK,GAAI,CAACgD,GAAS,CAAC,UACrCwoK,WAAYrzK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtCmhL,sBAAuB9iL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAC7EwkH,UAAW7kH,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClD0iL,cAAe/iL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IACrEg8D,OAAQr8D,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,GAAI,KAChC,ECjDS5J,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMmK,EAAQlK,EAAIE,QAAQ,CACxBiK,YAAanK,EAAIQ,KACjB4J,cAAepK,EAAI2B,KACnB0I,iBAAkBrK,EAAI2B,KACtBwE,kBAAmBnG,EAAIQ,OAEnBqK,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKN,IAC1CosK,EAAYt2K,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CACbqiL,oBAAqBhjL,EAAIq2H,QACzB4sD,oBAAqBjjL,EAAIq2H,QACzB6sD,yBAA0BljL,EAAIq2H,QAC9B8sD,UAAWnjL,EAAIq2H,UAEjB7rH,IAAKN,IAEDqsK,EAAYv2K,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI0J,IAAK1J,EAAIq2H,UACnC7rH,IAAKN,IAEDysK,EAAY32K,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAII,IAAIJ,EAAIK,WAChBmK,IAAKN,IAED2sK,EAAY72K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAIq2H,QAAS7rH,IAAKN,IAChDO,EAAYzK,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,IAAKgB,UAAW1K,EAAI0J,MAC1DuiK,EAAYjsK,EAAIE,QAAQ,CAAEqK,GAAIE,EAAWD,IAAKN,IAC9Ck5K,EAAUpjL,EAAIW,OAAO,CACzBw/C,UAAWngD,EAAIiK,IACfq4K,aAActiL,EAAI0J,IAClBzH,MAAOjC,EAAIK,UACX4/C,UAAWjgD,EAAI0J,IACf25K,SAAUrjL,EAAI0J,IACd45K,mBAAoBtjL,EAAI0J,IACxBq6C,WAAY/jD,EAAI0J,IAChBi3C,aAAc3gD,EAAIiK,IAClBs5K,OAAQvjL,EAAIK,UACZygD,aAAc9gD,EAAIiK,IAClBi2C,UAAWlgD,EAAIiK,MAEXkiK,EAAYnsK,EAAIE,QAAQ,CAAEqK,GAAI64K,EAAS54K,IAAKN,IAC5Cs5K,EAAmBxjL,EAAIW,OAAO,CAClC8iL,YAAazjL,EAAI0J,IACjBzH,MAAOjC,EAAIK,UACX0jD,WAAY/jD,EAAI0J,IAChBy5F,UAAWnjG,EAAI0J,IACfg6K,aAAc1jL,EAAI0J,MAEd6/I,EAASvpJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAIojL,GACjBnnI,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf2iK,EAAYrsK,EAAIE,QAAQ,CAAEqK,GAAIg/I,EAAQ/+I,IAAKxK,EAAI2B,OAC/CgiL,EAAa3jL,EAAIE,QAAQ,CAC7B07C,KAAM57C,EAAIQ,KACV+9G,YAAav+G,EAAIQ,KACjBs7C,OAAQ97C,EAAIQ,KACZq7C,SAAU77C,EAAIQ,OAEV+I,EAAQvJ,EAAIW,OAAO,CAAE8D,QAASzE,EAAI2B,KAAM6H,SAAUxJ,EAAI2B,OACtDiiL,EAAW5jL,EAAIW,OAAO,CAC1By4J,UAAWp5J,EAAI0J,IACf6qB,OAAQovJ,EACR/1B,QAAS5tJ,EAAIK,UACbwjL,qBAAsB7jL,EAAI0J,IAC1Bo6K,eAAgB9jL,EAAI0J,IACpBwsF,YAAa3sF,EACb84K,QAASriL,EAAI0J,IACbq6K,mBAAoB/jL,EAAI0J,IACxB0zC,KAAMp9C,EAAIK,UACVkiL,SAAUviL,EAAIK,UACd2jL,WAAYz6K,EACZ06K,WAAY16K,EACZmqI,QAAS1zI,EAAI0J,IACbw6K,uBAAwBlkL,EAAI0J,IAC5By6K,YAAankL,EAAI0J,IACjB06K,mBAAoBpkL,EAAI0J,IACxBqgB,YAAa/pB,EAAII,IAAIJ,EAAI0J,OAErB6iK,EAAYvsK,EAAIE,QAAQ,CAAEqK,GAAIq5K,EAAUp5K,IAAKN,IAC7Cm6K,EAAerkL,EAAIW,OAAO,CAC9BoD,IAAK/D,EAAI0J,IACT0vJ,UAAWp5J,EAAI0J,IACf6qB,OAAQovJ,EACRvB,eAAgBpiL,EAAI0J,IACpBkkJ,QAAS5tJ,EAAIK,UACbikL,aAActkL,EAAIK,UAClBsiL,aAAc3iL,EAAIK,UAClB61F,YAAa3sF,EACb84K,QAASriL,EAAI0J,IACb0zC,KAAMp9C,EAAIK,UACVkiL,SAAUviL,EAAIK,UACdkvK,cAAevvK,EAAIa,IAAIb,EAAIK,WAC3BmiL,iBAAkBxiL,EAAI8E,KACtB29K,kBAAmBziL,EAAI0J,IACvBg5K,kBAAmB1iL,EAAI0J,IACvBy6K,YAAankL,EAAI0J,IACjB66K,eAAgBvkL,EAAIK,UACpBqvK,eAAgB1vK,EAAIK,YAEhBmsK,EAAYxsK,EAAIE,QAAQ,CAAEqK,GAAI85K,EAAc75K,IAAKN,IACjDuiK,EAAYzsK,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CACb6hL,iBAAkBxiL,EAAI8E,KACtB0/K,iBAAkBxkL,EAAI0J,IACtB+4K,kBAAmBziL,EAAI0J,IACvBg5K,kBAAmB1iL,EAAI0J,MAEzBc,IAAKN,IAEDwiK,EAAY1sK,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CACb8jL,iBAAkBzkL,EAAI0J,IACtBg7K,eAAgB1kL,EAAI0J,IACpBi7K,iBAAkB3kL,EAAI0J,MAExBc,IAAKN,IAEDo/I,EAAYtpJ,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAIW,OAAO,CACbikL,iBAAkB5kL,EAAI2B,KACtBkjL,iBAAkB7kL,EAAI2B,KACtBmjL,mBAAoB9kL,EAAI0J,IACxBq7K,mBAAoB/kL,EAAI0J,IACxBs6K,WAAYhkL,EAAIW,OAAO,CACrB8D,QAASzE,EAAI2B,KACb6H,SAAUxJ,EAAI2B,OAEhBsiL,WAAYjkL,EAAIW,OAAO,CACrB8D,QAASzE,EAAI2B,KACb6H,SAAUxJ,EAAI2B,SAGlB6I,IAAKN,IAEDs/I,EAAWxpJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAIJ,EAAI0J,KAAMc,IAAKN,IACpDI,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKN,IAC3Cu/I,EAAWzpJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAIW,OAAO,CACbyhL,eAAgBpiL,EAAI0J,IACpBm6K,qBAAsB7jL,EAAI0J,IAC1Bq6K,mBAAoB/jL,EAAI0J,IACxBs7K,eAAgBhlL,EAAI0J,IACpBu7K,eAAgBjlL,EAAI0J,IACpBw7K,eAAgBllL,EAAI0J,IACpBy7K,gBAAiBnlL,EAAI0J,IACrBw6K,uBAAwBlkL,EAAI0J,IAC5B07K,kBAAmBplL,EAAI0J,IACvBy6K,YAAankL,EAAI0J,IACjB27K,oBAAqBrlL,EAAI0J,MAE3Bc,IAAKN,IAED2+I,EAAY7oJ,EAAIE,QAAQ,CAC5B6kD,SAAU/kD,EAAIQ,KACd8kL,WAAYtlL,EAAIQ,KAChB+kL,QAASvlL,EAAIQ,KACbglL,MAAOxlL,EAAIQ,KACXilL,QAASzlL,EAAIQ,OAETklL,EAAc1lL,EAAIW,OAAO,CAC7B0hB,GAAIriB,EAAIK,UACRyoJ,UAAWD,EACXn0H,KAAM10B,EAAIK,UACV4/C,UAAWjgD,EAAI0J,IACfq6C,WAAY/jD,EAAI0J,IAChBy5F,UAAWnjG,EAAI0J,IACf9F,OAAQ5D,EAAI0J,MAERs+I,EAAShoJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAIslL,GACjBrpI,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfk+I,EAAW5nJ,EAAIE,QAAQ,CAAEqK,GAAIy9I,EAAQx9I,IAAKxK,EAAI2B,OAC9CgkL,EAAc3lL,EAAIW,OAAO,CAC7B8D,QAASzE,EAAI2B,KACbiC,OAAQ5D,EAAI0J,IACZF,SAAUxJ,EAAI2B,OAEVikL,EAAM5lL,EAAIW,OAAO,CACrBqjL,WAAY2B,EACZ1B,WAAY0B,IAER19B,EAAWjoJ,EAAIE,QAAQ,CAAEqK,GAAIq7K,EAAKp7K,IAAKN,IACvC+tK,EAAcj4K,EAAIW,OAAO,CAC7B0hB,GAAIriB,EAAIK,UACR0D,IAAK/D,EAAI0J,IACTyF,OAAQnP,EAAI2B,KACZsN,MAAO1F,EACPg9B,OAAQvmC,EAAI2B,KACZu2K,iBAAkBl4K,EAAI0J,IACtBzH,MAAOjC,EAAIK,UACXq0B,KAAM10B,EAAIK,UACV83K,eAAgBn4K,EAAIa,IAAIb,EAAII,IAAIJ,EAAImC,OACpCghG,UAAWnjG,EAAI0J,IACfyN,MAAOnX,EAAI0J,IACX9F,OAAQ5D,EAAI0J,IACZmmK,SAAU7vK,EAAI2B,OAEVumJ,EAAWloJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAI63K,GAAcztK,IAAKN,IACxDq5G,EAAWvjH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAIgjL,GAAU54K,IAAKN,IACpD25G,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAI0J,MAC9C2yC,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfm5G,EAAW7iH,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKN,IACxCS,EAAW3K,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAIW,OAAO,CACbqjL,WAAY2B,EACZ1B,WAAY0B,IAEdn7K,IAAKN,IAEP,OAAOlK,EAAI2H,QAAQ,CACjBk+K,cAAe7lL,EAAI6H,KAAK,GAAI,GAAI,IAChC4+B,MAAOzmC,EAAI6H,KAAK,GAAI,CAACgD,GAAS,IAC9Bi7K,eAAgB9lL,EAAI6H,KAAK,GAAI,CAACgD,GAAS,IACvCk7K,YAAa/lL,EAAI6H,KAAK,GAAI,CAACyuK,GAAY,CAAC,UACxC0P,aAAchmL,EAAI6H,KAAK,GAAI,CAAC0uK,GAAY,CAAC,UACzChyD,UAAWvkH,EAAI6H,KAAK,GAAI,CAAC8uK,GAAY,CAAC,UACtCsP,UAAWjmL,EAAI6H,KAAK,GAAI,CAACgvK,GAAY,CAAC,UACtCxrK,aAAcrL,EAAI6H,KAAK,GAAI,CAACokK,GAAY,IACxCia,WAAYlmL,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAACyiK,GAAY,CAAC,UAC9Cga,oBAAqBnmL,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,MAAO,CAAC0qK,GAAY,CAAC,UAC1E+Z,YAAapmL,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,UAChD0kL,YAAarmL,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC4qK,GAAY,CAAC,UAChDoG,YAAa3yK,EAAI6H,KAAK,GAAI,CAAC2kK,GAAY,CAAC,UACxC8Z,aAActmL,EAAI6H,KAAK,GAAI,CAAC4kK,GAAY,CAAC,UACzC8Z,iBAAkBvmL,EAAI6H,KAAK,GAAI,CAAC6kK,GAAY,CAAC,UAC7C8Z,YAAaxmL,EAAI6H,KAAK,GAAI,CAAC7H,EAAIW,OAAO,CAAEgJ,aAAc3J,EAAI0J,IAAKs9B,KAAMhnC,EAAIiK,OAAS,IAClFw8K,iBAAkBzmL,EAAI6H,KAAK,GAAI,CAACyhJ,GAAY,CAAC,UAC7Co9B,eAAgB1mL,EAAI6H,KAAK,GAAI,CAAC2hJ,GAAW,CAAC,UAC1Cm9B,cAAe3mL,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAI0J,MAAO,CAACY,GAAW,CAAC,UACzDs8K,cAAe5mL,EAAI6H,KAAK,GAAI,CAAC4hJ,GAAW,CAAC,UACzCo9B,sBAAuB7mL,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,IAC/Co9K,eAAgB9mL,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI2B,MAAO,CAACimJ,GAAW,CAAC,UACpEm/B,OAAQ/mL,EAAI6H,KAAK,GAAI,CAACogJ,GAAW,CAAC,UAClCqyB,gBAAiBt6K,EAAI6H,KAAK,GAAI,CAACqgJ,GAAW,CAAC,UAC3C8+B,gBAAiBhnL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACkjH,GAAW,CAAC,UACxD0jE,qBAAsBjnL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACiK,GAAW,CAAC,UAC7D48K,sBAAuBlnL,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACm5G,GAAW,CAAC,UACjEskE,WAAYnnL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACsK,GAAW,CAAC,UACnD0oK,WAAYrzK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtC0C,KAAMrE,EAAI6H,KAAK,GAAI,GAAI,IACvBmzK,uBAAwBh7K,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI8E,MAAO,GAAI,IAC1DsiL,gBAAiBpnL,EAAI6H,KAAK,GAAI,CAACgD,GAAS,IACxCw8K,mBAAoBrnL,EAAI6H,KAAK,GAAI,CAACgD,GAAS,IAC3Cg6G,UAAW7kH,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClDinL,aAActnL,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI8E,MAAO,GAAI,IAClE0gL,MAAOxlL,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAACmB,GAAS,IACrC06K,QAASvlL,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAACmB,GAAS,IACvCk6C,SAAU/kD,EAAI6H,KAAK,GAAI,CAACyC,GAAW,IACnCi9K,kBAAmBvnL,EAAI6H,KAAK,GAAI,CAACgD,GAAS,KAC1C,ECpQS/K,GAAaC,IAAY,IAAX,IAAEC,GAAKD,EAChC,MAAMwJ,EAAQvJ,EAAIW,OAAO,CAAE8D,QAASzE,EAAI2B,KAAM6H,SAAUxJ,EAAI2B,OACtD6lL,EAAmBxnL,EAAIW,OAAO,CAClCu1F,YAAa3sF,EACbk+K,QAASznL,EAAIK,UACb2jL,WAAYz6K,EACZ06K,WAAY16K,EACZm+K,QAAS1nL,EAAIK,UACb8jL,YAAankL,EAAI0J,MAEbQ,EAAQlK,EAAIE,QAAQ,CACxBiK,YAAanK,EAAIQ,KACjB4J,cAAepK,EAAI2B,KACnB0I,iBAAkBrK,EAAI2B,KACtBwE,kBAAmBnG,EAAIQ,OAEnBipJ,EAAWzpJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAII,IAAIJ,EAAIK,aACjDmK,IAAKN,IAEDs/I,EAAWxpJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAIW,OAAO,CACbi7C,KAAM57C,EAAII,IAAIJ,EAAIK,WAClBk+G,YAAav+G,EAAII,IAAIJ,EAAIK,WACzBy7C,OAAQ97C,EAAII,IAAIJ,EAAIK,WACpBw7C,SAAU77C,EAAII,IAAIJ,EAAIK,aAExBmK,IAAKxK,EAAI2B,OAEL8I,EAAYzK,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,IAAKgB,UAAW1K,EAAI0J,MAC1Dk+I,EAAW5nJ,EAAIE,QAAQ,CAAEqK,GAAIE,EAAWD,IAAKN,IAC7Cy9K,EAAiB3nL,EAAIW,OAAO,CAChCinL,cAAe5nL,EAAIW,OAAO,CACxB8D,QAASzE,EAAIK,UACbuD,OAAQ5D,EAAI0J,IACZF,SAAUxJ,EAAI2B,OAEhBkmL,cAAe7nL,EAAIW,OAAO,CACxB8D,QAASzE,EAAIK,UACbuD,OAAQ5D,EAAI0J,IACZF,SAAUxJ,EAAI2B,OAEhBy7C,KAAMp9C,EAAIK,UACVgjL,SAAUrjL,EAAI0J,IACdy6K,YAAankL,EAAIW,OAAO,CACtB8D,QAASzE,EAAIK,UACbuD,OAAQ5D,EAAI0J,IACZF,SAAUxJ,EAAI2B,SAGZsmJ,EAAWjoJ,EAAIE,QAAQ,CAAEqK,GAAIo9K,EAAgBn9K,IAAKN,IAClDy5K,EAAa3jL,EAAIE,QAAQ,CAC7B07C,KAAM57C,EAAIQ,KACV+9G,YAAav+G,EAAIQ,KACjBs7C,OAAQ97C,EAAIQ,KACZq7C,SAAU77C,EAAIQ,OAEV0nJ,EAAWloJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWsnL,IACrCn9K,IAAKN,IAEDW,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAIJ,EAAIK,WAAYmK,IAAKN,IACxDq5G,EAAWvjH,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIK,WAChBmK,IAAKxK,EAAI2B,OAELmmL,EAAkB9nL,EAAIW,OAAO,CACjC4zB,OAAQv0B,EAAIa,IAAIb,EAAII,IAAIujL,IACxBztF,YAAal2F,EAAIa,IAAIb,EAAIK,WACzB+8C,KAAMp9C,EAAIa,IAAIb,EAAIK,WAClBo9D,KAAMz9D,EAAIa,IAAIb,EAAIK,aAEdwiH,EAAW7iH,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWL,EAAIK,YACzCmK,IAAKN,IAEDS,EAAW3K,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIunL,GACZn9K,IAAKN,IAEDI,EAAWtK,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAIW,OAAO,CAAEonL,WAAY/nL,EAAI0J,IAAKs+K,gBAAiBhoL,EAAI0J,MAC3Dc,IAAKN,IAEDy7K,EAAc3lL,EAAIW,OAAO,CAC7B8D,QAASzE,EAAI2B,KACbiC,OAAQ5D,EAAI0J,IACZF,SAAUxJ,EAAI2B,OAEVikL,EAAM5lL,EAAIW,OAAO,CACrBqjL,WAAY2B,EACZ1B,WAAY0B,IAEd,OAAO3lL,EAAI2H,QAAQ,CACjBsgL,aAAcjoL,EAAI6H,KAAK,CAAC2/K,GAAmB,GAAI,IAC/CU,gBAAiBloL,EAAI6H,KAAK,GAAI,CAAC4hJ,GAAW,CAAC,UAC3Co5B,YAAa7iL,EAAI6H,KAAK,GAAI,CAAC2hJ,GAAW,CAAC,UACvC2+B,gBAAiBnoL,EAAI6H,KAAK,GAAI,CAAC4hJ,GAAW,CAAC,UAC3C2+B,uBAAwBpoL,EAAI6H,KAAK,GAAI,CAAC4hJ,GAAW,CAAC,UAClD4+B,gBAAiBroL,EAAI6H,KAAK,GAAI,CAAC4hJ,GAAW,CAAC,UAC3Cp+I,aAAcrL,EAAI6H,KAAK,GAAI,CAAC+/I,GAAW,IACvC0gC,uBAAwBtoL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAAC4nJ,GAAW,CAAC,UAC/DsgC,wBAAyBvoL,EAAI6H,KAAK,CAAC7H,EAAIa,IAAI8iL,IAAc,CAACz7B,GAAW,CAAC,UACtEsgC,aAAcxoL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACwK,GAAS,CAAC,UACnD49K,SAAUzoL,EAAI6H,KAAK,CAAC7H,EAAIa,IAAI8iL,IAAc,CAACpgE,GAAW,CAAC,UACvDmlE,qBAAsB1oL,EAAI6H,KAAK,CAACigL,GAAkB,CAACj9K,GAAS,CAAC,UAC7D89K,eAAgB3oL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACwK,GAAS,CAAC,UACrD+9K,sBAAuB5oL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACwK,GAAS,CAAC,UAC5Dg+K,oBAAqB7oL,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,CAACwiH,GAAW,CAAC,UACrEimE,mBAAoB9oL,EAAI6H,KAAK,GAAI,CAACgD,GAAS,CAAC,UAC5Ck+K,sBAAuB/oL,EAAI6H,KAAK,CAAC87K,GAAa,CAACh5K,GAAW,CAAC,UAC3Dq+K,eAAgBhpL,EAAI6H,KAAK,GAAI,CAACyC,GAAW,CAAC,UAC1C2+K,aAAcjpL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACwK,GAAS,CAAC,UACnDwoK,WAAYrzK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtCunL,YAAalpL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,KAAM,CAAC1J,EAAI2B,MAAO,IAC5DwnL,iBAAkBnpL,EAAI6H,KAAK,CAAC87K,GAAa,GAAI,IAC7CyF,cAAeppL,EAAI6H,KAAK,CAAC+9K,GAAM,GAAI,IACnCyD,eAAgBrpL,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,KACvD,ECxGSipL,GAAkBxgL,GAC7BC,EAAMC,OAAuB,CAC3BgD,UAAWC,EAAU6jC,eACrBhnC,WACAhJ,WAAYypL,KAGHvlI,GAAOA,CAAC/6C,EAAoBH,IACvCC,EAAMC,OAAa,CACjBgD,UAAWC,EAAUolF,KACrBpoF,aACAH,WACAhJ,WAAY0pL,KAWHC,GAAa3gL,GACxBC,EAAMC,OAAkB,CACtBgD,UAAWC,EAAUy9K,UACrB5gL,WACAhJ,WAAY6pL,KCzCH7pL,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMwJ,EAAQvJ,EAAIW,OAAO,CAAE8D,QAASzE,EAAI2B,KAAM6H,SAAUxJ,EAAI2B,OACtDioL,EAAc5pL,EAAIW,OAAO,CAC7BkpL,mBAAoB7pL,EAAI2B,KACxBy3J,UAAWp5J,EAAI0J,IACfogL,kBAAmB9pL,EAAI2B,KACvBs0F,aAAc1sF,EACd2sF,YAAa3sF,EACbwgL,cAAe/pL,EAAI0J,IACnB8G,KAAMxQ,EAAI2B,KACVqoL,gBAAiBhqL,EAAI0J,IACrBw7K,eAAgBllL,EAAI0J,IACpBugL,qBAAsBjqL,EAAI0J,IAC1BwgL,aAAclqL,EAAI0J,IAClB27K,oBAAqBrlL,EAAI0J,MAErBgjK,EAAY1sK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAIK,UAAWmK,IAAKxK,EAAI2B,OACtDgJ,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAChDwoL,EAAsBnqL,EAAIW,OAAO,CACrC2hL,aAActiL,EAAIq2H,QAClB+zD,cAAepqL,EAAIq2H,QACnBg0D,iBAAkBrqL,EAAIq2H,QACtBi0D,sBAAuBtqL,EAAI2B,KAC3B4oL,uBAAwBvqL,EAAI2B,KAC5B6oL,kBAAmBxqL,EAAIq2H,QACvBo0D,mBAAoBzqL,EAAI0J,IACxBghL,kBAAmB1qL,EAAI0J,MAEnB4/I,EAAYtpJ,EAAIE,QAAQ,CAC5BqK,GAAIvK,EAAII,IAAI+pL,GACZ3/K,IAAKxK,EAAI2B,OAELgpL,EAAkB3qL,EAAIW,OAAO,CACjCkpL,mBAAoB7pL,EAAI2B,KACxBy3J,UAAWp5J,EAAI0J,IACfogL,kBAAmB9pL,EAAI2B,KACvBisJ,QAAS5tJ,EAAIK,UACb41F,aAAc1sF,EACd2sF,YAAa3sF,EACbwgL,cAAe/pL,EAAI0J,IACnB8G,KAAMxQ,EAAI2B,KACVosJ,WAAY/tJ,EAAI0J,IAChBsgL,gBAAiBhqL,EAAI0J,IACrBw7K,eAAgBllL,EAAI0J,IACpBugL,qBAAsBjqL,EAAI0J,IAC1BwgL,aAAclqL,EAAI0J,IAClB27K,oBAAqBrlL,EAAI0J,IACzBT,WAAYjJ,EAAIK,YAEZwjH,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIuqL,GACjBtuI,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf8/I,EAAWxpJ,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKq5G,IACxC35G,EAAQlK,EAAIE,QAAQ,CACxBiK,YAAanK,EAAIQ,KACjB4J,cAAepK,EAAI2B,KACnB0I,iBAAkBrK,EAAI2B,KACtBwE,kBAAmBnG,EAAIQ,OAEnBipJ,EAAWzpJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIK,WAChBmK,IAAKN,IAEDO,EAAYzK,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,IAAKgB,UAAW1K,EAAI0J,MAC1Dk+I,EAAW5nJ,EAAIE,QAAQ,CAAEqK,GAAIE,EAAWD,IAAKN,IAC7C0gL,EAAiB5qL,EAAIW,OAAO,CAChCkqL,eAAgB7qL,EAAIq2H,QACpBy0D,gBAAiB9qL,EAAIq2H,QACrB00D,YAAa/qL,EAAI0J,IACjBshL,yBAA0BhrL,EAAIq2H,QAC9B40D,WAAYjrL,EAAI0J,MAEZu+I,EAAWjoJ,EAAIE,QAAQ,CAAEqK,GAAIqgL,EAAgBpgL,IAAKxK,EAAI2B,OACtDumJ,EAAWloJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAIW,OAAO,CACb4uK,cAAevvK,EAAIa,IAAIb,EAAIK,WAC3B6qL,aAAclrL,EAAIK,UAClBqvK,eAAgB1vK,EAAIK,YAEtBmK,IAAKN,IAEDq5G,EAAWvjH,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAI8E,MACxD0F,IAAKxK,EAAI2B,OAELkhH,EAAW7iH,EAAIE,QAAQ,CAC3BqK,GAAI4/K,EACJ3/K,IAAKxK,EAAI2B,OAEL2I,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIogL,EAAiBngL,IAAKxK,EAAI2B,OACvDkJ,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OACnD,OAAO3B,EAAI2H,QAAQ,CACjBwjL,0BAA2BnrL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IACjF+qL,kBAAmBprL,EAAI6H,KAAK,CAAC+hL,GAAc,CAACld,GAAY,IACxD2e,kBAAmBrrL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACsK,GAAW,IACzD2gL,iBAAkBtrL,EAAI6H,KAAK,GAAI,CAACyhJ,GAAY,CAAC,UAC7CiiC,oBAAqBvrL,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIb,EAAI0J,KAAM1J,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC8/I,GAAW,CAAC,UACjFgiC,sBAAuBxrL,EAAI6H,KACzB,CAAC7H,EAAIa,IAAIb,EAAI0J,KAAM1J,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI2B,OACpE,CAAC6nJ,GACD,CAAC,UAEHjlC,UAAWvkH,EAAI6H,KAAK,GAAI,CAAC4hJ,GAAW,CAAC,UACrCp+I,aAAcrL,EAAI6H,KAAK,GAAI,CAAC+/I,GAAW,IACvC6jC,cAAezrL,EAAI6H,KAAK,GAAI,CAACogJ,GAAW,CAAC,UACzC0qB,YAAa3yK,EAAI6H,KAAK,GAAI,CAACqgJ,GAAW,CAAC,UACvCwjC,iBAAkB1rL,EAAI6H,KAAK,GAAI,CAAC07G,GAAW,CAAC,UAC5CooE,gBAAiB3rL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACwiH,GAAW,CAAC,UACxD+oE,eAAgB5rL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACiK,GAAW,CAAC,UACvD+oK,WAAYrzK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtCkqL,6BAA8B7rL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IACpFwkH,UAAW7kH,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClDyrL,aAAc9rL,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAACiB,GAAW,IAC9CohL,qBAAsB/rL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAC5E2rL,mBAAoBhsL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACY,GAAW,IAC5E2hL,yBAA0BjsL,EAAI6H,KAAK,CAAC7H,EAAI8E,MAAO,CAAC6F,GAAW,IAC3DuhL,qBAAsBlsL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACsK,GAAW,IAC5DwhL,gBAAiBnsL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACiK,GAAW,IACvD8hL,UAAWpsL,EAAI6H,KAAK,GAAI,GAAI,IAC5BwkL,kBAAmBrsL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACwK,GAAS,KACvD,EC3HS/K,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM8K,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKxK,EAAI2B,OAC9CknJ,EAAY7oJ,EAAIE,QAAQ,CAC5B6kD,SAAU/kD,EAAIQ,KACd8rL,UAAWtsL,EAAIQ,KACf+lD,QAASvmD,EAAIQ,KACb+kL,QAASvlL,EAAIQ,KACbglL,MAAOxlL,EAAIQ,KACXilL,QAASzlL,EAAIQ,OAET+rL,EAAiBvsL,EAAIE,QAAQ,CACjCssL,WAAYxsL,EAAIQ,KAChB01F,YAAal2F,EAAIQ,OAEbG,EAASX,EAAIW,OAAO,CACxB0hB,GAAIriB,EAAIK,UACRwpL,mBAAoB7pL,EAAI2B,KACxBwN,OAAQnP,EAAI2B,KACZmoL,kBAAmB9pL,EAAI2B,KACvBs0F,aAAcj2F,EAAI2B,KAClBu0F,YAAal2F,EAAI2B,KACjB8qL,gBAAiBzsL,EAAI2B,KACrBmnJ,UAAWD,EACXn0H,KAAM10B,EAAIK,UACVqsL,eAAgBH,EAChBI,OAAQ3sL,EAAI2B,KACZirL,eAAgB5sL,EAAI2B,KACpBwhG,UAAWnjG,EAAI0J,IACfugL,qBAAsBjqL,EAAI0J,IAC1B9F,OAAQ5D,EAAI0J,IACZ27K,oBAAqBrlL,EAAI0J,MAErBs+I,EAAShoJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAIO,GACjB07C,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf8/I,EAAWxpJ,EAAIE,QAAQ,CAAEqK,GAAIy9I,EAAQx9I,IAAKxK,EAAI2B,OAC9CuI,EAAQlK,EAAIE,QAAQ,CACxBiK,YAAanK,EAAIQ,KACjB4J,cAAepK,EAAI2B,KACnB0I,iBAAkBrK,EAAI2B,KACtBwE,kBAAmBnG,EAAIQ,OAEnBipJ,EAAWzpJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAI0J,IAAK/I,IAC/B6J,IAAKN,IAED2iL,EAAiB7sL,EAAIW,OAAO,CAChCmsL,cAAe9sL,EAAI0J,IACnBqjL,eAAgB/sL,EAAI0J,IACpBsjL,YAAahtL,EAAI0J,IACjBujL,mBAAoBjtL,EAAI0J,IACxBwjL,WAAYltL,EAAI0J,IAChByjL,cAAentL,EAAI0J,IACnB0jL,kBAAmBptL,EAAI0J,MAEnBm6G,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIJ,EAAIy7D,MAAMz7D,EAAIK,UAAWwsL,IAC1CxwI,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfk+I,EAAW5nJ,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OAC5CsmJ,EAAWjoJ,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAII,IAAIJ,EAAIK,WAChBmK,IAAKN,IAEDO,EAAYzK,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,IAAKgB,UAAW1K,EAAI0J,MAC1Dw+I,EAAWloJ,EAAIE,QAAQ,CAAEqK,GAAIE,EAAWD,IAAKN,IAC7CX,EAAQvJ,EAAIW,OAAO,CAAE8D,QAASzE,EAAI2B,KAAM6H,SAAUxJ,EAAI2B,OACtD0rL,EAAoBrtL,EAAIE,QAAQ,CACpCotL,QAASttL,EAAIQ,KACb+sL,YAAavtL,EAAIQ,KACjBgtL,WAAYxtL,EAAIQ,OAEZitL,EAAwBztL,EAAIW,OAAO,CACvCkpL,mBAAoB7pL,EAAI2B,KACxBy3J,UAAWp5J,EAAI0J,IACfqjL,eAAgB/sL,EAAI0J,IACpBgkL,aAAc1tL,EAAI0J,IAClBogL,kBAAmB9pL,EAAI2B,KACvBisJ,QAAS5tJ,EAAIK,UACb41F,aAAc1sF,EACd2sF,YAAa3sF,EACbokL,cAAe3tL,EAAIq2H,QACnB0zD,cAAe/pL,EAAI0J,IACnBkkL,aAAc5tL,EAAIq2H,QAClB7lH,KAAMxQ,EAAI2B,KACVksL,kBAAmBR,EACnBt/B,WAAY/tJ,EAAI0J,IAChBsgL,gBAAiBhqL,EAAI0J,IACrBokL,UAAW9tL,EAAI0J,IACfwjL,WAAYltL,EAAI0J,IAChBw7K,eAAgBllL,EAAI0J,IACpBqkL,YAAa/tL,EAAI0J,IACjBugL,qBAAsBjqL,EAAI0J,IAC1BwgL,aAAclqL,EAAI0J,IAClBskL,YAAahuL,EAAIq2H,QACjBgvD,oBAAqBrlL,EAAI0J,IACzBgmK,eAAgB1vK,EAAIK,YAEhBiK,EAAWtK,EAAIE,QAAQ,CAC3BqK,GAAIkjL,EACJjjL,IAAKxK,EAAI2B,OAEL4hH,EAAWvjH,EAAIE,QAAQ,CAAEqK,GAAIsiL,EAAgBriL,IAAKxK,EAAI2B,OACtDgJ,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAC/CkhH,EAAW7iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAChDssL,EAAoBjuL,EAAIW,OAAO,CACnCy4J,UAAWp5J,EAAI0J,IACfqgL,cAAe/pL,EAAI0J,IACnBwgL,aAAclqL,EAAI0J,MAEpB,OAAO1J,EAAI2H,QAAQ,CACjB+qI,MAAO1yI,EAAI6H,KAAK,GAAI,CAACgD,GAAS,IAC9B07C,QAASvmD,EAAI6H,KAAK,GAAI,CAACgD,GAAS,IAChC27C,YAAaxmD,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAACmB,GAAS,IAC3CqjL,qBAAsBluL,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIb,EAAIK,WAAYL,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC8/I,GAAW,CAAC,UACxF2kC,sBAAuBnuL,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIb,EAAIK,WAAYL,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC8/I,GAAW,CAAC,UACzF4kC,mBAAoBpuL,EAAI6H,KAAK,GAAI,CAAC4hJ,GAAW,CAAC,UAC9C4kC,aAAcruL,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACk+I,GAAW,CAAC,UACxDrjC,UAAWvkH,EAAI6H,KAAK,GAAI,CAACogJ,GAAW,CAAC,UACrC58I,aAAcrL,EAAI6H,KAAK,GAAI,CAACqgJ,GAAW,IACvComC,YAAatuL,EAAI6H,KAAK,GAAI,CAACyC,GAAW,CAAC,UACvCikL,YAAavuL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACkjH,GAAW,CAAC,UACpD8vD,WAAYrzK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtC8jL,QAASzlL,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,IAClC4iL,YAAavtL,EAAI6H,KAAK,GAAI,CAACgD,GAAS,IACpCiiL,cAAe9sL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACsK,GAAW,CAAC,UACtD6jL,kBAAmBxuL,EAAI6H,KAAK,GAAI,CAACgD,GAAS,IAC1C4jL,gBAAiBzuL,EAAI6H,KAAK,GAAI,CAACgD,GAAS,IACxC6jL,qBAAsB1uL,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI8E,MAAO,CAAC+9G,GAAW,IAChEgC,UAAW7kH,EAAI6H,KAAK,CAAC7H,EAAII,IAAIJ,EAAIK,YAAa,GAAI,IAClDmlL,MAAOxlL,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,IAChCskK,KAAMjvK,EAAI6H,KAAK,GAAI,CAACyC,GAAW,IAC/B+hL,kBAAmBrsL,EAAI6H,KAAK,GAAI,CAAC8C,GAAW,CAAC,UAC7C46K,QAASvlL,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAACiB,GAAW,IACzCgkL,kBAAmB3uL,EAAI6H,KAAK,CAAComL,GAAoB,CAAC3jL,GAAW,IAC7Dy6C,SAAU/kD,EAAI6H,KAAK,CAAC7H,EAAI8E,KAAM9E,EAAI0J,KAAM,CAACmB,GAAS,IAClD08K,kBAAmBvnL,EAAI6H,KAAK,GAAI,CAACgD,GAAS,KAC1C,EC9IS/K,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMuK,EAAWtK,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAC/C8I,EAAYzK,EAAIW,OAAO,CAAEyF,QAASpG,EAAI0J,IAAKgB,UAAW1K,EAAI0J,MAC1DQ,EAAQlK,EAAIE,QAAQ,CACxBiK,YAAanK,EAAIQ,KACjB4J,cAAepK,EAAI2B,KACnB0I,iBAAkBrK,EAAI2B,KACtBwE,kBAAmBnG,EAAIQ,OAEnBynJ,EAAWjoJ,EAAIE,QAAQ,CAAEqK,GAAIE,EAAWD,IAAKN,IAC7C0kL,EAAU5uL,EAAIW,OAAO,CACzBkpF,IAAK7pF,EAAIq2H,QACTw4D,IAAK7uL,EAAI0J,IACTqgL,cAAe/pL,EAAI0J,IACnB+xG,KAAMz7G,EAAI0J,IACV2zC,YAAar9C,EAAIK,UACjByuL,qBAAsB9uL,EAAIq2H,QAC1B04D,oBAAqB/uL,EAAIq2H,QACzB4zD,qBAAsBjqL,EAAI0J,IAC1B+gL,mBAAoBzqL,EAAIq2H,QACxBgvD,oBAAqBrlL,EAAI0J,MAErBw+I,EAAWloJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAII,IAAIwuL,GAAUpkL,IAAKxK,EAAI2B,OACxD4hH,EAAWvjH,EAAIE,QAAQ,CAC3BqK,GAAIvK,EAAIy7D,MAAMz7D,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAIK,WACpCmK,IAAKxK,EAAI2B,OAELkrL,EAAiB7sL,EAAIW,OAAO,CAChCmsL,cAAe9sL,EAAI0J,IACnBqjL,eAAgB/sL,EAAI0J,IACpBsjL,YAAahtL,EAAI0J,IACjBujL,mBAAoBjtL,EAAI0J,IACxBwjL,WAAYltL,EAAI0J,IAChByjL,cAAentL,EAAI0J,IACnB0jL,kBAAmBptL,EAAI0J,MAEnBH,EAAQvJ,EAAIW,OAAO,CAAE8D,QAASzE,EAAI2B,KAAM6H,SAAUxJ,EAAI2B,OACtDqtL,EAAWhvL,EAAIW,OAAO,CAC1BsuL,SAAUpC,EACV52F,aAAc1sF,EACd2sF,YAAa3sF,EACbtH,MAAOjC,EAAIK,UACXg9C,YAAar9C,EAAIK,YAEb2nJ,EAAShoJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAI4uL,GACjB3yI,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfm5G,EAAW7iH,EAAIE,QAAQ,CAAEqK,GAAIy9I,EAAQx9I,IAAKw9I,IAC1C2iC,EAAkB3qL,EAAIW,OAAO,CACjCkpL,mBAAoB7pL,EAAI2B,KACxBy3J,UAAWp5J,EAAI0J,IACfogL,kBAAmB9pL,EAAI2B,KACvBisJ,QAAS5tJ,EAAIK,UACb41F,aAAc1sF,EACd2sF,YAAa3sF,EACbwgL,cAAe/pL,EAAI0J,IACnB8G,KAAMxQ,EAAI2B,KACVosJ,WAAY/tJ,EAAI0J,IAChBsgL,gBAAiBhqL,EAAI0J,IACrBw7K,eAAgBllL,EAAI0J,IACpBugL,qBAAsBjqL,EAAI0J,IAC1BwgL,aAAclqL,EAAI0J,IAClB27K,oBAAqBrlL,EAAI0J,IACzBT,WAAYjJ,EAAIK,YAEZwjH,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIuqL,GACjBtuI,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfiB,EAAW3K,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OAC5CutL,EAAkBlvL,EAAIW,OAAO,CACjCygL,SAAUphL,EAAIK,UACdiC,MAAOtC,EAAIq2H,QACXpqE,MAAOjsD,EAAIq2H,QACXzyH,OAAQ5D,EAAIq2H,QACZr0G,OAAQhiB,EAAIK,YAERwK,EAAS7K,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OACpD,OAAO3B,EAAI2H,QAAQ,CACjBwnL,mBAAoBnvL,EAAI6H,KAAK,GAAI,CAACyC,GAAW,IAC7Ce,aAAcrL,EAAI6H,KAAK,GAAI,CAACogJ,GAAW,IACvC8iB,YAAa/qK,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC3B,EAAIq2H,SAAU,IACjDg9C,WAAYrzK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI2B,MAAO,CAAC,UACtCytL,SAAUpvL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACw+I,GAAW,CAAC,UACnEmnC,eAAgBrvL,EAAI6H,KAAK,GAAI,CAAC07G,GAAW,CAAC,UAC1C+rE,UAAWtvL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,IAAK1J,EAAI0J,IAAK1J,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI2B,OAAQ,CAACkhH,GAAW,CAAC,UAC1G0sE,iBAAkBvvL,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACiB,GAAW,CAAC,UAC5D6kL,sBAAuBxvL,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAII,IAAI8uL,IAAmB,CAAC,UAC9EO,gBAAiBzvL,EAAI6H,KAAK,GAAI,CAACyC,GAAW,IAC1ColL,WAAY1vL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWwsL,GAAiB,CAAChiL,GAAS,KAChE,EClFS8kL,GAAyB7mL,GACpCC,EAAMC,OAA8B,CAClCgD,UAAWC,EAAU8jC,uBACrBjnC,WACAhJ,WAAY8vL,KAGHvyI,GAAcA,CAACp0C,EAAoBH,IAC9CC,EAAMC,OAAkB,CACtBC,aACA+C,UAAWC,EAAU4jL,UACrB/mL,WACAhJ,WAAYgwL,KAGHC,GAAcjnL,GACzBC,EAAMC,OAAmB,CACvBgD,UAAWC,EAAU+jC,WACrBlnC,WACAhJ,WAAYkwL,KChCHlwL,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM4iH,EAAa3iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAClDsuL,EAAiBjwL,EAAIW,OAAO,CAChCuvL,kBAAmBlwL,EAAIK,UACvB81F,SAAUn2F,EAAI2B,KACdi4D,cAAe55D,EAAI2B,KACnBwuL,mBAAoBnwL,EAAI0J,IACxB0mL,aAAcpwL,EAAI2B,KAClB0uL,cAAerwL,EAAImC,KACnBmuL,iBAAkBtwL,EAAI0J,IACtB6mL,YAAavwL,EAAI2B,KACjB6uL,gBAAiBxwL,EAAI0J,IACrB+mL,iBAAkBzwL,EAAI0J,IACtBgnL,kBAAmB1wL,EAAI0J,IACvBuqJ,UAAWj0J,EAAI2B,KACfgvL,gBAAiB3wL,EAAI2B,KACrBivL,eAAgB5wL,EAAI2B,OAEhB0sJ,EAAaruJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKxK,EAAI2B,OAClDihH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChDkiH,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAI6vL,GACjB5zI,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf8kJ,EAAmBxuJ,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OACpDgnJ,EAAU3oJ,EAAIE,QAAQ,CAC1BuO,UAAWzO,EAAIK,UACfoE,QAASzE,EAAI2B,OAETkvL,EAAkB7wL,EAAIW,OAAO,CACjCmwL,YAAa9wL,EAAI0J,IACjBysF,SAAUn2F,EAAI2B,KACdi4D,cAAe55D,EAAI2B,KACnBovL,YAAa/wL,EAAI0J,IACjB0mL,aAAcpwL,EAAI2B,KAClB0uL,cAAerwL,EAAImC,KACnB6uL,UAAWhxL,EAAIa,IAAIb,EAAIiK,KACvBgnL,UAAWtoC,EACX4nC,YAAavwL,EAAI2B,KACjBsyJ,UAAWj0J,EAAI2B,KACfivL,eAAgB5wL,EAAI2B,OAEhBqmJ,EAAShoJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAIywL,GACjBx0I,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfglJ,EAAmB1uJ,EAAIE,QAAQ,CAAEqK,GAAIy9I,EAAQx9I,IAAKxK,EAAI2B,OACtDgtJ,EAAmB3uJ,EAAIE,QAAQ,CACnCqK,GAAIvK,EAAII,IAAIJ,EAAI2B,MAChB6I,IAAKxK,EAAI2B,OAEL2sJ,EAAiBtuJ,EAAIE,QAAQ,CACjCqK,GAAI0lL,EACJzlL,IAAKxK,EAAI2B,OAELwlJ,EAAOnnJ,EAAIE,QAAQ,CACvBuO,UAAWzO,EAAIK,UACfoE,QAASzE,EAAI2B,OAETuvL,EAAalxL,EAAIW,OAAO,CAAE88D,KAAM0pF,EAAMgqC,MAAOnxL,EAAI0J,MACvD,OAAO1J,EAAI2H,QAAQ,CACjBm7G,SAAU9iH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC7C+vB,MAAO1yI,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC1C35G,OAAQhJ,EAAI6H,KAAK,CAACooL,GAAiB,CAAC5hC,GAAa,IACjDtrC,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UAC3CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzCljD,OAAQ1/D,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC3CyuE,cAAepxL,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC8kJ,GAAmB,CAAC,UACjE6iC,iBAAkBrxL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC8kJ,GAAmB,CAAC,UACnF8iC,iBAAkBtxL,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAIa,IAAIb,EAAI0J,KAAM1J,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACglJ,GAAmB,IAC/F6iC,qBAAsBvxL,EAAI6H,KACxB,CAAC7H,EAAIK,UAAWL,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI0J,KAAM1J,EAAI0J,IAAK1J,EAAI0J,KAClE,CAACglJ,GACD,IAEF8iC,eAAgBxxL,EAAI6H,KAAK,CAAC7H,EAAIK,UAAWL,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC8kJ,GAAmB,CAAC,UACjFtrC,aAAcljH,EAAI6H,KAAK,GAAI,CAAC8mJ,GAAmB,CAAC,UAChD8iC,qBAAsBzxL,EAAI6H,KAAK,GAAI,CAACwmJ,GAAa,CAAC,UAClDqjC,SAAU1xL,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC2sJ,GAAiB,CAAC,UAClDqjC,mBAAoB3xL,EAAI6H,KAAK,GAAI,CAACwmJ,GAAa,CAAC,UAChDujC,YAAa5xL,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAII,IAAI8wL,IAAc,CAACvuE,GAAa,IACrEjoB,MAAO16F,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC1CU,YAAarjH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAChDkvE,UAAW7xL,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI8E,MAAO,CAAC69G,GAAa,IACxDmvE,mBAAoB9xL,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IACvDqwC,OAAQhzJ,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACsiH,GAAa,IAChDovE,YAAa/xL,EAAI6H,KAAK,CAACooL,GAAiB,CAACttE,GAAa,KACtD,EC3FS7iH,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM4iH,EAAa3iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAClDsuL,EAAiBjwL,EAAIW,OAAO,CAChCuvL,kBAAmBlwL,EAAIK,UACvB81F,SAAUn2F,EAAI2B,KACdi4D,cAAe55D,EAAI2B,KACnBwuL,mBAAoBnwL,EAAI0J,IACxB0mL,aAAcpwL,EAAI2B,KAClB0uL,cAAerwL,EAAImC,KACnBmuL,iBAAkBtwL,EAAI0J,IACtB6mL,YAAavwL,EAAI2B,KACjB6uL,gBAAiBxwL,EAAI0J,IACrB+mL,iBAAkBzwL,EAAI0J,IACtBgnL,kBAAmB1wL,EAAI0J,IACvBuqJ,UAAWj0J,EAAI2B,KACfgvL,gBAAiB3wL,EAAI2B,KACrBivL,eAAgB5wL,EAAI2B,OAEhBgnJ,EAAU3oJ,EAAIE,QAAQ,CAC1BuO,UAAWzO,EAAIK,UACfoE,QAASzE,EAAI2B,OAETkvL,EAAkB7wL,EAAIW,OAAO,CACjCmwL,YAAa9wL,EAAI0J,IACjBysF,SAAUn2F,EAAI2B,KACdi4D,cAAe55D,EAAI2B,KACnBovL,YAAa/wL,EAAI0J,IACjB0mL,aAAcpwL,EAAI2B,KAClB0uL,cAAerwL,EAAImC,KACnB6uL,UAAWhxL,EAAIa,IAAIb,EAAIiK,KACvBgnL,UAAWtoC,EACX4nC,YAAavwL,EAAI2B,KACjBsyJ,UAAWj0J,EAAI2B,KACfivL,eAAgB5wL,EAAI2B,OAEhB2sJ,EAAiBtuJ,EAAIE,QAAQ,CACjCqK,GAAI0lL,EACJzlL,IAAKxK,EAAI2B,OAELihH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChDkiH,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIywL,GACjBx0I,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfglJ,EAAmB1uJ,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OACpDqmJ,EAAShoJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAI6vL,GACjB5zI,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf+kJ,EAAmBzuJ,EAAIE,QAAQ,CAAEqK,GAAIy9I,EAAQx9I,IAAKxK,EAAI2B,OACtDwlJ,EAAOnnJ,EAAIE,QAAQ,CACvBuO,UAAWzO,EAAIK,UACfoE,QAASzE,EAAI2B,OAET6sJ,EAAmBxuJ,EAAIE,QAAQ,CACnCqK,GAAIvK,EAAII,IAAIJ,EAAI2B,MAChB6I,IAAKxK,EAAI2B,OAELgtJ,EAAmB3uJ,EAAIE,QAAQ,CACnCqK,GAAIvK,EAAIy7D,MAAM0rF,EAAMnnJ,EAAI2B,MACxB6I,IAAKxK,EAAI2B,OAEX,OAAO3B,EAAI2H,QAAQ,CACjBm7G,SAAU9iH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC7CqvE,SAAUhyL,EAAI6H,KAAK,CAACooL,GAAiB,CAACttE,GAAa,IACnDsvE,gBAAiBjyL,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAII,IAAIywL,IAAmB,CAACluE,GAAa,IAC9E+vB,MAAO1yI,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAIK,WAAY,CAACiuJ,GAAiB,IAC7DvrC,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UAC3CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzCsvE,YAAalyL,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAChDwvE,oBAAqBnyL,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIb,EAAI0J,KAAM1J,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACglJ,GAAmB,CAAC,UACzF0iC,cAAepxL,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIb,EAAI0J,KAAM1J,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC+kJ,GAAmB,CAAC,UACnF6iC,iBAAkBtxL,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAIa,IAAIb,EAAI0J,KAAM1J,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACglJ,GAAmB,CAAC,UAChG6iC,qBAAsBvxL,EAAI6H,KACxB,CAACs/I,EAAMnnJ,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI0J,KAAM1J,EAAI0J,IAAK1J,EAAI0J,KACzD,CAACglJ,GACD,CAAC,UAEHxrC,aAAcljH,EAAI6H,KAAK,GAAI,CAAC2mJ,GAAmB,CAAC,UAChD4jC,qBAAsBpyL,EAAI6H,KAAK,GAAI,CAAC8mJ,GAAmB,CAAC,UACxD+iC,SAAU1xL,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC2sJ,GAAiB,CAAC,UAClD5zD,MAAO16F,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC1CU,YAAarjH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAChDkvE,UAAW7xL,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI8E,MAAO,CAAC69G,GAAa,IACxD0vE,UAAWryL,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC2sJ,GAAiB,KAClD,EC/ESgkC,GAAwBxpL,GACnCC,EAAMC,OAAwB,CAC5BgD,UAAWC,EAAUsmL,gBACrBzpL,WACAhJ,WAAY0yL,KAGHC,GAAoBA,CAC/BxpL,EACAH,IAEAC,EAAMC,OAAqB,CACzBF,WACAG,aACAnJ,WAAY4yL,KCxBH5yL,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMonJ,EAAOnnJ,EAAIE,QAAQ,CACvBuO,UAAWzO,EAAIK,UACfoE,QAASzE,EAAI2B,OAETgxL,EAAc3yL,EAAIW,OAAO,CAC7Bw1F,SAAUn2F,EAAI2B,KACd0P,KAAMrR,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACVixL,WAAY5yL,EAAI2B,KAChBkxL,eAAgB1rC,EAChB2rC,WAAY9yL,EAAI2B,OAEZghH,EAAa3iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAClDihH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChDkiH,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIuyL,GACjBt2I,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf8kJ,EAAmBxuJ,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OACpDgtJ,EAAmB3uJ,EAAIE,QAAQ,CACnCqK,GAAIvK,EAAII,IAAIJ,EAAI2B,MAChB6I,IAAKxK,EAAI2B,OAEL0sJ,EAAaruJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKxK,EAAI2B,OAClD2sJ,EAAiBtuJ,EAAIE,QAAQ,CAAEqK,GAAIooL,EAAanoL,IAAKxK,EAAI2B,OAC/D,OAAO3B,EAAI2H,QAAQ,CACjB6/C,IAAKxnD,EAAI6H,KAAK,CAAC8qL,GAAc,CAAChwE,GAAa,IAC3CG,SAAU9iH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC7C35G,OAAQhJ,EAAI6H,KAAK,CAAC8qL,GAAc,CAAChwE,GAAa,IAC9CI,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IACxCljD,OAAQ1/D,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAC3CowE,gBAAiB/yL,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC8kJ,GAAmB,CAAC,UACnEtrC,aAAcljH,EAAI6H,KAAK,GAAI,CAAC8mJ,GAAmB,CAAC,UAChDqkC,gBAAiBhzL,EAAI6H,KAAK,GAAI,CAACwmJ,GAAa,CAAC,UAC7C4kC,WAAYjzL,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC2sJ,GAAiB,CAAC,UACpDjrC,YAAarjH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IAChDuwE,gBAAiBlzL,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,KACpD,ECzCS7iH,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM4iH,EAAa3iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI8E,KAAM0F,IAAKxK,EAAI2B,OAClD4rJ,EAASvtJ,EAAIW,OAAO,CAAE6sJ,EAAGxtJ,EAAI2B,KAAM8rJ,EAAGztJ,EAAI0J,MAC1CypL,EAAqBnzL,EAAIW,OAAO,CACpCiX,MAAO5X,EAAI2B,KACXyL,QAASpN,EAAI2B,KACb0gL,QAASriL,EAAIiK,IACbmpL,WAAYpzL,EAAI2B,KAChB0xL,UAAWrzL,EAAIiK,IACfqpL,WAAYtzL,EAAI0J,IAChB81B,QAASx/B,EAAII,IAAImtJ,KAEbc,EAAaruJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKxK,EAAI2B,OAClDihH,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChDwlJ,EAAOnnJ,EAAIE,QAAQ,CACvBuO,UAAWzO,EAAIK,UACfoE,QAASzE,EAAI2B,OAETgxL,EAAc3yL,EAAIW,OAAO,CAC7Bw1F,SAAUn2F,EAAI2B,KACd0P,KAAMrR,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACVixL,WAAY5yL,EAAI2B,KAChBkxL,eAAgB1rC,EAChB2rC,WAAY9yL,EAAI2B,OAEZ4xL,EAAevzL,EAAIW,OAAO,CAC9B0a,GAAIrb,EAAI2B,KACR6xL,kBAAmBxzL,EAAI2B,KACvBiW,MAAO5X,EAAI2B,KACXyL,QAASpN,EAAI2B,KACb0gL,QAASriL,EAAIiK,IACb8jJ,WAAY/tJ,EAAIiK,IAChBmpL,WAAYpzL,EAAI2B,KAChB6lB,MAAOxnB,EAAI0J,IACX+pL,cAAetsC,EACfksC,UAAWrzL,EAAIiK,IACfqpL,WAAYtzL,EAAI0J,IAChB81B,QAASx/B,EAAII,IAAImtJ,GACjBmmC,QAASf,IAELrb,EAASt3K,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAImzL,GACjBl3I,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfykJ,EAAmBnuJ,EAAIE,QAAQ,CAAEqK,GAAI+sK,EAAQ9sK,IAAKxK,EAAI2B,OACtDgyL,EAAiB3zL,EAAIW,OAAO,CAChCizL,SAAU5zL,EAAIiK,IACdxF,QAAS0iJ,EACT0sC,UAAW7zL,EAAI0J,IACf81B,QAASx/B,EAAII,IAAImtJ,KAEbhE,EAASvpJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAIuzL,GACjBt3I,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf+kJ,EAAmBzuJ,EAAIE,QAAQ,CAAEqK,GAAIg/I,EAAQ/+I,IAAKxK,EAAI2B,OACtDmyL,EAAqB9zL,EAAIW,OAAO,CACpCozL,gBAAiB/zL,EAAI0J,IACrBjF,QAAS0iJ,EACT6sC,WAAYh0L,EAAI0J,MAEZs+I,EAAShoJ,EAAIW,OAAO,CACxByM,QAASpN,EAAII,IAAI0zL,GACjBz3I,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEfglJ,EAAmB1uJ,EAAIE,QAAQ,CAAEqK,GAAIy9I,EAAQx9I,IAAKxK,EAAI2B,OACtDkiH,EAAO7jH,EAAIW,OAAO,CACtByM,QAASpN,EAAII,IAAIJ,EAAIK,WACrBg8C,OAAQr8C,EAAI0J,IACZ4yC,MAAOt8C,EAAI0J,IACXo6G,cAAe9jH,EAAI0J,MAEf8kJ,EAAmBxuJ,EAAIE,QAAQ,CAAEqK,GAAIs5G,EAAMr5G,IAAKxK,EAAI2B,OACpDsyL,EAAiBj0L,EAAIW,OAAO,CAChCw1F,SAAUn2F,EAAI2B,KACd0P,KAAMrR,EAAI2B,KACV6O,KAAMxQ,EAAI2B,KACVixL,WAAY5yL,EAAI2B,KAChBkxL,eAAgB1rC,EAChB2rC,WAAY9yL,EAAI2B,OAEZgtJ,EAAmB3uJ,EAAIE,QAAQ,CACnCqK,GAAI0pL,EACJzpL,IAAKxK,EAAI2B,OAEL2sJ,EAAiBtuJ,EAAIE,QAAQ,CAAEqK,GAAIgpL,EAAc/oL,IAAKxK,EAAI2B,OAuBhE,OAtB4B3B,EAAI2H,QAAQ,CACtCm7G,SAAU9iH,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACsiH,GAAa,IAClD35G,OAAQhJ,EAAI6H,KAAK,CAACsrL,GAAqB,CAAC9kC,GAAa,IACrDtrC,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IAC1CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,IACxCsxE,YAAal0L,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACsiH,GAAa,IACrDwxE,eAAgBn0L,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAACghH,GAAa,IACnDyxE,SAAUp0L,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI0J,KAAM1J,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACykJ,GAAmB,CAAC,UACjGkmC,eAAgBr0L,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC+kJ,GAAmB,CAAC,UAC5E6lC,cAAet0L,EAAI6H,KAAK,CAAC7H,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAIa,IAAIb,EAAI2B,MAAO3B,EAAI0J,IAAK1J,EAAI0J,KAAM,CAACglJ,GAAmB,CAAC,UACvGxrC,aAAcljH,EAAI6H,KAAK,CAAC7H,EAAI0J,IAAK1J,EAAI0J,KAAM,CAAC8kJ,GAAmB,CAAC,UAChEykC,WAAYjzL,EAAI6H,KAAK,GAAI,CAAC8mJ,GAAmB,CAAC,UAC9C4lC,YAAav0L,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC2sJ,GAAiB,CAAC,UACrDkmC,kBAAmBx0L,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UAC5C+qL,eAAgBz0L,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACL,EAAI8E,MAAO,CAAC,UACvD23D,SAAUz8D,EAAI6H,KAAK,CAAC7H,EAAIK,WAAY,CAACsiH,GAAa,IAClD+xE,WAAY10L,EAAI6H,KAAK,CAACosL,EAAgBj0L,EAAI2B,MAAO,CAACghH,GAAa,IAC/DnnF,SAAUx7B,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI0J,KAAM,CAACi5G,GAAa,IACtDgyE,aAAc30L,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAII,IAAI0zL,IAAsB,CAACnxE,GAAa,IAC9EiyE,eAAgB50L,EAAI6H,KAAK,CAAC0rL,GAAe,CAAC5wE,GAAa,IACvDugB,KAAMljI,EAAI6H,KAAK,CAAC7H,EAAI2B,KAAM3B,EAAI2B,KAAM3B,EAAI0J,KAAM,CAACi5G,GAAa,KAEpC,ECnHf7iH,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM6vJ,EAAQ5vJ,EAAIW,OAAO,CACvByM,QAASpN,EAAII,IAAIJ,EAAImC,MACrBiqK,SAAUpsK,EAAI0J,MAEVk5G,EAAY5iH,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI0J,IAAKc,IAAKxK,EAAI2B,OAChDoiH,EAAc/jH,EAAIy7D,MAAMz7D,EAAI2B,KAAM3B,EAAI2B,MACtCqiH,EAAchkH,EAAIW,OAAO,CAC7Bq5F,IAAKh6F,EAAI2B,KACTsiH,OAAQjkH,EAAI2B,KACZo4G,KAAM/5G,EAAII,IAAIJ,EAAImC,MAClB+hH,QAASlkH,EAAII,IAAI2jH,KAEbmsC,EAAyBlwJ,EAAIW,OAAO,CACxCoJ,IAAK/J,EAAI2B,KACTwV,MAAOnX,EAAI0J,IACXsvJ,iBAAkBh5J,EAAI2B,OAElBo2I,EAAoB/3I,EAAIE,QAAQ,CACpC83I,SAAUh4I,EAAIW,OAAO,CACnBsO,MAAOihJ,EACP3zH,SAAUv8B,EAAI6H,KAAK,GAAI,GAAI,QAGzBs8G,EAAenkH,EAAIW,OAAO,CAC9Bo5G,KAAM/5G,EAAII,IAAIJ,EAAImC,MAClB+hH,QAASlkH,EAAII,IAAI2jH,GACjBk0B,mBAAoBj4I,EAAIa,IAAIk3I,GAC5B3zB,YAAapkH,EAAIqkH,QAEbwzB,EAAgC73I,EAAIW,OAAO,CAC/CsO,MAAOjP,EAAIa,IAAIqvJ,GACfn2C,KAAM/5G,EAAII,IAAIJ,EAAImC,QAEdksJ,EAAaruJ,EAAIE,QAAQ,CAAEqK,GAAIvK,EAAI2B,KAAM6I,IAAKxK,EAAI2B,OA2BxD,OA1BqB3B,EAAI2H,QAAQ,CAC/Bm7G,SAAU9iH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC3B,EAAI8E,MAAO,IAC3CgoK,UAAW9sK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI0J,KAAM,CAAC,UACpCqjK,WAAY/sK,EAAI6H,KAAK,GAAI,CAAC7H,EAAI8E,MAAO,IACrCkoK,aAAchtK,EAAI6H,KAChB,CACE7H,EAAIW,OAAO,CACTyrK,SAAUpsK,EAAI0J,IACdujK,aAAcjtK,EAAI2B,KAClBurK,UAAWltK,EAAII,IAAIJ,EAAI0J,OAEzB1J,EAAI2B,MAEN,GACA,IAEFwrK,aAAcntK,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC3B,EAAIW,OAAO,CAAEyrK,SAAUpsK,EAAI0J,OAAS,IACxE0jK,aAAcptK,EAAI6H,KAAK,CAAC+nJ,EAAO5vJ,EAAI2B,MAAO,CAAC3B,EAAIW,OAAO,CAAE0sK,SAAUrtK,EAAI0J,OAAS,IAC/Eq5G,eAAgB/iH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UAC3CI,aAAchjH,EAAI6H,KAAK,GAAI,CAAC+6G,GAAY,CAAC,UACzCM,aAAcljH,EAAI6H,KAAK,GAAI,CAAC7H,EAAII,IAAIJ,EAAI2B,OAAQ,CAAC,UACjDijH,aAAc5kH,EAAI6H,KAAK,CAACm8G,GAAc,CAACG,GAAe,CAAC,UACvDo5C,gCAAiCv9J,EAAI6H,KAAK,CAACqoJ,GAAyB,CAACrY,GAAgC,CAAC,UACtGm2B,YAAahuK,EAAI6H,KAAK,CAAC7H,EAAI0J,KAAM,CAAC2kJ,GAAa,IAC/ChrC,YAAarjH,EAAI6H,KAAK,CAAC7H,EAAI2B,MAAO,CAAC3B,EAAI8E,MAAO,KAE7B,EChDR+vL,GAAoB/rL,GAC/BC,EAAMC,OAAuB,CAC3BgD,UAAWC,EAAU6oL,iBACrBh1L,WAAYi1L,GACZjsL,aAGSksL,GAAiBA,CAAC/rL,EAAoBH,IACjDC,EAAMC,OAAoB,CACxBC,aACAH,WACAhJ,WAAYm1L,KAGHC,GAAaA,CAACjsL,EAAoBH,IAC7CC,EAAMC,OAAiB,CACrBC,aACAH,WACAhJ,WAAYq1L,I,mEC/BT,MAAM7/E,EAAqB,8BAIrB8/E,EAAmB,8BAEnBC,EAAkB,6B,+BCNxB,IAAKlkJ,E,2BAAZ,SAAYA,GACVA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,4BACAA,EAAAA,EAAA,wBACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,8CACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,0CACAA,EAAAA,EAAA,4CACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,cACAA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,kBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,oBACD,CAxBD,CAAYA,IAAAA,EAAO,KA0BZ,MAAM8G,EAAmB,CAC9B9G,EAAQC,QACRD,EAAQk1B,SACRl1B,EAAQ42B,gBACR52B,EAAQ62B,iBACR72B,EAAQm1B,aACRn1B,EAAQ82B,gBACR92B,EAAQ+2B,iBACR/2B,EAAQo1B,QACRp1B,EAAQq1B,eACRr1B,EAAQ+0B,OACR/0B,EAAQE,QACRF,EAAQ02B,eACR12B,EAAQy1B,KACRz1B,EAAQw1B,IACRx1B,EAAQs1B,UACRt1B,EAAQu1B,KACRv1B,EAAQg3B,YACRh3B,EAAQi3B,KACRj3B,EAAQk3B,aACRl3B,EAAQm3B,UACRn3B,EAAQ01B,OAIH,IAAKyuH,GAAZ,SAAYA,GAEVA,EAAA,YACAA,EAAA,cACAA,EAAA,YACAA,EAAA,cACAA,EAAA,gBACAA,EAAA,UACAA,EAAA,YACAA,EAAA,gBACD,CAVD,CAAYA,IAAAA,EAAkB,I,qFCnDvB,MAAMjiJ,EAAqB,YAErBh3B,EAAW,GAEXk5K,EAAsB,iBAE5B,IAAK/7I,GAAZ,SAAYA,GACVA,EAAA,eACAA,EAAA,wBACAA,EAAA,aACD,CAJD,CAAYA,IAAAA,EAAa,KAMlB,MAAMg8I,EAAe,kE,gDCZrB,MAAMp2F,EAAU,iB,+BCAhB,IAAKlxC,EAKA1Z,E,yBALZ,SAAY0Z,GACVA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,8BACD,CAHD,CAAYA,IAAAA,EAAS,KAKrB,SAAY1Z,GACVA,EAAA,cACAA,EAAA,aACD,CAHD,CAAYA,IAAAA,EAAK,I,waCgBX,SAAgBihJ,EAAkBl2H,G,gDAAC,UAAEm2H,EAAS,UAAE9zL,EAAS,UAAEmxI,EAAS,OAAEnvI,GAAgC7D,EAAA,mBAC1G,OAAOq6C,EAAAA,EAAAA,gBAKGovH,EAAAA,EAAAA,IAAkBksB,GAAW,IACnCrsB,eAAe,CACft2B,YACAnvI,SACAo+J,kBAAmBpgK,EACnB2lK,sBAAuB,GACvBC,wBAAyB,KAG/B,CAf4G,EAe3G,G,CAiBK,SAAUmuB,EAA2Br4K,GAAgE,IAA/D,UAAEo4K,EAAS,OAAEviI,EAAM,QAAEra,GAA0Cx7B,EACzG,OAAOo9B,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKlL,EACL,aAdA,SAAwCoM,G,gDAAC,UAAEm2H,EAAS,OAAEviI,GAAsC/+C,EAAA,mBAChG,OAAOgmC,EAAAA,EAAAA,gBAA8CovH,EAAAA,EAAAA,IAAkBksB,IAAYnsB,kBAAkBp2G,IAAS7Y,IAChH,CAFkG,EAEjG,G,CAYkBs7I,CAAyB,CAAEF,YAAWviI,UACrD,KAAG,CAACuiI,EAAWviI,IACfra,EAEJ,CAMM,SAAUL,EAAsBi9I,GACpC,OAAOh7I,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKq3H,EACL,aARA,SAAsCA,G,yCAC1C,OAAOt7I,EAAAA,EAAAA,gBAAiDovH,EAAAA,EAAAA,IAAkBksB,IAAYrtL,mBAAmBiyC,IAC3G,G,CAMmBu7I,CAAsBH,EACrC,KAAG,CAACA,IAER,CAQM,SAAUI,EAA4BJ,GAC1C,OAAOh7I,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKq3H,EACL,aAVA,SAA4CA,G,yCAChD,OAAOt7I,EAAAA,EAAAA,gBACQovH,EAAAA,EAAAA,IAAkBksB,IAAYzsB,2BAA2B,KACtE3uH,IACJ,G,CAMmBy7I,CAA4BL,EAC3C,KAAG,CAACA,IAER,CAEM,SAAgBpsB,EAAaosB,EAAmB3iD,EAAmBnvI,G,yCACvE,OAAOw2C,EAAAA,EAAAA,gBAIGovH,EAAAA,EAAAA,IAAkBksB,GAAW,IACnCpsB,aAAa,CACbv2B,YACAnvI,SACAiD,gBAAiB,KAGvB,G,qcC7FM,SAAUu+C,IACd,OAAO1K,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,aAPA,W,yCACJ,OAAOjkB,EAAAA,EAAAA,gBAAgDs8F,EAAAA,EAAAA,OAAcxB,eAAe56F,IACtF,G,CAKmB07I,EACf,KAAG,IAEP,CAEM,SAAgBC,I,yCACpB,OAAO77I,EAAAA,EAAAA,gBAAiDs8F,EAAAA,EAAAA,OAAct4C,gBAAgB9jD,IACxF,G,CAEM,SAAU47I,IACd,OAAOx7I,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,aAAa43H,GACf,KAAG,IAEP,CAMM,SAAUE,EAAsB/4I,GACpC,OAAO1C,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKjhB,EACL,aARA,SAAsCA,G,yCAC1C,OAAOhD,EAAAA,EAAAA,gBAAoCs8F,EAAAA,EAAAA,OAAcT,YAAY74F,IAAO9C,IAC9E,G,CAMmB87I,CAAsBh5I,EACrC,KAAG,CAACA,IAER,CAEM,SAAgBi5I,EAAuBpnL,G,yCAC3C,OAAOmrC,EAAAA,EAAAA,gBAAoCs8F,EAAAA,EAAAA,OAAcF,aAAavnI,IAAQqrC,IAChF,G,CAEM,SAAUg8I,EAAuBrnL,GACrC,OAAOyrC,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKpvD,EACL,aAAaonL,EAAuBpnL,EACtC,KAAG,CAACA,IAER,CAEM,SAAgByoD,EAAsBjpD,G,yCAC1C,OAAO2rC,EAAAA,EAAAA,gBAAoCs8F,EAAAA,EAAAA,OAAc/+E,YAAYlpD,IAAY6rC,IACnF,G,CAEM,SAAUkd,EAAsB/oD,GACpC,OAAOisC,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAK5vD,EACL,aAAaipD,EAAsBjpD,EACrC,KAAG,CAACA,IAER,C,oaC3DM,SAAU81E,IACd,MAAM,KAAEjqC,IAASirB,EAAAA,EAAAA,IACf,CAAC,oBACD,IAAWlH,EAAA,gCACT,aAAa43H,EAAAA,EAAAA,KACf,KACA,CACEvwH,gBAAiB,MAIrB,OAAOprB,CACT,CAEM,SAAUgG,IACd,MAAM,KAAEhG,IAASsrB,EAAAA,EAAAA,GAAmD,CAAC,oBACrE,OAAO52D,EAAAA,EAAAA,UAAQ,IAAMsrC,GAAMA,EAC7B,CAEM,SAAUypB,EAAaxyD,GAC3B,MAAM,KAAE+oC,IAASsrB,EAAAA,EAAAA,GAAmD,CAAC,oBAErE,OAAO52D,EAAAA,EAAAA,UAAQ,KACb,MAAMuqB,EAAW,OAAJ+gB,QAAI,IAAJA,OAAI,EAAJA,EAAM9jC,MAAMP,GAAMA,EAAExR,UAAY8M,IAE7C,OAAIA,IAAY+B,EAAAA,GAAO7O,SAAW80B,EAAaiP,OAAAwmB,OAAAxmB,OAAAwmB,OAAA,GAAKz1B,GAAI,CAAE0nB,SAAU,IAE7D1nB,CAAI,GACV,CAAC+gB,EAAM/oC,GACZ,C,6JCvBM,SAAUglL,EAA2Bx2L,GAA0D,IAAzD,KAAEq9C,EAAI,cAAE2C,GAAiDhgD,EAUnG,OATkBggD,EAAczrC,KAAKkiL,GAC5B,IAAIx2I,EAAAA,EAAS,CAClB5C,OACA6C,UAAWu2I,EAAav2I,UAAUjwC,WAClCkwC,UAAWhT,OAAOspJ,EAAat2I,WAC/BC,UAAWjT,OAAOspJ,EAAar2I,cAKrC,C,0SCdM,SAAUgiB,EAAoB5iB,GAClC,OAAO7E,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAK9e,EAEL,OAAOnF,EAAAA,EAAAA,gBASGiwH,EAAAA,EAAAA,OACNH,2BAA2B3qH,EAASjrC,KAAK/C,GAAYlR,EAAAA,UAAU2kB,SAASzT,OAC1E+oC,IACJ,KAAG,CAACiF,IAER,CA6BM,SAAUk3I,EAA+Bz0K,GAC7C,MAAM+H,GAAoC/a,EAAAA,EAAAA,UAAQ,KAChD,GAAKgT,EACL,MAAe,gCAAXA,EAAiD,CAAC,GAAI,GAAI,GAAG1N,KAAK2B,GAAM49B,OAAO59B,UAAnF,CACgB,GACf,CAAC+L,KAEI7S,OAAQoxC,IAAcm2I,EAAAA,EAAAA,GAA2B10K,EAAQ+H,GAEjE,OAAO/a,EAAAA,EAAAA,UAAQ,IACRuxC,EAEEA,EAAUjsC,KAAI,CAAC2B,EAAGkB,IAAWlB,EAAKuyB,OAAAwmB,OAAAxmB,OAAAwmB,OAAA,GAAK/4C,GAAC,CAAEoF,GAAI0O,EAAY5S,KAAsC,OAFhF,MAGtB,CAACopC,GACN,CAEM,SAAUo2I,EACdp3I,EACAv9B,EACAo7B,GAKA,MAAOhuC,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,IAChClG,EAAQynL,IAAavhL,EAAAA,EAAAA,UAAmE,OAEvFlG,OAAQ0nL,GAAY10H,EAAoB5iB,GAE1Cu3I,GAAY9nL,EAAAA,EAAAA,UAAQ,KACxB,GAAK6nL,EACL,OAAOA,EAAQviL,KAAIvU,IAAwC,IAAvC,cAAE6pK,EAAa,UAAEhoK,EAAS,MAAEygE,GAAOtiE,E,MACrD,OAAIsiE,EAAM,IAAMA,EAAM,GAAGlyD,SAAS,cAAsC,QAAhBovD,EAAAqqG,EAAc,UAAE,IAAArqG,OAAA,EAAAA,EAAEvvD,WACnEpO,EAAUoO,UAAU,GAC3B,GACD,CAAC6mL,KAGI1nL,OAAQ4wC,IAAkBg3I,EAAAA,EAAAA,GAAsB/0K,EAAQ80K,IAEhE7mL,EAAAA,EAAAA,YAAU,KACJ+R,GACFtH,GAAW,EACb,GACC,CAACsH,KAEJ/R,EAAAA,EAAAA,YAAU,MACR,W,kCACE,GAAI8vC,GAAiB82I,EAAS,CAC5Bn8K,GAAW,GAEX,MAAMvL,EAA4D4wC,EAC/DzrC,KAAI,CAACyrC,EAAe5oC,KAEnB,IADe0/K,EAAQ1/K,GACV,OACb,MAAMkrD,EAAQw0H,EAAQ1/K,GAAOkrD,MAAM,GACnC,OAAIxnD,EAAAA,EAAAA,GAAWklC,KAAkBllC,EAAAA,EAAAA,GAAWklC,QAA5C,EACO,CAACA,EAAe+2I,EAAU3/K,GAAQkrD,EAAoD,IAE9FhsD,QAAQivC,IAAY5yC,EAAAA,EAAAA,GAAY4yC,KAEnCsxI,EACEznL,EAAO+1B,QACL,CAAC2e,EAAMC,KACL,MAAM3sC,EAAQ0sC,EAAKrZ,WAAUp2B,IAAA,IAAE,CAAC,CAAG5D,GAAK4D,EAAA,OAAK5D,IAASszC,EAAK,EAAE,IAE7D,IAAe,IAAX3sC,EAAc,CAChB,MAAM6/K,EAAS,IAAInzI,GACbozI,EAAc,CAACD,EAAO7/K,GAAO,GAAGjB,OAAO4tC,EAAK,IAAKA,EAAK,GAAIA,EAAK,IAMrE,OADAkzI,EAAOz/K,OAAOJ,EAAO,EAAG8/K,GACjBD,CACT,CAEA,OAAOnzI,EAAK3tC,OAAO,CAAC4tC,GAAM,GAE5B,KAGJppC,GAAW,EACb,CAEIm8K,GAA8B,IAAnBA,EAAQzuL,QACrBsS,GAAW,EAEf,G,CAEA6/B,EAAM,GACL,CAACwF,EAAe82I,EAASC,IAE5B,MAAMI,EAxHF,SAA0C95I,GAC9C,MAAMp7B,EAAa,OAAJo7B,QAAI,IAAJA,OAAI,EAAJA,EAAM/hC,GAEf0O,GAAoC/a,EAAAA,EAAAA,UAAQ,KAChD,GAAKgT,EACL,MAAe,gCAAXA,EAAiD,CAAC,GAAI,GAAI,GAAG1N,KAAK2B,GAAM49B,OAAO59B,UAAnF,CACgB,GACf,CAAC+L,KAEI7S,OAAQoxC,IAAcm2I,EAAAA,EAAAA,GAA2B10K,EAAQ+H,GAE3DotK,GAAiBnoL,EAAAA,EAAAA,UAAQ,IACxBuxC,GAAcnD,EAEZm5I,EAA4B,CACjCn5I,OACA2C,cAAeQ,EAAUjsC,KAAK2B,IAAC,CAC7BkqC,UAAWlqC,EAAEkqC,UACbD,UAAWjqC,EAAEiqC,UACbD,UAAWhqC,EAAEgqC,gBAPe,MAU/B,CAACM,EAAWnD,IAEf,OAAOpuC,EAAAA,EAAAA,UAAQ,IAAMmoL,GAAgB,CAACA,GACxC,CA+FkCC,CAAgCh6I,GAE1D+5I,GAAiBnoL,EAAAA,EAAAA,UAAQ,IACxBG,GAAWiuC,EAETjuC,EAAOmF,KAAIgJ,IAAA,IAAEyiC,EAAewE,EAAa/zC,GAAK8M,EAAA,MAAK,CACxDi5K,EAA4B,CAC1Bn5I,OACA2C,cAAeA,EAAczrC,KAAKkiL,IAAY,CAC5Cr2I,UAAWq2I,EAAar2I,UACxBD,UAAWs2I,EAAat2I,UACxBD,UAAWu2I,EAAav2I,gBAG5BsE,EACA/zC,EACD,IAb4B,MAc5B,CAACrB,EAAQiuC,IAENi6I,GAA2DroL,EAAAA,EAAAA,UAAQ,IAClEmoL,EAEEA,EAAe7iL,KAAIwJ,IAAmC,IAAjCyiC,EAAWgE,EAAa/zC,GAAKsN,EACvD,MAAa,eAATtN,EACK,EAAW,OAAT+vC,QAAS,IAATA,EAAAA,EAAa,IAAIrqC,OAA8B,OAAvBghL,QAAuB,IAAvBA,EAAAA,EAA2B,IAAK3yI,EAAa/zC,GAGzE,CAAC+vC,EAAWgE,EAAa/zC,EAAK,IAPX,MAS3B,CAAC2mL,EAAgBD,IAEpB,OAAOloL,EAAAA,EAAAA,UACL,KAAM,CACJI,UACAD,OAAQkoL,KAEV,CAACA,EAAcjoL,GAEnB,C,8YCnLM,SAAUkoL,IACd,OAAO58I,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,aAPA,W,yCACJ,OAAOjkB,EAAAA,EAAAA,gBAAqDg3E,EAAAA,EAAAA,OAAYJ,oBAAoB,CAAC,IAAI12E,IACnG,G,CAKmBi9I,EACf,KAAG,IAEP,CAEM,SAAgBC,EAAiBrqJ,G,yCACrC,IAAIh+B,EAEJ,IACEA,QAAewrC,MAAM,gEAAgExN,eAAkB4xB,OACrG,KAAe,GAEnB,CAAE,MAAOjjD,GACPkZ,QAAQuwF,IAAIzpG,EACd,CAEA,GAAK3M,IAAwB,IAAdA,EAAO5E,GAEtB,aAAc4E,EAAOyrC,MACvB,G,CAEA,MAAM68I,EAAkC,EAElC,SAAgBxpF,I,yCACpB,IAAIypF,EAAc,EACdC,GAAa,EAEbr9I,EAAwB,GAE5B,MAAMK,EAAexjC,GAAiBknD,EAAA,gCACpCq5H,GAAe,SAGPz6I,QAAQC,IACZzd,MAAM/K,KAAK,CAAEtsB,OAAQqvL,IAAmC,CAACG,EAAGz8I,IAAMA,IAAG7mC,KAAWujL,GAAcx5H,EAAA,gCAC5F,MAAMlxB,EAAO0qJ,EAAa1gL,EAAQsgL,EAC5BtoL,QAAeqoL,EAAiBrqJ,GAEtC,GAAKh+B,EAQL,OANAmrC,EAAOA,EAAKpkC,OAAO/G,GAEfA,EAAO/G,OAAS,KAClBuvL,GAAa,GAGRxoL,CACT,QAEFmuC,OAGajnC,QAAQJ,IAAOA,IAAG7N,QAAU,IACzCuvL,GAAa,GAGVA,UACGh9I,EAAM+8I,GAEhB,IAIA,aAFM/8I,EAAM+8I,GAELp9I,EACJiI,MAAK,CAACM,EAAGC,IACJD,EAAE1rC,MAAQ2rC,EAAE3rC,OAAe,EAC3B0rC,EAAE1rC,MAAQ2rC,EAAE3rC,MAAc,EACvB,IAER7C,KAAK2B,GAAMuyB,OAAAwmB,OAAAxmB,OAAAwmB,OAAC,CAAC,EAAI/4C,GAAC,CAAE6hL,KAAItvJ,OAAAwmB,OAAAxmB,OAAAwmB,OAAA,GAAO/4C,EAAE6hL,MAAI,CAAEzmL,KAAM,8CAA8C4E,EAAE6hL,KAAKzmL,YACvG,G,ylBClEM,SAAgB+5K,EAAkBvpJ,G,yCACtC,OAAOuY,EAAAA,EAAAA,gBAAkCu1I,EAAAA,EAAAA,KAAsB,IAAOvE,kBAAkBvpJ,GAC1F,G,CAEM,SAAgBqc,EAAgB12B,EAA2B60B,EAAgBC,G,yCAC/E,OAAOlC,EAAAA,EAAAA,gBAEGu1I,EAAAA,EAAAA,OACNpE,qBAAoBlxI,EAAAA,EAAAA,GAA0B7yB,GAAQqsB,OAAOwI,GAASxI,OAAOyI,KAC/EhC,IACJ,G,CAEM,SAAUy9I,EAAgBvwK,EAA2B60B,EAAgBC,GACzE,OAAO5B,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,IAAK5hB,EAAAA,EAAAA,GAAoBJ,EAAQC,GACjC,aAAa4B,EAAgB12B,EAAO60B,EAAQC,EAC9C,KAAG,CAACD,EAAQC,EAAO90B,IAEvB,CAUM,SAAgB+1B,EAAagiB,G,gDAAC,MAAE/3C,EAAK,OAAE60B,EAAM,MAAEC,EAAK,cAAEF,EAAa,aAAED,GAAkCp8C,EAAA,mBAC3G,OAAOq6C,EAAAA,EAAAA,gBAEGu1I,EAAAA,EAAAA,OACNnE,uBACAnxI,EAAAA,EAAAA,GAA0B7yB,GAC1BqsB,OAAOwI,GACPxI,OAAOyI,IACPjC,EAAAA,EAAAA,GAA0B8B,IAC1B9B,EAAAA,EAAAA,GAA0B+B,KAE5B9B,IACJ,CAZ6G,EAY5G,G,CAUK,SAAU09I,EAAa5jL,GAA0E,IAAzE,MAAEoT,EAAK,OAAE60B,EAAM,MAAEC,EAAK,cAAEF,EAAa,aAAED,GAAkC/nC,EACrG,OAAOsmC,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,IAAK5hB,EAAAA,EAAAA,GAAoBJ,EAAQC,GACjC,aAAaiB,EAAc,CAAE/1B,QAAO60B,SAAQC,QAAOF,gBAAeD,gBACpE,KAAG,CAACE,EAAQC,EAAO90B,EAAO40B,EAAeD,IAE7C,CAEM,SAAgB87I,I,yCACpB,OAAO79I,EAAAA,EAAAA,gBAAiDu1I,EAAAA,EAAAA,OAAyBlE,iBAAiBnxI,IACpG,G,CAWM,SAAgB6C,EAA6Bl0C,G,yCACjD,OAAOmxC,EAAAA,EAAAA,gBACQu1I,EAAAA,EAAAA,OAAyB/D,eAAevrL,EAAAA,UAAU2kB,SAAS/b,KACxEqxC,IACJ,G,CAYM,SAAgBmE,EAAoBx1C,G,yCACxC,OAAOmxC,EAAAA,EAAAA,gBAA2CiD,EAAAA,EAAAA,IAAYp0C,IAAaqlL,eAAeh0I,IAC5F,G,CAEM,SAAU49I,EAAoBjvL,EAAgCy0C,GAClE,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKp1D,EACL,aAAaw1C,EAAoBx1C,EACnC,KAAG,CAACA,IACJy0C,EAEJ,CAEM,SAAgBU,EAAwBn1C,EAAoBwF,G,yCAChE,OAAO2rC,EAAAA,EAAAA,gBAA+CiD,EAAAA,EAAAA,IAAYp0C,IAAaslL,YAAY9/K,IAAY6rC,IACzG,G,CAyCM,SAAU69I,EAAqBlvL,EAAgCy0C,GACnE,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKp1D,EACL,aARA,SAAqCA,G,yCACzC,OAAOmxC,EAAAA,EAAAA,gBAA4CiD,EAAAA,EAAAA,IAAYp0C,IAAaoC,gBAAgBivC,IAC9F,G,CAMmB89I,CAAqBnvL,EACpC,KAAG,CAACA,IACJy0C,EAEJ,CAOM,SAAgB26I,EAAiBpvL,G,yCACrC,OAAOmxC,EAAAA,EAAAA,gBAAkCiD,EAAAA,EAAAA,IAAYp0C,GAAY,IAAOypI,QAC1E,G,CAEM,SAAgB4lD,EAAmBrvL,G,yCACvC,OAAOmxC,EAAAA,EAAAA,gBAAkCiD,EAAAA,EAAAA,IAAYp0C,GAAY,IAAOs9C,UAC1E,G,CAEM,SAAgBgyI,EAAuBtvL,EAAoBrF,G,yCAC/D,OAAOw2C,EAAAA,EAAAA,gBAAkCiD,EAAAA,EAAAA,IAAYp0C,GAAY,IAAOu9C,YAAY5iD,GACtF,G,CAEM,SAAgB40L,EAAmBvvL,G,yCACvC,OAAOmxC,EAAAA,EAAAA,gBAAkCiD,EAAAA,EAAAA,IAAYp0C,GAAY,IAAOw8K,UAC1E,G,CAEM,SAAgBgT,EAAkBxvL,G,yCACtC,OAAOmxC,EAAAA,EAAAA,gBAAkCiD,EAAAA,EAAAA,IAAYp0C,GAAY,IAAOu8K,QAC1E,G,CAUM,SAAgBkT,EAAoBzvL,EAAoB0vL,EAAuB/0L,G,yCACnF,OAAOw2C,EAAAA,EAAAA,gBAAkCiD,EAAAA,EAAAA,IAAYp0C,GAAY,IAAO87C,SAAS4zI,EAAc/0L,GACjG,G,CAEM,SAAgBg1L,EAAmB3vL,EAAoBrF,G,yCAC3D,OAAOw2C,EAAAA,EAAAA,gBAAkCiD,EAAAA,EAAAA,IAAYp0C,GAAY,IAAOs8K,QAAQ3hL,GAClF,G,CAgBM,SAAUi1L,EACd5vL,EACAwF,EACA4tC,EACAC,EACAoB,GAEA,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKp1D,IAAewzC,EAAAA,EAAAA,GAAoBJ,EAAQC,GAChD,aAvBA,SACJrzC,EACAwF,EACA4tC,EACAC,G,yCAEA,OAAOlC,EAAAA,EAAAA,gBAEGiD,EAAAA,EAAAA,IAAYp0C,IAClBklL,uBAAsB9zI,EAAAA,EAAAA,GAA6B5rC,GAAYolC,OAAOwI,GAASxI,OAAOyI,KACxFhC,IACJ,G,CAYmBw+I,CAA2B7vL,EAAYwF,EAAW4tC,EAAQC,EACzE,KAAG,CAACrzC,EAAYozC,EAAQC,EAAO7tC,IAC/BivC,EAEJ,CAeM,SAAUq7I,EACd9vL,EACAwF,EACA4tC,EACAC,EACAoB,GAEA,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKp1D,IAAewzC,EAAAA,EAAAA,GAAoBJ,EAAQC,GAChD,aAvBA,SACJrzC,EACAwF,EACA4tC,EACAC,G,yCAEA,OAAOlC,EAAAA,EAAAA,gBAEGiD,EAAAA,EAAAA,IAAYp0C,IAClBilL,sBAAqB7zI,EAAAA,EAAAA,GAA6B5rC,GAAYolC,OAAOwI,GAASxI,OAAOyI,KACvFhC,IACJ,G,CAYmB0+I,CAAgC/vL,EAAawF,EAAW4tC,EAAQC,EAC/E,KAAG,CAACrzC,EAAYozC,EAAQC,EAAO7tC,IAC/BivC,EAEJ,CAcM,SAAUu7I,EAAqBhwL,EAAgCy0C,GACnE,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKp1D,EACL,aAVA,SAAqCwF,G,yCACzC,OAAO2rC,EAAAA,EAAAA,gBACQu1I,EAAAA,EAAAA,OAAyBhE,gBAAgBtrL,EAAAA,UAAU2kB,SAASvW,KACzE6rC,IACJ,G,CAMmB4+I,CAAqBjwL,EACpC,KAAG,CAACA,IACJy0C,EAEJ,C,sbC9RM,SAAgBX,EACpBtuC,EACA4tC,EACAC,EACAH,EACAC,G,yCAEA,OAAOhC,EAAAA,EAAAA,gBAEG21I,EAAAA,EAAAA,OACNT,UACAjvL,EAAAA,UAAU2kB,SAASvW,GACnBolC,OAAOwI,GACPxI,OAAOyI,IACPjC,EAAAA,EAAAA,GAA0B8B,IAC1B9B,EAAAA,EAAAA,GAA0B+B,KAE5B9B,IACJ,G,CAiBM,SAAU6+I,EACd1qL,EACA2qL,EACAC,GAEA,OAAO3+I,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,MAAIxjD,EAAAA,EAAAA,GAAWu+K,KAAev+K,EAAAA,EAAAA,GAAWpM,KAAcoM,EAAAA,EAAAA,GAAWw+K,IAClE,aAdA,SAAqC5qL,EAAmB2qL,EAAoBC,G,yCAChF,OAAOj/I,EAAAA,EAAAA,gBACQ21I,EAAAA,EAAAA,OAAcX,SAAS/uL,EAAAA,UAAU2kB,SAASvW,GAAYolC,OAAOulJ,GAAavlJ,OAAOwlJ,KAC9F/+I,IACJ,G,CAUmBg/I,CAAqB7qL,EAAW2qL,EAAYC,EAC3D,KAAG,CAACD,EAAYC,EAAU5qL,IAE9B,CAQM,SAAU8qL,EAAoB9qL,GAClC,OAAOisC,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,KAAIxjD,EAAAA,EAAAA,GAAWpM,GAEf,aAXA,SAAoCA,G,yCACxC,OAAO2rC,EAAAA,EAAAA,gBACQ21I,EAAAA,EAAAA,OAAcP,sBAAsBnvL,EAAAA,UAAU2kB,SAASvW,KACpE6rC,IACJ,G,CAOmBk/I,CAAoB/qL,EACnC,KAAG,CAACA,IAER,C,irBC1CM,SAAgB2nD,EAAev0B,G,yCACnC,OAAOuY,EAAAA,EAAAA,gBAAwCsmI,EAAAA,EAAAA,KAAY,IAAO51K,WAAW+2B,GAC/E,G,CAEM,SAAgBomB,EAAYpmB,G,yCAChC,OAAOuY,EAAAA,EAAAA,gBAAwCsmI,EAAAA,EAAAA,OAAep1K,QAAQu2B,IAAOyY,IAC/E,G,CAEM,SAAUm/I,EAAY53J,GAC1B,OAAO6Y,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKx8B,EACL,aAAaomB,EAAYpmB,EAC3B,KAAG,CAACA,IAER,CAEM,SAAgB6zD,I,yCACpB,OAAOt7C,EAAAA,EAAAA,gBAA0CsmI,EAAAA,EAAAA,OAAen1K,YAAY+uC,IAC9E,G,CAEM,SAAUqP,IACd,OAAOjP,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,aAAaq3B,GACf,KAAG,IAEP,CAEM,SAAgBxtC,EAAoBj/C,G,yCACxC,OAAOmxC,EAAAA,EAAAA,gBAAwCma,EAAAA,EAAAA,IAAStrD,IAAaguC,YAAYqD,IACnF,G,CAEM,SAAUo/I,EAAoBzwL,GAClC,OAAOyxC,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKp1D,EACL,aAAai/C,EAAoBj/C,EACnC,KAAG,CAACA,IAER,CAQM,SAAgB0wL,EAAuBC,G,yCAAC53K,GAAc,IAAA4nB,EAAA,SAAE0S,EAAKjhB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,IAAG,mBAKvE,aAAa4iB,EAAAA,EAAAA,KAJI1hB,CAAO8f,EAAgBC,IAAiB+hB,EAAAz0B,OAAA,sBACvD,aARE,SAAiC3gC,EAAoBozC,EAAgBC,G,yCACzE,OAAOlC,EAAAA,EAAAA,gBACQma,EAAAA,EAAAA,IAAStrD,IAAaixK,aAAarmI,OAAOwI,GAASxI,OAAOyI,KACvEhC,IACJ,G,CAIiBu/I,CAAiB73K,EAAQq6B,EAAQC,EAChD,KAE+DA,EACjE,CANyE,EAMxE,G,CAEK,SAAUw9I,EAAsB7wL,EAAgCqzC,GACpE,OAAO5B,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKp1D,EACL,aAAa0wL,EAAwB1wL,EAAYqzC,EACnD,KAAG,CAACrzC,EAAYqzC,IAEpB,CAEM,SAAgBiK,EAAQt9C,EAAoBgG,EAAerL,EAAgBG,G,yCAC/E,OAAOq2C,EAAAA,EAAAA,gBAAkCma,EAAAA,EAAAA,IAAStrD,GAAY,IAAOs9C,QAAQ,CAAEt3C,QAAOrL,SAAQG,QAChG,G,CAEM,SAAgByiD,EAAYv9C,EAAoBgG,EAAerL,EAAgBG,G,yCACnF,OAAOq2C,EAAAA,EAAAA,gBAAkCma,EAAAA,EAAAA,IAAStrD,GAAY,IAAOu9C,YAAY,CAAEv3C,QAAOrL,SAAQG,QACpG,G,CAEM,SAAgB0jG,EAAKx+F,EAAoB44B,G,yCAC7C,OAAOuY,EAAAA,EAAAA,gBAAkCma,EAAAA,EAAAA,IAAStrD,GAAY,IAAOw+F,KAAK5lE,GAC5E,G,CAEM,SAAgB+wG,EAAkB5wH,EAAgB6f,G,yCACtD,OAAOuY,EAAAA,EAAAA,gBAAkCma,EAAAA,EAAAA,IAASvyC,GAAQ,IAAO4wH,kBAAkB/wG,GACrF,G,CAEM,SAAgB4wG,EAAkBzwH,EAAgB6f,G,yCACtD,OAAOuY,EAAAA,EAAAA,gBACQma,EAAAA,EAAAA,IAASvyC,GAAQ,IAAOywH,kBAAkB5wG,GAE3D,G,CAEM,SAAgBkjB,EAAS/iC,EAAgB/S,EAAelL,EAAaH,G,yCACzE,OAAOw2C,EAAAA,EAAAA,gBAAkCma,EAAAA,EAAAA,IAASvyC,GAAQ,IAAO+iC,SAAS,CAAE91C,QAAOlL,MAAKH,WAC1F,G,CAEM,SAAgBgqD,EAAM5rC,EAAgB6f,G,yCAC1C,MAAMk4J,cAA4BxlI,EAAAA,EAAAA,IAASvyC,IAAS4rC,MAAM/rB,GAC1D,OAAOuY,EAAAA,EAAAA,IAAqB2/I,GAAcz/I,IAC5C,G,CAEM,SAAgBktD,EAAKxlF,EAAgB6f,G,yCACzC,OAAOuY,EAAAA,EAAAA,gBAAkCma,EAAAA,EAAAA,IAASvyC,GAAQ,IAAOwlF,KAAK3lE,GACxE,G,CAEM,SAAgBm4J,EAAQh4K,EAAgB6f,G,yCAC5C,OAAOuY,EAAAA,EAAAA,gBAAgEma,EAAAA,EAAAA,IAASvyC,GAAQ,IAAO0wH,MAAM7wG,GACvG,G,CAEM,SAAgBg5I,EAAqB5xK,EAAoBw0D,G,yCAC7D,OAAOrjB,EAAAA,EAAAA,gBACQma,EAAAA,EAAAA,IAAStrD,IAAa4xK,qBAAqBp9G,IACxDnjB,IACJ,G,CAEM,SAAUs3D,EAAqB3oG,EAA2Bw0D,EAAwB3kB,GACtF,OAAO4B,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKp1D,GAAew0D,EACpB,aAAao9G,EAAqB5xK,EAAYw0D,EAChD,KAAG,CAACx0D,EAAYw0D,IAChB3kB,EAEJ,CAEM,SAAgBmL,EAAgBh7C,EAAoBsI,G,yCACxD,OAAO6oC,EAAAA,EAAAA,gBAA4Cma,EAAAA,EAAAA,IAAStrD,IAAawxK,gBAAgBlpK,IAAU+oC,IACrG,G,CAiBM,SAAUkQ,EACdvhD,EACA86C,EACAjL,GAEA,OAAO4B,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKp1D,IAAgB86C,GAAcA,IAAelQ,OAAO,IACzD,aAdA,SAA+B5qC,EAAoB86C,G,yCACvD,OAAO3J,EAAAA,EAAAA,gBACQma,EAAAA,EAAAA,IAAStrD,IAAa8xK,cAAch3H,IACjDzJ,IACJ,G,CAUmB2/I,CAAehxL,EAAY86C,EAC1C,KAAG,CAAC96C,EAAY86C,IAChBjL,EAEJ,CAIM,SAAgBohJ,EAAsBjxL,EAAoBozC,EAAgBC,G,yCAC9E,OAAOlC,EAAAA,EAAAA,gBACQma,EAAAA,EAAAA,IAAStrD,IAAaiwK,gBAAgBrlI,OAAOwI,GAASxI,OAAOyI,KAC1EhC,IACJ,G,CAWM,SAAgBsc,EAAsBgjI,G,yCAAC53K,GAAc,IAAAm4K,EAAA,SAAE79I,EAAKjhB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,IAAI,mBAKvE,aAAa4iB,EAAAA,EAAAA,KAJI1hB,CAAO8f,EAAgBC,IAAiB+hB,EAAA87H,OAAA,sBACvD,aAAaD,EAAsBl4K,EAAQq6B,EAAQC,EACrD,KAEgEA,EAClE,CANyE,EAMxE,G,CAwCK,SAAgB89I,EAAmB7oL,G,yCACvC,MAAM+oC,GAAOF,EAAAA,EAAAA,gBAAkComI,EAAAA,EAAAA,OAAWnS,SAASx6H,OAAOtiC,KAAW+oC,KACrF,OAAOh2B,KAAKQ,MAAU,OAAJw1B,QAAI,IAAJA,EAAAA,EAAQ,GAC5B,G,CA6DM,SAAgB+/I,EAAiBpxL,EAAoBozC,EAAgBC,G,yCACzE,OAAOlC,EAAAA,EAAAA,gBACQma,EAAAA,EAAAA,IAAStrD,IAAa0xK,iBAAiB9mI,OAAOwI,GAASxI,OAAOyI,KAC3EhC,IACJ,G,CAEM,SAAUggJ,EAAiBrxL,EAA2BozC,EAAgBC,GAC1E,OAAO5B,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKp1D,IAAewzC,EAAAA,EAAAA,GAAoBJ,EAAQC,GAChD,aAAa+9I,EAAiBpxL,EAAYozC,EAAQC,EACpD,KAAG,CAACrzC,EAAYozC,EAAQC,IAE5B,CAwDM,SAAgBi+I,EAAeC,G,yCAACvxL,GAAkB,IAAAwxL,EAAA,SAAEn+I,EAAKjhB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,IAAI,mBAKpE,aAAaq/J,EAAAA,EAAAA,KAJIn+J,CAAO8f,EAAgBC,IAAiB+hB,EAAAo8H,OAAA,sBACvD,aAPE,SAA6BxxL,EAAoBozC,EAAgBC,G,yCACrE,MAAMntC,cAAsBolD,EAAAA,EAAAA,IAAStrD,IAAakxK,SAAStmI,OAAOwI,GAASxI,OAAOyI,IAClF,OAAOlC,EAAAA,EAAAA,IAA+CjrC,GAAQmrC,IAChE,G,CAIiBqgJ,CAAa1xL,EAAYozC,EAAQC,EAChD,KAEiEA,EACnE,CANsE,EAMrE,G,CAEK,SAAUs+I,EAAgB3xL,EAAgCqzC,GAC9D,OAAO5B,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKp1D,EACL,aAAasxL,EAAgBtxL,EAAYqzC,EAC3C,KAAG,CAACrzC,EAAYqzC,IAEpB,CAMM,SAAUu+I,EAAkB5xL,GAChC,OAAOyxC,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKp1D,EACL,aARA,SAAkCA,G,yCACtC,OAAOmxC,EAAAA,EAAAA,gBAAkEma,EAAAA,EAAAA,IAAStrD,IAAaoC,gBAAgBivC,IACjH,G,CAMmBwgJ,CAAkB7xL,EACjC,KAAG,CAACA,IAER,CAuBM,SAAgBghB,EAAyBjI,EAAgBlZ,G,yCAC7D,OAAOsxC,EAAAA,EAAAA,gBAAqCymI,EAAAA,EAAAA,IAAa/3K,IAAWyyK,UAAUv5J,GAChF,G,CAMM,SAAU2tF,EAAqBhsG,GACnC,OAAO+2C,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAK16D,EACL,aARA,SAAsCA,G,yCAC1C,OAAOy2C,EAAAA,EAAAA,gBAAoCymI,EAAAA,EAAAA,OAAgBrF,aAAa73K,IAAU22C,IACpF,G,CAMmBygJ,CAAsBp3L,EACrC,KAAG,CAACA,IAER,CAEM,SAAgBq3L,EAAqBh5K,EAAgBvT,G,yCACzD,OAAO2rC,EAAAA,EAAAA,gBACQma,EAAAA,EAAAA,IAASvyC,IAAS44J,4BAA4Bv6K,EAAAA,UAAU2kB,SAASvW,KAC9E6rC,IACJ,G,CAEM,SAAU2gJ,EAAqBj5K,EAAuBvT,EAA0BqqC,GACpF,OAAO4B,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAK5vD,GAAcuT,EACnB,aAAag5K,EAAqBh5K,EAAQvT,EAC5C,KAAG,CAACA,EAAWuT,IACf82B,EAEJ,CAEM,SAAgBqgI,EAAgBn3J,EAAgBm9B,EAAiBhoC,G,yCACrE,OAAOijC,EAAAA,EAAAA,gBACQma,EAAAA,EAAAA,IAASvyC,GAAQ,IAAOm3J,gBAAgB94K,EAAAA,UAAU2kB,SAASm6B,GAAUtL,OAAO18B,IAE7F,G,CAMM,SAAU+jL,EACdl5K,EACA68F,EACA/lE,GAEA,OAAO4B,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKr8C,QAA4BnS,IAAlBgvG,EACf,aAZA,SAAqC78F,EAAgB68F,G,yCACzD,OAAOzkE,EAAAA,EAAAA,gBAAkCma,EAAAA,EAAAA,IAASvyC,IAASu4J,oBAAoB1mI,OAAOgrE,KAAiBvkE,IACzG,G,CAUmB6gJ,CAAqBn5K,EAAQ68F,EAC5C,KAAG,CAACA,EAAe78F,IACnB82B,EAEJ,C,wXCzdM,SAAUi+I,EACd/0K,EACA+pH,GAEA,MAAO38H,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,IAChClG,EAAQynL,IAAavhL,EAAAA,EAAAA,UAAiD,MA8B7E,OA5BApF,EAAAA,EAAAA,YAAU,MACR,W,kCAGE,GAFA2mL,EAAU,MAEN7qD,GAAc/pH,EAAQ,CACxB,MAAMo5K,QAA+Dn+I,QAAQC,IAC3E6uF,EAAWz3H,KAAW7F,GAAa4vD,EAAA,gCACjC,GAAK5vD,EACL,aAAausL,EAAAA,EAAAA,IAAqBh5K,EAAQvT,EAAUuB,WACtD,OAGF4mL,EAAUwE,GACV1gL,GAAW,EACb,CAEIqxH,GAAoC,IAAtBA,EAAW3jI,QAAgB4Z,GAC3CtH,GAAW,GAGRsH,GACHtH,GAAW,EAEf,G,CAEA6/B,EAAM,GACL,CAACwxF,EAAY/pH,KAEThT,EAAAA,EAAAA,UACL,KAAM,CACJI,UACAD,YAEF,CAACA,EAAQC,GAEb,CAEM,SAAUsnL,EACd10K,EACA+H,GAKA,MAAO3a,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,IAChClG,EAAQynL,IAAavhL,EAAAA,EAAAA,UAAyC,MA0BrE,OAxBApF,EAAAA,EAAAA,YAAU,MACR,W,kCAGE,GAFA2mL,EAAU,MAEN7sK,GAAe/H,EAAQ,CACzB,MAAMo5K,QAAuDn+I,QAAQC,IACnEnzB,EAAYzV,KAAWyvC,GAAcsa,EAAA,gCACnC,GAAKta,EACL,aAAaE,EAAAA,EAAAA,IAAgBjiC,EAAQ+hC,EACvC,OAGF6yI,EAAUwE,GACV1gL,GAAW,EACb,CAEIqP,GAAsC,IAAvBA,EAAY3hB,QAAgB4Z,GAC7CtH,GAAW,EAEf,G,CAEA6/B,EAAM,GACL,CAACxwB,EAAa/H,KAEVhT,EAAAA,EAAAA,UACL,KAAM,CACJI,UACAD,YAEF,CAACA,EAAQC,GAEb,C,uZCxFM,SAAgBisL,EAAY5sL,G,yCAChC,OAAO2rC,EAAAA,EAAAA,gBAAsCsmI,EAAAA,EAAAA,OAAe5N,wBAAwBzyK,EAAAA,UAAU2kB,SAASvW,KACpG6rC,IACL,G,CAEM,SAAU6J,EAAY11C,EAA+BivC,GACzD,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAK5vD,EACL,OAAO4sL,EAAY5sL,EACrB,KAAG,CAACA,IACJivC,EAEJ,C,obCdM,SAAU49I,IACd,OAAO5gJ,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,OAAOjkB,EAAAA,EAAAA,gBAIS0nI,EAAAA,EAAAA,OAAmB7qI,YAAYqD,IACjD,KAAG,IAEP,CAEM,SAAgBihJ,EAAgB3xL,EAAmBC,EAAmB9F,G,yCAC1E,MAAMoL,cAAsB2yK,EAAAA,EAAAA,KAAgB,IAAOlW,gBAAgBhiK,EAAQC,EAAQ9F,GAEnF,OAAOq2C,EAAAA,EAAAA,IAAqBjrC,EAC9B,G,CAEM,SAAgBizC,EAAmBx+C,EAAgBG,G,yCACvD,MAAMoL,cAAsB2yK,EAAAA,EAAAA,KAAgB,IAAO/8H,SAAS,CAAEhhD,IAAK8vC,OAAO9vC,GAAMH,WAChF,OAAOw2C,EAAAA,EAAAA,IAAqBjrC,EAC9B,G,CAEM,SAAgB+yC,EAAgBt4C,EAAgBC,EAAgB9F,G,yCACpE,MAAMoL,cACE2yK,EAAAA,EAAAA,KAAgB,IACtBvW,gBAAgBlrK,EAAAA,UAAU2kB,SAASpb,GAASvJ,EAAAA,UAAU2kB,SAASnb,GAAS9F,GAE1E,OAAOq2C,EAAAA,EAAAA,IAAqBjrC,EAC9B,G,CAEM,SAAUqsL,EAAkB/sL,EAAkCivC,GAClE,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAK5vD,EACL,OAAO2rC,EAAAA,EAAAA,gBAAkC0nI,EAAAA,EAAAA,OAAmBxmH,UAAU7sD,IAAY6rC,IACpF,KAAG,CAAC7rC,IACJivC,EAEJ,C,ugBClCM,SAAU+9I,EAASl/G,EAA6B7+B,GACpD,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKke,EACL,aARA,SAAyBA,G,yCAC7B,OAAOniC,EAAAA,EAAAA,gBAA0Ck4I,EAAAA,EAAAA,OAAwBZ,SAASn1G,IAAUjiC,IAC9F,G,CAMmBo3I,CAASn1G,EACxB,KAAG,CAACA,IACJ7+B,EAEJ,CAEM,SAAgBg+I,EAAWn/G,EAAiB9kB,G,yCAChD,OAAOrd,EAAAA,EAAAA,gBAAmCq4I,EAAAA,EAAAA,IAAkBh7H,GAAW,IAAO46H,UAAU91G,GAC1F,G,CAEM,SAAgBo/G,EAAiB95J,EAAsB/4B,G,yCAC3D,OAAOsxC,EAAAA,EAAAA,gBAAkCk4I,EAAAA,EAAAA,IAAqBxpL,IAAWE,OAAO64B,GAClF,G,CAEM,SAAgB+5J,EAAmBvgL,EAAYvS,G,yCACnD,OAAOsxC,EAAAA,EAAAA,gBAAmCk4I,EAAAA,EAAAA,IAAqBxpL,IAAW4xF,MAAMr/E,GAClF,G,CAEM,SAAgBwgL,EAAmBxgL,EAAYmM,EAAgB1e,G,yCACnE,OAAOsxC,EAAAA,EAAAA,gBAAmCk4I,EAAAA,EAAAA,IAAqBxpL,IAAW+oL,UAAUx2K,EAAImM,GAC1F,G,CAEM,SAAgBs0K,EAAkBzgL,EAAYwmB,EAAoB/4B,G,yCACtE,OAAOsxC,EAAAA,EAAAA,gBAAmCk4I,EAAAA,EAAAA,IAAqBxpL,IAAW8oL,YAAYv2K,EAAIwmB,GAC5F,G,CAEM,SAAgBs8C,EAAe9hC,EAAgBC,G,yCACnD,OAAOlC,EAAAA,EAAAA,gBACQk4I,EAAAA,EAAAA,OAAwBlB,cAAcv9I,OAAOwI,GAASxI,OAAOyI,KAC1EhC,IACJ,G,CAEM,SAAUyhJ,EAAe1/I,EAAgBC,EAAeoB,GAC5D,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,IAAK5hB,EAAAA,EAAAA,GAAoBJ,EAAQC,GACjC,aAAa6hC,EAAe9hC,EAAQC,EACtC,KAAG,CAACD,EAAQC,IACZoB,EAEJ,CAkBM,SAAgBs+I,EAAmBv+H,EAAcphB,EAAgBC,G,yCACrE,OAAOlC,EAAAA,EAAAA,gBACQk4I,EAAAA,EAAAA,OAAwBd,eAAenxL,EAAAA,UAAU2kB,SAASy4C,GAAO5pB,OAAOwI,GAASxI,OAAOyI,KACrGhC,IACJ,G,CAEM,SAAU2hJ,EAAmBx+H,EAA0BphB,EAAgBC,EAAeoB,GAC1F,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKZ,IAAShhB,EAAAA,EAAAA,GAAoBJ,EAAQC,GAC1C,aAAa0/I,EAAmBv+H,EAAOphB,EAAQC,EACjD,KAAG,CAACmhB,EAAMphB,EAAQC,IAElBoB,EAEJ,CAeM,SAAUw+I,EACd7gL,EACAmM,EACA60B,EACAC,EACAoB,GAEA,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKhjD,IAAOohC,EAAAA,EAAAA,GAAoBJ,EAAQC,GACxC,aAvBA,SAA0CjhC,EAAYmM,EAA2B60B,EAAgBC,G,yCACrG,OAAOlC,EAAAA,EAAAA,gBAEGk4I,EAAAA,EAAAA,OACNhB,iBACAj2K,OACUxL,IAAV2X,EAAsB,IAAK6yB,EAAAA,EAAAA,GAA0BxG,OAAOrsB,IAC5DqsB,OAAOwI,GACPxI,OAAOyI,KAEThC,IACJ,G,CAYmB6hJ,CAA0B9gL,EAAKmM,EAAO60B,EAAQC,EAC7D,KAAG,CAACjhC,EAAImM,EAAO60B,EAAQC,IACvBoB,EAEJ,CAsBM,SAAU0+I,EACd3+H,EACApiD,EACAmM,EACA60B,EACAC,EACAoB,GAEA,OAAOhD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,GAAKZ,IAAShhB,EAAAA,EAAAA,GAAoBJ,EAAQC,GAE1C,aAhCA,SACJmhB,EACApiD,EACAmM,EACA60B,EACAC,G,yCAEA,OAAOlC,EAAAA,EAAAA,gBAEGk4I,EAAAA,EAAAA,OACNf,qBACAlxL,EAAAA,UAAU2kB,SAASy4C,QACZ5tD,IAAPwL,EAAmB,IAAKg/B,EAAAA,EAAAA,GAA0Bh/B,QACxCxL,IAAV2X,EAAsB,IAAK6yB,EAAAA,EAAAA,GAA0BxG,OAAOrsB,IAC5DqsB,OAAOwI,GACPxI,OAAOyI,KAEThC,IACJ,G,CAcmB+hJ,CAA8B5+H,EAAOpiD,EAAImM,EAAO60B,EAAQC,EACvE,KAAG,CAACmhB,EAAMj2C,EAAO60B,EAAQC,IACzBoB,EAEJ,C,uZChJM,SAAU0lD,IACd,OAAO1oD,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,aAPA,W,yCACJ,OAAOjkB,EAAAA,EAAAA,gBAA+CioD,EAAAA,EAAAA,OAAa8gB,WAAW7oE,IAChF,G,CAKmBgiJ,EACf,KAAG,IAEP,CAEM,SAAUC,EAAsBtzL,GACpC,OAAOyxC,EAAAA,EAAAA,KACL3mC,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,IAAKp1D,EAAY,OACjB,MAAMswB,GAAO6gB,EAAAA,EAAAA,gBAA+CioD,EAAAA,EAAAA,OAAazqC,IAAI3uD,IAAaqxC,KAC1F,OAAO/gB,EAAOA,EAAK,QAAK1pB,CAC1B,KAAG,CAAC5G,IAER,CAEM,SAAgBw6F,EAAmBpnD,EAAgBC,G,yCACvD,OAAOlC,EAAAA,EAAAA,gBACQusE,EAAAA,EAAAA,OAAkBhC,eAAe9wE,OAAOwI,GAASxI,OAAOyI,GAAQ,EAAC,KAC9EhC,IACJ,G,gbCpBM,SAAgBsD,EAAe2hB,G,gDAAC,WAAEt2D,EAAU,QAAExE,EAAO,IAAE04D,GAA0Bp9D,EAAA,mBAgBrF,aAfqBi4D,EAAAA,GAAa5xD,QAAQ,CACxC6C,aACAkqD,OAAQ,CACNsK,MAAMR,EAAAA,EAAAA,GAAYx4D,GACd,CAAEgK,UAAWhK,IACb4L,EAAAA,EAAAA,GAAiB5L,GACjB,CACEgK,UAAWpO,EAAAA,UAAU2kB,SAASvgB,IAEhC,CAAEA,WACNwK,MAAO,GACP/M,WAAYi7D,EAAM,IAAIA,QAAOttD,MAInByqC,IAChB,CAjBuF,EAiBtF,G,CASK,SAAUjrC,EAAe+E,GAA4D,IAA3D,WAAEnL,EAAU,QAAExE,EAAO,IAAE04D,EAAG,QAAErkB,GAA+B1kC,EAIzF,OAAOspD,EAAAA,EAAAA,KACL3pD,EAAAA,EAAAA,cAAY,IAAWsqD,EAAA,gCACrB,IAAK55D,IAAYwE,EAAY,OAC7B,MAAM7C,QAAgBw3C,EAAgB,CAAE30C,aAAYk0D,MAAK14D,YACzD,YAAmBoL,IAAZzJ,OAAwByJ,EAAY,IAAI+C,EAAAA,EAAUxM,EAAQ4J,WACnE,KAAG,CAACvL,EAASwE,EAAYk0D,IACzBrkB,EAEJ,C,2YC7CM,SAAU4B,EAAgBnV,EAAamY,GAC3C,MAAMvuC,GAASiQ,EAAAA,EAAAA,aAAsBvP,IAC9BT,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,GAavC,OAXApF,EAAAA,EAAAA,YAAU,KACJs1B,IACFp2B,EAAOuQ,aAAU7P,EACjB6K,GAAW,GACX6qB,IAAKwjB,MAAM3N,IACTjsC,EAAOuQ,QAAU07B,EACjB1gC,GAAW,EAAM,IAErB,GACC,CAAC6qB,EAAImY,KAED1uC,EAAAA,EAAAA,UAAQ,KACN,CACLG,OAAQA,EAAOuQ,QACftQ,aAED,CAACD,EAAOuQ,QAAStQ,GACtB,CAEM,SAAUsuD,EAAqBn4B,EAAauT,GAChD,MAAO1pC,EAASsL,IAAcrF,EAAAA,EAAAA,WAAS,GAEjCmnL,GAAWp9K,EAAAA,EAAAA,QAAe,GAC1Bq9K,GAAar9K,EAAAA,EAAAA,QAAyC,CAAC,GAoB7D,OAlBAnP,EAAAA,EAAAA,YAAU,KACR,GAAIs1B,EAAI,CACN7qB,GAAW,GAEX8hL,EAAS98K,SAAW,EACpB,MAAMvI,EAAQqlL,EAAS98K,QAEvB6lB,IAAKwjB,MAAM55C,IACTstL,EAAW/8K,QAAO8oB,OAAAwmB,OAAAxmB,OAAAwmB,OAAA,GACbytI,EAAW/8K,SAAO,CACrB,CAACmmC,OAAO1uC,IAAShI,IAGnBuL,GAAW,EAAM,GAErB,IACC,CAAC6qB,EAAIuT,KAED9pC,EAAAA,EAAAA,UAAQ,KACN,CACLG,OAAQstL,EAAW/8K,QAAQ88K,EAAS98K,SACpCtQ,aAED,CAACqtL,EAAW/8K,QAAS88K,EAAS98K,QAAStQ,GAC5C,CAoGM,SAAgB6uC,EACpB1hB,EACA+f,G,+CAEA,MAAM3B,EAAQA,CAAO0B,EAAgBC,IAAiB+hB,EAAA,gCACpD,aAAa9hC,EAAS8f,EAAQC,EAChC,IAEMogJ,QAAgB/hJ,EAAM,EAAG,GACzBmpE,EAAgB52E,OAA6B,QAAtBqyB,EAAO,OAAPm9H,QAAO,IAAPA,OAAO,EAAPA,EAAS54E,qBAAa,IAAAvkD,EAAAA,EAAI,GACjDo9H,EACJ74E,EAAgBxnE,IAAU,EAAIxb,SAAS+kB,OAAOi+D,EAAgBxnE,IAAUxb,SAAS+kB,OAAOi+D,EAAgBxnE,IAAU,EAE9GgmC,EAAsD,GAE5D,IAAK,IAAInnC,EAAI,EAAGA,EAAIwhJ,EAAY,EAAGxhJ,IAAK,CACtC,MAAOkB,IAAUugJ,EAAAA,EAAAA,GAAezhJ,EAAGmB,GACnCgmC,EAAQ1rE,KAAK+jC,EAAM0B,EAAQC,GAC7B,CAIA,aAFqBW,QAAQC,IAAIolC,IAG9BjsE,QAAQ+kC,KAAUA,IAClBlW,QAAO,CAAC2e,EAAMC,K,MACb,OAAOD,EAAK3tC,OAAoB,QAAbqpD,EAAI,OAAJzb,QAAI,IAAJA,OAAI,EAAJA,EAAM12C,eAAO,IAAAmyD,EAAAA,EAAI,GAAG,GACtC,GACP,G,CAEM,SAAgBm7H,EACpBn+J,EACA+f,G,iDAEA,MAAM3B,EAAQA,CAAO0B,EAAgBC,IAAiB+hB,EAAA,gCACpD,aAAa9hC,EAAS8f,EAAQC,EAChC,IAEMugJ,QAAiBliJ,EAAM,EAAG2B,GAC1BwnE,EAAgB52E,OAA8B,QAAvBqyB,EAAQ,OAARs9H,QAAQ,IAARA,OAAQ,EAARA,EAAU/4E,qBAAa,IAAAvkD,EAAAA,EAAI,GAClDo9H,EACJ74E,EAAgBxnE,IAAU,EAAIxb,SAAS+kB,OAAOi+D,EAAgBxnE,IAAUxb,SAAS+kB,OAAOi+D,EAAgBxnE,IAAU,EAE9GgmC,EAAsD,GAE5D,IAAK,IAAInnC,EAAI,EAAGA,EAAIwhJ,EAAY,EAAGxhJ,IAAK,CACtC,MAAOkB,IAAUugJ,EAAAA,EAAAA,GAAezhJ,EAAGmB,GACnCgmC,EAAQ1rE,KAAK+jC,EAAM0B,EAAQC,GAC7B,CAIA,aAFqBW,QAAQC,IAAIolC,IAG9BjsE,QAAQ+kC,KAAUA,IAClBlW,QACC,CAAC2e,EAAMC,K,MACL,OAAOD,EAAK3tC,OAAoB,QAAbqpD,EAAI,OAAJzb,QAAI,IAAJA,OAAI,EAAJA,EAAM12C,eAAO,IAAAmyD,EAAAA,EAAI,GAAG,GAEzB,QAAhB6mD,EAAAy2E,EAASzvL,eAAO,IAAAg5G,EAAAA,EAAK,GAE3B,G,gECnNM,SAAU9U,EAAehvG,EAAUs8B,GACvC,MAAOk+J,EAAgBC,IAAqB1nL,EAAAA,EAAAA,UAAY/S,GAgBxD,OAdA2N,EAAAA,EAAAA,YAAU,KAER,MAAMwsB,EAAUG,YAAW,KACzBmgK,EAAkBz6L,EAAM,GACvBs8B,GAKH,MAAO,KACLmD,aAAatF,EAAQ,CACtB,GACA,CAACn6B,EAAOs8B,IAEJk+J,CACT,C,+DCvBM,SAAU9lL,EACd1U,EACAqS,GACiB,IAAjBqoL,EAAW3hK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,IAEd,MAAO4hK,EAAOC,IAAY7nL,EAAAA,EAAAA,WAAY,IAAM/S,IACtC8hC,GAAQhlB,EAAAA,EAAAA,UAER+9K,GAAgBppL,EAAAA,EAAAA,cACnBqpL,IACCF,EAASE,GACLh5J,EAAM1kB,SACRqiB,aAAaqC,EAAM1kB,SAErB0kB,EAAM1kB,QAAUkd,YAAW,KACzBjoB,EAASyoL,GACTh5J,EAAM1kB,aAAU7P,CAAS,GACxBmtL,EAAY,GAEjB,CAACA,EAAaroL,IAWhB,OARA1E,EAAAA,EAAAA,YAAU,KACJm0B,EAAM1kB,UACRqiB,aAAaqC,EAAM1kB,SACnB0kB,EAAM1kB,aAAU7P,GAElBqtL,EAAS56L,EAAM,GACd,CAACA,IAEG,CAAC26L,EAAOE,EACjB,C,qWC/BM,SAAUz+I,EACdniB,GAEe,IADfulC,EAAAzmC,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,IAAAA,UAAA,GACA0mC,EAAQ1mC,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,IAEX,MAAOif,EAAMqD,IAAWtoC,EAAAA,EAAAA,eAAwBxF,IACzCm3B,EAAMC,IAAW5xB,EAAAA,EAAAA,UAAiB,GA4BzC,OA1BApF,EAAAA,EAAAA,YAAU,MACR,W,kCACE,GAAIssB,EAAU,CACZ,MAAMptB,QAAeotB,IAEjBptB,GACFwuC,EAAQxuC,EAEZ,CACF,G,CAEAkuL,EAAY,GACX,CAACr2J,EAAMzK,EAAUulC,KAEpB7xD,EAAAA,EAAAA,YAAU,KACR,MAAMm0B,EAAQ8W,aAAY,KACpB3e,GACF0K,GAAS5vB,GAAcA,EAAY,GACrC,GACC0qD,GAEH,MAAO,KACL1mB,cAAcjX,EAAM,CACrB,GACA,CAAC29B,EAAUxlC,KAEPvtB,EAAAA,EAAAA,UAAQ,IAAMsrC,GAAM,CAACA,GAC9B,C,oWCKM,SAAgBqpD,EAAsB25F,EAAAC,G,yCAC1ChhK,EACA+f,GAAa,IAAA1S,EAAA,SACb4zJ,EAAWniK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,GACdoiK,EAAoBpiK,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EAAA,mBAEpB,IAAIyqC,EAAY,GACZo9I,EAAc,EACdC,GAAa,EAEjB,MAAMh9I,EAAexjC,GAAiBknD,EAAAz0B,OAAA,sBACpC8tJ,GAAe,QAETz6I,QAAQC,IACZzd,MAAM/K,KAAK,CAAEtsB,OAAQo1L,IAAe,CAAC5F,EAAGz8I,IAAMA,IAAG7mC,KAAWujL,GAAcx5H,EAAA,gCACxE,MAAMl2D,GAAoB,OAAXs1L,QAAW,IAAXA,EAAAA,EAAe,GAAK5F,EAAav7I,EAAQnlC,EAAQmlC,EAAQkhJ,EAElEruL,QA5BR,SAA8BhH,EAAem0C,EAAe/f,G,yCAEhE,aADqBA,EAASp0B,EAAOm0C,EAEvC,G,CAyB6BohJ,CAAWv1L,EAAOm0C,EAAO/f,GAEzCptB,IAGLmrC,EAAOA,EAAKpkC,OAAO/G,GAEfA,EAAO/G,OAASk0C,IAClBq7I,GAAa,GAIjB,OAGGA,UACGh9I,EAAM+8I,GAEhB,IAIA,aAFM/8I,EAAM+8I,GAELp9I,CACT,CApCsB,EAoCrB,G,sFClEK,SAAUg4D,IACd,MAAM,OAAErvF,IAAWmJ,EAAAA,EAAAA,MACnB,OAAOpd,EAAAA,EAAAA,UAAQ,IAdX,SAA4BiU,GAChC,IAAI83F,EAAuB,OAAN93F,QAAM,IAANA,EAAAA,EAAU,GAE/B,IAAKA,EAAQ,CAEX,MAAM,KAAEi/D,GAAS7wD,OAAOlF,SACxB4uF,EAAS74B,EAAKy7G,OAAOz7G,EAAK9qE,QAAQ,KACpC,CAEA,OAAO2jG,GAAUA,EAAO3yG,OAAS,GAAI0c,EAAAA,EAAAA,OAAMi2F,EAAQ,CAAE6iF,aAAa,EAAOC,mBAAmB,IAAU,CAAC,CACzG,CAIuBC,CAAkB76K,IAAS,CAACA,GACnD,C,gXCdM,SAAgBk+C,EAAgB48H,G,yCAAI78H,GAAgB,IAAE5kB,EAAKjhB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,IAAG,mBACrE,MAAM2iK,GAAUC,EAAAA,EAAAA,IAAS/8H,EAAO5kB,GAE1BntC,EAAqB,GAE3B,IAAK,IAAIgsC,EAAI,EAAGA,EAAI6iJ,EAAQ51L,OAAQ+yC,IAAK,CACvC,MAAMC,QAAY6B,QAAQC,IAAI8gJ,EAAQ7iJ,IACtChsC,EAAOyH,KAAKwkC,EACd,CAEA,OAAOjsC,EAAOmuC,MAChB,CAXuE,EAWtE,G,2DCXM,IAAK3I,GAAZ,SAAYA,GACVA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,gBACD,CALD,CAAYA,IAAAA,EAAS,KAUd,MAAM6rE,EAAmD,CAC9D,CAAC7rE,EAAUupJ,QAAS,EACpB,CAACvpJ,EAAUC,KAAM,GACjB,CAACD,EAAUE,QAAS,GACpB,CAACF,EAAUG,MAAO,I,sECdRoZ,EAKAiwI,E,qBALZ,SAAYjwI,GACVA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,8BACD,CAHD,CAAYA,IAAAA,EAAS,KAKrB,SAAYiwI,GACVA,EAAAA,EAAA,2BACAA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,sBACD,CAJD,CAAYA,IAAAA,EAAQ,KAMb,MAAM/yH,EAAay0C,IAAAA,OAAY,qE,0ECChC,MAAOl0C,EA+BXjyC,WAAAA,CAAA35B,GAAuF,IAApE,QAAE0E,EAAO,SAAEsL,EAAQ,OAAEO,EAAM,KAAEE,EAAI,KAAEa,EAAI,SAAEsiB,GAA2B5zB,EA9BvE,KAAAq+L,UAAkB,EAElB,KAAAvtI,SAAgB,GA6B9B3F,EAAAA,EAAAA,GAAUn7C,GAAY,GAAKA,EAAW,KAAOm9B,OAAOmxJ,UAAUtuL,GAAW,YAEzE8pB,KAAK9pB,SAAWA,EAChB8pB,KAAKvpB,OAASA,EACdupB,KAAKrpB,KAAW,OAAJA,QAAI,IAAJA,EAAAA,EAAQ,GACpBqpB,KAAKxoB,KAAW,OAAJA,QAAI,IAAJA,EAAAA,EAAQ,GACpBwoB,KAAKlG,SAAWA,EAChBkG,KAAKp1B,SAAU65L,EAAAA,EAAAA,GAA6B75L,EAC9C,CAMO8iD,MAAAA,CAAOp9B,GACZ,OAAOA,EAAM0mC,SAAWh3B,KAAKp1B,UAAY0lB,EAAM1lB,OACjD,CAQOsjD,WAAAA,CAAY59B,GAEjB,OADA+gC,EAAAA,EAAAA,GAAUrxB,KAAKp1B,UAAY0lB,EAAM1lB,QAAS,aACnCo1B,KAAKp1B,QAAQ85L,cAAgBp0K,EAAM1lB,QAAQ85L,aACpD,E,uICnEF,MAAMC,EAAMnqK,IAASoqK,EAAAA,GAEf,MAAO73I,UAAwC8I,EAAAA,EAU5C,oBAAO7I,CAA+BS,EAAa9B,GACxD,OAAO,IAAIoB,EAAeU,EAAU9B,EACtC,CAQO,2BAAOkJ,CACZpH,EACAgF,EACAD,GAEA,OAAO,IAAIzF,EAAeU,EAAUgF,EAAWD,EACjD,CAEA3yB,WAAAA,CAAsB4tB,EAAagF,EAAsBD,GACvD1yB,MAAM2yB,EAAWD,IACjBnB,EAAAA,EAAAA,GAAU20D,IAAAA,gBAAqBhmF,KAAK2zB,SAAU4d,EAAAA,IAAa,UAC3DvxC,KAAKytB,SAAWA,EAChBztB,KAAK5O,aAAe40F,IAAAA,aAAkBA,IAAAA,OAAY,IAAKA,IAAAA,OAAYv4D,EAASv3C,UAC9E,CAEOy3C,GAAAA,CAAIr9B,IACT+gC,EAAAA,EAAAA,GAAUrxB,KAAKytB,SAASC,OAAOp9B,EAAMm9B,UAAW,YAChD,MAAMo3I,EAAQ/kK,MAAM6tB,IAAIr9B,GACxB,OAAOy8B,EAAe8H,qBAAqB70B,KAAKytB,SAAUo3I,EAAMpyI,UAAWoyI,EAAMryI,YACnF,CAEOwB,QAAAA,CAAS1jC,IACd+gC,EAAAA,EAAAA,GAAUrxB,KAAKytB,SAASC,OAAOp9B,EAAMm9B,UAAW,YAChD,MAAMq3I,EAAahlK,MAAMk0B,SAAS1jC,GAClC,OAAOy8B,EAAe8H,qBAAqB70B,KAAKytB,SAAUq3I,EAAWryI,UAAWqyI,EAAWtyI,YAC7F,CAEOF,QAAAA,CAAShiC,GACd,MAAMy0K,EAAajlK,MAAMwyB,SAAShiC,GAClC,OAAOy8B,EAAe8H,qBAAqB70B,KAAKytB,SAAUs3I,EAAWtyI,UAAWsyI,EAAWvyI,YAC7F,CAEOyB,MAAAA,CAAO3jC,GACZ,MAAM00K,EAAUllK,MAAMm0B,OAAO3jC,GAC7B,OAAOy8B,EAAe8H,qBAAqB70B,KAAKytB,SAAUu3I,EAAQvyI,UAAWuyI,EAAQxyI,YACvF,CAEOo1D,aAAAA,GAA8F,IAAhFq9E,EAAiBzjK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,EAAG0jK,EAAe1jK,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EAAEmvL,EAAA3jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAqB8iK,EAAAA,GAASvjF,WACzF,OAAOjhF,MAAMm0B,OAAOj0B,KAAK5O,cAAcw2F,cAAcq9E,EAAmBC,EAAQC,EAClF,CAEO5qK,OAAAA,GAGmC,IAFxC6qK,EAAA5jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAwBxB,KAAKytB,SAASv3C,SACtCgvL,EAAe1jK,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EACfmvL,EAAA3jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAqB8iK,EAAAA,GAASvjF,WAG9B,OADA1vD,EAAAA,EAAAA,GAAU+zI,GAAiBplK,KAAKytB,SAASv3C,SAAU,YAC5C4pB,MAAMm0B,OAAOj0B,KAAK5O,cAAcmJ,QAAQ6qK,EAAeF,EAAQC,EACxE,CAEOn+I,OAAAA,GAA+C,IAAvCk+I,EAAA1jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAiB,CAAEqlF,eAAgB,IAEhD,OADA89E,EAAIU,GAAKrlK,KAAKytB,SAASv3C,SAChB,IAAIyuL,EAAI3kK,KAAK2zB,SAASx9C,YAAY4wG,IAAI/mF,KAAK5O,aAAajb,YAAYqkB,SAAS0qK,EACtF,CAEA,WAAWj3I,GACT,OAAIjuB,KAAKytB,SAASuJ,QAAgBh3B,KAC3B+sB,EAAe8H,qBAAqB70B,KAAKytB,SAASQ,QAASjuB,KAAKyyB,UAAWzyB,KAAKwyB,YACzF,E,+ICjFF,MAAM81E,EAAU9tG,IAAS8qK,KACnBX,EAAMnqK,IAASoqK,EAAAA,GAEfW,EAAwB,CAC5B,CAACjB,EAAAA,GAASvjF,YAAaunB,EAAQvnB,WAC/B,CAACujF,EAAAA,GAASkB,eAAgBl9D,EAAQk9D,cAClC,CAAClB,EAAAA,GAASmB,UAAWn9D,EAAQm9D,UAG/B,IAAWC,GAAX,SAAWA,GAKTA,EAAAA,EAAA,yBAKAA,EAAAA,EAAA,6BAKAA,EAAAA,EAAA,iCAIAA,EAAAA,EAAA,oBACD,CApBD,CAAWA,IAAAA,EAAY,KAsBvB,MAAMC,EAAkB,CACtB,CAACrB,EAAAA,GAASvjF,YAAa2kF,EAAaE,UACpC,CAACtB,EAAAA,GAASkB,eAAgBE,EAAaG,YACvC,CAACvB,EAAAA,GAASmB,UAAWC,EAAaI,SAG9B,MAAOjwI,EAKXh2B,WAAAA,CAAmB4yB,GAA6D,IAAvCD,EAAAhxB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAyBwkF,IAAAA,OAAY,GAC5EhmF,KAAKyyB,UAAYuzD,IAAAA,OAAYvzD,GAC7BzyB,KAAKwyB,YAAcwzD,IAAAA,OAAYxzD,EACjC,CAEQ,uBAAOuzI,CAAiBC,GAC9B,GAAIA,aAAuBhgF,KAA+B,kBAAhBggF,GAAmD,kBAAhBA,EAC3E,OAAO,IAAInwI,EAASmwI,GAEtB,GAAI,cAAeA,GAAe,gBAAiBA,EAAa,OAAOA,EACvE,MAAM,IAAI31L,MAAM,2BAClB,CAGA,YAAWsjD,GACT,OAAOqyD,IAAAA,OAAYhmF,KAAKyyB,UAAWzyB,KAAKwyB,YAC1C,CAGA,aAAWyzI,GACT,OAAO,IAAIpwI,EAASmwD,IAAAA,UAAehmF,KAAKyyB,UAAWzyB,KAAKwyB,aAAcxyB,KAAKwyB,YAC7E,CAEOuD,MAAAA,GACL,OAAO,IAAIF,EAAS71B,KAAKwyB,YAAaxyB,KAAKyyB,UAC7C,CAEO9E,GAAAA,CAAIr9B,GACT,MAAM41K,EAAcrwI,EAASkwI,iBAAiBz1K,GAC9C,OAAI01F,IAAAA,MAAWhmF,KAAKwyB,YAAa0zI,EAAY1zI,aACpC,IAAIqD,EAASmwD,IAAAA,IAAShmF,KAAKyyB,UAAWyzI,EAAYzzI,WAAYzyB,KAAKwyB,aAErE,IAAIqD,EACTmwD,IAAAA,IACEA,IAAAA,SAAchmF,KAAKyyB,UAAWyzI,EAAY1zI,aAC1CwzD,IAAAA,SAAckgF,EAAYzzI,UAAWzyB,KAAKwyB,cAE5CwzD,IAAAA,SAAchmF,KAAKwyB,YAAa0zI,EAAY1zI,aAEhD,CAEOwB,QAAAA,CAAS1jC,GACd,MAAM41K,EAAcrwI,EAASkwI,iBAAiBz1K,GAC9C,OAAI01F,IAAAA,MAAWhmF,KAAKwyB,YAAa0zI,EAAY1zI,aACpC,IAAIqD,EAASmwD,IAAAA,SAAchmF,KAAKyyB,UAAWyzI,EAAYzzI,WAAYzyB,KAAKwyB,aAE1E,IAAIqD,EACTmwD,IAAAA,SACEA,IAAAA,SAAchmF,KAAKyyB,UAAWyzI,EAAY1zI,aAC1CwzD,IAAAA,SAAckgF,EAAYzzI,UAAWzyB,KAAKwyB,cAE5CwzD,IAAAA,SAAchmF,KAAKwyB,YAAa0zI,EAAY1zI,aAEhD,CAEOS,QAAAA,CAAS3iC,GACd,MAAM41K,EAAcrwI,EAASkwI,iBAAiBz1K,GAC9C,OAAO01F,IAAAA,SACLA,IAAAA,SAAchmF,KAAKyyB,UAAWyzI,EAAY1zI,aAC1CwzD,IAAAA,SAAckgF,EAAYzzI,UAAWzyB,KAAKwyB,aAE9C,CAEOK,OAAAA,CAAQviC,GACb,MAAM41K,EAAcrwI,EAASkwI,iBAAiBz1K,GAC9C,OAAO01F,IAAAA,MACLA,IAAAA,SAAchmF,KAAKyyB,UAAWyzI,EAAY1zI,aAC1CwzD,IAAAA,SAAckgF,EAAYzzI,UAAWzyB,KAAKwyB,aAE9C,CAEO+G,WAAAA,CAAYjpC,GACjB,MAAM41K,EAAcrwI,EAASkwI,iBAAiBz1K,GAC9C,OAAO01F,IAAAA,YACLA,IAAAA,SAAchmF,KAAKyyB,UAAWyzI,EAAY1zI,aAC1CwzD,IAAAA,SAAckgF,EAAYzzI,UAAWzyB,KAAKwyB,aAE9C,CAEOF,QAAAA,CAAShiC,GACd,MAAM41K,EAAcrwI,EAASkwI,iBAAiBz1K,GAC9C,OAAO,IAAIulC,EACTmwD,IAAAA,SAAchmF,KAAKyyB,UAAWyzI,EAAYzzI,WAC1CuzD,IAAAA,SAAchmF,KAAKwyB,YAAa0zI,EAAY1zI,aAEhD,CAEOyB,MAAAA,CAAO3jC,GACZ,MAAM41K,EAAcrwI,EAASkwI,iBAAiBz1K,GAC9C,OAAO,IAAIulC,EACTmwD,IAAAA,SAAchmF,KAAKyyB,UAAWyzI,EAAY1zI,aAC1CwzD,IAAAA,SAAchmF,KAAKwyB,YAAa0zI,EAAYzzI,WAEhD,CAEOm1D,aAAAA,CACLq9E,GAE2C,IAD3CC,EAAA1jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAiB,CAAEqlF,eAAgB,IACnCs+E,EAAA3jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAqB8iK,EAAAA,GAASkB,eAE9Bn0I,EAAAA,EAAAA,GAAUhe,OAAOmxJ,UAAUS,GAAoB,GAAGA,yBAClD5zI,EAAAA,EAAAA,GAAU4zI,EAAoB,EAAG,GAAGA,sBAEpC38D,EAAQ/iE,IAAI,CACV4gI,UAAWlB,EAAoB,EAC/BE,SAAUI,EAAsBJ,KAElC,MAAMxxI,EAAW,IAAI20E,EAAQtoG,KAAKyyB,UAAUt8C,YACzC4wG,IAAI/mF,KAAKwyB,YAAYr8C,YACrBiwL,oBAAoBnB,GACvB,OAAOtxI,EAASn5B,SAASm5B,EAASyxI,gBAAiBF,EACrD,CAEO3qK,OAAAA,CACL6qK,GAE2C,IAD3CF,EAAA1jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAiB,CAAEqlF,eAAgB,IACnCs+E,EAAA3jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAqB8iK,EAAAA,GAASkB,cAO9B,OALAn0I,EAAAA,EAAAA,GAAUhe,OAAOmxJ,UAAUY,GAAgB,GAAGA,yBAC9C/zI,EAAAA,EAAAA,GAAU+zI,GAAiB,EAAG,GAAGA,kBAEjCT,EAAIU,GAAKD,EACTT,EAAI0B,GAAKV,EAAgBR,GAClB,IAAIR,EAAI3kK,KAAKyyB,UAAUt8C,YAAY4wG,IAAI/mF,KAAKwyB,YAAYr8C,YAAYqkB,SAAS4qK,EAAeF,EACrG,CAKA,cAAWoB,GACT,OAAO,IAAIzwI,EAAS71B,KAAKyyB,UAAWzyB,KAAKwyB,YAC3C,E,mFCjLF,MAAM+zI,EAAc,IAAI1wI,EAAAA,EAASmwD,IAAAA,OAAY,MAM7C,SAASwgF,EAAU1gF,GACjB,OAAO,IAAIlqE,EAAQkqE,EAASrzD,UAAWqzD,EAAStzD,YAClD,CAEM,MAAO5W,UAAgBia,EAAAA,EAA7Bh2B,WAAAA,G,oBAIkB,KAAA4mK,WAAkB,CAyBpC,CAvBE94I,GAAAA,CAAIr9B,GACF,OAAOk2K,EAAU1mK,MAAM6tB,IAAIr9B,GAC7B,CAEA0jC,QAAAA,CAAS1jC,GACP,OAAOk2K,EAAU1mK,MAAMk0B,SAAS1jC,GAClC,CAEAgiC,QAAAA,CAAShiC,GACP,OAAOk2K,EAAU1mK,MAAMwyB,SAAShiC,GAClC,CAEA2jC,MAAAA,CAAO3jC,GACL,OAAOk2K,EAAU1mK,MAAMm0B,OAAO3jC,GAChC,CAEOs3F,aAAAA,GAAiF,IAAnEq9E,EAAAzjK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAA4B,EAAG0jK,EAAe1jK,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EAAEmvL,EAAmB3jK,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EACtF,OAAO8pB,MAAMwyB,SAASi0I,GAAa3+E,cAAcq9E,EAAmBC,EAAQC,EAC9E,CAEO5qK,OAAAA,GAAuE,IAA/D6qK,EAAA5jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAwB,EAAG0jK,EAAe1jK,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EAAEmvL,EAAmB3jK,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EAC5E,OAAO8pB,MAAMwyB,SAASi0I,GAAahsK,QAAQ6qK,EAAeF,EAAQC,EACpE,E,mHClCI,MAAO5yI,UAAyDsD,EAAAA,EAWpEh2B,WAAAA,GAUE,IAAI6mK,EACAC,EACAn0I,EACAC,EAAqB,QAAA1qB,EAAAvG,UAAAjzB,OAZtBy5B,EAOE,IAAApC,MAAAmC,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAPFD,EAOEC,GAAAzG,UAAAyG,GAOL,GAAoB,IAAhBD,EAAKz5B,QACNm4L,EAAcC,EAAen0I,EAAaC,GAAazqB,MACnD,CACL,MAAM1yB,EAAS0yB,EAAK,GAAG4+J,YAAY3yI,OAAOjsB,EAAK,GAAG6+J,aACjDH,EAAcC,EAAen0I,EAAaC,GAAa,CACtDzqB,EAAK,GAAG6+J,WAAWp5I,SACnBzlB,EAAK,GAAG4+J,YAAYn5I,SACpBn4C,EAAOk9C,YACPl9C,EAAOm9C,UAEX,CACA3yB,MAAM2yB,EAAWD,GAEjBxyB,KAAK0mK,aAAeA,EACpB1mK,KAAK2mK,cAAgBA,EACrB3mK,KAAK8mK,OAAS,IAAIjxI,EAAAA,EAChBmwD,IAAAA,aAAkBA,IAAAA,OAAY,IAAKA,IAAAA,OAAY0gF,EAAaxwL,WAC5D8vG,IAAAA,aAAkBA,IAAAA,OAAY,IAAKA,IAAAA,OAAY2gF,EAAczwL,WAEjE,CAKO6/C,MAAAA,GACL,OAAO,IAAIxD,EAAMvyB,KAAK2mK,cAAe3mK,KAAK0mK,aAAc1mK,KAAKyyB,UAAWzyB,KAAKwyB,YAC/E,CAMOF,QAAAA,CAAoChiC,IACzC+gC,EAAAA,EAAAA,GAAUrxB,KAAK2mK,cAAcj5I,OAAOp9B,EAAMo2K,cAAe,SACzD,MAAM5gF,EAAWhmF,MAAMwyB,SAAShiC,GAChC,OAAO,IAAIiiC,EAAMvyB,KAAK0mK,aAAcp2K,EAAMq2K,cAAe7gF,EAAStzD,YAAaszD,EAASrzD,UAC1F,CAMOsB,KAAAA,CAAMuW,IACXjZ,EAAAA,EAAAA,GAAUiZ,EAAe7c,SAASC,OAAO1tB,KAAK0mK,cAAe,SAC7D,MAAMpxL,EAASwqB,MAAMwyB,SAASgY,GAC9B,OAAOvd,EAAAA,EAAe8H,qBAAqB70B,KAAK2mK,cAAerxL,EAAOm9C,UAAWn9C,EAAOk9C,YAC1F,CAMA,uBAAYu0I,GACV,OAAOjnK,MAAMwyB,SAAStyB,KAAK8mK,OAC7B,CAEOl/E,aAAAA,GAAyE,IAA3Dq9E,EAAiBzjK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,EAAG0jK,EAAe1jK,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EAAEmvL,EAAmB3jK,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EAC9E,OAAOgqB,KAAK+mK,oBAAoBn/E,cAAcq9E,EAAmBC,EAAQC,EAC3E,CAEO5qK,OAAAA,GAAoF,IAA5E6qK,EAAa5jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,EAAG0jK,EAAe1jK,UAAAjzB,OAAA,EAAAizB,UAAA,QAAAxrB,EAAEmvL,EAAA3jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAqB8iK,EAAAA,GAASvjF,WAC/E,OAAO/gF,KAAK+mK,oBAAoBxsK,QAAQ6qK,EAAeF,EAAQC,EACjE,E,yEC3FI,MAAgB6B,EAsCpBnnK,WAAAA,CAAA35B,GAcC,IAdqB,SACpBgQ,EAAQ,OACRO,EAAM,KACNE,EAAI,KACJa,EAAI,SACJsiB,EAAQ,SACRnqB,GAQDzJ,GACCmrD,EAAAA,EAAAA,GAAUn7C,GAAY,GAAKA,EAAW,KAAOm9B,OAAOmxJ,UAAUtuL,GAAW,YAEzE8pB,KAAK9pB,SAAWA,EAChB8pB,KAAKvpB,OAASA,EACdupB,KAAKrpB,KAAW,OAAJA,QAAI,IAAJA,EAAAA,EAAQ,GACpBqpB,KAAKxoB,KAAW,OAAJA,QAAI,IAAJA,EAAAA,EAAQ,GACpBwoB,KAAKlG,SAAmB,OAARA,QAAQ,IAARA,EAAAA,EAAY,EAC5BkG,KAAKrwB,SAAWA,CAClB,EC/CI,MAAOD,UAAcs3L,EAUzBnnK,WAAAA,CAAA35B,GAAiG,IAA9E,QAAE0E,EAAO,SAAEsL,EAAQ,OAAEO,EAAM,KAAEE,EAAI,KAAEa,EAAI,SAAEsiB,EAAQ,SAAEnqB,GAA2BzJ,EAC/F45B,MAAM,CACJ5pB,WACAO,SACAE,OACAa,OACAsiB,WACAnqB,aAhBY,KAAA40L,UAAkB,EAElB,KAAAvtI,SAAgB,EAiB9Bh3B,KAAKp1B,SAAUq8L,EAAAA,EAAAA,GAAwBr8L,EACzC,CAMO8iD,MAAAA,CAAOp9B,GACZ,OAAOA,EAAM0mC,SAAWh3B,KAAKp1B,UAAY0lB,EAAM1lB,OACjD,CAQOsjD,WAAAA,CAAY59B,GAEjB,OADA+gC,EAAAA,EAAAA,GAAUrxB,KAAKp1B,UAAY0lB,EAAM1lB,QAAS,aACnCo1B,KAAKp1B,QAAQ85L,cAAgBp0K,EAAM1lB,QAAQ85L,aACpD,CAKA,WAAWz2I,GACT,OAAOjuB,IACT,E,kFC3DI,SAAUinK,EAAwBr8L,GACtC,IAAI4L,EAAAA,EAAAA,GAAiB5L,GAAU,OAAOA,EACtC,MAAM,IAAIyF,MAAM,GAAGzF,4BACrB,CAEM,SAAU65L,EAA6B75L,GAC3C,IACE,OAAO4qD,EAAAA,EAAAA,YAAW5qD,EACpB,CAAE,MAAOqX,GACP,MAAM,IAAI5R,MAAM,GAAGzF,4BACrB,CACF,C,8HCfM,MAAgBs8L,EAIpBrnK,WAAAA,GAAuB,CAEhB,eAAOsnK,CAAS1pH,EAASC,GAC9B,OAAIsoC,IAAAA,SAActoC,EAAG/nB,EAAAA,IACZqwD,IAAAA,SAAcvoC,EAAGuoC,IAAAA,SAActoC,EAAG0pH,EAAAA,KAElCphF,IAAAA,IAASvoC,EAAGC,EAEvB,E,0BCTF,MAAM2pH,EAAUrhF,IAAAA,aAAkBA,IAAAA,OAAY,IAAKA,IAAAA,OAAY,IAEzD,MAAgBshF,EAIpBznK,WAAAA,GAAuB,CAEhB,sBAAO0nK,CACZC,EACAC,EACArhJ,EACAshJ,EACAC,GAEA,MAAMC,EAKD,CAAC,EAEAxuI,EAAa4sD,IAAAA,mBAAwBwhF,EAAqBC,GAC1DvzI,EAAU8xD,IAAAA,mBAAwB0hF,EAAiB/xI,EAAAA,IAEzD,GAAIzB,EAAS,CACX,MAAM2zI,EAAyB7hF,IAAAA,OAC7BA,IAAAA,SAAc0hF,EAAiB1hF,IAAAA,SAAcqhF,EAASrhF,IAAAA,OAAY2hF,KAClEN,GAEFO,EAAazzI,SAAWiF,EACpB0uI,EAAAA,EAAcC,gBAAgBN,EAAoBD,EAAqBphJ,GAAW,GAClF0hJ,EAAAA,EAAcE,gBAAgBR,EAAqBC,EAAoBrhJ,GAAW,GAClF4/D,IAAAA,mBAAwB6hF,EAAwBD,EAAazzI,UAC/DyzI,EAAaK,iBAAmBR,EAEhCG,EAAaK,iBAAmBH,EAAAA,EAAcI,0BAC5CV,EACAphJ,EACAyhJ,EACAzuI,EAGN,MACEwuI,EAAapzI,UAAY4E,EACrB0uI,EAAAA,EAAcE,gBAAgBP,EAAoBD,EAAqBphJ,GAAW,GAClF0hJ,EAAAA,EAAcC,gBAAgBP,EAAqBC,EAAoBrhJ,GAAW,GAClF4/D,IAAAA,mBAAwBA,IAAAA,SAAc0hF,EAAiBN,EAAAA,IAAeQ,EAAapzI,WACrFozI,EAAaK,iBAAmBR,EAEhCG,EAAaK,iBAAmBH,EAAAA,EAAcK,2BAC5CX,EACAphJ,EACA4/D,IAAAA,SAAc0hF,EAAiBN,EAAAA,IAC/BhuI,GAKN,MAAMnd,EAAM+pE,IAAAA,MAAWyhF,EAAoBG,EAAaK,kBAqCxD,OAnCI7uI,GACFwuI,EAAazzI,SACXlY,GAAOiY,EACH0zI,EAAazzI,SACb2zI,EAAAA,EAAcC,gBAAgBH,EAAaK,iBAAkBT,EAAqBphJ,GAAW,GACnGwhJ,EAAapzI,UACXvY,IAAQiY,EACJ0zI,EAAapzI,UACbszI,EAAAA,EAAcE,gBAAgBJ,EAAaK,iBAAkBT,EAAqBphJ,GAAW,KAEnGwhJ,EAAazzI,SACXlY,GAAOiY,EACH0zI,EAAazzI,SACb2zI,EAAAA,EAAcE,gBAAgBR,EAAqBI,EAAaK,iBAAkB7hJ,GAAW,GACnGwhJ,EAAapzI,UACXvY,IAAQiY,EACJ0zI,EAAapzI,UACbszI,EAAAA,EAAcC,gBAAgBP,EAAqBI,EAAaK,iBAAkB7hJ,GAAW,KAGhG8N,GAAW8xD,IAAAA,YAAiB4hF,EAAapzI,UAAYwxD,IAAAA,SAAc0hF,EAAiBN,EAAAA,OACvFQ,EAAapzI,UAAYwxD,IAAAA,SAAc0hF,EAAiBN,EAAAA,KAGtDlzI,GAAW8xD,IAAAA,SAAc4hF,EAAaK,iBAAkBR,GAE1DG,EAAa55I,UAAYg4D,IAAAA,SAAc0hF,EAAiBE,EAAazzI,UAErEyzI,EAAa55I,UAAYo6I,EAAAA,EAASC,iBAChCT,EAAazzI,SACb6xD,IAAAA,OAAY2hF,GACZ3hF,IAAAA,SAAcqhF,EAASrhF,IAAAA,OAAY2hF,KAIhC,CAACC,EAAaK,iBAAmBL,EAAazzI,SAAWyzI,EAAapzI,UAAYozI,EAAa55I,UACxG,E,qTC1EI,MAAOs6I,EAELC,OAAAA,CAAQC,G,yCACZ,MAAM,IAAIn4L,MAAMi4L,EAAmBG,cACrC,G,CAEMC,gCAAAA,CACJF,EACAG,EACAC,G,yCAEA,MAAM,IAAIv4L,MAAMi4L,EAAmBG,cACrC,G,ECnCF,SAASI,EAAe7/I,EAASC,GAC/B,OAAOD,EAAE1rC,MAAQ2rC,EAAE3rC,KACrB,CDsBiBgrL,EAAAG,cAAgB,kCCjB3B,MAAgBK,EAIpBjpK,WAAAA,GAAuB,CAEhB,mBAAOkpK,CAAaC,EAAe74L,IACxCkhD,EAAAA,EAAAA,GAAUlhD,EAAc,EAAG,yBAE3BkhD,EAAAA,EAAAA,GACE23I,EAAM3zI,OAAMnvD,IAAA,IAAC,MAAEoX,GAAOpX,EAAA,OAAKs/B,KAAKgiF,IAAIlqG,GAASnN,IAAgB,CAAC,IAC9D,iBAIFkhD,EAAAA,EAAAA,GACE20D,IAAAA,MACEgjF,EAAM39J,QAAO,CAAC49J,EAAW1uL,KAAA,IAAE,aAAE6iK,GAAc7iK,EAAA,OAAKyrG,IAAAA,IAASijF,EAAa7rB,EAAa,GAAEznH,EAAAA,IACrFA,EAAAA,IAEF,aAGFtE,EAAAA,EAAAA,GC9BE,SAAsByG,EAAgB1G,GAC1C,IAAK,IAAI9P,EAAI,EAAGA,EAAIwW,EAAKvpD,OAAS,EAAG+yC,IACnC,GAAI8P,EAAW0G,EAAKxW,GAAIwW,EAAKxW,EAAI,IAAM,EACrC,OAAO,EAGX,OAAO,CACT,CDuBc4nJ,CAASF,EAAOH,GAAiB,SAC7C,CAEO,sBAAOM,CAAgBH,EAAwB77J,GAEpD,OADAkkB,EAAAA,EAAAA,GAAU23I,EAAMz6L,OAAS,EAAG,UACrB4+B,EAAO67J,EAAM,GAAG1rL,KACzB,CAEO,yBAAO8rL,CAAmBJ,EAAwB77J,GAEvD,OADAkkB,EAAAA,EAAAA,GAAU23I,EAAMz6L,OAAS,EAAG,UACrB4+B,GAAQ67J,EAAMA,EAAMz6L,OAAS,GAAG+O,KACzC,CAEO,cAAOirL,CAAQS,EAAwB1rL,GAC5C,MAAM6vB,EAAO67J,EAAMhpK,KAAKqpK,aAAaL,EAAO1rL,IAE5C,OADA+zC,EAAAA,EAAAA,GAAUlkB,EAAK7vB,QAAUA,EAAO,iBACzB6vB,CACT,CAQQ,mBAAOk8J,CAAaL,EAAwB77J,IAClDkkB,EAAAA,EAAAA,IAAWrxB,KAAKmpK,gBAAgBH,EAAO77J,GAAO,kBAE9C,IAEImU,EAFAgoJ,EAAI,EACJjvH,EAAI2uH,EAAMz6L,OAAS,EAEvB,OAAa,CAGX,GAFA+yC,EAAI9b,KAAK+jK,OAAOD,EAAIjvH,GAAK,GAErB2uH,EAAM1nJ,GAAGhkC,OAAS6vB,IAASmU,IAAM0nJ,EAAMz6L,OAAS,GAAKy6L,EAAM1nJ,EAAI,GAAGhkC,MAAQ6vB,GAC5E,OAAOmU,EAGL0nJ,EAAM1nJ,GAAGhkC,MAAQ6vB,EACnBm8J,EAAIhoJ,EAAI,EAER+4B,EAAI/4B,EAAI,CAEZ,CACF,CAEO,0BAAOkoJ,CAAoBR,EAAwB77J,EAAcs8J,GACtE,GAAIA,EAAK,CAEP,IADAp4I,EAAAA,EAAAA,IAAWy3I,EAASK,gBAAgBH,EAAO77J,GAAO,kBAC9C27J,EAASM,mBAAmBJ,EAAO77J,GACrC,OAAO67J,EAAMA,EAAMz6L,OAAS,GAG9B,OAAOy6L,EADOhpK,KAAKqpK,aAAaL,EAAO77J,GAEzC,CAEE,IADAkkB,EAAAA,EAAAA,IAAWrxB,KAAKopK,mBAAmBJ,EAAO77J,GAAO,uBAC7CnN,KAAKmpK,gBAAgBH,EAAO77J,GAC9B,OAAO67J,EAAM,GAGf,OAAOA,EADOhpK,KAAKqpK,aAAaL,EAAO77J,GAClB,EAEzB,CAEO,uCAAOu7J,CACZM,EACA77J,EACAs8J,EACAt5L,GAEA,MAAMu5L,EAAalkK,KAAK+jK,MAAMp8J,EAAOh9B,GAErC,GAAIs5L,EAAK,CACP,MACME,GADUD,GAAc,GACF,GAAKv5L,EAEjC,GAAI24L,EAASK,gBAAgBH,EAAO77J,GAClC,MAAO,CAACw8J,GAAS,GAGnB,MAAMrsL,EAAQwrL,EAASU,oBAAoBR,EAAO77J,EAAMs8J,GAAKnsL,MACvDksL,EAAsBhkK,KAAKyW,IAAI0tJ,EAASrsL,GAC9C,MAAO,CAACksL,EAAqBA,IAAwBlsL,EACvD,CAAO,CACL,MACMssL,KADWF,EAAa,GAAM,GACP,GAAM,GAAK,GAAKv5L,EAE7C,GAAI6vB,KAAKopK,mBAAmBJ,EAAO77J,GACjC,MAAO,CAACy8J,GAAS,GAGnB,MAAMtsL,EAAQ0iB,KAAKwpK,oBAAoBR,EAAO77J,EAAMs8J,GAAKnsL,MACnDksL,EAAsBhkK,KAAKwW,IAAI4tJ,EAAStsL,GAC9C,MAAO,CAACksL,EAAqBA,IAAwBlsL,EACvD,CACF,EExHI,MAAOusL,EAOXhqK,WAAAA,CAAA35B,GAAwE,IAA5D,MAAEoX,EAAK,eAAEigK,EAAc,aAAEH,GAAmCl3K,GACtEmrD,EAAAA,EAAAA,GAAU/zC,GAAS8oG,EAAAA,EAASI,UAAYlpG,GAAS8oG,EAAAA,EAASE,SAAU,QACpEtmF,KAAK1iB,MAAQA,EACb0iB,KAAKu9I,eAAiBv3D,IAAAA,OAAYu3D,GAClCv9I,KAAKo9I,aAAep3D,IAAAA,OAAYo3D,EAClC,E,0SCfI,MAAO0sB,EAGXjqK,WAAAA,CAAYmpK,EAAuC74L,GACjD,MAAM45L,EAAsBf,EAAMvuL,KAAKS,GACrCA,aAAa2uL,EAAO3uL,EAAI,IAAI2uL,EAAK3uL,KAEnC4tL,EAASC,aAAagB,EAAa55L,GACnC6vB,KAAKgpK,MAAQe,CACf,CAEMxB,OAAAA,CACJp7J,G,yCAEA,OAAO27J,EAASP,QAAQvoK,KAAKgpK,MAAO77J,EACtC,G,CAEMu7J,gCAAAA,CACJv7J,EACAs8J,EACAt5L,G,yCAEA,OAAO24L,EAASJ,iCACd1oK,KAAKgpK,MACL77J,EACAs8J,EACAt5L,EAEJ,G,4SCVF,MAAM65L,EAAgC,IAAI1B,EAKpC,MAAO74I,EAqBJ,iBAAO+F,CAAW1pC,EAAeC,EAAe7hB,GACrD,OC3CE,SAA4BhE,GAQjC,IARkC,OACjC4lB,EAAM,OACNC,EAAM,IACN7hB,GAKDhE,EACC,MAAO6J,EAAQC,GAAU8b,EAAOoiC,YAAYniC,GACxC,CAACD,EAAQC,GACT,CAACA,EAAQD,GAEb,MAAO,GAAG/b,EAAOnF,WAAWoF,EAAOpF,WAAWV,GAChD,CD6BW+/L,CAAmB,CACxB//L,MACA4hB,SACAC,UAEJ,CAYA8T,WAAAA,CACEre,EACAsK,EACAC,EACA7hB,EACAg8G,EACA9/D,EACA+gE,GACwF,IAAxF6hF,EAAAxnK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAA2DwoK,GAE3D34I,EAAAA,EAAAA,GAAUhe,OAAOmxJ,UAAUt6L,IAAQA,EAAM,IAAW,QAcnD81B,KAAKjwB,OAAQiwB,KAAKhwB,QAAU8b,EAAOoiC,YAAYniC,GAAU,CAACD,EAAQC,GAAU,CAACA,EAAQD,GACtFkU,KAAKxe,GAAKA,EACVwe,KAAK91B,IAAMA,EACX81B,KAAKkmF,aAAeF,IAAAA,OAAYE,GAChClmF,KAAKomB,UAAY4/D,IAAAA,OAAY5/D,GAC7BpmB,KAAKmnF,YAAcA,EACnBnnF,KAAKkqK,iBAAmBtkK,MAAMC,QAAQmjK,GAAS,IAAIc,EAAqBd,EAAOriF,EAAAA,GAAcz8G,IAAQ8+L,CACvG,CAOOj3I,aAAAA,CAAc38C,GACnB,OAAOA,EAAMs4C,OAAO1tB,KAAKjwB,SAAWqF,EAAMs4C,OAAO1tB,KAAKhwB,OACxD,CAKA,eAAWm3C,GAUT,OATKnnB,KAAKmqK,eACRnqK,KAAKmqK,aAAe,IAAI53I,EAAAA,EACtBvyB,KAAKjwB,OACLiwB,KAAKhwB,OACLo6L,EAAAA,GACApkF,IAAAA,SAAchmF,KAAKkmF,aAAclmF,KAAKkmF,gBAInClmF,KAAKmqK,YACd,CAKA,eAAW9iJ,GAUT,OATKrnB,KAAKqqK,eACRrqK,KAAKqqK,aAAe,IAAI93I,EAAAA,EACtBvyB,KAAKhwB,OACLgwB,KAAKjwB,OACLi2G,IAAAA,SAAchmF,KAAKkmF,aAAclmF,KAAKkmF,cACtCkkF,EAAAA,KAIGpqK,KAAKqqK,YACd,CAOOC,OAAAA,CAAQl1L,GAEb,OADAi8C,EAAAA,EAAAA,GAAUrxB,KAAK+xB,cAAc38C,GAAQ,SAC9BA,EAAMs4C,OAAO1tB,KAAKjwB,QAAUiwB,KAAKmnB,YAAcnnB,KAAKqnB,WAC7D,CAQauN,eAAAA,CACXjC,EACA43I,G,0CAEAl5I,EAAAA,EAAAA,GAAUrxB,KAAK+xB,cAAcY,EAAYlF,UAAW,SAEpD,MAAM2L,EAAazG,EAAYlF,SAASC,OAAO1tB,KAAKjwB,SAGlDy6L,iBAAkB53I,EAAY,aAC9BszD,EAAY,UACZ9/D,EAAS,YACT+gE,SACQnnF,KAAK2tE,KAAKv0C,EAAYzG,EAAYgB,SAAU42I,GAChD9xI,EAAcW,EAAap5B,KAAKhwB,OAASgwB,KAAKjwB,OACpD,MAAO,CACLg9C,EAAAA,EAAeC,cAAcyL,EAAautD,IAAAA,SAAcpzD,EAAcw0I,EAAAA,KACtE,IAAI33I,EACFzvB,KAAKxe,GACLwe,KAAKjwB,OACLiwB,KAAKhwB,OACLgwB,KAAK91B,IACLg8G,EACA9/D,EACA+gE,EACAnnF,KAAKkqK,kBAGX,G,CAQap1I,cAAAA,CACXlC,EACA23I,G,0CAEAl5I,EAAAA,EAAAA,GAAUuB,EAAanF,SAASuJ,SAAWh3B,KAAK+xB,cAAca,EAAanF,UAAW,SAEtF,MAAM2L,EAAaxG,EAAanF,SAASC,OAAO1tB,KAAKhwB,SAGnDw6L,iBAAkB73I,EAAW,aAC7BuzD,EAAY,UACZ9/D,EAAS,YACT+gE,SACQnnF,KAAK2tE,KAAKv0C,EAAY4sD,IAAAA,SAAcpzD,EAAae,SAAUyzI,EAAAA,IAAemD,GAC9EvxI,EAAaI,EAAap5B,KAAKjwB,OAASiwB,KAAKhwB,OACnD,MAAO,CACL+8C,EAAAA,EAAeC,cAAcgM,EAAYrG,GACzC,IAAIlD,EACFzvB,KAAKxe,GACLwe,KAAKjwB,OACLiwB,KAAKhwB,OACLgwB,KAAK91B,IACLg8G,EACA9/D,EACA+gE,EACAnnF,KAAKkqK,kBAGX,G,CAYcv8F,IAAAA,CACZv0C,EACAqxI,EACAC,G,yCAOA,IAAIH,EAAoBG,EAEnBH,IACHA,EAAoBnxI,EAChB4sD,IAAAA,IAASI,EAAAA,EAASG,eAAgBzwD,EAAAA,IAClCkwD,IAAAA,SAAcI,EAAAA,EAASC,eAAgBvwD,EAAAA,KAEzCsD,IACF/H,EAAAA,EAAAA,GAAU20D,IAAAA,YAAiBukF,EAAmBnkF,EAAAA,EAASG,gBAAiB,cACxEl1D,EAAAA,EAAAA,GAAU20D,IAAAA,SAAcukF,EAAmBvqK,KAAKkmF,cAAe,oBAE/D70D,EAAAA,EAAAA,GAAU20D,IAAAA,SAAcukF,EAAmBnkF,EAAAA,EAASC,gBAAiB,cACrEh1D,EAAAA,EAAAA,GAAU20D,IAAAA,YAAiBukF,EAAmBvqK,KAAKkmF,cAAe,kBAGpE,MAAMykF,EAAa3kF,IAAAA,mBAAwBykF,EAAiB90I,EAAAA,IAItDhoC,EAAQ,CACZi9K,yBAA0BH,EAC1BD,iBAAkB70I,EAAAA,GAClB7lD,aAAckwB,KAAKkmF,aACnB/4E,KAAMnN,KAAKmnF,YACX/gE,UAAWpmB,KAAKomB,WAIlB,KAAO4/D,IAAAA,SAAcr4F,EAAMi9K,yBAA0Bj1I,EAAAA,KAAShoC,EAAM7d,eAAiBy6L,GAAmB,CACtG,MAAMtnL,EAAkC,CAAC,EA6CzC,GA5CAA,EAAK4nL,kBAAoBl9K,EAAM7d,cAK9BmT,EAAK6nL,SAAU7nL,EAAK06J,mBAAqB39I,KAAKkqK,iBAAiBxB,iCAC9D/6K,EAAMwf,KACNisB,EACAp5B,KAAK7vB,aAGH8S,EAAK6nL,SAAW1kF,EAAAA,EAASI,SAC3BvjG,EAAK6nL,SAAW1kF,EAAAA,EAASI,SAChBvjG,EAAK6nL,SAAW1kF,EAAAA,EAASE,WAClCrjG,EAAK6nL,SAAW1kF,EAAAA,EAASE,UAG3BrjG,EAAK8nL,iBAAmB3kF,EAAAA,EAAS4kF,mBAAmB/nL,EAAK6nL,WACxDn9K,EAAM7d,aAAcmT,EAAKkxC,SAAUlxC,EAAKuxC,UAAWvxC,EAAK+qC,WAAas5I,EAASC,gBAC7E55K,EAAM7d,cAEJspD,EACI4sD,IAAAA,SAAc/iG,EAAK8nL,iBAAkBR,GACrCvkF,IAAAA,YAAiB/iG,EAAK8nL,iBAAkBR,IAE1CA,EACAtnL,EAAK8nL,iBACTp9K,EAAMy4B,UACNz4B,EAAMi9K,yBACN5qK,KAAK91B,KAGHygM,GACFh9K,EAAMi9K,yBAA2B5kF,IAAAA,SAC/Br4F,EAAMi9K,yBACN5kF,IAAAA,IAAS/iG,EAAKkxC,SAAUlxC,EAAK+qC,YAE/BrgC,EAAM68K,iBAAmBxkF,IAAAA,SAAcr4F,EAAM68K,iBAAkBvnL,EAAKuxC,aAEpE7mC,EAAMi9K,yBAA2B5kF,IAAAA,IAASr4F,EAAMi9K,yBAA0B3nL,EAAKuxC,WAC/E7mC,EAAM68K,iBAAmBxkF,IAAAA,IAASr4F,EAAM68K,iBAAkBxkF,IAAAA,IAAS/iG,EAAKkxC,SAAUlxC,EAAK+qC,aAIrFg4D,IAAAA,MAAWr4F,EAAM7d,aAAcmT,EAAK8nL,kBAAmB,CAEzD,GAAI9nL,EAAK06J,YAAa,CACpB,IAAIP,EAAep3D,IAAAA,cAAmBhmF,KAAKkqK,iBAAiB3B,QAAQtlL,EAAK6nL,WAAW1tB,cAGhFhkH,IAAYgkH,EAAep3D,IAAAA,SAAco3D,EAAcgqB,EAAAA,KAE3Dz5K,EAAMy4B,UAAY8gJ,EAAcC,SAASx5K,EAAMy4B,UAAWg3H,EAC5D,CAEAzvJ,EAAMwf,KAAOisB,EAAan2C,EAAK6nL,SAAW,EAAI7nL,EAAK6nL,QACrD,MAAWn9K,EAAM7d,eAAiBmT,EAAK4nL,oBAErCl9K,EAAMwf,KAAOi5E,EAAAA,EAAS6kF,mBAAmBt9K,EAAM7d,cAEnD,CAEA,MAAO,CACL06L,iBAAkB78K,EAAM68K,iBACxBtkF,aAAcv4F,EAAM7d,aACpBs2C,UAAWz4B,EAAMy4B,UACjB+gE,YAAax5F,EAAMwf,KAEvB,G,CAEA,eAAWh9B,GACT,OAAOw2G,EAAAA,GAAc3mF,KAAK91B,IAC5B,E,6HE7UF,SAASghM,EACPC,EACAC,EACArkJ,GAEIi/D,IAAAA,YAAiBmlF,EAAeC,MACjCD,EAAeC,GAAiB,CAACA,EAAeD,IAEnD,MAAME,EAAerlF,IAAAA,OACnBA,IAAAA,SAAcmlF,EAAeC,GAC7BE,EAAAA,IAEF,OAAOtlF,IAAAA,OACLA,IAAAA,SAAcA,IAAAA,OAAYj/D,GAAUskJ,GACpCrlF,IAAAA,SAAcolF,EAAeD,GAEjC,CAUA,SAASI,EACPJ,EACAC,EACArkJ,GAEIi/D,IAAAA,YAAiBmlF,EAAeC,MACjCD,EAAeC,GAAiB,CAACA,EAAeD,IAGnD,MAAM14I,EAAYuzD,IAAAA,SAChBA,IAAAA,SAAcA,IAAAA,OAAYj/D,GAAUokJ,GACpCC,GAEI54I,EAAcwzD,IAAAA,SAClBslF,EAAAA,GACAtlF,IAAAA,SAAcolF,EAAeD,IAG/B,OAAOnlF,IAAAA,OAAYvzD,EAAWD,EAChC,CASA,SAASg5I,EACPL,EACAC,EACAlkJ,GAKA,OAHI8+D,IAAAA,YAAiBmlF,EAAeC,MACjCD,EAAeC,GAAiB,CAACA,EAAeD,IAE5CnlF,IAAAA,OACLA,IAAAA,SAAcA,IAAAA,OAAY9+D,GAAUokJ,EAAAA,IACpCtlF,IAAAA,SAAcolF,EAAeD,GAEjC,CAaM,SAAUM,EACdjE,EACA2D,EACAC,EACArkJ,EACAG,EACAwkJ,GAEI1lF,IAAAA,YAAiBmlF,EAAeC,MACjCD,EAAeC,GAAiB,CAACA,EAAeD,IAGnD,MAAMQ,EAAyBD,EAC3BH,EACAL,EAEJ,GAAIllF,IAAAA,gBAAqBwhF,EAAqB2D,GAC5C,OAAOQ,EAAuBR,EAAeC,EAAerkJ,GACvD,GAAIi/D,IAAAA,SAAcwhF,EAAqB4D,GAAgB,CAC5D,MAAMQ,EAAaD,EACjBnE,EACA4D,EACArkJ,GAEI8kJ,EAAaL,EACjBL,EACA3D,EACAtgJ,GAEF,OAAO8+D,IAAAA,SAAc4lF,EAAYC,GAAcD,EAAaC,CAC9D,CACE,OAAOL,EAAuBL,EAAeC,EAAelkJ,EAEhE,C,2DC1GM,MAAOf,EAuBXtmB,WAAAA,CAAA35B,GAAqF,IAAlE,KAAEq9C,EAAI,UAAE6C,EAAS,UAAEC,EAAS,UAAEC,GAAoCpgD,EAb7E,KAAA4lM,cAA8C,KAE9C,KAAAC,cAA8C,KAE9C,KAAAC,aAAkE,MAUxE36I,EAAAA,EAAAA,GAAUhL,EAAYC,EAAW,eACjC+K,EAAAA,EAAAA,GAAUhL,GAAa+/D,EAAAA,EAASI,UAAYngE,EAAY9C,EAAKpzC,cAAgB,EAAG,eAChFkhD,EAAAA,EAAAA,GAAU/K,GAAa8/D,EAAAA,EAASE,UAAYhgE,EAAY/C,EAAKpzC,cAAgB,EAAG,cAEhF6vB,KAAKujB,KAAOA,EACZvjB,KAAKqmB,UAAYA,EACjBrmB,KAAKsmB,UAAYA,EACjBtmB,KAAKomB,UAAY4/D,IAAAA,OAAY5/D,EAC/B,CAKA,oBAAW6lJ,GACT,OAAOC,EAAAA,EAAAA,GAAYlsK,KAAKujB,KAAKxzC,OAAQiwB,KAAKujB,KAAKvzC,OAAQgwB,KAAKqmB,UAC9D,CAKA,oBAAW8lJ,GACT,OAAOD,EAAAA,EAAAA,GAAYlsK,KAAKujB,KAAKxzC,OAAQiwB,KAAKujB,KAAKvzC,OAAQgwB,KAAKsmB,UAC9D,CAKA,WAAWS,GA0BT,OAzB2B,OAAvB/mB,KAAK8rK,gBACH9rK,KAAKujB,KAAK4jE,YAAcnnF,KAAKqmB,UAC/BrmB,KAAK8rK,cAAgB/+I,EAAAA,EAAeC,cAClChtB,KAAKujB,KAAKxzC,OACV+3L,EAAAA,EAAcC,gBACZ3hF,EAAAA,EAAS4kF,mBAAmBhrK,KAAKqmB,WACjC+/D,EAAAA,EAAS4kF,mBAAmBhrK,KAAKsmB,WACjCtmB,KAAKomB,WACL,IAGKpmB,KAAKujB,KAAK4jE,YAAcnnF,KAAKsmB,UACtCtmB,KAAK8rK,cAAgB/+I,EAAAA,EAAeC,cAClChtB,KAAKujB,KAAKxzC,OACV+3L,EAAAA,EAAcC,gBACZ/nK,KAAKujB,KAAK2iE,aACVE,EAAAA,EAAS4kF,mBAAmBhrK,KAAKsmB,WACjCtmB,KAAKomB,WACL,IAIJpmB,KAAK8rK,cAAgB/+I,EAAAA,EAAeC,cAAchtB,KAAKujB,KAAKxzC,OAAQ4lD,EAAAA,KAGjE31B,KAAK8rK,aACd,CAKA,WAAW5kJ,GA0BT,OAzB2B,OAAvBlnB,KAAK+rK,gBACH/rK,KAAKujB,KAAK4jE,YAAcnnF,KAAKqmB,UAC/BrmB,KAAK+rK,cAAgBh/I,EAAAA,EAAeC,cAAchtB,KAAKujB,KAAKvzC,OAAQ2lD,EAAAA,IAC3D31B,KAAKujB,KAAK4jE,YAAcnnF,KAAKsmB,UACtCtmB,KAAK+rK,cAAgBh/I,EAAAA,EAAeC,cAClChtB,KAAKujB,KAAKvzC,OACV83L,EAAAA,EAAcE,gBACZ5hF,EAAAA,EAAS4kF,mBAAmBhrK,KAAKqmB,WACjCrmB,KAAKujB,KAAK2iE,aACVlmF,KAAKomB,WACL,IAIJpmB,KAAK+rK,cAAgBh/I,EAAAA,EAAeC,cAClChtB,KAAKujB,KAAKvzC,OACV83L,EAAAA,EAAcE,gBACZ5hF,EAAAA,EAAS4kF,mBAAmBhrK,KAAKqmB,WACjC+/D,EAAAA,EAAS4kF,mBAAmBhrK,KAAKsmB,WACjCtmB,KAAKomB,WACL,KAKDpmB,KAAK+rK,aACd,CAOQK,mBAAAA,CAAoB12I,GAI1B,MAAM22I,EAAarsK,KAAKujB,KAAK4D,YAAYm/I,WAAWh0I,SAAS,IAAI1W,EAAAA,EAAQ,GAAGoY,SAAS0B,IAC/E42I,EAAatsK,KAAKujB,KAAK4D,YAAYm/I,WAAWh0I,SAASoD,EAAkB/H,IAAI,IACnF,IAAI4+I,GAAoBpmF,EAAAA,EAAAA,GAAmBkmF,EAAW55I,UAAW45I,EAAW75I,aACxEwzD,IAAAA,gBAAqBumF,EAAmBnmF,EAAAA,EAASG,kBACnDgmF,EAAoBvmF,IAAAA,IAASI,EAAAA,EAASG,eAAgBP,IAAAA,OAAY,KAEpE,IAAIwmF,GAAoBrmF,EAAAA,EAAAA,GAAmBmmF,EAAW75I,UAAW65I,EAAW95I,aAI5E,OAHIwzD,IAAAA,mBAAwBwmF,EAAmBpmF,EAAAA,EAASC,kBACtDmmF,EAAoBxmF,IAAAA,SAAcI,EAAAA,EAASC,eAAgBL,IAAAA,OAAY,KAElE,CACLumF,oBACAC,oBAEJ,CAQOC,uBAAAA,CAAwB/2I,GAE7B,MAAM,kBAAE82I,EAAiB,kBAAED,GAAsBvsK,KAAKosK,oBAAoB12I,GAGpEg3I,EAAY,IAAIj9I,EAAAA,EACpBzvB,KAAKujB,KAAK/hC,GACVwe,KAAKujB,KAAKxzC,OACViwB,KAAKujB,KAAKvzC,OACVgwB,KAAKujB,KAAKr5C,IACVqiM,EACA,EACAnmF,EAAAA,EAAS6kF,mBAAmBsB,IAExBI,EAAY,IAAIl9I,EAAAA,EACpBzvB,KAAKujB,KAAK/hC,GACVwe,KAAKujB,KAAKxzC,OACViwB,KAAKujB,KAAKvzC,OACVgwB,KAAKujB,KAAKr5C,IACVsiM,EACA,EACApmF,EAAAA,EAAS6kF,mBAAmBuB,IAIxBI,EAA4BzmJ,EAAS0mJ,YAAWl+J,OAAAwmB,OAAAxmB,OAAAwmB,OAAC,CACrD5R,KAAMvjB,KAAKujB,KACX8C,UAAWrmB,KAAKqmB,UAChBC,UAAWtmB,KAAKsmB,WACbtmB,KAAK8sK,aAAW,CACnBpB,kBAAkB,MAKd,QAAE3kJ,GAAY,IAAIZ,EAAS,CAC/B5C,KAAMopJ,EACNvmJ,UAAWwmJ,EAA0BxmJ,UACrCC,UAAWrmB,KAAKqmB,UAChBC,UAAWtmB,KAAKsmB,YACfwmJ,aAEG,QAAE5lJ,GAAY,IAAIf,EAAS,CAC/B5C,KAAMmpJ,EACNtmJ,UAAWwmJ,EAA0BxmJ,UACrCC,UAAWrmB,KAAKqmB,UAChBC,UAAWtmB,KAAKsmB,YACfwmJ,YAEH,MAAO,CAAE/lJ,UAASG,UACpB,CAQO6lJ,uBAAAA,CAAwBr3I,GAE7B,MAAM,kBAAE82I,EAAiB,kBAAED,GAAsBvsK,KAAKosK,oBAAoB12I,GAGpEg3I,EAAY,IAAIj9I,EAAAA,EACpBzvB,KAAKujB,KAAK/hC,GACVwe,KAAKujB,KAAKxzC,OACViwB,KAAKujB,KAAKvzC,OACVgwB,KAAKujB,KAAKr5C,IACVqiM,EACA,EACAnmF,EAAAA,EAAS6kF,mBAAmBsB,IAExBI,EAAY,IAAIl9I,EAAAA,EACpBzvB,KAAKujB,KAAK/hC,GACVwe,KAAKujB,KAAKxzC,OACViwB,KAAKujB,KAAKvzC,OACVgwB,KAAKujB,KAAKr5C,IACVsiM,EACA,EACApmF,EAAAA,EAAS6kF,mBAAmBuB,IAKxBzlJ,EAAU,IAAIZ,EAAS,CAC3B5C,KAAMopJ,EACNvmJ,UAAWpmB,KAAKomB,UAChBC,UAAWrmB,KAAKqmB,UAChBC,UAAWtmB,KAAKsmB,YACfS,QAEGG,EAAU,IAAIf,EAAS,CAC3B5C,KAAMmpJ,EACNtmJ,UAAWpmB,KAAKomB,UAChBC,UAAWrmB,KAAKqmB,UAChBC,UAAWtmB,KAAKsmB,YACfY,QAEH,MAAO,CAAEH,QAASA,EAAQ4M,SAAUzM,QAASA,EAAQyM,SACvD,CAMA,eAAWm5I,GACT,OAA0B,OAAtB9sK,KAAKgsK,aACHhsK,KAAKujB,KAAK4jE,YAAcnnF,KAAKqmB,UACxB,CACLU,QAAS+gJ,EAAAA,EAAcC,gBACrB3hF,EAAAA,EAAS4kF,mBAAmBhrK,KAAKqmB,WACjC+/D,EAAAA,EAAS4kF,mBAAmBhrK,KAAKsmB,WACjCtmB,KAAKomB,WACL,GAEFc,QAASyO,EAAAA,IAGT31B,KAAKujB,KAAK4jE,YAAcnnF,KAAKsmB,UACxB,CACLS,QAAS+gJ,EAAAA,EAAcC,gBACrB/nK,KAAKujB,KAAK2iE,aACVE,EAAAA,EAAS4kF,mBAAmBhrK,KAAKsmB,WACjCtmB,KAAKomB,WACL,GAEFc,QAAS4gJ,EAAAA,EAAcE,gBACrB5hF,EAAAA,EAAS4kF,mBAAmBhrK,KAAKqmB,WACjCrmB,KAAKujB,KAAK2iE,aACVlmF,KAAKomB,WACL,IAIC,CACLW,QAAS4O,EAAAA,GACTzO,QAAS4gJ,EAAAA,EAAcE,gBACrB5hF,EAAAA,EAAS4kF,mBAAmBhrK,KAAKqmB,WACjC+/D,EAAAA,EAAS4kF,mBAAmBhrK,KAAKsmB,WACjCtmB,KAAKomB,WACL,IAICpmB,KAAKgsK,YACd,CAcO,kBAAOa,CAAWtyL,GAcxB,IAdyB,KACxBgpC,EAAI,UACJ8C,EAAS,UACTC,EAAS,QACTS,EAAO,QACPG,EAAO,iBACPwkJ,GAQDnxL,EACC,MAAM4wL,EAAgB/kF,EAAAA,EAAS4kF,mBAAmB3kJ,GAC5C+kJ,EAAgBhlF,EAAAA,EAAS4kF,mBAAmB1kJ,GAClD,OAAO,IAAIH,EAAS,CAClB5C,OACA8C,YACAC,YACAF,UAAWqlJ,EACTloJ,EAAK2iE,aACLilF,EACAC,EACArkJ,EACAG,EACAwkJ,IAGN,CAYO,kBAAOsB,CAAWvpL,GAYxB,IAZyB,KACxB8/B,EAAI,UACJ8C,EAAS,UACTC,EAAS,QACTS,EAAO,iBACP2kJ,GAODjoL,EACC,OAAO0iC,EAAS0mJ,YAAY,CAC1BtpJ,OACA8C,YACAC,YACAS,UACAG,QAASqqB,EAAAA,GACTm6H,oBAEJ,CAUO,kBAAOuB,CAAWhpL,GAUxB,IAVyB,KACxBs/B,EAAI,UACJ8C,EAAS,UACTC,EAAS,QACTY,GAMDjjC,EAEC,OAAOkiC,EAAS0mJ,YAAY,CAC1BtpJ,OACA8C,YACAC,YACAS,QAASwqB,EAAAA,GACTrqB,UACAwkJ,kBAAkB,GAEtB,E,4GC7ZK,MAAMtE,EAAephF,IAAAA,QAAa,GAC5BrwD,EAAOqwD,IAAAA,OAAY,GACnBlwD,EAAMkwD,IAAAA,OAAY,GAGlBslF,EAAMtlF,IAAAA,aAAkBA,IAAAA,OAAY,GAAIA,IAAAA,OAAY,KACpDokF,EAAOpkF,IAAAA,aAAkBslF,EAAKtlF,IAAAA,OAAY,G,mFCNhD,MAAMknF,EAAmBlnF,IAAAA,OAAY3yE,OAAO65J,kBAE7Cv3I,EAAOqwD,IAAAA,OAAY,GACnBlwD,EAAMkwD,IAAAA,OAAY,GAClBmnF,EAAMnnF,IAAAA,OAAY,GCGlB,SAAUG,EACdj/D,EACAH,GAEA,MAAM0L,EAAYuzD,IAAAA,UAAeA,IAAAA,OAAY9+D,GAAU8+D,IAAAA,OAAY,MAC7DxzD,EAAcwzD,IAAAA,OAAYj/D,GAEhC,ODJI,SAAet+C,GAInB,IAHA4oD,EAAAA,EAAAA,GAAU20D,IAAAA,mBAAwBv9G,EAAOktD,GAAO,YAG5CqwD,IAAAA,SAAcv9G,EAAOykM,GACvB,OAAOlnF,IAAAA,OAAYxgF,KAAK+jK,MAAM/jK,KAAK4nK,KAAKpnF,IAAAA,SAAcv9G,MAGxD,IAAI4kM,EACA5vH,EAGJ,IAFA4vH,EAAI5kM,EACJg1E,EAAIuoC,IAAAA,IAASA,IAAAA,OAAYv9G,EAAO0kM,GAAMr3I,GAC/BkwD,IAAAA,SAAcvoC,EAAG4vH,IACtBA,EAAI5vH,EACJA,EAAIuoC,IAAAA,OAAYA,IAAAA,IAASA,IAAAA,OAAYv9G,EAAOg1E,GAAIA,GAAI0vH,GAEtD,OAAOE,CACT,CCbSD,CADWpnF,IAAAA,OAAYvzD,EAAWD,GAE3C,C,kFCfM,MAAgB41I,EAIpBvoK,WAAAA,GAAuB,CAEhB,uBAAOwoK,CAAiBr/I,EAASC,EAASuJ,GAC/C,MAAM86I,EAAUtnF,IAAAA,SAAch9D,EAAGC,GACjC,IAAI3zC,EAAS0wG,IAAAA,OAAYsnF,EAAS96I,GAElC,OADIwzD,IAAAA,SAAcA,IAAAA,UAAesnF,EAAS96I,GAAcmD,EAAAA,MAAOrgD,EAAS0wG,IAAAA,IAAS1wG,EAAQwgD,EAAAA,KAClFxgD,CACT,E,kFCLI,SAAUoxG,EAAkBv5E,EAAch9B,IAC9CkhD,EAAAA,EAAAA,GAAUhe,OAAOmxJ,UAAUr3J,IAASkG,OAAOmxJ,UAAUr0L,GAAc,aACnEkhD,EAAAA,EAAAA,GAAUlhD,EAAc,EAAG,iBAC3BkhD,EAAAA,EAAAA,GAAUlkB,GAAQi5E,EAAAA,EAASI,UAAYr5E,GAAQi5E,EAAAA,EAASE,SAAU,cAClE,MAAMj1B,EAAU7rD,KAAKC,MAAM0H,EAAOh9B,GAAeA,EACjD,OAAIkhF,EAAU+0B,EAAAA,EAASI,SAAiBn1B,EAAUlhF,EAC9CkhF,EAAU+0B,EAAAA,EAASE,SAAiBj1B,EAAUlhF,EAC3CkhF,CACT,CAEM,SAAUo2B,EAAct6E,GAC5B,OAAIA,EAAOi5E,EAAAA,EAASE,SAAiBF,EAAAA,EAASE,SAC1Cn5E,EAAOi5E,EAAAA,EAASI,SAAiBJ,EAAAA,EAASI,SAEvCr5E,CACT,C,2HCXM,SAAU++J,EACdxmF,EACAC,EACAx4E,GAEA,MAAM+4E,EAAeE,EAAAA,EAAS4kF,mBAAmB79J,GAE3CogK,EAAYvnF,IAAAA,SAAcE,EAAcA,GAE9C,OAAOR,EAAUx3D,YAAYy3D,GACzB,IAAIpzD,EAAAA,EAAMmzD,EAAWC,EAAYykF,EAAAA,GAAMmD,GACvC,IAAIh7I,EAAAA,EAAMmzD,EAAWC,EAAY4nF,EAAWnD,EAAAA,GAClD,CAOM,SAAU3jF,EAAmBr0D,GACjC,MAAMi1D,EAASj1D,EAAMs0I,aAAax4I,YAAYkE,EAAMu0I,eAE9CzgF,EAAemB,GACjBlB,EAAAA,EAAAA,GAAmB/zD,EAAMK,UAAWL,EAAMI,cAC1C2zD,EAAAA,EAAAA,GAAmB/zD,EAAMI,YAAaJ,EAAMK,WAEhD,IAAItlB,EAAOi5E,EAAAA,EAAS6kF,mBAAmB/kF,GACvC,MAAMsnF,EAAgBtB,EACpB95I,EAAMs0I,aACNt0I,EAAMu0I,cACNx5J,EAAO,GAWT,OATIk6E,EACGj1D,EAAMa,SAASu6I,IAClBrgK,IAGGilB,EAAMmH,YAAYi0I,IACrBrgK,IAGGA,CACT,C,kHCjDA,MAAMsgK,EAAaznF,IAAAA,SACjBA,IAAAA,aAAkBA,IAAAA,OAAY,GAAIA,IAAAA,OAAY,MAC9ClwD,EAAAA,IAGF,SAAS43I,EAAcjwH,EAASC,GAC9B,MAAM4vH,EAAUtnF,IAAAA,SAAcvoC,EAAGC,GACjC,OAAOsoC,IAAAA,WAAgBsnF,EAAS/7H,EAAAA,GAClC,CAOM,MAAgBu2H,EAIpBjoK,WAAAA,GAAuB,CAEhB,sBAAOkoK,CACZoD,EACAC,EACAhlJ,EACAunJ,GAEI3nF,IAAAA,YAAiBmlF,EAAeC,MACjCD,EAAeC,GAAiB,CAACA,EAAeD,IAGnD,MAAMyC,EAAa5nF,IAAAA,UAAe5/D,EAAW4/D,IAAAA,OAAY,KACnD6nF,EAAa7nF,IAAAA,SAAcolF,EAAeD,GAEhD,OAAOwC,EACHvF,EAAAA,EAASC,iBACPD,EAAAA,EAASC,iBAAiBuF,EAAYC,EAAYzC,GAClDt1I,EAAAA,GACAq1I,GAEFnlF,IAAAA,OACEA,IAAAA,OAAYA,IAAAA,SAAc4nF,EAAYC,GAAazC,GACnDD,EAER,CAEO,sBAAOnD,CACZmD,EACAC,EACAhlJ,EACAunJ,GAMA,OAJI3nF,IAAAA,YAAiBmlF,EAAeC,MACjCD,EAAeC,GAAiB,CAACA,EAAeD,IAG5CwC,EACHvF,EAAAA,EAASC,iBACPjiJ,EACA4/D,IAAAA,SAAcolF,EAAeD,GAC7BG,EAAAA,IAEFtlF,IAAAA,OACEA,IAAAA,SAAc5/D,EAAW4/D,IAAAA,SAAcolF,EAAeD,IACtDG,EAAAA,GAER,CAEO,gCAAOpD,CACZ4F,EACA1nJ,EACA+N,EACAiF,GAWA,OATA/H,EAAAA,EAAAA,GACE20D,IAAAA,YAAiB8nF,EAAUn4I,EAAAA,IAC3B,mCAEFtE,EAAAA,EAAAA,GACE20D,IAAAA,YAAiB5/D,EAAWuP,EAAAA,IAC5B,kCAGKyD,EACHp5B,KAAK+tK,sCACHD,EACA1nJ,EACA+N,GACA,GAEFn0B,KAAKguK,wCACHF,EACA1nJ,EACA+N,GACA,EAER,CAEO,iCAAOg0I,CACZ2F,EACA1nJ,EACAoO,EACA4E,GAKA,OAHA/H,EAAAA,EAAAA,GAAU20D,IAAAA,YAAiB8nF,EAAUn4I,EAAAA,IAAO,+BAC5CtE,EAAAA,EAAAA,GAAU20D,IAAAA,YAAiB5/D,EAAWuP,EAAAA,IAAO,8BAEtCyD,EACHp5B,KAAKguK,wCACHF,EACA1nJ,EACAoO,GACA,GAEFx0B,KAAK+tK,sCACHD,EACA1nJ,EACAoO,GACA,EAER,CAEQ,4CAAOu5I,CACbD,EACA1nJ,EACAr8C,EACA4jD,GAEA,GAAIq4D,IAAAA,MAAWj8G,EAAQ4rD,EAAAA,IAAO,OAAOm4I,EACrC,MAAMF,EAAa5nF,IAAAA,UAAe5/D,EAAW4/D,IAAAA,OAAY,KAEzD,GAAIr4D,EAAK,CACP,IAAI2/I,EAAUI,EAAc3jM,EAAQ+jM,GACpC,GAAI9nF,IAAAA,MAAWA,IAAAA,OAAYsnF,EAASvjM,GAAS+jM,GAAW,CACtD,MAAMt7I,EA5Hd,SAAkBirB,EAASC,GACzB,MAAMuwH,EAAMjoF,IAAAA,IAASvoC,EAAGC,GACxB,OAAOsoC,IAAAA,WAAgBioF,EAAK18H,EAAAA,GAC9B,CAyH4B28H,CAASN,EAAYN,GACzC,GAAItnF,IAAAA,mBAAwBxzD,EAAao7I,GACvC,OAAOxF,EAAAA,EAASC,iBAAiBuF,EAAYE,EAAUt7I,EAE3D,CAEA,OAAO41I,EAAAA,EAASC,iBACduF,EACA93I,EAAAA,GACAkwD,IAAAA,IAASA,IAAAA,OAAY4nF,EAAYE,GAAW/jM,GAEhD,CAAO,CACL,IAAIujM,EAAUI,EAAc3jM,EAAQ+jM,IAEpCz8I,EAAAA,EAAAA,GACE20D,IAAAA,MAAWA,IAAAA,OAAYsnF,EAASvjM,GAAS+jM,GACzC,0CAEFz8I,EAAAA,EAAAA,GACE20D,IAAAA,YAAiB4nF,EAAYN,GAC7B,yCAEF,MAAM96I,EAAcwzD,IAAAA,SAAc4nF,EAAYN,GAC9C,OAAOlF,EAAAA,EAASC,iBAAiBuF,EAAYE,EAAUt7I,EACzD,CACF,CAEQ,8CAAOw7I,CACbF,EACA1nJ,EACAr8C,EACA4jD,GAEA,GAAIA,EAAK,CACP,MAAMgG,EAAWqyD,IAAAA,gBAAqBj8G,EAAQ0jM,GAC1CznF,IAAAA,OAAYA,IAAAA,UAAej8G,EAAQi8G,IAAAA,OAAY,KAAM5/D,GACrD4/D,IAAAA,OAAYA,IAAAA,SAAcj8G,EAAQuhM,EAAAA,IAAMllJ,GAE5C,OAAO4/D,IAAAA,IAAS8nF,EAAUn6I,EAC5B,CAAO,CACL,MAAMA,EAAWy0I,EAAAA,EAASC,iBAAiBt+L,EAAQuhM,EAAAA,GAAKllJ,GAMxD,OAJAiL,EAAAA,EAAAA,GACE20D,IAAAA,YAAiB8nF,EAAUn6I,GAC3B,2CAEKqyD,IAAAA,SAAc8nF,EAAUn6I,EACjC,CACF,E,uGCvLF,MAAMw5I,EAAMnnF,IAAAA,OAAY,GAClBmoF,EAAc,CAAC,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAG1zL,KAC/C2zL,GAAgC,CAC/BA,EACApoF,IAAAA,aAAkBmnF,EAAKnnF,IAAAA,OAAYooF,OCHvC,SAASC,EAASxxK,EAAWyxK,GAC3B,OAAOtoF,IAAAA,iBACLA,IAAAA,SAAcnpF,EAAKmpF,IAAAA,OAAYsoF,IAC/BtoF,IAAAA,OAAY,KAEhB,CAEA,MAAMuoF,EAAMvoF,IAAAA,aAAkBA,IAAAA,OAAY,GAAIA,IAAAA,OAAY,KAEpD,MAAgBI,EAIpBvmF,WAAAA,GAAuB,CA0BhB,yBAAOmrK,CAAmB79J,IAC/BkkB,EAAAA,EAAAA,GACElkB,GAAQi5E,EAASI,UACfr5E,GAAQi5E,EAASE,UACjBjzE,OAAOmxJ,UAAUr3J,GACnB,QAEF,MAAMqhK,EAAkBrhK,EAAO,GAAY,EAARA,EAAYA,EAE/C,IAAIshK,EACiB,IAAR,EAAVD,GACGxoF,IAAAA,OAAY,sCACZA,IAAAA,OAAY,uCA2ClB,OA1CuB,IAAR,EAAVwoF,KACHC,EAAQJ,EAASI,EAAO,uCACH,IAAR,EAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACH,IAAR,EAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACF,IAAT,GAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACF,IAAT,GAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACF,IAAT,GAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACF,IAAT,IAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACD,IAAV,IAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACD,IAAV,IAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACD,IAAV,KAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACD,IAAV,KAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACA,IAAX,KAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACA,IAAX,KAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACA,IAAX,MAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACA,IAAX,MAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACC,IAAZ,MAAVD,KACHC,EAAQJ,EAASI,EAAO,sCACC,IAAZ,OAAVD,KACHC,EAAQJ,EAASI,EAAO,qCACC,IAAZ,OAAVD,KACHC,EAAQJ,EAASI,EAAO,mCACC,IAAZ,OAAVD,KACHC,EAAQJ,EAASI,EAAO,8BAEtBthK,EAAO,IAAGshK,EAAQzoF,IAAAA,OAAYz0C,EAAAA,GAAYk9H,IAGvCzoF,IAAAA,YAAiBA,IAAAA,UAAeyoF,EAAOF,GAAM54I,EAAAA,IAChDqwD,IAAAA,IAASA,IAAAA,OAAYyoF,EAAOF,GAAMz4I,EAAAA,IAClCkwD,IAAAA,OAAYyoF,EAAOF,EACzB,CAOO,yBAAOtD,CAAmB/kF,IAC/B70D,EAAAA,EAAAA,GACE20D,IAAAA,mBAAwBE,EAAcE,EAASG,iBAC7CP,IAAAA,SAAcE,EAAcE,EAASC,gBACvC,cAGF,MAAMqoF,EAAgB1oF,IAAAA,UAAeE,EAAcF,IAAAA,OAAY,KAEzD2oF,ED1GJ,SAA6BlxH,IACjCpsB,EAAAA,EAAAA,GAAU20D,IAAAA,YAAiBvoC,EAAG9nB,EAAAA,IAAO,SACrCtE,EAAAA,EAAAA,GAAU20D,IAAAA,gBAAqBvoC,EAAGlM,EAAAA,IAAa,OAE/C,IAAIo9H,EAAc,EAClB,IAAK,MAAOC,EAAO5yJ,KAAQmyJ,EACrBnoF,IAAAA,mBAAwBvoC,EAAGzhC,KAC7ByhC,EAAIuoC,IAAAA,iBAAsBvoC,EAAGuoC,IAAAA,OAAY4oF,IACzCD,GAAOC,GAGX,OAAOD,CACT,CC8FgBE,CAAmBH,GAE/B,IAAIr0H,EAEFA,EADE2rC,IAAAA,mBAAwBA,IAAAA,OAAY2oF,GAAM3oF,IAAAA,OAAY,MACpDA,IAAAA,iBAAsB0oF,EAAe1oF,IAAAA,OAAY2oF,EAAM,MAEvD3oF,IAAAA,UAAe0oF,EAAe1oF,IAAAA,OAAY,IAAM2oF,IAGtD,IAAIG,EAAc9oF,IAAAA,UAChBA,IAAAA,SAAcA,IAAAA,OAAY2oF,GAAM3oF,IAAAA,OAAY,MAC5CA,IAAAA,OAAY,KAGd,IAAK,IAAI1kE,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B+4B,EAAI2rC,IAAAA,iBAAsBA,IAAAA,SAAc3rC,EAAGA,GAAI2rC,IAAAA,OAAY,MAC3D,MAAM+oF,EAAI/oF,IAAAA,iBAAsB3rC,EAAG2rC,IAAAA,OAAY,MAC/C8oF,EAAQ9oF,IAAAA,UAAe8oF,EAAO9oF,IAAAA,UAAe+oF,EAAG/oF,IAAAA,OAAY,GAAK1kE,KACjE+4B,EAAI2rC,IAAAA,iBAAsB3rC,EAAG00H,EAC/B,CAEA,MAAMC,EAAgBhpF,IAAAA,SACpB8oF,EACA9oF,IAAAA,OAAY,6BAGRipF,EAAUjpF,IAAAA,SACdA,IAAAA,iBACEA,IAAAA,SACEgpF,EACAhpF,IAAAA,OAAY,0CAEdA,IAAAA,OAAY,OAGVkpF,EAAWlpF,IAAAA,SACfA,IAAAA,iBACEA,IAAAA,IACEgpF,EACAhpF,IAAAA,OAAY,4CAEdA,IAAAA,OAAY,OAIhB,OAAOipF,IAAYC,EACfD,EACAjpF,IAAAA,gBACEI,EAAS4kF,mBAAmBkE,GAC5BhpF,GAEFgpF,EACAD,CACN,EApJc7oF,EAAAI,UAAoB,OAIpBJ,EAAAE,UAAoBF,EAASI,SAK7BJ,EAAAG,eAAuBP,IAAAA,OAAY,cAInCI,EAAAC,eAAuBL,IAAAA,OACnC,oD,gDC6EE,MAAgBmpF,EAGpBtvK,WAAAA,CAAA35B,GAA4G,IAAhG,MAAEgJ,GAA8FhJ,EAC1G85B,KAAK9wB,MAAQA,CACf,E,4YC/FI,MAAOkgM,UAA0BD,EAAAA,EACxB7/C,OAAAA,CAAO5pF,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAAwBpzD,EAAA,mBACzD,MAAMmpM,SAAqBt/J,EAAKy/G,aAAa,CAAEpgJ,gBAAeqxC,KAE9D,GAAI4uJ,EAAa,CACf,MAIM//C,eAJyBv/G,EAAK7gC,MAAME,IAAau9I,WAAWrzF,EAAO9W,OAAQ8W,EAAO7W,QAI/DhoC,KAAKivK,IACrB,CACLn9K,QAASm9K,EAAO,GAChB5/K,QAAS4/K,EAAO,GAAGvzK,eAIvB,MAAO,CACLukB,OAAQ0d,EAAAA,EAAakQ,GACrBtgC,QAAS,GACTy4B,KAAM,CACJltC,QAAS+7I,EACTrlC,cAAe52E,OAAOg8J,GACtB5sJ,MAAOpP,OAAOimB,EAAO7W,OACrBD,OAAQnP,OAAOimB,EAAO9W,SAG5B,CAEA,MAAO,CACL9nB,OAAQ0d,EAAAA,EAAakQ,GACrB7H,KAAM,CACJltC,QAAS,GACT02G,cAAe,EACfxnE,MAAO,GACPD,OAAQ,GAEVx6B,QAAS,GAEb,CArC2D,EAqC1D,G,CAEYwnI,YAAAA,CAAY9pF,G,2DAAC,WAAEt2D,GAAiCmL,EAAA,mBAC3D,IAAI4O,EAAmC,KAEvC,IAEE,OADAA,cAA0Bm3K,EAAKpxL,MAAME,IAAaqvD,gBAC3Cle,EAAAA,EAAAA,IAAqBp3B,EAAUi4C,aACxC,CAAE,MAAOn/C,GACPkZ,QAAQlZ,MAAMA,EAChB,CAEA,OAAOs+B,EAAAA,EAAAA,SAAqBvqC,EAC9B,CAX6D,EAW5D,G,CAEYsoD,MAAAA,CAAMoH,G,2DAAC,WAAEt2D,GAA2BqU,EAAA,mBAC/C,IACE,OAAO88B,EAAAA,EAAAA,gBAAkC+uJ,EAAKpgM,MAAME,IAAakuC,cACnE,CAAE,MAAOr7B,GAEP,OADAkZ,QAAQlZ,MAAMA,IACPs+B,EAAAA,EAAAA,gBAAkC4sG,EAAAA,EAAAA,IAAiB/9I,IAAakuC,cACzE,CACF,CAPiD,EAOhD,G,CAEY/wC,OAAAA,CAAOm5D,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAAwBr1C,EAAA,mBACzD,GAAIq1C,EAAOsK,KAAKhvD,UAAW,CAEzB,GAAI0kD,EAAOjxD,WACT,OAAOk4C,EAAAA,EAAAA,IAAqBvG,OAAO,IAGrC,IAAIztC,EAAUytC,OAAO,GAErB,IACEztC,cAAwBgjM,EAAKrgM,MAAME,IAAaqyD,UAAUnI,EAAOsK,KAAKhvD,UACxE,CAAE,MAAOqN,GACPkZ,QAAQlZ,MAAMA,GACd1V,cAAwB0gJ,EAAAA,EAAAA,IAAkB79I,IAAaqyD,UAAUnI,EAAOsK,KAAKhvD,UAC/E,CAEA,OAAO2rC,EAAAA,EAAAA,IAAqBh0C,EAC9B,CAEA,OAAOg0C,EAAAA,EAAAA,IAAqBvG,OAAO,GACrC,CApB2D,EAoB1D,G,CAEYkkB,QAAAA,CAAQwH,G,2DAAC,WAAEt2D,EAAU,SAAEH,EAAQ,OAAEqqD,GAAyBpyC,EAAA,mBACrE,IAAKoyC,EAAO9wC,GAAG5T,UAAW,MAAMvE,MAAM,qBAEtC,MAAMiF,cAAsBk6L,EAAKtgM,MAAME,EAAYH,IAAWivD,SAAS5E,EAAO9wC,GAAG5T,UAAW0kD,EAAOvvD,QACnG,OAAOw2C,EAAAA,EAAAA,IAAqBjrC,EAC9B,CALuE,EAKtE,G,CAEY+5I,MAAAA,CAAM3pF,G,2DAAC,WAAEt2D,GAA2BkX,EAAA,mBAC/C,MAAM82B,cAAwBwjJ,EAAK1xL,MAAME,IAAa8yD,cACtD,OAAO3hB,EAAAA,EAAAA,IAAqBnD,EAASlzC,IACvC,CAHiD,EAGhD,G,CAEYs4D,MAAAA,CAAMkD,G,2DAAC,WAAEt2D,EAAU,SAAEH,EAAQ,OAAEqqD,GAAuBuyC,EAAA,mBACjE,OAAOtrD,EAAAA,EAAAA,gBAAmCkvJ,EAAKvgM,MAAME,EAAYH,IAAWuzD,OAAOlJ,GACrF,CAFmE,EAElE,G,CAEYszF,QAAAA,CAAQlnF,G,2DAAC,WAAEt2D,EAAU,SAAEH,EAAQ,OAAEqqD,GAAyBq1C,EAAA,mBACrE,IAAKr1C,EAAO1kD,UAAW,MAAMvE,MAAM,gBACnC,OAAOkwC,EAAAA,EAAAA,gBAAmCmvJ,EAAKxgM,MAAME,EAAYH,IAAW29I,SAAStzF,EAAO1kD,WAC9F,CAHuE,EAGtE,G,CAEY60E,YAAAA,CAAY/jB,G,gDAAC,WAAEt2D,EAAU,OAAEkqD,GAA4Bu1C,EAAA,mBAClE,OAAOtuD,EAAAA,EAAAA,IAA4C,CACjD5xC,GAAI,CACF4E,QAAS,GACT02G,cAAejwE,OAAO,GACtBwI,OAAQxI,OAAO,GACfyI,MAAOzI,OAAO,MAGpB,CAToE,EASnE,G,CAEYwL,OAAAA,CAAOkgB,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,EAAM,SAAErqD,GAA0B+/F,EAAA,mBAGnE,OAAOzuD,EAAAA,EAAAA,gBACQovJ,EAAKzgM,MAAME,EAAYH,IAAWu2C,QAAQ8T,EAAOhU,QAASgU,EAAOnsD,UAAY6sC,OAAO,KAErG,CANqE,EAMpE,G,CAEY7sC,SAAAA,CAASu4D,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAA0B41C,EAAA,mBAC7D,IAAK51C,EAAOlxD,MAAMwM,UAChB,MAAMvE,MAAM,gBAGd,OAAOkwC,EAAAA,EAAAA,gBAAkCqvJ,EAAK1gM,MAAME,IAAajC,UAAUmsD,EAAOlxD,MAAMwM,UAAW0kD,EAAOhU,SAC5G,CAN+D,EAM9D,G,CAEYlI,QAAAA,CAAQsoB,G,2DAAC,WAAEt2D,GAA6BggG,EAAA,mBACnD,MAAMhyD,cAAyByyJ,EAAK3gM,MAAME,IAAa8yD,cAEvD,MAAO,CACLxnC,OAAQ0d,EAAAA,EAAakQ,GACrB7H,KAAM,CACJvqC,SAAUknC,EAASlnC,SACnBknC,SAAU,GACVzmC,KAAMymC,EAASzmC,KACfF,OAAQ2mC,EAAS3mC,OACjBe,KAAM4lC,EAAS5lC,KACftN,IAAKkzC,EAASlzC,KAEhB8d,QAAS,GAEb,CAfqD,EAepD,G,CAEM8nL,wBAAAA,CAAwBC,GAA4C,IAA3C,OAAEhmM,GAAyCgmM,EACzE,OAAOhmM,CACT,CAEaimM,iBAAAA,CAAiBtqI,G,gDAAC,WAC7Bt2D,GAGD6gM,EAAA,mBACC,MAAO,CACLv1K,OAAQ0d,EAAAA,EAAakQ,GACrB7H,UAAMzqC,EACNgS,QAAS,GAEb,CANC,EAMA,G,EAGI,MAAMu3C,EAAe,IAAI6vI,EAAkB,CAChDlgM,MAAO69I,EAAAA,I,wEC7LH,MAAOmjD,UAA8Bd,EAAAA,GAEpC,MAAMe,EAAmB,IAAID,EAAsB,CACxDhhM,MAAO69I,EAAAA,I,yECHH,MAAOqjD,UAA6BhB,EAAAA,GAEnC,MAAMiB,EAAkB,IAAID,EAAqB,CACtDlhM,MAAO69I,EAAAA,I,ybCkBH,MAAOujD,UAAwBnB,EAAAA,EACtB7/C,OAAAA,CAAO5pF,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAAwBpzD,EAAA,mBACzD,OAAOq6C,EAAAA,EAAAA,gBAEGxQ,EAAK7gC,MAAME,IACjBkgJ,QAAQ,CACR9sG,OAAQ,CAAC8W,EAAO9W,QAChBC,MAAO,CAAC6W,EAAO7W,SAGrB,CAT2D,EAS1D,G,CAEY+sG,YAAAA,CAAY9pF,G,2DAAC,WAAEt2D,GAAiCmL,EAAA,mBAC3D,OAAOgmC,EAAAA,EAAAA,gBAAkC+/I,EAAKpxL,MAAME,IAAaogJ,eACnE,CAF6D,EAE5D,G,CAEYlxF,MAAAA,CAAMoH,G,2DAAC,WAAEt2D,GAA2BqU,EAAA,mBAC/C,OAAO88B,EAAAA,EAAAA,gBAAkC+uJ,EAAKpgM,MAAME,IAAakvD,SACnE,CAFiD,EAEhD,G,CAEY/xD,OAAAA,CAAOm5D,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAAwBr1C,EAAA,mBACzD,IAAKq1C,EAAOsK,KAAKh5D,UAAY0uD,EAAOsK,KAAKhvD,UAAW,MAAMvE,MAAM,gCAEhE,IAAIzF,EAAU,GAEd,GAAI0uD,EAAOsK,KAAKhvD,UAAW,CACzB,MAAM0uD,EAAMhK,EAAOjxD,WAAa27C,EAAAA,GAAWuf,UAAUwgD,WAAWlpF,KAAKy+B,EAAOjxD,kBAAe2N,EAC3FpL,GAAU+4D,EAAAA,EAAAA,GAAmBrK,EAAOsK,KAAKhvD,UAAUuB,YAAYqtD,EAAAA,EAAAA,GAAeF,GAAOA,OAAMttD,EAC7F,MAAWsjD,EAAOsK,KAAKh5D,UACrBA,EAAU0uD,EAAOsK,KAAKh5D,SAGxB,OAAO21C,EAAAA,EAAAA,gBAEGgvJ,EAAKrgM,MAAME,IACjB7C,QAAQ,CACR6I,MAAOkkD,EAAOlkD,MACdwuD,KAAM,CAAEh5D,aAGd,CApB2D,EAoB1D,G,CAEYszD,QAAAA,CAAQwH,G,2DAAC,WAAEt2D,EAAU,SAAEH,EAAQ,OAAEqqD,GAAyBpyC,EAAA,mB,QACrE,IAAKoyC,EAAO9wC,GAAG5d,UAAY0uD,EAAO9wC,GAAG5T,UAAW,MAAMvE,MAAM,8BAC5D,IAAKipD,EAAOz+B,KAAKjwB,UAAY0uD,EAAOz+B,KAAKjmB,UAAW,MAAMvE,MAAM,gCAChE,IAAIkgM,EAAAA,EAAAA,GAAaj3I,EAAO7rB,MAAO,MAAMp9B,MAAM,+BAE3C,MAAMhI,EAAaixD,EAAOjxD,WAAa27C,EAAAA,GAAWuf,UAAUwgD,WAAWlpF,KAAKy+B,EAAOjxD,kBAAe2N,EAElG,OAAOuqC,EAAAA,EAAAA,gBAEGivJ,EAAKtgM,MAAME,EAAYH,IAC7BivD,SAAS,CACT9oD,MAAmB,QAAZm3G,EAAAjzD,EAAOlkD,aAAK,IAAAm3G,EAAAA,EAAI,GACvB/jG,GAAI8wC,EAAO9wC,GAAG5T,UACV0kD,EAAOjxD,WACL,CACEuC,SAAS+4D,EAAAA,EAAAA,GACPrK,EAAO9wC,GAAG5T,UAAUuB,YACpBqtD,EAAAA,EAAAA,GAAen7D,GAAcA,OAAa2N,IAG9C,CAAEpL,SAAS+4D,EAAAA,EAAAA,GAAmBrK,EAAO9wC,GAAG5T,UAAUuB,aACpD,CAAEvL,QAAS0uD,EAAO9wC,GAAG5d,SACzBiwB,KAAMy+B,EAAOz+B,KAAKjmB,UACd,CAAEhK,SAAS+4D,EAAAA,EAAAA,GAAmBrK,EAAOz+B,KAAKjmB,UAAUuB,aACpD,CAAEvL,QAAS0uD,EAAOz+B,KAAKjwB,SAC3B6iC,KAAM6rB,EAAO7rB,KAAO6rB,EAAO7rB,KAAO,GAClCplC,YAAYm4C,EAAAA,EAAAA,QAA4BxqC,GACxCijG,OAAOz4D,EAAAA,EAAAA,GAA0B8Y,EAAO2/C,OACxClvG,OAAQuvD,EAAOvvD,OACfolJ,OAAqB,QAAb3iC,EAAAlzD,EAAO61F,cAAM,IAAA3iC,GAAAA,IAG3B,CAhCuE,EAgCtE,G,CAEYhqD,MAAAA,CAAMkD,G,2DAAC,WAAEt2D,EAAU,SAAEH,EAAQ,OAAEqqD,GAAuBhzC,EAAA,mBACjE,OAAOi6B,EAAAA,EAAAA,gBAAmCqgJ,EAAK1xL,MAAME,EAAYH,IAAWuzD,OAAOlJ,GACrF,CAFmE,EAElE,G,CAEYszF,QAAAA,CAAQlnF,G,2DAAC,WAAEt2D,EAAU,SAAEH,EAAQ,OAAEqqD,GAAyBuyC,EAAA,mBACrE,IAAKvyC,EAAO1uD,QAAS,MAAMyF,MAAM,mBAEjC,OAAOkwC,EAAAA,EAAAA,gBAAmCkvJ,EAAKvgM,MAAME,EAAYH,IAAW29I,SAAS,CAAEhiJ,QAAS0uD,EAAO1uD,UACzG,CAJuE,EAItE,G,CAEY6+E,YAAAA,CAAY/jB,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAA4Bq1C,EAAA,mB,gBAClE,IAAI6hG,EAASl3I,EAAOm3I,MAEpB,IAAKD,EAAQ,QACcd,EAAKtgD,WAAW,CAAEhgJ,gBAE5BkH,SAAS,cACtBk6L,EAAgD,QAAvCjkF,QAAOjzD,EAAOo3I,aAAathM,UAAY,IAAAm9G,OAAA,EAAAA,EAAEp2G,WAEtD,CAEA,GAAIq6L,EAAQ,CACV,IAAKl3I,EAAO9W,QAA4B,IAAlB8W,EAAO9W,OAAc,MAAMnyC,MAAM,iBAEvD,OAAe,QAAXm8G,EAAAlzD,EAAOsK,YAAI,IAAA4oD,OAAA,EAAAA,EAAE53G,YACR2rC,EAAAA,EAAAA,UACC+Y,EAAOq3I,uBAAuBH,EAAmB,QAAX9jF,EAAApzD,EAAOsK,YAAI,IAAA8oD,OAAA,EAAAA,EAAE93G,UAAyB,QAAdg8L,EAAAt3I,EAAOu3I,eAAO,IAAAD,GAAAA,EAAWt3I,EAAO9W,UAIjGjC,EAAAA,EAAAA,UACC+Y,EAAOw3I,mBAAmBN,EAAsB,QAAdO,EAAAz3I,EAAOu3I,eAAO,IAAAE,GAAAA,EAAWz3I,EAAO9W,QAE5E,CAEA,OAAOjC,EAAAA,EAAAA,gBAEGmvJ,EAAKxgM,MAAME,IACjBq6E,aAAa,CACbpB,MAAM7nC,EAAAA,EAAAA,GAA0B8Y,EAAO+uB,MACvCzkB,MAAMpjB,EAAAA,EAAAA,IAAwC,QAAXwwJ,EAAA13I,EAAOsK,YAAI,IAAAotI,OAAA,EAAAA,EAAEpmM,SAAU,CAAEA,QAAS0uD,EAAOsK,KAAKh5D,cAAYoL,GAC7FwsC,QAAQhC,EAAAA,EAAAA,GAA0B8Y,EAAO9W,OAASxI,OAAOsf,EAAO9W,QAAU,MAC1EC,OAAOjC,EAAAA,EAAAA,GAA0B8Y,EAAO7W,MAAQzI,OAAOsf,EAAO7W,OAAS,MACvEnlC,OAAOkjC,EAAAA,EAAAA,GAA0B8Y,EAAOh8C,MAAQ08B,OAAOsf,EAAOh8C,OAAS,QAG7E,CApCoE,EAoCnE,G,CAEYkoC,OAAAA,CAAOkgB,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,EAAM,SAAErqD,GAA0B4/F,EAAA,mBACnE,OAAOtuD,EAAAA,EAAAA,gBAEGovJ,EAAKzgM,MAAME,EAAYH,IAC7Bu2C,QAAQ,CACRn9C,WAAYixD,EAAOjxD,WAAa,CAACu9B,MAAM/K,KAAKy+B,EAAOjxD,aAAe,GAClEi9C,QAASgU,EAAOhU,QAChBn4C,UAAW6sC,OAAO3G,OAAOqG,aAG/B,CAVqE,EAUpE,G,CAEYvsC,SAAAA,CAASu4D,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAA0B01C,EAAA,mBAC7D,IAAK11C,EAAOlxD,MAAMwC,UAAY0uD,EAAOlxD,MAAMwM,UAAW,MAAMvE,MAAM,iCAElE,OAAOkwC,EAAAA,EAAAA,gBAEGqvJ,EAAK1gM,MAAME,IACjBjC,UAAU,CACV/E,MAAOkxD,EAAOlxD,MAAMwC,QAAU,CAAEA,QAAS0uD,EAAOlxD,MAAMwC,SAAY,CAAEgK,UAAW0kD,EAAOlxD,MAAMwM,WAC5FvM,WAAYixD,EAAOjxD,WAAa,CAACu9B,MAAM/K,KAAKy+B,EAAOjxD,aAAe,GAClEi9C,QAASgU,EAAOhU,UAGtB,CAZ+D,EAY9D,G,CAEYlI,QAAAA,CAAQsoB,G,2DAAC,WAAEt2D,GAA6B8/F,EAAA,mB,MACnD,MAAM9xD,EAEkD,QAFvCmvE,GAAAhsE,EAAAA,EAAAA,gBAEDsvJ,EAAK3gM,MAAME,IAAaguC,YAAYqD,YAAI,IAAA8rE,OAAA,EAAAA,EAAE+hC,SACpD92I,GAAO+oC,EAAAA,EAAAA,gBAAkCsvJ,EAAK3gM,MAAME,IAAaoI,QAAQipC,KACzEv2C,GAAMq2C,EAAAA,EAAAA,gBAAkCsvJ,EAAK3gM,MAAME,IAAaigJ,UAAU5uG,KAEhF,MAAO,CACL/lB,OAAQ0d,EAAAA,EAAakQ,GACrB7H,KAAM9R,OAAAwmB,OAAAxmB,OAAAwmB,OAAA,GACD/X,GAAQ,CACX5lC,OACAtN,QAEF8d,QAAS,GAEb,CAhBqD,EAgBpD,G,CAEM8nL,wBAAAA,CAAwB1gG,GAA4C,IAA3C,OAAErlG,GAAyCqlG,EACzE,OAAOrlG,CACT,CAEaqlJ,UAAAA,CAAU1pF,G,2DAAC,WAAEt2D,GAAoC2gM,EAAA,mBAC5D,mBAAoBkB,EAAK/hM,MAAME,IAAaggJ,YAC9C,CAF8D,EAE7D,G,CAEY4gD,iBAAAA,CAAiBtqI,G,gDAAC,WAC7Bt2D,GAGD6gM,EAAA,mBACC,MAAO,CACLv1K,OAAQ0d,EAAAA,EAAakQ,GACrB7H,UAAMzqC,EACNgS,QAAS,GAEb,CANC,EAMA,G,EAGI,MAAM03C,EAAa,IAAI4wI,EAAgB,CAC5CphM,MAAOqhJ,EAAAA,I,6aCrMH,MAAO2gD,UAAmB/B,EAAAA,EACjB7/C,OAAAA,G,yCACX,MAAO,CACL50H,OAAQ0d,EAAAA,EAAakQ,GACrB7H,KAAM,CACJltC,QAAS,GACT02G,cAAe,EACfxnE,MAAO,GACPD,OAAQ,GAEVx6B,QAAS,GAEb,G,CAEawnI,YAAAA,G,yCACX,OAAOjvG,EAAAA,EAAAA,SAAqBvqC,EAC9B,G,CAEasoD,MAAAA,G,yCACX,OAAO/d,EAAAA,EAAAA,gBAAkCvgB,KAAK9wB,SAAS+2I,qBACzD,G,CAEa15I,OAAAA,CAAOm5D,G,2DAAC,OAAEpM,GAAwBpzD,EAAA,mBAC7C,OAAIozD,EAAOsK,KAAKh5D,SACP21C,EAAAA,EAAAA,iBAGKxQ,EAAK7gC,SACXikJ,gBAAgB,CAChBrpJ,QAAS87B,MAAM/K,KAAKkpF,WAAWlpF,KAAKqpF,OAAOrpF,KAAKy+B,EAAOsK,KAAKh5D,QAAS,YAEvE29H,KAGFjvE,EAAOsK,KAAKhvD,WACP2rC,EAAAA,EAAAA,gBAEGxQ,EAAK7gC,SACXw2I,iBAAiB,CACjBt9I,MAAOkxD,EAAOsK,KAAKhvD,UACnBvM,YAAYm4C,EAAAA,EAAAA,GAAiC8Y,EAAOjxD,WAAaixD,EAAOjxD,gBAAa2N,OAKpFuqC,EAAAA,EAAAA,IAAqBvG,OAAO,GACrC,CAxB+C,EAwB9C,G,CAEYkkB,QAAAA,CAAQwH,G,2DAAC,WAAEt2D,EAAU,SAAEH,EAAQ,OAAEqqD,GAAyB/+C,EAAA,mB,MACrE,IAAK++C,EAAO9wC,GAAG5d,UAAY0uD,EAAO9wC,GAAG5T,UAAW,MAAMvE,MAAM,kBAE5D,GAAIipD,EAAO9wC,GAAG5d,QAAS,CACrB,GAAI0uD,EAAO7rB,QAAS8iK,EAAAA,EAAAA,GAAaj3I,EAAO7rB,MAAO,MAAMp9B,MAAM,8BAE3D,MAAMiF,cACEgrL,EAAKpxL,MAAME,EAAYH,IAC7BivD,SAAS,CACT11C,GAAIod,MAAM/K,KAAKkpF,WAAWlpF,KAAKqpF,OAAOrpF,KAAKy+B,EAAO9wC,GAAG5d,QAAS,SAC9D6iC,KAA6B,QAAvB8+E,EAACjzD,EAAO7rB,YAAe,IAAA8+E,EAAAA,EAAIvyE,OAAO,GACxCjwC,OAAQ,CAAEw+H,IAAKjvE,EAAOvvD,QACtB65I,iBAAiBpjG,EAAAA,EAAAA,GACf8Y,EAAO63I,eAAiB,CAAEz/C,gBAAiBp4F,EAAO63I,qBAAmBn7L,GAEvEhJ,iBAAiBwzC,EAAAA,EAAAA,GAA4B8Y,EAAO83I,kBACpDlnM,IAAK,CAAEq+H,IAAKvuF,OAAO,QAGrB,OAAOuG,EAAAA,EAAAA,IAAqBjrC,EAC9B,CACA,GAAIgkD,EAAO9wC,GAAG5T,UAAW,CACvB,MAAMU,cACEgrL,EAAKpxL,MAAME,EAAYH,IAC7Bk3I,eAAe,CACf39H,GAAI,CACFpgB,MAAOkxD,EAAO9wC,GAAG5T,UACjBvM,YAAYm4C,EAAAA,EAAAA,GAAiC8Y,EAAOjxD,WAAaixD,EAAOjxD,gBAAa2N,IAEvFy3B,KAA6B,kBAAhB6rB,EAAO7rB,KAAoB,IAAK+S,EAAAA,EAAAA,GAA4B8Y,EAAO7rB,MAChF1jC,OAAQuvD,EAAOvvD,OACf65I,iBAAiBpjG,EAAAA,EAAAA,GAA0B8Y,EAAO63I,gBAClDnkM,iBAAiBwzC,EAAAA,EAAAA,GACf8Y,EAAO83I,iBAAmB93I,EAAO83I,sBAAmBp7L,GAEtD9L,KAAKs2C,EAAAA,EAAAA,GAA0B,QAGjC,OAAOD,EAAAA,EAAAA,IAAqBjrC,EAC9B,CAEA,OAAOirC,EAAAA,EAAAA,SAAqBvqC,EAC9B,CA1CuE,EA0CtE,G,CAEYq5I,MAAAA,G,yCACX,OAAO9uG,EAAAA,EAAAA,sBAAyCvgB,KAAK9wB,SAASs8H,aAAa,CAAC,IAAIA,aAAajD,IAC/F,G,CAEa/lE,MAAAA,G,yCACX,OAAOjiB,EAAAA,EAAAA,IAAsB,CAAE5vC,IAAK,aACtC,G,CAEai8I,QAAAA,G,yCACX,OAAOrsG,EAAAA,EAAAA,IAAsB,CAAE5vC,IAAK,eACtC,G,CAEa84E,YAAAA,G,yCACX,OAAOlpC,EAAAA,EAAAA,IAA4C,CACjDhtC,QAAS,GACT02G,cAAejwE,OAAO,GACtBwI,OAAQxI,OAAO,GACfyI,MAAOzI,OAAO,KAElB,G,CAEawL,OAAAA,CAAOkgB,G,gDAAC,WAAEt2D,EAAU,OAAEkqD,EAAM,SAAErqD,GAA0BwU,EAAA,mBACnE,OAAO4tL,EAAAA,EAAa7rJ,QAAQ,CAAEp2C,aAAYkqD,SAAQrqD,YACpD,CAFqE,EAEpE,G,CAEY9B,SAAAA,CAASu4D,G,gDAAC,WAAEt2D,EAAU,OAAEkqD,GAA0Br1C,EAAA,mBAC7D,OAAOotL,EAAAA,EAAalkM,UAAU,CAAEiC,aAAYkqD,UAC9C,CAF+D,EAE9D,G,CAEYlc,QAAAA,CAAQsoB,G,2DAAC,WAAEt2D,GAA6B8X,EAAA,mBACnD,MAAMzQ,eAAuB64L,EAAKpgM,MAAME,IAAaqH,UAAUA,OACzDP,eAAyBo5L,EAAKpgM,SAASgH,YAAYA,SAEnDhM,GAAMq2C,EAAAA,EAAAA,sBAAyC+uJ,EAAKpgM,SAASs8H,aAAa,CAAC,IAAIA,aAAajD,KAAK9nF,KAEvG,MAAO,CACL/lB,OAAQ0d,EAAAA,EAAakQ,GACrB7H,KAAM,CACJvqC,WACAknC,SAAU,GACVzmC,KARS,oBASTF,SACAvM,IAAQ,OAAHA,QAAG,IAAHA,EAAAA,EAAO8vC,OAAO,KACnBxiC,KAAM,IAERwQ,QAAS,GAEb,CAlBqD,EAkBpD,G,CAEM8nL,wBAAAA,CAAwBxpL,GAA4C,IAA3C,OAAEvc,GAAyCuc,EACzE,OAAOvc,CACT,CAEaimM,iBAAAA,CAAiBtqI,G,gDAAC,WAAEt2D,GAAoCy8F,EAAA,mBACnE,aAAa3sC,EAAAA,EAAa8wI,kBAAkB,CAAE5gM,cAChD,CAFqE,EAEpE,G,EAGI,MAAM6uD,EAAa,IAAIizI,EAAW,CAEvChiM,MAAOA,CAAOE,EAAqBH,IAA4Bu1D,OAAA,6BAAC,aAAMgvF,EAAAA,EAAAA,IAAcvkJ,EAAS,K,6bCvJzF,MAAOqiM,UAAqBnC,EAAAA,EACnB7/C,OAAAA,G,yCACX,MAAO,CACL50H,OAAQ0d,EAAAA,EAAakQ,GACrB7H,KAAM,CACJltC,QAAS,GACT02G,cAAe,EACfxnE,MAAO,GACPD,OAAQ,GAEVx6B,QAAS,GAEb,G,CAEawnI,YAAAA,G,yCACX,OAAOjvG,EAAAA,EAAAA,SAAqBvqC,EAC9B,G,CAEasoD,MAAAA,CAAMoH,G,2DAAC,WAAEt2D,GAA2BlJ,EAAA,mBAC/C,OAAOq6C,EAAAA,EAAAA,gBAAkCxQ,EAAK7gC,MAAME,IAAa62I,qBACnE,CAFiD,EAEhD,G,CAEY15I,OAAAA,CAAOm5D,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAAwB/+C,EAAA,mBACzD,OAAI++C,EAAOsK,KAAKhvD,WACP2rC,EAAAA,EAAAA,gBAEG+/I,EAAKpxL,MAAME,IACjBs2I,iBAAiB,CACjBt9I,MAAOkxD,EAAOsK,KAAKhvD,UACnBvM,YAAYm4C,EAAAA,EAAAA,GAAiC8Y,EAAOjxD,WAAaixD,EAAOjxD,gBAAa2N,OAKpFuqC,EAAAA,EAAAA,IAAqBvG,OAAO,GACrC,CAb2D,EAa1D,G,CAEYkkB,QAAAA,CAAQwH,G,2DAAC,WAAEt2D,EAAU,SAAEH,EAAQ,OAAEqqD,GAAyB71C,EAAA,mBACrE,IAAK61C,EAAO9wC,GAAG5T,UAAW,MAAMvE,MAAM,6BACtC,IAAIkgM,EAAAA,EAAAA,GAAaj3I,EAAO7rB,MAAO,MAAMp9B,MAAM,+BAE3C,MAAMiF,cACEg6L,EAAKpgM,MAAME,EAAYH,IAC7Bk3I,eAAe,CACf39H,GAAI,CACFpgB,MAAOkxD,EAAO9wC,GAAG5T,UACjBvM,YAAYm4C,EAAAA,EAAAA,GAAiC8Y,EAAOjxD,WAAaixD,EAAOjxD,gBAAa2N,IAEvFy3B,MAAM+S,EAAAA,EAAAA,GAA4B8Y,EAAO7rB,MACzC1jC,OAAQuvD,EAAOvvD,OACf65I,iBAAiBpjG,EAAAA,EAAAA,GAA0B8Y,EAAO63I,gBAClDnkM,iBAAiBwzC,EAAAA,EAAAA,GAAiC8Y,EAAO83I,iBAAmB93I,EAAO83I,sBAAmBp7L,GACtG9L,KAAKs2C,EAAAA,EAAAA,GAA0B8Y,EAAOpvD,OAGxC,OAAOq2C,EAAAA,EAAAA,IAAqBjrC,EAC9B,CAnBuE,EAmBtE,G,CAEY+5I,MAAAA,CAAM3pF,G,2DAAC,WAAEt2D,GAA2B6U,EAAA,mBAC/C,OAAOs8B,EAAAA,EAAAA,gBAAkCgvJ,EAAKrgM,MAAME,IAAaw2I,YACnE,CAFiD,EAEhD,G,CAEYpjF,MAAAA,G,yCACX,OAAOjiB,EAAAA,EAAAA,IAAsB,CAAE5vC,IAAK,aACtC,G,CAEai8I,QAAAA,G,yCACX,OAAOrsG,EAAAA,EAAAA,IAAsB,CAAE5vC,IAAK,eACtC,G,CAEa84E,YAAAA,CAAY/jB,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAA4BpyC,EAAA,mBAClE,QAAsBlR,IAAlBsjD,EAAO9W,aAAyCxsC,IAAjBsjD,EAAO7W,MAAqB,MAAMpyC,MAAM,sBAG3E,MAAMkhM,GAAchxJ,EAAAA,EAAAA,gBACLivJ,EAAKtgM,MAAME,IAAa80I,iBAAiB,CAAE51I,MAAO0rC,OAAO,GAAIzrC,OAAQyrC,OAAO,OACzFyG,KAEF,GAAI8wJ,EAAa,CACf,MAAM,WAAE/rD,GAAe+rD,EAGvB,IAAI3N,EAAcvwJ,OAAOmyG,GAAc,EAAIlsF,EAAO9W,OAAS8W,EAAO7W,MAE9DmhJ,EAAc,IAAGA,EAAc,GAEnC,MAAMf,GAAUtiJ,EAAAA,EAAAA,gBAENivJ,EAAKtgM,MAAME,IACjB80I,iBAAiB,CACjB51I,MAAO0rC,OAAO4pJ,GACdr1L,OAAQyrC,OAAOsf,EAAO7W,UAExBhC,KAEF,GAAIoiJ,EAAS,CACX,MAAM,sBAAEp9C,EAAuBh8D,aAAc+nH,GAAgC3O,EAE7E,IAAI4O,EAA8C,GAE9ChsD,EAAsBl3I,OAAS,IACjCkjM,SACQruJ,QAAQC,IACZoiG,EAAsBhrI,KAAW8P,GAAOi6C,EAAAgrI,OAAA,sBACtC,mBAEUjmD,EAAAA,EAAAA,IAAYh/H,EAAImY,SAAS,GAAGvsB,aAClC+tI,iBAAiB,CACjB51I,MAAOic,EAAIjc,MACXC,OAAQgc,EAAIhc,UAEdk7E,YACJ,QAGDhmC,OACAiF,MAAK,CAACM,EAAGC,IACJD,EAAEsgD,UAAYrgD,EAAEqgD,WAAmB,EACnCtgD,EAAEsgD,UAAYrgD,EAAEqgD,UAAkB,EAC/B,KAIb,MAAM7f,EAAegoH,EAClBp1L,OAAOm1L,GACP9oJ,MAAK,CAACM,EAAGC,IACJD,EAAEsgD,UAAYrgD,EAAEqgD,WAAmB,EACnCtgD,EAAEsgD,UAAYrgD,EAAEqgD,UAAkB,EAC/B,IAER7uF,KAAI,CAAC8P,EAAKjN,IC/If,SAAgCunD,EAA8BvnD,G,4DAClE,MAAMmwB,GAA8B,QAAvBi4B,EAAAb,EAAY3G,SAAS,UAAE,IAAAwH,OAAA,EAAAA,EAAEj4B,KAAKl/B,QAChB,QAAvBg+G,EAAA1nD,EAAY3G,SAAS,UAAE,IAAAquD,OAAA,EAAAA,EAAE9+E,MACN,QAAnB++E,EAAA3nD,EAAYgpC,KAAK,UAAE,IAAA2e,OAAA,EAAAA,EAAE/+E,KAAKl/B,QACP,QAAnBm+G,EAAA7nD,EAAYgpC,KAAK,UAAE,IAAA6e,OAAA,EAAAA,EAAEj/E,MACF,QAAnBmjK,EAAA/rI,EAAY+oC,KAAK,UAAE,IAAAgjG,OAAA,EAAAA,EAAEnjK,KAAKl/B,QACP,QAAnBwiM,EAAAlsI,EAAY+oC,KAAK,UAAE,IAAAmjG,OAAA,EAAAA,EAAEtjK,UACrBz3B,EAEE07L,EAAgD,QAAnCC,EAAuB,QAAvBX,EAAAnsI,EAAY3G,SAAS,UAAE,IAAA8yI,OAAA,EAAAA,EAAEn2K,KAAKzyB,aAAK,IAAAupM,EAAAA,EAAuB,QAAnBC,EAAA/sI,EAAYgpC,KAAK,UAAE,IAAA+jG,OAAA,EAAAA,EAAE/2K,KAAKzyB,MAC9EypM,EAAuD,QAA3CC,EAAuB,QAAvBC,EAAAltI,EAAY3G,SAAS,UAAE,IAAA6zI,OAAA,EAAAA,EAAEl3K,KAAKxyB,WAAW,UAAE,IAAAypM,EAAAA,EAAuB,QAAnBE,EAAAntI,EAAYgpC,KAAK,UAAE,IAAAmkG,OAAA,EAAAA,EAAEn3K,KAAKxyB,WAAW,GAChG4pM,EAA4C,QAAjCC,EAAuB,QAAvBC,EAAAttI,EAAY3G,SAAS,UAAE,IAAAi0I,OAAA,EAAAA,EAAE3pL,GAAGpgB,aAAK,IAAA8pM,EAAAA,EAAuB,QAAnBE,EAAAvtI,EAAY+oC,KAAK,UAAE,IAAAwkG,OAAA,EAAAA,EAAE5pL,GAAGpgB,MACxEiqM,EAAmD,QAAzCC,EAAuB,QAAvBC,EAAA1tI,EAAY3G,SAAS,UAAE,IAAAq0I,OAAA,EAAAA,EAAE/pL,GAAGngB,WAAW,UAAE,IAAAiqM,EAAAA,EAAuB,QAAnBE,EAAA3tI,EAAY+oC,KAAK,UAAE,IAAA4kG,OAAA,EAAAA,EAAEhqL,GAAGngB,WAAW,GAE1FoqM,EAAWZ,EAAY7tJ,EAAAA,GAAWuf,UAAUwgD,WAAWlpF,KAAKg3K,SAAc77L,EAC1E08L,EAAehB,EACjBjuI,EAAAA,GAAkBxf,cAAc,CAC9BrvC,UAAW88L,EACXvuI,YAAYK,EAAAA,EAAAA,GAAeivI,GAAYA,OAAWz8L,SAEpDA,EAEE28L,EAASN,EAAUruJ,EAAAA,GAAWuf,UAAUwgD,WAAWlpF,KAAKw3K,SAAYr8L,EACpEvM,EAAawoM,EACfxuI,EAAAA,GAAkBxf,cAAc,CAC9BrvC,UAAWq9L,EACX9uI,YAAYK,EAAAA,EAAAA,GAAemvI,GAAUA,OAAS38L,SAEhDA,EAEE48L,EAAkC,QAAvBC,EAAAhuI,EAAY3G,SAAS,UAAE,IAAA20I,OAAA,EAAAA,EAAE3oM,IAE1C,MAAO,CACLo/F,UAAWzkC,EAAYykC,UACvBjhB,KAAM,GACNn+E,IAAK0oM,EAAWA,EAAS,QAAK58L,EAC9B07L,WAAkC,QAAtBoB,EAAU,OAAVpB,QAAU,IAAVA,OAAU,EAAVA,EAAYv7L,kBAAU,IAAA28L,EAAAA,EAAI,GACtCL,SAAUZ,EACVa,aAAmC,QAArBK,EAAY,OAAZL,QAAY,IAAZA,OAAY,EAAZA,EAAchvI,eAAO,IAAAqvI,EAAAA,EAAI,GACvCd,SAA8B,QAApBe,EAAQ,OAARf,QAAQ,IAARA,OAAQ,EAARA,EAAU97L,kBAAU,IAAA68L,EAAAA,EAAI,GAClCL,OAAQN,EACR5oM,WAA+B,QAAnBwpM,EAAU,OAAVxpM,QAAU,IAAVA,OAAU,EAAVA,EAAYi6D,eAAO,IAAAuvI,EAAAA,EAAI,GACnChkD,WAAWikD,EAAAA,EAAAA,GACTruI,EAAY3G,SAAS,GACjB,CAAEknF,SAAU,MACZvgF,EAAYgpC,KAAK,GACjB,CAAEq3C,KAAM,MACRrgF,EAAY+oC,KAAK,GACjB,CAAEu3C,KAAM,MACR,CAAE+C,QAAS,OAEjBn+I,OAAsE,QAA9DopM,EAA+B,QAA/BC,EAAuB,QAAvBC,EAAAxuI,EAAY3G,SAAS,UAAE,IAAAm1I,OAAA,EAAAA,EAAEtpM,cAAM,IAAAqpM,EAAAA,EAAuB,QAAnBE,EAAAzuI,EAAYgpC,KAAK,UAAE,IAAAylG,OAAA,EAAAA,EAAEvpM,cAAM,IAAAopM,EAAAA,EAAuB,QAAnBI,EAAA1uI,EAAY+oC,KAAK,UAAE,IAAA2lG,OAAA,EAAAA,EAAExpM,OAC/FuT,QACAmwB,KAAMA,EAAO,IAAIA,EAAK,IAAM,GAC5B/S,OAAQ,GAEZ,CDyFY84K,CAAsBjpL,EAAKyvB,OAAO4pJ,GAAe5pJ,OAAO18B,MAG5D,OAAOijC,EAAAA,EAAAA,IAA4C,CACjDhtC,QAASk2E,EAAa0xB,UACtB8O,cAAeu7B,EACfhjG,OAAQxI,OAAOsf,EAAO9W,QACtBC,MAAOzI,OAAOsf,EAAO7W,QAEzB,CACF,CAEA,OAAOlC,EAAAA,EAAAA,SAA4CvqC,EACrD,CA3EoE,EA2EnE,G,CAEYwvC,OAAAA,G,yCACX,OAAOjF,EAAAA,EAAAA,IAAsB,CAAE5vC,IAAK,cACtC,G,CAEaxD,SAAAA,G,yCACX,OAAOozC,EAAAA,EAAAA,IAAqB,CAAE5vC,IAAK,gBACrC,G,CAEaysC,QAAAA,CAAQsoB,G,2DAAC,WAAEt2D,GAA6BkX,EAAA,mBACnD,MAAM82B,GAAWmD,EAAAA,EAAAA,gBACFqgJ,EAAK1xL,MAAME,IAAay2I,kBACrCplG,KAEF,IAAKrD,EACH,MAAO,CACL1iB,OAAQ0d,EAAAA,EAAamU,MACrB9L,UAAMzqC,EACNgS,QAAS,IAIb,IAAIrR,EAAO,GACPF,EAAS,GACTP,EAAW8jC,OAAO,GAClB9vC,EAAM8vC,OAAO,GACbxiC,EAAO,GAEX,IAAK,IAAI8pC,EAAI,EAAGA,EAAIlE,EAAS7uC,OAAQ+yC,IAAK,CACxC,MAAM/2B,EAAM6yB,EAASkE,GACrB,GAAe,eAAX/2B,EAAI,GAAqB,CAE3B5T,EADY4T,EAAI,GACLziB,IACb,MAAO,GAAe,iBAAXyiB,EAAI,GAAuB,CAEpC9T,EADY8T,EAAI,GACHziB,IACf,MAAO,GAAe,mBAAXyiB,EAAI,GAAyB,CAEtCrU,EADYqU,EAAI,GACD1a,GACjB,MAAO,GAAe,cAAX0a,EAAI,GAAoB,CAEjCrgB,EADYqgB,EAAI,GACN1a,GACZ,MAAO,GAAe,eAAX0a,EAAI,GAAqB,CAElC/S,EADY+S,EAAI,GACLziB,IACb,CACF,CAEA,MAAO,CACL4yB,OAAQ0d,EAAAA,EAAakQ,GACrB7H,KAAM,CACJvqC,SAAUm9B,OAAOn9B,GACjBS,OACAF,SACAvM,MACAsN,QAEFwQ,QAAS,GAEb,CAlDqD,EAkDpD,G,CAEM8nL,wBAAAA,CAAwBjkG,GAA4C,IAA3C,OAAE9hG,GAAyC8hG,EACzE,OAAO9hG,CACT,CAEaimM,iBAAAA,CAAiBtqI,G,2DAAC,WAAEt2D,GAAoCu/F,EAAA,mBACnE,MAAMr5F,eAAuBm6L,EAAKvgM,MAAME,IAAa02I,yBAAyB,GAC9E,OAAOvlG,EAAAA,EAAAA,IACLjrC,EACI,CAAElN,MAAOkN,EAAOlN,MAAM+N,WAAYmtD,IAAKhuD,EAAOjN,WAAW,GAAK,IAAIiN,EAAOjN,WAAW,SAAM2N,QAC1FA,EAER,CAPqE,EAOpE,G,EAGI,MAAMkpD,EAAe,IAAIoyI,EAAa,CAC3CpiM,MAAOiwD,EAAAA,I,kaE7NH,MAAOs0I,UAAqBtE,EAAAA,EACnB7/C,OAAAA,G,yCACX,MAAO,CACL50H,OAAQ0d,EAAAA,EAAakQ,GACrB7H,KAAM,CACJltC,QAAS,GACT02G,cAAe,EACfxnE,MAAO,GACPD,OAAQ,GAEVx6B,QAAS,GAEb,G,CAEawnI,YAAAA,G,yCACX,OAAOjvG,EAAAA,EAAAA,SAAqBvqC,EAC9B,G,CAEasoD,MAAAA,CAAMoH,G,2DAAC,WAAEt2D,GAA2BlJ,EAAA,mBAC/C,OAAOq6C,EAAAA,EAAAA,gBAAkCxQ,EAAK7gC,MAAME,IAAa62I,qBACnE,CAFiD,EAEhD,G,CAEY15I,OAAAA,CAAOm5D,G,gDAAC,WAAEt2D,EAAU,OAAEkqD,GAAwB/+C,EAAA,mBACzD,OAAI++C,EAAOsK,KAAKhvD,gBACDsqD,EAAAA,EAAa3yD,QAAQ,CAAE6C,aAAYkqD,YAG3C/Y,EAAAA,EAAAA,IAAqBvG,OAAO,GACrC,CAN2D,EAM1D,G,CAEYkkB,QAAAA,CAAQwH,G,gDAAC,WAAEt2D,EAAU,SAAEH,EAAQ,OAAEqqD,GAAyB71C,EAAA,mBACrE,IAAK61C,EAAO9wC,GAAG5T,UAAW,MAAMvE,MAAM,6BACtC,IAAIkgM,EAAAA,EAAAA,GAAaj3I,EAAO7rB,MAAO,MAAMp9B,MAAM,+BAE3C,aAAa6uD,EAAAA,EAAahB,SAAS,CACjC9uD,aACAH,WACAqqD,UAEJ,CATuE,EAStE,G,CAEY+1F,MAAAA,CAAM3pF,G,gDAAC,WAAEt2D,GAA2B6U,EAAA,mBAC/C,aAAai7C,EAAAA,EAAamwF,OAAO,CAAEjgJ,cACrC,CAFiD,EAEhD,G,CAEYozD,MAAAA,G,yCACX,OAAOjiB,EAAAA,EAAAA,IAAsB,CAAE5vC,IAAK,aACtC,G,CAEai8I,QAAAA,G,yCACX,OAAOrsG,EAAAA,EAAAA,IAAsB,CAAE5vC,IAAK,eACtC,G,CAEa84E,YAAAA,CAAY/jB,G,gDAAC,WAAEt2D,EAAU,OAAEkqD,GAA4BpyC,EAAA,mBAClE,aAAag4C,EAAAA,EAAauqB,aAAa,CAAEr6E,aAAYkqD,UACvD,CAFoE,EAEnE,G,CAEY9T,OAAAA,CAAOkgB,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,EAAM,SAAErqD,GAA0BqX,EAAA,mBACnE,OAAOi6B,EAAAA,EAAAA,gBAEG+/I,EAAKpxL,MAAME,EAAYH,IAC7Bo6I,cAAc,CACd/jG,QAAS,CACPl9C,MAAOkxD,EAAOhU,QACdj9C,YAAYm4C,EAAAA,EAAAA,GAA4B8Y,EAAO8G,WAAa9G,EAAO8G,gBAAapqD,IAElF9L,KAAKs2C,EAAAA,EAAAA,GAA0B8Y,EAAOpvD,KACtC05I,gBAAiB,GACjB75I,OAAQuvD,EAAOnsD,UACfsgC,KAAM,GACN06G,oBAAoB3nG,EAAAA,EAAAA,GAA0B8Y,EAAO6uF,oBACrDC,YAAY5nG,EAAAA,EAAAA,GAA0B8Y,EAAO8uF,YAC7Cp7I,iBAAiBwzC,EAAAA,EAAAA,GAA4B8Y,EAAOjxD,WAAaixD,EAAOjxD,gBAAa2N,KAG3F,CAlBqE,EAkBpE,G,CAEY7I,SAAAA,CAASu4D,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAA0BuyC,EAAA,mBAC7D,IAAKvyC,EAAOlxD,MAAMwM,UAAW,MAAMvE,MAAM,gBAEzC,MAAMiF,cACEg6L,EAAKpgM,MAAME,IACjBg6I,gBAAgB,CAChB9jG,QAAS,CACPl9C,MAAOkxD,EAAOhU,QACdj9C,YAAYm4C,EAAAA,EAAAA,GAAiC8Y,EAAO8G,WAAa9G,EAAO8G,gBAAapqD,IAEvFlM,QAAS,CACP1B,MAAOkxD,EAAOlxD,MAAMwM,UACpBvM,YAAYm4C,EAAAA,EAAAA,GAAiC8Y,EAAOjxD,WAAaixD,EAAOjxD,gBAAa2N,MAIzF,OAAOuqC,EAAAA,EAAAA,IAAqBjrC,EAAOnI,UACrC,CAjB+D,EAiB9D,G,CAEYiwC,QAAAA,CAAQsoB,G,gDAAC,WAAEt2D,GAA6Bu/F,EAAA,mBACnD,aAAazvC,EAAAA,EAAa9hB,SAAS,CAAEhuC,cACvC,CAFqD,EAEpD,G,CAEM0gM,wBAAAA,CAAwBjhG,GAA4C,IAA3C,OAAE9kG,GAAyC8kG,EACzE,OAAO9kG,CACT,CAEaimM,iBAAAA,CAAiBtqI,G,gDAAC,WAAEt2D,GAAoC4/F,EAAA,mBACnE,aAAa9vC,EAAAA,EAAa8wI,kBAAkB,CAAE5gM,cAChD,CAFqE,EAEpE,G,EAGI,MAAMiiM,EAAe,IAAIoC,EAAa,CAC3CvkM,MAAOM,EAAAA,I,0bCwDF,MAAM2uD,EAAe,IA1JtB,MAANt+B,WAAAA,GACS,KAAA2iF,iBAAmB,IAAIC,IAEvB,KAAAC,SAAW,IAAID,GAqJxB,CA1ISE,cAAAA,CACLhsG,EACAisG,GASA,GAAI5iF,KAAK0iF,SAAS3kD,IAAIpnD,GAAO,MAAMtG,MAAM,qCACzC2vB,KAAK0iF,SAASn9C,IAAI5uD,EAAMisG,EAC1B,CAEOC,QAAAA,CAAS5iD,GACdA,EAAUxjD,SAAQvW,IAA6B,IAA5B,SAAEyJ,EAAQ,WAAEP,GAAYlJ,EACzC85B,KAAKwiF,iBAAiBj9C,IAAIn2D,EAAYO,EAAS,GAEnD,CAEOo2D,MAAAA,GACL,OAAO/lC,KAAKwiF,gBACd,CAEOM,UAAAA,CAAW1zG,GAChB,IAAIO,EAAWqwB,KAAKwiF,iBAAiBzkD,IAAI3uD,GAKzC,OAJKO,IACHwrB,QAAQlZ,MAAM,gCAAgC7S,KAC9CO,EAAW0rB,EAAAA,EAAeI,KAErBuE,KAAKsgC,iBAAiB3wD,EAC/B,CAEO2wD,gBAAAA,CAAiByiD,GACtB,IAAKA,IAAgB/iF,KAAK0iF,SAAS3kD,IAAIglD,GAAc,MAAM1yG,MAAM,2BAA2B0yG,KAC5F,OAAO/iF,KAAK0iF,SAAS3kD,IAAIglD,EAC3B,CAEaysC,YAAAA,CAAY9pF,G,2DAAC,WAAEt2D,GAAiDmL,EAAA,mBAC3E,MAAMqoG,EAAU7yE,EAAK+yE,WAAW1zG,GAChC,aAAawzG,EAAS4sC,aAAa,CAAEpgJ,cACvC,CAH6E,EAG5E,G,CAEYkgJ,OAAAA,CAAO5pF,G,2DAAC,OAAEpM,EAAM,WAAElqD,GAA4CqU,EAAA,mBACzE,MAAMm/F,EAAU09E,EAAKx9E,WAAW1zG,GAChC,aAAawzG,EAAS0sC,QAAQ,CAC5BlgJ,aACAkqD,UAEJ,CAN2E,EAM1E,G,CAEYgF,MAAAA,CAAMoH,G,2DAAC,WAAEt2D,GAA2C6U,EAAA,mBAC/D,MAAM2+F,EAAU0sF,EAAKxsF,WAAW1zG,GAChC,aAAawzG,EAAStkD,OAAO,CAC3BlvD,cAEJ,CALiE,EAKhE,G,CAEY7C,OAAAA,CAAOm5D,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAAwCpyC,EAAA,mBACzE,MAAM07F,EAAU2sF,EAAKzsF,WAAW1zG,GAEhC,aAAawzG,EAASr2G,QAAQ,CAC5B6C,aACAkqD,UAEJ,CAP2E,EAO1E,G,CAEY4E,QAAAA,CAAQwH,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,EAAM,SAAErqD,GAAmDqX,EAAA,mBAC7F,MAAMs8F,EAAU4sF,EAAK1sF,WAAW1zG,GAChC,aAAawzG,EAAS1kD,SAAS,CAC7B9uD,aACAkqD,SACArqD,YAEJ,CAP+F,EAO9F,G,CAEYuzD,MAAAA,CAAMkD,G,2DAAC,WAAEt2D,EAAU,SAAEH,EAAQ,OAAEqqD,GAA+CuyC,EAAA,mBACzF,MAAM+W,EAAUg+E,EAAK99E,WAAW1zG,GAChC,aAAawzG,EAASpgD,OAAO,CAC3BpzD,aACAH,WACAqqD,UAEJ,CAP2F,EAO1F,G,CAEYszF,QAAAA,CAAQlnF,G,2DAAC,WAAEt2D,EAAU,SAAEH,EAAQ,OAAEqqD,GAAiDq1C,EAAA,mBAC7F,MAAMiU,EAAU6sF,EAAK3sF,WAAW1zG,GAChC,aAAawzG,EAASgqC,SAAS,CAC7Bx9I,aACAH,WACAqqD,UAEJ,CAP+F,EAO9F,G,CAEYmwB,YAAAA,CAAY/jB,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAA4Cu1C,EAAA,mBAClF,MAAM+T,EAAU8sF,EAAK5sF,WAAW1zG,GAChC,aAAawzG,EAASn5B,aAAa,CACjCr6E,aACAkqD,UAEJ,CANoF,EAMnF,G,CAEY9T,OAAAA,CAAOkgB,G,2DAAC,WAAEt2D,EAAU,SAAEH,EAAQ,OAAEqqD,GAAwC01C,EAAA,mBACnF,MAAM4T,EAAU+sF,EAAK7sF,WAAW1zG,GAChC,aAAawzG,EAASp9D,QAAQ,CAC5Bp2C,aACAkqD,SACArqD,YAEJ,CAPqF,EAOpF,G,CAEY9B,SAAAA,CAASu4D,G,2DAAC,WAAEt2D,EAAU,OAAEkqD,GAA0C41C,EAAA,mBAC7E,MAAM0T,EAAUgtF,EAAK9sF,WAAW1zG,GAChC,aAAawzG,EAASz1G,UAAU,CAC9BiC,aACAkqD,UAEJ,CAN+E,EAM9E,G,CAEYlc,QAAAA,CAAQsoB,G,2DAAC,WAAEt2D,GAA6CggG,EAAA,mBACnE,MAAMwT,EAAUitF,EAAK/sF,WAAW1zG,GAChC,aAAawzG,EAASxlE,SAAS,CAC7BhuC,cAEJ,CALqE,EAKpE,G,CAEM0gM,wBAAAA,CAAyB4D,GAE9B,OADgB1zK,KAAK8iF,WAAW4wF,EAAQtkM,YACxB0gM,yBAAyB4D,EAC3C,CAEa1D,iBAAAA,CAAiBtqI,G,2DAAC,WAAEt2D,GAAoC2gM,EAAA,mBACnE,MAAMntF,EAAUquF,EAAKnuF,WAAW1zG,GAChC,aAAawzG,EAASotF,kBAAkB,CACtC5gM,cAEJ,CALqE,EAKpE,G,GAKU6R,EAAkBg/C,GAA6B9B,EAAa0kD,SAAS5iD,GAElF9B,EAAawkD,eAAetnF,EAAAA,EAAeI,IAAKikC,EAAAA,GAChDvB,EAAawkD,eAAetnF,EAAAA,EAAeC,MAAOikC,EAAAA,GAClDpB,EAAawkD,eAAetnF,EAAAA,EAAeG,UAAW60K,EAAAA,GACtDlyI,EAAawkD,eAAetnF,EAAAA,EAAeE,WAAY40K,EAAAA,GACvDhyI,EAAawkD,eAAetnF,EAAAA,EAAeK,MAAOwjC,EAAAA,GAClDf,EAAawkD,eAAetnF,EAAAA,EAAeM,MAAO01K,EAAAA,GAClDlzI,EAAawkD,eAAetnF,EAAAA,EAAe9hB,IAAK0kD,EAAAA,E,+BC9GzC,IAAK5iC,E,iBAAZ,SAAYA,GACVA,EAAA,UACAA,EAAA,cACAA,EAAA,UACAA,EAAA,wBACAA,EAAA,sBACAA,EAAA,cACAA,EAAA,aACD,CARD,CAAYA,IAAAA,EAAc,I,kNCjFnB,MAAMgiB,EAAoC,CAC/CF,aAAc9hB,EAAAA,EAAeI,IAC7B9kB,KAAM,cACNT,SAAU,EACVO,OAAQ,OACRrH,WAAYmsL,EAAAA,GACZj+I,YAAatD,OAAO,MACpBlgB,SAAUkgB,OAAO,GACjBxiC,KAAM,kBAAkB+jL,EAAAA,WAGbtgK,EAAc,IAAIvrB,EAAAA,EAAM,CACnC9E,QAASyyC,EAAuBjuC,WAChC8G,SAAUmnC,EAAuBnnC,SACjCO,OAAQ4mC,EAAuB5mC,OAC/BE,KAAM0mC,EAAuB1mC,KAC7Ba,KAAM6lC,EAAuB7lC,KAC7B7H,SAAU0rB,EAAAA,EAAeI,IACzB3B,SAAUuZ,OAAOgK,EAAuBvjB,YClB7BqmC,EAA4B,CACvC1pD,OAAQ,MACRE,KAAM,oBACNT,SAAU,EACV9G,WAAYqsG,EAAAA,GACZ3hF,SAAUkgB,OAAO,KACjBsD,YAAatD,OAAO,MACpBmD,aAAc9hB,EAAAA,EAAeM,MAC7BnkB,KAAM,kBAAkBikG,EAAAA,UAGbliG,EAAM,IAAI7J,EAAAA,EAAM,CAC3B9E,QAASu1D,EAAe/wD,WACxB8G,SAAUiqD,EAAejqD,SACzBO,OAAQ0pD,EAAe1pD,OACvBE,KAAMwpD,EAAexpD,KACrBa,KAAM2oD,EAAe3oD,KACrB7H,SAAU0rB,EAAAA,EAAeM,MACzB7B,SAAUuZ,OAAO8sB,EAAermC,YClBrB65K,EAA4B,CACvCl9L,OAAQ,MACRE,KAAM,gBACNT,SAAU,EACV9G,WAAYosL,EAAAA,GACZ1hK,SAAUkgB,OAAO,KACjBsD,YAAatD,OAAO,MACpBmD,aAAc9hB,EAAAA,EAAeK,MAC7BlkB,KAAM,kBAAkBgkL,EAAAA,UAGbhiL,EAAM,IAAI9J,EAAAA,EAAM,CAC3B9E,QAAS+oM,EAAevkM,WACxB8G,SAAUy9L,EAAez9L,SACzBO,OAAQk9L,EAAel9L,OACvBE,KAAMg9L,EAAeh9L,KACrBa,KAAMm8L,EAAen8L,KACrB7H,SAAU0rB,EAAAA,EAAeK,MACzB5B,SAAUuZ,OAAOsgK,EAAe75K,YCnBrB85K,EAAiB,8BAEjBC,EAA8B,CACzC12J,aAAc9hB,EAAAA,EAAeK,MAC7B/kB,KAAM,QACNT,SAAU,EACVO,OAAQ,QACRrH,WAAYwkM,EACZt2J,YAAatD,OAAO,MACpBlgB,SAAUkgB,OAAO,KACjBxiC,KAAM,kBAAkBo8L,SCVbE,GDaQ,IAAIpkM,EAAAA,EAAM,CAC7B9E,QAASipM,EAAiBzkM,WAC1B8G,SAAU29L,EAAiB39L,SAC3BO,OAAQo9L,EAAiBp9L,OACzBE,KAAMk9L,EAAiBl9L,KACvBa,KAAMq8L,EAAiBr8L,KACvB7H,SAAU0rB,EAAAA,EAAeK,MACzB5B,SAAUuZ,OAAOwgK,EAAiB/5K,YCpBQ,CAC1CqjB,aAAc9hB,EAAAA,EAAeM,MAC7BhlB,KAAM,QACNT,SAAU,EACVO,OAAQ,QACRrH,WAAY,8BACZkuC,YAAatD,OAAO,GACpBlgB,SAAUkgB,OAAO,IACjBxiC,KAAM,mDAGKkC,EAAQ,IAAIhK,EAAAA,EAAM,CAC7B9E,QAASkpM,EAAkB1kM,WAC3B8G,SAAU49L,EAAkB59L,SAC5BO,OAAQq9L,EAAkBr9L,OAC1BE,KAAMm9L,EAAkBn9L,KACxBa,KAAMs8L,EAAkBt8L,KACxB7H,SAAU0rB,EAAAA,EAAeK,MACzB5B,SAAUuZ,OAAOygK,EAAkBh6K,YClBxBi6K,EAA6B,CACxC52J,aAAc9hB,EAAAA,EAAeM,MAC7BhlB,KAAM,SACNT,SAAU,EACVO,OAAQ,SACRrH,WAAY,8BACZkuC,YAAatD,OAAO,GACpBlgB,SAAUkgB,OAAO,IACjBxiC,KAAM,kDAGKiC,EAAS,IAAI/J,EAAAA,EAAM,CAC9B9E,QAASmpM,EAAgB3kM,WACzB8G,SAAU69L,EAAgB79L,SAC1BO,OAAQs9L,EAAgBt9L,OACxBE,KAAMo9L,EAAgBp9L,KACtBa,KAAMu8L,EAAgBv8L,KACtB7H,SAAU0rB,EAAAA,EAAeM,MACzB7B,SAAUuZ,OAAO0gK,EAAgBj6K,YAGtBk6K,EAAoC,CAC/C72J,aAAc9hB,EAAAA,EAAeM,MAC7BhlB,KAAM,wBACNT,SAAU,EACVO,OAAQ,gBACRrH,WAAY,8BACZkuC,YAAatD,OAAO,GACpBlgB,SAAUkgB,OAAO,KACjBxiC,KAAM,kDAGKgtE,EAAgB,IAAI90E,EAAAA,EAAM,CACrC9E,QAASopM,EAAuB5kM,WAChC8G,SAAU89L,EAAuB99L,SACjCO,OAAQu9L,EAAuBv9L,OAC/BE,KAAMq9L,EAAuBr9L,KAC7Ba,KAAMw8L,EAAuBx8L,KAC7B7H,SAAUqkM,EAAuB72J,aACjCrjB,SAAUuZ,OAAO2gK,EAAuBl6K,Y,eCxCtB,IAAIg4C,EAAAA,EAAW,CACjClnE,QAAS,6CACT+L,KAAM,OACNF,OAAQ,OACRP,SAAU,EACVsB,KAAM,yDAGmB,IAAIs6D,EAAAA,EAAW,CACxClnE,QAAS,6CACT+L,KAAM,gBACNF,OAAQ,gBACRP,SAAU,EACVsB,KAAM,yDCbY,IAAIs6D,EAAAA,EAAW,CACjClnE,QAAS,6CACT+L,KAAM,OACNF,OAAQ,OACRP,SAAU,GACVsB,KAAM,yDDLD,MECMy8L,EAA4B,CACvC92J,aAAc9hB,EAAAA,EAAeM,MAC7BhlB,KAAM,qBACNT,SAAU,GACVO,OAAQ,QACRrH,WAAY,8BACZkuC,YAAatD,OAAO,GACpBlgB,SAAUkgB,OAAO,MACjBxiC,KAAM,kDAGKmC,EAAQ,IAAIjK,EAAAA,EAAM,CAC7B9E,QAASqpM,EAAe7kM,WACxB8G,SAAU+9L,EAAe/9L,SACzBO,OAAQw9L,EAAex9L,OACvBE,KAAMs9L,EAAet9L,KACrBa,KAAMy8L,EAAez8L,KACrB7H,SAAU0rB,EAAAA,EAAeM,MACzB7B,SAAUuZ,OAAO4gK,EAAen6K,YAGrBo6K,EAAmC,CAC9C/2J,aAAc9hB,EAAAA,EAAeM,MAC7BhlB,KAAM,6BACNT,SAAU,GACVO,OAAQ,eACRrH,WAAY,8BACZkuC,YAAatD,OAAO,GACpBlgB,SAAUkgB,OAAO,MACjBxiC,KAAM,kDAGKitE,EAAe,IAAI/0E,EAAAA,EAAM,CACpC9E,QAASspM,EAAsB9kM,WAC/B8G,SAAUg+L,EAAsBh+L,SAChCO,OAAQy9L,EAAsBz9L,OAC9BE,KAAMu9L,EAAsBv9L,KAC5Ba,KAAM08L,EAAsB18L,KAC5B7H,SAAUukM,EAAsB/2J,aAChCrjB,SAAUuZ,OAAO6gK,EAAsBp6K,YCvC5Bq6K,EAA6B,CACxCh3J,aAAc9hB,EAAAA,EAAeM,MAC7BhlB,KAAM,SACNT,SAAU,GACVO,OAAQ,SACRrH,WAAY,8BACZkuC,YAAatD,OAAO,GACpBlgB,SAAUkgB,OAAO,MACjBxiC,KAAM,kDCRKqC,GDWS,IAAInK,EAAAA,EAAM,CAC9B9E,QAASupM,EAAgB/kM,WACzB8G,SAAUi+L,EAAgBj+L,SAC1BO,OAAQ09L,EAAgB19L,OACxBE,KAAMw9L,EAAgBx9L,KACtBa,KAAM28L,EAAgB38L,KACtB7H,SAAU0rB,EAAAA,EAAeM,MACzB7B,SAAUuZ,OAAO8gK,EAAgBr6K,YClBhB,IAAIpqB,EAAAA,EAAM,CAC3B9E,QAAS,8BACTsL,SAAU,EACVO,OAAQ,MACRE,KAAM,MACNa,KAAM,iDACN7H,SAAU0rB,EAAAA,EAAeM,MACzB7B,SAAU,OCPCs6K,EAA6B,CACxCj3J,aAAc9hB,EAAAA,EAAeM,MAC7BhlB,KAAM,SACNT,SAAU,EACVO,OAAQ,SACRrH,WAAY,8BACZkuC,YAAatD,OAAO,GACpBlgB,SAAUkgB,OAAO,IACjBxiC,KAAM,kDAGKoC,EAAS,IAAIlK,EAAAA,EAAM,CAC9B9E,QAASwpM,EAAgBhlM,WACzB8G,SAAUk+L,EAAgBl+L,SAC1BO,OAAQ29L,EAAgB39L,OACxBE,KAAMy9L,EAAgBz9L,KACtBa,KAAM48L,EAAgB58L,KACtB7H,SAAU0rB,EAAAA,EAAeM,MACzB7B,SAAUuZ,OAAO+gK,EAAgBt6K,YClBtBhgB,EAAQ,IAAIpK,EAAAA,EAAM,CAC7B9E,QAAS,8BACTsL,SAAU,EACVO,OAAQ,QACRE,KAAM,QACNa,KAAM,iDACN7H,SAAU0rB,EAAAA,EAAeM,MACzB7B,SAAU,K,+BCVL,IAAKse,E,iBAAZ,SAAYA,GACVA,EAAA,YACAA,EAAA,OACD,CAHD,CAAYA,IAAAA,EAAY,I,+BCcjB,IAAKqsE,E,iBAAZ,SAAYA,GACVA,EAAA,YACAA,EAAA,0BACAA,EAAA,mBACD,CAJD,CAAYA,IAAAA,EAAY,I,+BCdjB,IAAKppF,E,iBAAZ,SAAYA,GACVA,EAAA,UACAA,EAAA,cACAA,EAAA,UACAA,EAAA,wBACAA,EAAA,sBACAA,EAAA,cACAA,EAAA,aACD,CARD,CAAYA,IAAAA,EAAc,I,wICepB,SAAUg5K,EAAWnuM,GAA2E,IAA1E,UAAEouM,EAAS,aAAEC,EAAY,SAAEC,EAAQ,SAAEr8L,EAAW,QAA0BjS,EACpG,MAAMkiB,GAAUC,EAAAA,EAAAA,MAUhB,OACE5V,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFzD,QAAS,OACT4D,IAAK,QACLF,QAAS,QACTG,WAAY,UACbpE,SAAA,EAEDC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFuB,WACAH,MAAO,iBACP5E,OAAQ,UACR,UAAW,CACT4gF,eAAgB,cAGpB//E,QA1BcgG,KACD,SAAbu6L,EAIJpsL,EAAQrL,KAAKy3L,GAHXpsL,EAAQqsL,QAGY,EAqBE7hM,SAEnB0hM,KAGHzhM,EAAAA,EAAAA,KAAC6hM,EAAAA,EAAY,CAACj9L,KAAK,UAEnB5E,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,eAAeG,SAAUA,EAAQvF,SAChD2hM,MAIT,CAEA,SAASI,EAAUp6L,GAAiG,IAAhG,SAAEpC,EAAW,OAAM,QAAE0N,EAAO,MAAExC,GAAkE9I,EAClH,OACE1H,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFuB,WACAH,MAAO6N,EAAU,eAAiB,iBAClCzS,OAAQyS,EAAU,UAAY,UAC9B,UAAW,CACTmuE,eAAgBnuE,EAAU,OAAS,cAEtCjT,SAEAyQ,GAGP,CAYM,SAAUuxL,EAAanxL,GAAiD,IAAhD,MAAEoxL,EAAK,SAAE18L,EAAW,QAA4BsL,EAC5E,OACE5Q,EAAAA,EAAAA,KAACsH,EAAAA,EAAI,CACHpD,IAAI,QACJH,GAAI,CACFC,QAAS,SACVjE,SAEAiiM,EAAMp6L,KAAI,CAAAwJ,EAAkB3G,KAAK,IAAtB,MAAE+F,EAAK,KAAEd,GAAM0B,EAAA,OACzBxR,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACpD,IAAI,QAAOnE,SAAA,CACd2P,GACC1P,EAAAA,EAAAA,KAACkiB,EAAAA,EAAI,CAACvM,GAAIjG,EAAI3P,UACZC,EAAAA,EAAAA,KAAC8hM,EAAU,CAACtxL,MAAOA,EAAOlL,SAAUA,EAAU0N,QAASvI,IAAUu3L,EAAMtmM,OAAS,OAGlFsE,EAAAA,EAAAA,KAAC8hM,EAAU,CAACtxL,MAAOA,EAAOlL,SAAUA,EAAU0N,QAASvI,IAAUu3L,EAAMtmM,OAAS,IAGjF+O,IAAUu3L,EAAMtmM,OAAS,GAAIsE,EAAAA,EAAAA,KAAC6hM,EAAAA,EAAY,CAACj9L,KAAK,SAAY,OATxC8K,GAAQjF,EAUxB,KAIf,C,0ECpFM,SAAUnD,EAAIjU,GAkBR,IAlBS,SACnBkc,EAAQ,IACRrL,EAAG,SACHnE,EAAQ,MACRkF,EAAK,MACLY,EAAK,QACLyN,EAAO,QACPtP,EAAO,OACPuD,EAAM,aACN7B,EAAY,OACZF,EAAM,GACNzB,EAAE,UACF+H,EAAS,UACT3K,EAAS,KACTwG,EAAI,QACJvG,EAAO,aACP6oB,EAAY,aACZE,GACU92B,EACV,OACE2M,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAE+3B,OAAAwmB,OAAA,CACAztC,cAAetF,EAAW,SAAW,MACrC0yL,aAAc,OACd3hM,QAAS,OACT2E,MAAOA,IAAU6G,EAAY,OAAS,QACtC3H,WAAiB,OAAL0B,QAAK,IAALA,EAAAA,EAAS,SACrBF,eAAuB,OAAP2N,QAAO,IAAPA,EAAAA,EAAW,aAC3B+lB,SAAU1xB,EACV3D,QAAgB,OAAPA,QAAO,IAAPA,EAAAA,EAAW,EACpBuD,SACA7B,eACAF,OAAc,OAANA,QAAM,IAANA,EAAAA,EAAU,EAClBtB,OACGH,GAEL5C,UAAWA,EACXC,QAASA,EACT6oB,aAAcA,EACdE,aAAcA,EAAYpqB,SAEzBA,GAGP,C,0EClEM,SAAUkN,EAAMtN,G,MACpB,OACEK,EAAAA,EAAAA,KAAC6M,EAAAA,EAAMivB,OAAAwmB,OAAA,GAAK3iD,EAAK,CAAEoE,GAAE+3B,OAAAwmB,OAAA,CAAIl+C,WAAY,eAA2B,QAARyuD,EAAAlzD,EAAMoE,UAAE,IAAA8uD,EAAAA,EAAI,CAAC,GAAE9yD,SAAA,SAI3E,C,oFCMM,SAAUmiB,EAAI7uB,GAAiE,IAAhE,GAAEsiB,EAAE,KAAEjG,EAAI,MAAEvK,EAAK,SAAEpF,EAAQ,MAAEkF,EAAK,OAAEtP,EAAM,QAAE2K,GAAoBjN,EACnF,MAAMwO,GAAQC,EAAAA,EAAAA,MAEd,OACE9B,EAAAA,EAAAA,KAAAgL,EAAAA,SAAA,CAAAjL,SACG4V,GACC3V,EAAAA,EAAAA,KAACkiM,EAAAA,GAAS,CAACvsL,GAAIA,EAAIxB,MAAO,CAAElP,QAAOtP,SAAQ2K,UAAS6gF,eAAgB,OAAQ9gE,WAAY,QAAQtgB,SAC7FA,IAED2P,GACF1P,EAAAA,EAAAA,KAAA,KACEmiM,KAAMzyL,EACNK,OAAO,SACPqyL,IAAI,aACJjuL,MAAO,CACLlP,QACAtP,SACA2K,UACA6gF,eAAgB,OAChBh8E,MACY,YAAVA,EACItD,EAAMyJ,OAAO0f,YACH,cAAV7lB,EACAtD,EAAMyJ,OAAOsuE,cACb,WACP75E,SAEAA,IAGHA,GAIR,C,qFC9CA,MAAMI,GAAYC,EAAAA,EAAAA,IAAYyB,IAAY,CACxCoY,KAAM,CACJzO,SAAU,QACVoE,IAAK,EACLsK,KAAM,EACNC,OAAQ,KACRlV,MAAO,OACP,YAAa,CACXkM,UAAWtP,EAAMuY,QAAQ,SAKzB,SAAUzF,IACd,MAAM/T,EAAUT,IAEhB,OACEH,EAAAA,EAAAA,KAAA,OAAKmB,UAAWP,EAAQqZ,KAAIla,UAC1BC,EAAAA,EAAAA,KAACqiM,EAAAA,EAAc,CAACl9L,MAAM,aAG5B,C,2GCpBA,MAAMhF,GAAYC,EAAAA,EAAAA,IAAYyB,IACrB,CACLqZ,iBAAkB,CAChB1P,SAAU,WACVoE,IAAK,EACLsK,KAAM,EACNjV,MAAO,OACPtP,OAAQ,OACRqP,SAAU,UAEZoW,KAAM,CACJ5P,SAAU,WACV0O,KAAM,EACNjV,MAAO,OACPtP,OAAQ,OACRyO,WAAYvC,EAAMwC,QAAQ3B,QAAQ0B,WAClCnE,QAAS,QAWT,SAAUqiM,EAAOjvM,GAA+D,IAA9D,QAAEqP,EAAO,aAAE6/L,EAAe,GAAE,iBAAEC,GAAgCnvM,EACpF,MAAMuN,EAAUT,IAEhB,OAAOuC,GACL9C,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACnG,UAAWP,EAAQsa,iBAAkBpP,WAAS,EAACwH,QAAQ,SAASzN,MAAM,SAAQ9F,SAAA,EAClFC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACFC,UAAWP,EAAQwa,KACnBrX,GAAE+3B,OAAAwmB,OAAA,GACIkgJ,EAAmB,CAAE98L,aAAc88L,GAAqB,CAAC,MAGjExiM,EAAAA,EAAAA,KAACsO,EAAAA,EAAgB,CAACnJ,MAAM,UAAUP,KAAM29L,OAExC,IACN,C,gGCxCA,MAAME,EAAmB5kH,EAAAA,EAAS;;;;;;;EAsD5B,SAAU6kH,EAAUrvM,GAA8B,IAA7B,SAAE0M,GAA2B1M,EACtD,MAAMwO,GAAQC,EAAAA,EAAAA,MAEd,OACE9B,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFzD,QAAS,OACTsY,SAAU,MACV9S,SAAU,SACV68L,cAAe,QACfC,WAAY,QACZ3+L,oBAAqB,iBACrB,UAAW,CACTqsE,UAAW,GAAGmyH,kBACdI,kBAAmB,OACnBz+L,WAAY,uDAERvC,EAAMwC,QAAQD,WAAWiH,4BACzBxJ,EAAMwC,QAAQD,WAAWoD,4BACzB3F,EAAMwC,QAAQD,WAAWE,0BAE7Bw+L,eAAgB,OAChBp9L,aAAc,OACd/P,OAAQ,SACRotM,WAAY,uBAEd,8BAA+B,CAC7BC,WAAY,SAEd,2BAA4B,CAC1BA,WAAY,QACZl4K,aAAc,SAEjB/qB,SAEAA,GAGP,C,2GC3FA,MAAMI,GAAYC,EAAAA,EAAAA,IAAYyB,IACrB,CACLqZ,iBAAkB,CAChB1P,SAAU,WACVoE,IAAK,EACLsK,KAAM,EACNjV,MAAO,OACPtP,OAAQ,OACRwc,UAAW,QACXnN,SAAU,UAEZoW,KAAM,CACJ5P,SAAU,WACVoE,IAAK,EACLsK,KAAM,EACNjV,MAAO,OACPtP,OAAQ,OACRyO,WAAYvC,EAAMwC,QAAQ3B,QAAQ0B,WAClCnE,QAAS,QAUT,SAAUgjM,EAAY5vM,GAA6C,IAA5C,QAAEqP,EAAO,KAAE0Y,GAAO,GAA0B/nB,EACvE,MAAMuN,EAAUT,IAEhB,OAAOuC,GACL9C,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACwE,WAAS,EAAC3K,UAAWP,EAAQsa,iBAAkB5H,QAAQ,SAASzN,MAAM,SAAQ9F,SAAA,EAClFC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACC,UAAWia,EAAOxa,EAAQwa,KAAO,MACtCpb,EAAAA,EAAAA,KAAA,OAAKmU,MAAO,CAAEgG,OAAQ,GAAKlV,MAAM,OAAOtP,OAAO,OAAO6X,IAAKyN,EAAclG,IAAI,QAE7E,IACN,C,gGCxBM,SAAUqrB,EAAQ/sC,GAUR,IAVS,GACvBsb,EAAE,OACFpH,EAAM,MACN84B,EAAK,QACLj/B,EAAO,QACP4C,EAAO,SACPjE,EAAQ,GACRgE,EAAE,aACF2B,EAAY,UACZvE,GACc9N,EACd,MAAMwO,GAAQC,EAAAA,EAAAA,MAERohM,GAAa5gM,EAAAA,EAAAA,UAAQ,KACzB,MAAM6gM,EACO,WAAX57L,EACI1F,EAAMwC,QAAQD,WAAWwH,OACd,WAAXrE,EACA1F,EAAMwC,QAAQD,WAAWiH,OACd,WAAX9D,EACA1F,EAAMwC,QAAQD,WAAWoD,OACd,WAAXD,EACA1F,EAAMwC,QAAQD,WAAWE,YACzBnB,EAEN,OAAQk9B,GACN,KAAK,EACH,OAAAvE,OAAAwmB,OAAA,CACEl+C,WAAYvC,EAAMwC,QAAQD,WAAWwH,QACjCu3L,EAAU,CAAE57L,OAAQ,aAAa47L,KAAc,CAAC,GAExD,KAAK,EACH,OAAArnK,OAAAwmB,OAAA,CACEl+C,WAAYvC,EAAMwC,QAAQD,WAAWiH,QACjC9D,EAAS,CAAEA,OAAQ,uCAA0C,CAAC,GAEtE,KAAK,EAeL,QACE,OAAAu0B,OAAAwmB,OAAA,CACEl+C,WAAYvC,EAAMwC,QAAQD,WAAWoD,QACjC27L,EAAU,CAAE57L,OAAQ,aAAa47L,KAAc,CAAC,GAbxD,KAAK,EACH,OAAArnK,OAAAwmB,OAAA,CACEl+C,WAAYvC,EAAMwC,QAAQD,WAAWE,QACjC6+L,EAAU,CAAE57L,OAAQ,aAAa47L,KAAc,CAAC,GAExD,KAAK,EACH,MAAO,CACL/+L,WAAY,UACZmD,OAAQ,uBAOd,GACC,CAAC84B,EAAO94B,IAEX,OACEvH,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACFyN,GAAIA,EACJ5K,GAAE+3B,OAAAwmB,OAAAxmB,OAAAwmB,OAAAxmB,OAAAwmB,OAAA,CACAl3C,gBAAiB83L,EAAW9+L,YACxB8+L,EAAW37L,OAAS,CAAEA,OAAQ27L,EAAW37L,QAAW,CAAC,GAAE,CAC3D7B,aAA0B,OAAZA,QAAY,IAAZA,EAAAA,EAAgB,OAC9B1B,QAAgB,OAAPA,QAAO,IAAPA,EAAAA,EAAW,OACpBiB,MAAO,OACPD,SAAU,SACV,2BAA4B,CAC1BhB,QAAgB,OAAPA,QAAO,IAAPA,EAAAA,EAAW,UAEnBD,GAEL3C,QAASA,EACTD,UAAWA,EAASpB,SAEnBA,GAGP,C,gEChEM,SAAU+B,IACd,OAAOmT,EAAAA,EAAAA,IACT,C,qFC7BM,SAAU1I,EAAMlZ,GAAqC,IAApC,IAAE+vM,EAAG,OAAEC,GAAS,GAAoBhwM,EACzD,OACEuM,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAI,CACFzD,QAAS,OACTuU,cAAe,SACf1Q,WAAY,SACZH,QAAS,UACVjE,SAAA,EAEDC,EAAAA,EAAAA,KAAA,OAAKwN,IAAI,oBAAoBuH,IAAI,GAAG9P,MAAM,QAAQtP,OAAO,UAE7C,IAAX0tM,EAAkB,KAAOD,GACxBpjM,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAE+B,SAAU,SAAWX,MAAM,eAAeuH,GAAG,OAAO7G,MAAM,SAAQ9F,SACjFqjM,KAGHpjM,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAEsK,UAAW,UAAUtO,SAAA,sBAI/C,C,0KCDM,SAAUujM,EAAYjwM,GAgBR,IAhBS,MAC3BuC,EAAK,SACLqS,EAAQ,MACR+I,EAAK,aACLW,EAAY,SACZ4xL,GAAW,EAAK,cAChBtrL,EAAa,SACbC,EACA3B,OAAQK,EAAS,YACjB4sL,EAAW,WACXrrL,EAAU,aACVH,EAAe,QAAO,QACtB9P,EAAO,UACP0K,EAAS,YACT8X,EAAW,OACXJ,GACkBj3B,EAClB,MAAMwO,GAAQC,EAAAA,EAAAA,OACPyU,EAAQc,IAAa1O,EAAAA,EAAAA,eAA6BxF,GAQnDmR,EAAuBpD,IAC3B,GAAKqyL,EAKE,CACL,MAAME,EAAc7tM,EAAQ,IAAIA,GAAS,GAEzC,GAAS,OAALA,QAAK,IAALA,OAAK,EAALA,EAAO6N,SAASyN,EAAKtb,OAAQ,CAC/B,MAAM6U,EAAQg5L,EAAY3lK,WAAWh5B,GAASA,IAASoM,EAAKtb,SAE7C,IAAX6U,IACFg5L,EAAY54L,OAAOJ,EAAO,GACtBxC,GAAUA,EAASw7L,GAE3B,KAAO,CACL,MAAMC,EAAc,IAAID,EAAavyL,EAAKtb,OACtCqS,GAAUA,EAASy7L,EACzB,CACF,MAlBErsL,OAAUlU,GACVunB,IACIxS,GAAUA,OAAS/U,GACnB8E,GAAUA,EAASiJ,EAAKtb,MAe9B,EA0BF,OACEoK,EAAAA,EAAAA,KAACqqE,EAAAA,EAAM,CACL17D,GAAG,kBACH3G,KAAM6L,QAAQyW,GACd/X,SAAU+X,EACVnW,MAAO,CACLlP,MAAgB,OAAT2N,QAAS,IAATA,EAAAA,EAAa,cACpBgG,SAAsB,OAAZZ,QAAY,IAAZA,EAAAA,EAAgB,cAC1B5T,WAAYvC,EAAMyJ,OAAO8U,WACzB7Y,OAAQ,oBACR7B,aAAc,OACdV,SAAU,SACVmV,OAAQ,KACTpa,UAEDC,EAAAA,EAAAA,KAACo5B,EAAAA,EAAiB,CAAC5O,YAnEHzW,KAClBsD,OAAUlU,GACV+E,IACIgQ,GAAUA,OAAS/U,EAAU,EAgEYpD,UACzCH,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAAnB,SAAA,CACD6W,GACC5W,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFyB,OAAQ,QACRxB,QAAS,QACT,UAAW,CACTmB,MAAOtD,EAAMwC,QAAQ+N,KAAKC,UAE7BtS,UAEDC,EAAAA,EAAAA,KAACuT,EAAAA,EAAS,CACRxP,GAAI,CACF2B,aAAc,MACd1B,QAAS,WACTsB,SAAU,OACVlB,WAAYvC,EAAMwC,QAAQD,WAAWwH,QAEvCG,YAAY,SACZkE,QAAQ,WACRhI,SAAUP,IAAA,IAAGqI,QAAQ,MAAEna,IAAS8R,EAAA,MAzClB9R,KAC1ByhB,EAAUzhB,GACNsiB,GAAUA,EAAStiB,EAAM,EAuCoB+tM,CAAmB/tM,EAAM,EAC9DA,MAAO2gB,EACPtK,UAAW,CACTC,MAAO,CACLsH,kBAAkB,EAClBrH,gBACEnM,EAAAA,EAAAA,KAACoM,EAAAA,EAAc,CAACZ,SAAS,QAAOzL,UAC9BC,EAAAA,EAAAA,KAAC4jM,EAAAA,EAAM,CAACh/L,KAAK,OAAOO,MAAOtD,EAAMwC,QAAQ+N,KAAK6J,gBAKtDnQ,WAAS,MAGX,MAEJlM,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAE8U,UAAwB,OAAbZ,QAAa,IAAbA,EAAAA,EAAiB,QAASjT,SAAU,eAAejF,SAAA,CACtEiR,EAAMpJ,KAAI,CAACsJ,EAAMzG,KAChB,MAAMo5L,EAAa1rL,GAAcA,EAAWjH,GAE5C,OAAOsyL,GACLxjM,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAEFE,QAASA,IAAMkT,EAAoBpD,GACnCnN,GAAE+3B,OAAAwmB,OAAA,GAAQuhJ,EAAa,CAAEvjM,QAAS,QAAW,CAAC,GAAEP,SAE/CmR,EAAKV,OAJDU,EAAKtb,MAAQ6U,IAOpB7K,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAEF6C,GAAE+3B,OAAAwmB,OAAAxmB,OAAAwmB,OAAA,CACAhiD,QAAS,OACT6D,WAAY,SACZxO,OAAQ,OACRqO,QAAS,SACTzD,OAAQ,WACJsjM,EAAa,CAAEvjM,QAAS,QAAW,CAAC,GAAE,CAC1C,UAAW,CACT8D,WAAY,UACZe,MAAO,kBAGX/D,QAASA,IAAMkT,EAAoBpD,GAAKnR,SAAA,CAEvCwjM,IACCvjM,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEyB,OAAQ,aAAazF,UAC9BC,EAAAA,EAAAA,KAAC6P,EAAAA,EAAQ,CACP9L,GAAI,CAAEC,QAAS,GACfiE,SAAUA,CAAC1B,EAA4CuJ,IA7GhDg0L,EAACh0L,EAAkBi0L,KAC9C,GAAI97L,EAAU,CACZ,MAAMw7L,EAAc7tM,EAAQ,IAAIA,GAAS,GAEzC,GAAIka,EAAS,CACX,MAAM4zL,EAAc,IAAID,EAAaM,GACrC97L,EAASy7L,EACX,KAAO,CACL,MAAMj5L,EAAQg5L,EAAY3lK,WAAWh5B,GAASA,IAASi/L,KAExC,IAAXt5L,IACFg5L,EAAY54L,OAAOJ,EAAO,GAC1BxC,EAASw7L,GAEb,CACF,GA+FsBK,CAAqBh0L,EAASoB,EAAKtb,OAErCka,QAAc,OAALla,QAAK,IAALA,OAAK,EAALA,EAAO6N,SAASyN,EAAKtb,WAKnCsb,EAAKV,QA3BDU,EAAKtb,MAAQ6U,EA6BrB,IAGe,IAAjBuG,EAAMtV,OAAeiW,IAAgB3R,EAAAA,EAAAA,KAACuM,EAAAA,EAAM,IAAM,cAM/D,C,4IC5LA,MAAMpM,EAAY9M,IAA2D,IAA1D,UAAEsY,EAAS,WAAE+F,EAAU,OAAEmF,EAAM,QAAE7S,GAAqB3Q,EACvE,OAAO+M,EAAAA,EAAAA,IAAYyB,IACV,CACLmQ,SAAU,CACR1R,QAAS,OACT6D,WAAY,SACZC,WAAYyS,EAAShV,EAAMwC,QAAQD,WAAWE,OAASzC,EAAMwC,QAAQD,WAAWwH,OAChFlG,aAAcmR,EAAS,MAAQ,OAC/B7S,aAAqBb,IAAZa,EAAwBA,EAAU2H,EAAY,YAAgB+F,EAAa,MAAQ,QAAxB,QACpEzM,MAAO,OACP,UAAW,CACTE,MAAOtD,EAAMwC,QAAQ+N,KAAKC,SAE5B,oBAAqB,CACnBjO,WAAY,mBAIlB,EAwBE,SAAU4/L,EAAWt8L,GAkBd,IAlBe,MAC1B8I,EAAK,MACL5a,EAAK,SACLqS,EAAQ,SACRwI,EAAQ,SACR3K,EAAQ,WACR4L,EAAU,UACV/F,GAAY,EAAI,OAChBkL,EAAM,UACNE,GAAY,EAAI,eAChBD,GAAiB,EAAI,WACrBmtL,EAAU,QACVjgM,EAAO,KACPkN,EAAI,YACJnF,EAAW,QACX3K,EAAO,KACP4G,EAAI,MACJqQ,GACW3Q,E,MACX,MAAM9G,EAAUT,EAAU,CAAEwL,YAAW+F,aAAYmF,SAAQ7S,WAA3C7D,GACVwS,GAAcD,EAAAA,EAAAA,QAA2B,OAExC6Y,EAAW24K,IAAgBv7L,EAAAA,EAAAA,WAAkB,GAgBpD,OACE/I,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACFT,IAAKkS,EACLxR,UAAW,GAAGP,EAAQoR,WAAW8E,EAAiB,GAAK,qBACvD/S,GAAE+3B,OAAAwmB,OAAAxmB,OAAAwmB,OAAAxmB,OAAAwmB,OAAA,GACI5wC,EAAa,CAAE/b,OAAQ,QAAW,CAAC,GACnCmQ,EAAW,CAAEA,SAAU,GAAGA,OAAiB,CAAC,GAAE,CAClDvF,OAAQ,YAEVa,QAASA,EACT6oB,aAxBqBC,MACL,IAAdnT,GACJmtL,GAAa,EAAK,EAuBhB/5K,aApBqBC,KACvB85K,GAAa,EAAM,EAmBankM,SAAA,CAE7B4L,GAAa6E,IACZ5Q,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAAnB,SAAA,CACD0Q,IACCzQ,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACnB,GAAI,CAAEoB,MAAO,WAAaG,SAAU,GAAIkK,UAAU,OAAMzP,SAAA,OAKtEC,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACsK,UAAU,OAAOlK,SAAU,GAAEvF,SACtCyQ,QAKP5Q,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQ2E,MAAO,OAAQd,WAAY,SAAUwB,eAAgB,iBAAiB5F,SAAA,EAChGC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAAnB,UACDiG,EAAAA,EAAAA,GAAYpQ,IAAWyiB,GAASA,EAAMnH,IACrClR,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAiB,OAAV8+L,QAAU,IAAVA,EAAAA,EAAc,eAAgBz0L,UAAU,MAAKzP,SAC7DsY,EAAQA,EAAMnH,GAAyB,QAAjB2hD,EAAI,OAAJ3hD,QAAI,IAAJA,OAAI,EAAJA,EAAMizL,mBAAW,IAAAtxI,EAAAA,EAAQ,OAAJ3hD,QAAI,IAAJA,OAAI,EAAJA,EAAMV,SAGpDxQ,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACC,MAAM,UAASpF,SAAEgM,OAIjC/L,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAAC6C,GAAI,CAAEzD,QAAS,OAAQ6D,WAAY,UAAUpE,SAC/CwrB,GAAe31B,GACdoK,EAAAA,EAAAA,KAACwoE,EAAAA,EAAS,CAACzkE,GAAI,CAAExD,OAAQ,WAAaa,QA7CtBmF,IACxBA,EAAMC,kBACFyB,GAAUA,OAAS9E,EAAU,KA6CzBnD,EAAAA,EAAAA,KAAC4T,EAAAA,EAAqB,CACpB7P,GAAI,CAAE0d,WAAY,YAAa2iL,OAAQp8L,EAAO,SAAW,OAAQzH,OAAQ,oBAOvF,C,eC/GM,SAAUwX,EAAM1kB,GAyBR,IAzBS,MACrBmd,EAAK,MACL5a,EAAK,SACLqS,EAAQ,SACRwI,EAAQ,MACRO,EAAQ,GAAE,SACVlL,EAAQ,WACR4L,EAAU,SACVxB,EAAQ,UACRvE,GAAY,EAAI,aAChBgG,EAAY,SACZ4xL,GAAW,EAAK,cAChBtrL,EAAa,SACbC,EACA3B,OAAQK,EAAS,YACjB4sL,EAAW,WACXrrL,EAAU,OACVtB,EAAM,UACNE,GAAY,EAAI,eAChBD,GAAiB,EAAI,aACrBkB,EAAe,QAAO,WACtBisL,EAAU,YACVl4L,EAAW,aACXiL,EAAY,MACZqB,GACYhlB,EACZ,MAAOkf,EAAUC,IAAe7J,EAAAA,EAAAA,UAAS,MACnCgvB,GAAajlB,EAAAA,EAAAA,QAA2B,OACvCE,EAAWC,IAAgBlK,EAAAA,EAAAA,eAA6BxF,IAE/DI,EAAAA,EAAAA,YAAU,K,MACR,MAAM0B,EAA2B,QAAnB4tD,EAAU,OAAVl7B,QAAU,IAAVA,OAAU,EAAVA,EAAY3kB,eAAO,IAAA6/C,OAAA,EAAAA,EAAE3/C,YACnCL,EAAkB,OAAL5N,QAAK,IAALA,EAAAA,OAAS9B,EAAU,GAC/B,CAACw0B,IAEJ,MAKM5jB,EAAcA,KAClBvB,EAAY,KAAK,EAGb6xL,GAAe/hM,EAAAA,EAAAA,UAAQ,IACpB0O,EAAMrH,QAAQuH,GAASA,EAAKtb,QAAUA,IAAO,IACnD,CAACob,EAAOpb,IAEX,OACEgK,EAAAA,EAAAA,MAAAoL,EAAAA,SAAA,CAAAjL,SAAA,EACEC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACT,IAAKk3B,EAAU53B,UAClBC,EAAAA,EAAAA,KAACgkM,EAAW,CACVntL,OAAQA,EACRC,eAAgBA,EAChBC,UAAWA,EACX9O,SAAUA,EACViJ,KAAMmzL,EACNjjM,QAtBqBmF,IACvB2J,GACJsC,EAAYjM,EAAM6M,cAAc,EAqB1BpL,OAAQuK,EACR0xL,WAAYA,EACZjgM,QAASgT,EACTvG,SAAUA,EACVD,MAAOA,EACP1K,SAAUA,EACV4L,WAAYA,EACZ/F,UAAWA,EACX/V,MAAOA,EACPmW,YAAaA,EACbsM,MAAOA,OAIXrY,EAAAA,EAAAA,KAACsjM,EAAAA,EAAY,CACXtyL,MAAOA,EACP4B,UAAWA,EACX0X,OAAQ/X,EACR3c,MAAOA,EACPqS,SAAUA,EACVC,QAAS6L,EACT2W,YAAa3W,EACbwC,OAAQK,EACRsB,SAAUA,EACVC,WAAYA,EACZxG,aAAcA,EACd4xL,SAAUA,EACVvrL,aAAcA,EACdC,cAAeA,EACfurL,YAAaA,MAIrB,C,oJC7GM,SAAUc,EAAKjxM,GAQR,IARS,SACpB0M,EAAQ,KACR2P,EAAI,oBACJ60L,EAAsB,iBAAgB,MACtCp/L,EAAQ,GAAE,SACVG,EAAW,OAAM,MACjBO,EAAK,KACLuM,GAAO,GACI/e,EACX,OACE2M,EAAAA,EAAAA,KAAA,KACEmiM,KAAMzyL,EACNK,OAAO,SACPqyL,IAAI,aACJjuL,MAAO,CACLgtE,eAAgB/uE,EAAO,YAAc,OACrC9M,WACAi/L,oBAC0B,YAAxBA,EACI,qBACwB,cAAxBA,EACA,oBACwB,iBAAxBA,EACA,UACA,UACNp/L,QACAkJ,UAAWxI,GACZ9F,SAEAqS,GACCpS,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTC,MAAY,OAALA,QAAK,IAALA,EAAAA,EAAS,iBAChBpB,GAAI,CACFxD,OAAQ,UACR8f,WAAY,OACZ/a,YAEFkK,UAAU,OAAMzP,SAEfA,IAGHA,GAIR,CAEA,SAASsc,IACP,OACErc,EAAAA,EAAAA,KAAA,OAAKiF,MAAM,KAAKtP,OAAO,KAAKmK,QAAQ,YAAY0O,KAAK,OAAOC,MAAM,6BAA4B1O,UAC5FC,EAAAA,EAAAA,KAAA,QACEmc,SAAS,UACTC,SAAS,UACTlc,EAAE,mIACFsO,KAAK,aAIb,CAcM,SAAUiB,EAAU/H,GAUR,IAVS,SACzB3H,EAAQ,QACRqB,EAAO,SACP8O,EAAQ,KACRR,EAAI,GACJiG,EAAE,GACF5R,EAAE,MACFygM,EAAK,MACLr/L,EAAQ,YAAW,eACnBg8E,EAAiB,QACDz5E,EAChB,MAAM6N,GAAUC,EAAAA,EAAAA,MAEVpO,GAAcC,EAAAA,EAAAA,cAAY,KAC1B6I,IAEAR,GACFuQ,EAAAA,EAAAA,GAAiBvQ,EAAM,+BAIrBiG,EACFJ,EAAQrL,KAAKyL,GAIXvU,GAASA,IAAS,GACrB,CAACsO,EAAMiG,EAAIvU,EAAS8O,IAEvB,OACEtQ,EAAAA,EAAAA,MAACsF,EAAAA,EAAU,CACTC,MAAO+K,EAAW,UAAsB,YAAV/K,EAAsB,UAAsB,UAAVA,EAAoB,UAAY,YAChGpB,GAAE+3B,OAAAwmB,OAAA,CACA/hD,OAAQ,UACR8f,WAAY,OACZ8gE,iBACA,UAAW,CACTA,eAAgB,aAElB,yBAA0B,CACxBrnD,WAAY,SAEX/1B,GAEL5C,UAAU,qBACVqO,UAAU,OACVpO,QAASgG,EAAWrH,SAAA,CAEnBA,EAEAykM,IACCxkM,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CAACsO,UAAU,OAAOzL,GAAI,CAAEyB,OAAQ,aAAazF,UAC/CC,EAAAA,EAAAA,KAACqc,EAAS,QAKpB,CAaM,SAAUooL,EAAY7zL,GASR,IATS,SAC3B7Q,EAAQ,SACRmQ,EAAQ,KACRR,EAAI,GACJiG,EAAE,GACF5R,EAAE,MACFygM,EAAK,MACLr/L,EAAQ,YAAW,eACnBg8E,EAAiB,QACCvwE,EAClB,OACE5Q,EAAAA,EAAAA,KAACkiB,EAAAA,EAAI,CAACvM,GAAIA,EAAIjG,KAAMA,EAAI3P,UACtBH,EAAAA,EAAAA,MAACsF,EAAAA,EAAU,CACTC,MAAO+K,EAAW,UAAsB,YAAV/K,EAAsB,UAAsB,UAAVA,EAAoB,UAAY,YAChGpB,GAAE+3B,OAAAwmB,OAAA,CACAhiD,QAAS,OACT6D,WAAY,SACZD,IAAK,QACL3D,OAAQ,UACR8f,WAAY,OACZ8gE,iBACA,UAAW,CACTA,eAAgB,aAElB,yBAA0B,CACxBrnD,WAAY,SAEX/1B,GAEL3C,QAAUmF,IACJ2J,GACF3J,EAAMC,iBACR,EACDzG,SAAA,CAEAA,EAEAykM,IAASxkM,EAAAA,EAAAA,KAACqc,EAAS,QAI5B,C,gGCvMM,SAAUqoL,EAAQ/kM,GACtB,OACEK,EAAAA,EAAAA,KAACH,EAAAA,EAAOi8B,OAAAwmB,OAAA,CAACxiD,QAAQ,eAAkBH,EAAK,CAAAI,UACtCC,EAAAA,EAAAA,KAAA,SACE2O,GAAG,SACH1J,MAAM,MACNtP,OAAO,MACPi1E,EAAE,IACFC,EAAE,IACFI,UAAU,u1UA2IlB,CC5IM,SAAUvmE,EAAUrR,GAAyC,IAAxC,KAAEsR,EAAI,KAAEC,EAAI,GAAEb,EAAE,IAAEiJ,GAAsB3Z,EACjE,OACEuM,EAAAA,EAAAA,MAACsB,EAAAA,EAAG,CACF6C,GAAE+3B,OAAAwmB,OAAA,CACAr9C,MAAW,OAAJL,QAAI,IAAJA,EAAAA,EAAQ,OACfjP,OAAY,OAAJiP,QAAI,IAAJA,EAAAA,EAAQ,OAChB4G,SAAU,YACJ,OAAFzH,QAAE,IAAFA,EAAAA,EAAM,CAAC,GAAEhE,SAAA,EAGfC,EAAAA,EAAAA,KAAC6M,EAAAA,EAAM,CACLW,IAAK7I,EACLZ,GAAI,CACFkB,MAAW,OAAJL,QAAI,IAAJA,EAAAA,EAAQ,OACfjP,OAAY,OAAJiP,QAAI,IAAJA,EAAAA,EAAQ,OAChBR,WAAY,eACbrE,SAAA,SAKFiN,GACChN,EAAAA,EAAAA,KAAC0kM,EAAO,CACN3gM,GAAI,CACFkB,MAAW,OAAJL,QAAI,IAAJA,EAAAA,EAAQ,OACfjP,OAAY,OAAJiP,QAAI,IAAJA,EAAAA,EAAQ,OAChBR,WAAY,cACZoH,SAAU,WACVoE,IAAK,IACLsK,KAAM,OAGR,OAGV,C,2GC/BM,SAAU2I,EAAOxvB,GAOR,IAPS,KACtByvB,EAAI,WACJ1e,EAAU,SACV0B,EAAQ,SACR6+L,EAAW,OAAM,SACjB5kM,EAAQ,UACR6kM,EAAY,WACCvxM,EACb,OACE2M,EAAAA,EAAAA,KAAC6kM,EAAAA,EAAU,CACTC,YAAa,CACX/gM,GAAI,CACFzD,QAAS,OACTqF,eAAgB,SAChB,wBAAyB,CACvBvB,aACAsB,aAAc,MACd1B,QAAS,YACT8B,SAAkB,OAARA,QAAQ,IAARA,EAAAA,EAAY,QACtB,sBAAuB,CACrBX,MAAOf,GAET,wBAAyB,CACvBe,MAAO,UACPG,SAAU,OACVmG,WAAY,WAKpBP,OACElL,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CAACsK,UAAU,MAAMrO,UAAU,qBAAoBpB,SACvD+iB,IAGL0hL,OAAK,EAAAzkM,SAEJA,IACCC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAI,CACFzD,QAAS,OACT6D,WAAY,SACZc,MAAO0/L,EACPhvM,OAAQgvM,GACT5kM,UAEDC,EAAAA,EAAAA,KAAC+kM,EAAAA,EAAU,CAACngM,KAAM+/L,EAAUx/L,MAAOy/L,EAAWzwL,MAAO,CAAE5T,OAAQ,gBAKzE,C,oFCtDM,SAAUqnB,EAASv0B,GAA+C,IAA9C,QAAE+N,EAAO,WAAEgD,EAAU,MAAEe,GAAuB9R,EACtE,MAAM,EAAEgV,IAAMC,EAAAA,EAAAA,MAEd,OACEtI,EAAAA,EAAAA,KAACglM,EAAAA,EAAW,CAAC5jM,QAASA,EAASgD,WAAYA,EAAYe,MAAOA,EAAOI,WAAY,IAAGxF,SACjFsI,EAAE,eAGT,C,0ECPM,SAAU28L,EAAW3xM,GAAuE,IAAtE,SAAE0M,EAAQ,QAAEqB,EAAO,WAAEgD,EAAU,MAAEe,EAAK,WAAEI,GAA8BlS,EAChG,OACE2M,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACTnB,GAAI,CACFC,QAAS,MACTzD,OAAQ,UACRmF,aAAc,MACd0F,gBAA2B,OAAVhH,QAAU,IAAVA,EAAAA,EAAc,UAC/Be,MAAY,OAALA,QAAK,IAALA,EAAAA,EAAS,UAChBG,SAAU,OACVC,WAAsB,OAAVA,QAAU,IAAVA,EAAAA,EAAc,KAE5BnE,QAASA,EAAOrB,SAEfA,GAGP,C,+BC7BO,IAAKkmC,E,iBAAZ,SAAYA,GACVA,EAAAA,EAAA,aACAA,EAAAA,EAAA,aACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,yBACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,aACAA,EAAAA,EAAA,sBACD,CAVD,CAAYA,IAAAA,EAAS,I,gGCiBf,SAAU7xB,EAAQ/gB,GAUR,IAVS,MACvBuC,EAAK,OACLspB,EAAM,MACN1O,EAAK,KACLgqB,EAAI,YACJ9P,EAAW,SACX3qB,EAAQ,SACRmQ,EAAQ,aACR+Z,EAAY,aACZE,GACc92B,EACd,MAAMwO,GAAQC,EAAAA,EAAAA,MAEd,OACElC,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CACHwE,WAAS,EACT/H,GAAI,CACFK,WAAYvC,EAAMwC,QAAQD,WAAWwH,OACrC5H,QAAS,SACTrO,OAAQ,OACR,WAAY,CACVyO,WAAYvC,EAAMwC,QAAQD,WAAWoD,QAEvC,UAAW,CACTpD,WAAY8L,EAAWrO,EAAMwC,QAAQD,WAAWwH,OAAS/J,EAAMwC,QAAQD,WAAWoD,OAClF,QAAS,CACPrC,MAAO,gBAET,mBAAoB,CAClBA,MAAO+K,EAAW,iBAAmB,kBAI3C9O,QAASA,IAAMspB,EAAY90B,GAC3Bq0B,aAAcA,EACdE,aAAcA,EAAYpqB,SAAA,CAEzByQ,GACC5Q,EAAAA,EAAAA,MAAC0H,EAAAA,EAAI,CAACvD,GAAI,CAAEoB,MAAO+Z,EAAS,eAAiB,kBAAoBhb,IAAI,SAAS4H,WAAS,EAAA/L,SAAA,CACpFy6B,GACDx6B,EAAAA,EAAAA,KAACkF,EAAAA,EAAU,CACT/D,UAAU,gBACV4C,GAAI,CAAEuB,SAAU,OAAQH,MAAO+Z,EAAS,eAAiB,kBAAkBnf,SAE1EyQ,OAGH,KAEHzQ,IAGP,C,mHChEA,MAAMI,GAAYC,EAAAA,EAAAA,IAAW,KACpB,CACLw/E,OAAQ,CACNzlE,OAAQ,UAwBR,SAAUkQ,EAAWh3B,GASR,IATS,KAC1B2U,EAAI,UACJ4K,EAAS,YACT4X,EAAW,OACXjjB,EAAM,QACNvD,EAAO,OACPsmB,EAAM,UACNC,EAAS,SACTxqB,GACiB1M,EACjB,MAAMuN,EAAUT,IACV0B,GAAQC,EAAAA,EAAAA,MAEd,OACE9B,EAAAA,EAAAA,KAACqqE,EAAAA,EAAM,CACLriE,KAAMA,EACNuK,SAAU+X,EACVC,UAAoB,OAATA,QAAS,IAATA,EAAAA,EAAa,cACxBggD,cAAe,CACbC,UAAW,CACT,CACE1mE,KAAM,SACNgvB,QAAS,CACP6c,OAAQ,CAAC,EAAG,OAKpBxuC,UAAWP,EAAQg/E,OAAM7/E,UAEzBC,EAAAA,EAAAA,KAACo5B,EAAAA,EAAiB,CAAC5O,YAAaA,EAAWzqB,UACzCC,EAAAA,EAAAA,KAACkB,EAAAA,EAAG,CACF6C,GAAE+3B,OAAAwmB,OAAA,CACAl+C,WAAYvC,EAAMwC,QAAQD,WAAWwH,OACrCrE,OAAc,OAANA,QAAM,IAANA,EAAAA,EAAU,aAAa1F,EAAMwC,QAAQD,WAAWoD,SACxDxD,QAAgB,OAAPA,QAAO,IAAPA,EAAAA,EAAW,QACpB0B,aAAc,QACVkN,EAAY,CAAE3N,MAAO,GAAG2N,eAA0B,CAAC,GAAE7S,SAG1DA,OAKX,C,6BC7EM,SAAU4tC,EAAqB/3C,GACnC,OAAOA,EAAQ,CAACA,GAAS,EAC3B,C,+CCFM,SAAUyqM,EAAa1iL,GAC3B,MAAoB,kBAATA,EAA0BA,EAEjB,kBAATA,GACLA,EACKme,OAAOC,KAAKpe,GAAM,GAItBA,CACT,C,+ECRM,SAAUyrD,EAAarxE,GAC3B,GAAIA,EAAQ2D,OAAS,GAAI,CAEvB,MAAO,mDADSo1D,EAAAA,EAAAA,GAAmB/4D,IAErC,CAEA,MAAO,mDAAmDA,GAC5D,C,mICQM,SAAUktM,EAA2BC,GACzC,MAAM1jD,EAAQ,IAAIv0I,MAClBu0I,EAAMh0I,IAAM03L,EAEZ,MAAMC,EAAMxgL,OAAO3c,KAAK,IACrB,OAAHm9L,QAAG,IAAHA,GAAAA,EAAK3gL,SAAS4gL,MAAM5jD,EAAM6jD,UAC5B,CAEM,SAAUC,EAAiB1vM,EAA0B2vM,GACzD,OAAc,IAAV3vM,IAAeuY,EAAAA,EAAAA,GAAWvY,GAAe2vM,EAAS,IAAM,MAErD,GAAG,IAAIr/L,EAAAA,GAAU9C,EAAAA,EAAAA,GAAiBxN,EAAO,IAAI8xB,QAAQ,IAAIC,aAAa49K,EAAS,GAAK,MAC7F,CAIM,SAAUC,EAAgBz0I,GAC9B,MAAI,cAAeA,CAErB,CAWM,SAAUy9C,EAAoBC,GAClC,OAAO,IAAIC,YAAY,SAASC,OAAOF,EACzC,CAkBM,SAAUg3F,EAAY10I,GAC1B,OAAIy0I,EAAgBz0I,GACXA,EAAKhvD,UAEPgvD,EAAKh5D,OACd,CAEM,SAAUw5L,EAAYr/E,EAAUx2G,GACpC,MAAMgqM,EAAexzF,EAAIx2G,OAEzB,GAAIA,GAAUgqM,EACZ,MAAO,CAACxzF,GAGV,MAAMyzF,EAAehzK,KAAK4N,KAAKmlK,EAAehqM,GACxC+G,EAAqB,GAE3B,IAAK,IAAIgsC,EAAI,EAAGA,EAAIk3J,EAAcl3J,IAChChsC,EAAOyH,KAAKgoG,EAAI9lF,MAAMqiB,EAAI/yC,EAAQ+yC,EAAI/yC,EAASA,IAGjD,OAAO+G,CACT,C,uECtFM,SAAUkuD,EACdF,GAEA,QAAIA,GAAOA,aAAejzD,MAE5B,CAEM,SAAUooM,EAAan1I,GAC3B,SAAIA,GAAOA,aAAetf,EAAAA,GAE5B,C,+BCbM,SAAUpB,EAAoBJ,EAAgBC,GAClD,SAAUD,GAAqB,IAAXA,MAAmBC,CACzC,C,+CCFM,SAAU8tJ,EACd9iK,GAEA,MAAoB,kBAATA,CAEb,C,+CCJM,SAAUzsB,EAAc03L,GAC5B,OAAoB,OAAbA,QAAkC1iM,IAAb0iM,CAC9B,CAGM,SAAU7/L,EAAe6/L,GAC7B,OAAQ13L,EAAW03L,EACrB,C,uDCNM,SAAUt1I,EAAYxuD,GAC1B,QAASA,GAAaA,EAAU+jM,YAClC,C,gECJO,MAAMC,EAAqB,GAE5B,SAAUz+K,EAAevvB,GAC7B,MACE,iBAAiBg4E,KAAKh4E,IAAYguM,IAAuBhuM,EAAQ2D,MAErE,C,+DCJM,SAAUiI,EAAiB5B,GAC/B,IACE,OAAOA,IAAcpO,EAAAA,UAAU2kB,SAASvW,GAAWwoG,QACrD,CAAE,MAAOhhG,GACP,OAAO,CACT,CACF,C,+BCRM,SAAU0W,EAAiBqtE,EAAa3+E,GAC5C,IAAIwnC,EAAI3xB,SAASwhL,cAAc,KAC/B7vJ,EAAE8vJ,aAAa,OAAQ34G,GACvBn3C,EAAE8vJ,aAAa,SAAU,UACzB9vJ,EAAE8vJ,aAAa,KAAMt3L,GAChB6V,SAASipE,eAAe9+E,IAC3B6V,SAAS6oF,KAAK64F,YAAY/vJ,GAE5BA,EAAEgwJ,OACJ,C,qKCHA,SAASC,EAAoB/sI,GAE3B,OAAOA,EAAOxjD,QADC,uBACe,KAChC,CA+BO,MAAM5P,EAAqBA,CAAC6qG,EAAkCh+E,KACnE,MAAM,OAAEuzK,EAAS,EAAC,IAAEl9J,EAAM,IAAI,IAAEC,EAAM,KAAgB,OAAPtW,QAAO,IAAPA,EAAAA,EAAW,CAAC,EAE3D,OAAI3kB,EAAAA,EAAAA,GAAW2iG,GAAa,IACxB,IAAI5qG,EAAAA,EAAU4qG,GAAK72D,UAAU,GAAW,QAExC,IAAI/zC,EAAAA,EAAU4qG,GAAKh6D,WAAW3N,GACzB,KAAKA,IAGV,IAAIjjC,EAAAA,EAAU4qG,GAAKh6D,WAAW1N,GACzB,IAAI,IAAIljC,EAAAA,EAAU4qG,GAAKppF,QAAQ2+K,KAGjC,IAAIC,KAAKC,aAAa,QAAS,CACpCC,SAAU,UACVC,eAAgB,QAChBC,sBAAuB,EACvBC,sBAAuB,IACtBtU,OAAO7xJ,OAAOswE,KAAO,EAUbt3F,EAAyBA,CAACs3F,EAA6Bh+E,KAClE,MAAM,OAAEuzK,EAAS,EAAC,IAAEl9J,EAAG,oBAAEy9J,EAAsB,GAAa,OAAP9zK,QAAO,IAAPA,EAAAA,EAAW,CAAC,EAE3D+zK,EAAQ/1F,EAEd,OAAI3iG,EAAAA,EAAAA,GAAW2iG,GAAa,IACxB,IAAI5qG,EAAAA,EAAU2gM,GAAO5sJ,UAAU,GAAW,SAE1Cj0C,EAAAA,EAAAA,GAAYmjC,IAAQ,IAAIjjC,EAAAA,EAAU2gM,GAAO/vJ,WAAW3N,GAC/C,KAAKA,IAGV,IAAIjjC,EAAAA,EAAU2gM,GAAO/vJ,WAAW,GAC9B,IAAI5wC,EAAAA,EAAU2gM,GAAO/vJ,WAAW,EAAInkB,KAAA4oK,IAAA,GAAMqL,IACrC,IAvEb,SAAyCE,EAA2BC,GAClE,MAAMC,EAA+B,IAAIC,OAAO,aAAaF,EAA+B,kBAC5F,OAAOD,EAAkBjxL,QACvBmxL,GACA,CAACE,EAAQC,EAAWC,IAA0B,GAAGD,MAAcC,EAAsB1rM,WAMzF,CA6DiB2rM,EAAgCtyF,EAAAA,EAAAA,GAAc8xF,EAAOD,GAAsBA,EAAsB,KAGvG,KAAI7xF,EAAAA,EAAAA,GAAc8xF,EAAOR,KAG3B,IAAI,IAAIngM,EAAAA,EAAU2gM,GAAOl/K,SAAS,IAAI,EAYlC5hB,EAAeA,CAAC+qG,EAA6Bh+E,KACxD,MAAM,OAAEuzK,EAAS,EAAC,IAAEl9J,EAAM,KAAO,IAAEC,EAAM,IAAI,WAAEk+J,EAAU,WAAEC,EAAa,GAAa,OAAPz0K,QAAO,IAAPA,EAAAA,EAAW,CAAC,EAE1F,OAAI3kB,EAAAA,EAAAA,GAAW2iG,GAAa,IACxB,IAAI5qG,EAAAA,EAAU4qG,GAAK72D,UAAU,GAAW,OAExCqtJ,EACK,IAAIphM,EAAAA,EAAU4qG,GAAKnpF,SAAS4/K,GAGjC,IAAIrhM,EAAAA,EAAU4qG,GAAKh6D,WAAW3N,GACzB,IAAIA,IAGT,IAAIjjC,EAAAA,EAAU4qG,GAAKh6D,WAAW1N,GACzBg9J,EAAoB,IAAIlgM,EAAAA,EAAU4qG,GAAKppF,QAAQ2+K,IAGjDC,KAAKC,aAAa,QAAS,CAChCC,SAAU,UACVC,eAAgB,QAChBC,sBAAuB,EACvBC,sBAAuB,IACtBtU,OAAO7xJ,OAAOswE,GAAK,EAWlB,SAAU02F,EAAiB12F,EAA6Bh+E,GAC5D,MAAM,OAAEuzK,EAAS,EAAC,IAAEl9J,EAAM,KAAO,oBAAEs+J,EAAsB,EAAC,IAAEr+J,EAAM,KAAmB,OAAPtW,QAAO,IAAPA,EAAAA,EAAW,CAAC,EAE1F,OAAI3kB,EAAAA,EAAAA,GAAW2iG,GAAa,IACxB,IAAI5qG,EAAAA,EAAU4qG,GAAK72D,UAAU,GAAW,OAExC,IAAI/zC,EAAAA,EAAU4qG,GAAKh6D,WAAW3N,GACzB,IAAIA,IAGT,IAAIjjC,EAAAA,EAAU4qG,GAAKh6D,WAAW,GACzBsvJ,EAAoB,IAAIlgM,EAAAA,EAAU4qG,GAAKppF,QAAQ+/K,IAGpD,IAAIvhM,EAAAA,EAAU4qG,GAAKh6D,WAAW1N,IACzB3hB,EAAAA,EAAAA,GAAgCqpF,EAAKu1F,GAGvC,IAAIngM,EAAAA,EAAU4qG,GAAKppF,QAAQ,EACpC,CASO,MAAMsiD,EAAkBA,CAAC8mC,EAA6Bh+E,KAC3D,MAAM,OAAEuzK,EAAS,EAAC,IAAEl9J,EAAM,IAAI,IAAEC,EAAM,KAAgB,OAAPtW,QAAO,IAAPA,EAAAA,EAAW,CAAC,EAE3D,OAAI3kB,EAAAA,EAAAA,GAAW2iG,GAAa,IACxB,IAAI5qG,EAAAA,EAAU4qG,GAAK72D,UAAU,GAAW,OAExC,IAAI/zC,EAAAA,EAAU4qG,GAAKh6D,WAAW3N,GACzB,IAAIA,IAGT,IAAIjjC,EAAAA,EAAU4qG,GAAKh6D,WAAW1N,GACzB,IAAIljC,EAAAA,EAAU4qG,GAAKnpF,SAAS0+K,GAG9BC,KAAKC,aAAa,QAAS,CAChCC,SAAU,UACVC,eAAgB,QAChBC,sBAAuB,EACvBC,sBAAuB,IACtBtU,OAAO7xJ,OAAOswE,GAAK,EAIlB,SAAU42F,EAAsB52F,GACpC,IAAI3iG,EAAAA,EAAAA,GAAW2iG,GAAM,MAAO,IAC5B,GAAI,IAAI5qG,EAAAA,EAAU4qG,GAAK72D,UAAU,GAAI,MAAO,OAE5C,GAAI,IAAI/zC,EAAAA,EAAU4qG,GAAKh6D,WAAW,GAChC,OAAOrvB,EAAAA,EAAAA,GAAgCqpF,EAAK,GAO9C,OAJc,IAAI5qG,EAAAA,EAAU4qG,GAAKnpF,SAAS,GAI7B9R,QAFE,uBAEc,KAC/B,CAEM,SAAU8xL,EAAa39K,GAC3B,OAAO,IAAI9jB,EAAAA,EAAU8jB,EAAInU,QAAQ,IAAK,KAAKyD,UAAU,KAAKC,UAC5D,CAEM,SAAUquL,EAAa92F,EAAkCu1F,GAC7D,OAAOA,GAAqB,IAAXA,EACb,GAAG,IAAIngM,EAAAA,EAAU4qG,GAAK3qG,aAAa,KAAKuhB,QAAQ2+K,MAChD,GAAG,IAAIngM,EAAAA,EAAU4qG,GAAK3qG,aAAa,KAAK7C,aAC9C,C,8DC/MM,SAAUu5C,EAAei0D,GAC7B,OAAY,IAARA,GAAaA,IAAQ3pE,OAAO,GAAW,IACvC2pE,EACK,IAAI5qG,EAAAA,EAAyB,kBAAR4qG,EAAmB33D,OAAO23D,GAAOA,GAAKnpF,SAAS,CACzEqsF,eAAgB,KAEb,EACT,C,8DCPM,SAAUk8E,EACdlwJ,EACAE,IAEAse,EAAAA,EAAAA,GAAUxe,EAAU,EAAG,oBACvBwe,EAAAA,EAAAA,GAAUte,EAAW,EAAG,oBAExB,MAAM2nK,GAAa7nK,EAAU,GAAKE,EAElC,MAAO,CAAC2nK,EADQA,EAAY3nK,EAE9B,C,gGCNM,SAAU4wB,EAAmB/uD,EAAmBuuD,GACpD,IAAKvuD,EAAW,OAAOA,EAEvB,GAAIuuD,KAAes1I,EAAAA,EAAAA,GAAat1I,MAAgB3sD,EAAAA,EAAAA,GAAiB2sD,GAC/D,MAAM9yD,MAAM,qBAGd,MAAMizD,EAAMH,GACRs1I,EAAAA,EAAAA,GAAat1I,GACXA,GACA3sD,EAAAA,EAAAA,GAAiB2sD,GACjBnf,EAAAA,GAAWC,cAAcz9C,EAAAA,UAAU2kB,SAASg4C,SAC5CntD,OACFA,EAEJ,OAAOytD,EAAAA,GAAkBxf,cAAc,CACrCrvC,UAAWpO,EAAAA,UAAU2kB,SAASvW,GAC9BuuD,WAAYG,IACXI,OACL,C,mFClBM,SAAUi3I,EAAezqM,GAC7B,OAAOA,IAAQkoC,EAAAA,EAAamU,OAAiB,QAARr8C,CACvC,CAEM,SAAU0qM,EAAc1qM,GAC5B,OAAOA,IAAQkoC,EAAAA,EAAakQ,IAAc,OAARp4C,CACpC,CAEM,SAAUqwC,EAAgBjrC,GAC9B,GAAe,OAAXA,QAA8BU,IAAXV,EACrB,MAAO,CACLolB,OAAQ0d,EAAAA,EAAamU,MACrBvkC,QAAS,GACTy4B,UAAMzqC,GAIV,MAAM9F,EAAMy+B,OAAOC,KAAKt5B,GAExB,GACEA,GACA+2G,IAAS/2G,IACTpF,GACAA,EAAI,IA3BF,SAAsBA,GAC1B,OAAOyqM,EAAezqM,IAAQ0qM,EAAc1qM,EAC9C,CA0BI2qM,CAAY3qM,EAAI,IAChB,CACA,IAAI8X,EAAU,GAEd,GAAI2yL,EAAezqM,EAAI,KAAOm8G,IAAS/2G,EAAOpF,EAAI,KAAM,CACtD,MAAMw5D,EAAa/6B,OAAOC,KAAKt5B,EAAOpF,EAAI,KAAK,GACzCzH,EAAQ6M,EAAOpF,EAAI,IAAIw5D,GAI3B1hD,EADiB,UAAf0hD,EACQjhE,EAEW,kBAAVA,EACC,GAAGihE,MAAej/C,KAAKC,UAAUjiB,GAAOigB,QAChD,MACA,MAGQ,GAAGghD,MAAejhE,GAGlC,KAAqC,kBAAnB6M,EAAOpF,EAAI,MAC3B8X,EAAU1S,EAAOpF,EAAI,KAGvB,MAAO,CACLwqB,OAAQigL,EAAezqM,EAAI,IAAMkoC,EAAAA,EAAamU,MAAQnU,EAAAA,EAAakQ,GACnE7H,KAAMm6J,EAAc1qM,EAAI,IAAOoF,EAAOpF,EAAI,SAAY8F,EACtDgS,UAEJ,CAEA,MAAO,CACL0S,OAAQ0d,EAAAA,EAAakQ,GACrB7H,KAAMnrC,EACN0S,QAAS,GAEb,C,8BCpEM,SAAUoN,IAA4B,IAApB0lL,EAAGt5K,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,GAAIjzB,EAAMizB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,EACzC,OAAIs5K,EAAIvsM,QAAmB,EAATA,EAAmB,GAAGusM,EAAI77K,MAAM,EAAG1wB,QAC9C,GAAGusM,EAAI77K,MAAM,EAAG1wB,QAAausM,EAAI77K,MAAM67K,EAAIvsM,OAASA,IAC7D,CAEM,SAAUwsM,EAAcD,EAAar4J,GACzC,OAAKq4J,EACDr4J,EACKq4J,EAAIvsM,OAASk0C,EAAQ,GAAGq4J,EAAI77K,MAAM,EAAGwjB,GAAOgqE,YAAcquF,EAE5D1lL,EAAQ0lL,GAJEA,CAKnB,C,oFCPKxW,E,wCAAL,SAAKA,GACHA,EAAAA,EAAA,2BACAA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,sBACD,CAJD,CAAKA,IAAAA,EAAQ,KAMb,MAAMh8D,EAAU9tG,IAAS8qK,KAEnBC,EAAwB,CAC5B,CAACjB,EAASvjF,YAAaunB,EAAQvnB,WAC/B,CAACujF,EAASkB,eAAgBl9D,EAAQk9D,cAClC,CAAClB,EAASmB,UAAWn9D,EAAQm9D,UAGzB,SAAU79E,EACdjE,GAGwC,IAFxCshF,EAAiBzjK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,EACpB0jK,EAAA1jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAiB,CAAEqlF,eAAgB,IACnCs+E,EAAA3jK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAqB8iK,EAASvjF,WAE9BunB,EAAQ/iE,IAAI,CACV4gI,UAAWlB,EAAoB,EAC/BE,SAAUI,EAAsBJ,KAGlC,MAAMxxI,EAAW,IAAI20E,EAAQ3kB,GAAKyiF,oBAAoBnB,GACtD,OAAOtxI,EAASn5B,SAASm5B,EAASyxI,gBAAiBF,EACrD,CAEM,SAAU5qK,EAAgCqpF,GAA2C,IAArBshF,EAAiBzjK,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAAG,EACxF8mG,EAAQ/iE,IAAI,CACV4gI,UAAWlB,EAAoB,EAC/BE,SAAUI,EAAsBjB,EAASvjF,cAG3C,MAAMptD,EAAW,IAAI20E,EAAQ3kB,GAAKyiF,oBAAoBnB,GACtD,OAAOtxI,EAASn5B,SAASm5B,EAASyxI,gBAAiB,CAAEv+E,eAAgB,KACvE,C,uECtCM,SAAUjsF,EAAkB7wB,GAAoE,IAA7BmM,EAAAsrB,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAA4B,EAC/Fw5K,EAAUjxM,EACVkxM,EAAY/kM,EAEhB,OAAgB,IAAZ8kM,GAAkBA,GACC,kBAAZA,IAAsBA,EAAU3nK,OAAO2nK,IAC1B,kBAAb9kM,IAAuB+kM,EAAY5nK,OAAO4nK,IACjD5nK,OAAO4wB,MAAM5wB,OAAOtpC,IAAiB,IAAIgP,EAAAA,EAAUiiM,GAEhD,IAAIjiM,EAAAA,EAAU,IAAIA,EAAAA,EAAUiiM,GAAShiM,aAAawsB,KAAA4oK,IAAA,GAAM/6J,OAAO4nK,KAAY1gL,QAAQ,KALpD,IAAIxhB,EAAAA,EAAU,EAMtD,CAEM,SAAU9C,EAAiBlM,GAAoE,IAC/FixM,EAAUjxM,EACVkxM,EAFkEz5K,UAAAjzB,OAAA,QAAAyH,IAAAwrB,UAAA,GAAAA,UAAA,GAA4B,EAIlG,OAAgB,IAAZw5K,GAAkBA,GACC,kBAAZA,IAAsBA,EAAU3nK,OAAO2nK,IACzB,kBAAdC,IAAwBA,EAAY5nK,OAAO4nK,IAClD5nK,OAAO4wB,MAAM5wB,OAAO2nK,IAAkB,IAAIjiM,EAAAA,EAAUizC,OAAOgvJ,IAExD,IAAIjiM,EAAAA,EAAUizC,OAAOgvJ,IAAU7uL,UAAUqZ,KAAA4oK,IAAA,GAAM/6J,OAAO4nK,MALvB,IAAIliM,EAAAA,EAAU,EAMtD,C,qv4ECxBImiM,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBplM,IAAjBqlM,EACH,OAAOA,EAAaC,QAGrB,IAAIC,EAASL,EAAyBE,GAAY,CACjD55L,GAAI45L,EACJI,QAAQ,EACRF,QAAS,CAAC,GAUX,OANAG,EAAoBL,GAAU16J,KAAK66J,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG3EI,EAAOC,QAAS,EAGTD,EAAOD,OACf,CAGAH,EAAoBO,EAAID,EC5BxBN,EAAoBQ,KAAO,CAAC,E,MCA5B,IAAIC,EAAW,GACfT,EAAoBU,EAAI,CAACvmM,EAAQwmM,EAAUpwK,EAAIqwK,KAC9C,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAAS36J,EAAI,EAAGA,EAAIs6J,EAASrtM,OAAQ+yC,IAAK,CACrCw6J,EAAWF,EAASt6J,GAAG,GACvB5V,EAAKkwK,EAASt6J,GAAG,GACjBy6J,EAAWH,EAASt6J,GAAG,GAE3B,IAJA,IAGI46J,GAAY,EACPC,EAAI,EAAGA,EAAIL,EAASvtM,OAAQ4tM,MACpB,EAAXJ,GAAsBC,GAAgBD,IAAaptK,OAAOC,KAAKusK,EAAoBU,GAAGxmJ,OAAOnlD,GAASirM,EAAoBU,EAAE3rM,GAAK4rM,EAASK,MAC9IL,EAASp+L,OAAOy+L,IAAK,IAErBD,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACbN,EAASl+L,OAAO4jC,IAAK,GACrB,IAAI+4B,EAAI3uC,SACE11B,IAANqkE,IAAiB/kE,EAAS+kE,EAC/B,CACD,CACA,OAAO/kE,CArBP,CAJCymM,EAAWA,GAAY,EACvB,IAAI,IAAIz6J,EAAIs6J,EAASrtM,OAAQ+yC,EAAI,GAAKs6J,EAASt6J,EAAI,GAAG,GAAKy6J,EAAUz6J,IAAKs6J,EAASt6J,GAAKs6J,EAASt6J,EAAI,GACrGs6J,EAASt6J,GAAK,CAACw6J,EAAUpwK,EAAIqwK,EAuBjB,C,KC3BdZ,EAAoB/gI,EAAKmhI,IACxB,IAAIa,EAASb,GAAUA,EAAOc,WAC7B,IAAOd,EAAiB,QACxB,IAAM,EAEP,OADAJ,EAAoBpoM,EAAEqpM,EAAQ,CAAEpzJ,EAAGozJ,IAC5BA,CAAM,E,MCNd,IACIE,EADAC,EAAW5tK,OAAO6tK,eAAkB3tK,GAASF,OAAO6tK,eAAe3tK,GAASA,GAASA,EAAa,UAQtGssK,EAAoBjgM,EAAI,SAASzS,EAAOxB,GAEvC,GADU,EAAPA,IAAUwB,EAAQu3B,KAAKv3B,IAChB,EAAPxB,EAAU,OAAOwB,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPxB,GAAawB,EAAM4zM,WAAY,OAAO5zM,EAC1C,GAAW,GAAPxB,GAAoC,oBAAfwB,EAAMymD,KAAqB,OAAOzmD,CAC5D,CACA,IAAIg0M,EAAK9tK,OAAOx/B,OAAO,MACvBgsM,EAAoB9gI,EAAEoiI,GACtB,IAAIC,EAAM,CAAC,EACXJ,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAI12L,EAAiB,EAAP5e,GAAYwB,EAAyB,iBAAXod,KAAyBy2L,EAAe/+L,QAAQsI,GAAUA,EAAU02L,EAAS12L,GACxH8oB,OAAOguK,oBAAoB92L,GAASpJ,SAASvM,GAASwsM,EAAIxsM,GAAO,IAAOzH,EAAMyH,KAI/E,OAFAwsM,EAAa,QAAI,IAAM,EACvBvB,EAAoBpoM,EAAE0pM,EAAIC,GACnBD,CACR,C,KCxBAtB,EAAoBpoM,EAAI,CAACuoM,EAASsB,KACjC,IAAI,IAAI1sM,KAAO0sM,EACXzB,EAAoB0B,EAAED,EAAY1sM,KAASirM,EAAoB0B,EAAEvB,EAASprM,IAC5Ey+B,OAAOmuK,eAAexB,EAASprM,EAAK,CAAE6sM,YAAY,EAAMh/I,IAAK6+I,EAAW1sM,IAE1E,ECNDirM,EAAoBpM,EAAI,CAAC,EAGzBoM,EAAoB/+L,EAAK4gM,GACjB55J,QAAQC,IAAI1U,OAAOC,KAAKusK,EAAoBpM,GAAG1jK,QAAO,CAAC4xK,EAAU/sM,KACvEirM,EAAoBpM,EAAE7+L,GAAK8sM,EAASC,GAC7BA,IACL,KCNJ9B,EAAoB+B,EAAKF,GAEjB,aAAeA,EAAU,IAAM,CAAC,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,YAAYA,GAAW,YCFj8D7B,EAAoBgC,SAAYH,GAExB,cAAgBA,EAAU,IAAM,CAAC,KAAO,WAAW,KAAO,WAAW,KAAO,YAAYA,GAAW,aCH3G7B,EAAoBiC,EAAI,WACvB,GAA0B,kBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOr9K,MAAQ,IAAIs9K,SAAS,cAAb,EAChB,CAAE,MAAOlhM,GACR,GAAsB,kBAAXob,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB2jL,EAAoBoC,IAAOhC,KAC1BA,EAAS5sK,OAAOx/B,OAAOosM,IACX3oM,WAAU2oM,EAAO3oM,SAAW,IACxC+7B,OAAOmuK,eAAevB,EAAQ,UAAW,CACxCwB,YAAY,EACZx3I,IAAK,KACJ,MAAM,IAAIl1D,MAAM,0FAA4FkrM,EAAO/5L,GAAG,IAGjH+5L,GCTRJ,EAAoB0B,EAAI,CAAChuK,EAAK2uK,IAAU7uK,OAAOgyE,UAAUrmC,eAAe55B,KAAK7R,EAAK2uK,G,MCAlF,IAAIC,EAAa,CAAC,EACdC,EAAoB,iBAExBvC,EAAoB7R,EAAI,CAACnpG,EAAKw9G,EAAMztM,EAAK8sM,KACxC,GAAGS,EAAWt9G,GAAQs9G,EAAWt9G,GAAKpjF,KAAK4gM,OAA3C,CACA,IAAIC,EAAQC,EACZ,QAAW7nM,IAAR9F,EAEF,IADA,IAAI4tM,EAAUzmL,SAAS0mL,qBAAqB,UACpCz8J,EAAI,EAAGA,EAAIw8J,EAAQvvM,OAAQ+yC,IAAK,CACvC,IAAI08J,EAAIF,EAAQx8J,GAChB,GAAG08J,EAAEC,aAAa,QAAU99G,GAAO69G,EAAEC,aAAa,iBAAmBP,EAAoBxtM,EAAK,CAAE0tM,EAASI,EAAG,KAAO,CACpH,CAEGJ,IACHC,GAAa,GACbD,EAASvmL,SAASwhL,cAAc,WAEzBqF,QAAU,QACjBN,EAAOx8K,QAAU,IACb+5K,EAAoBgD,IACvBP,EAAO9E,aAAa,QAASqC,EAAoBgD,IAElDP,EAAO9E,aAAa,eAAgB4E,EAAoBxtM,GAExD0tM,EAAOv9L,IAAM8/E,GAEds9G,EAAWt9G,GAAO,CAACw9G,GACnB,IAAIS,EAAmB,CAACp0J,EAAM5wC,KAE7BwkM,EAAO19G,QAAU09G,EAAOS,OAAS,KACjCn2K,aAAa9G,GACb,IAAIk9K,EAAUb,EAAWt9G,GAIzB,UAHOs9G,EAAWt9G,GAClBy9G,EAAOW,YAAcX,EAAOW,WAAWC,YAAYZ,GACnDU,GAAWA,EAAQ7hM,SAASivB,GAAQA,EAAGtyB,KACpC4wC,EAAM,OAAOA,EAAK5wC,EAAM,EAExBgoB,EAAU2B,WAAWq7K,EAAiBjkI,KAAK,UAAMnkE,EAAW,CAAEwa,KAAM,UAAW5N,OAAQg7L,IAAW,MACtGA,EAAO19G,QAAUk+G,EAAiBjkI,KAAK,KAAMyjI,EAAO19G,SACpD09G,EAAOS,OAASD,EAAiBjkI,KAAK,KAAMyjI,EAAOS,QACnDR,GAAcxmL,SAASonL,KAAK1F,YAAY6E,EApCkB,CAoCX,C,KCvChDzC,EAAoB9gI,EAAKihI,IACH,qBAAX3oD,QAA0BA,OAAO+rD,aAC1C/vK,OAAOmuK,eAAexB,EAAS3oD,OAAO+rD,YAAa,CAAEj2M,MAAO,WAE7DkmC,OAAOmuK,eAAexB,EAAS,aAAc,CAAE7yM,OAAO,GAAO,ECL9D0yM,EAAoBwD,IAAOpD,IAC1BA,EAAOqD,MAAQ,GACVrD,EAAO3oM,WAAU2oM,EAAO3oM,SAAW,IACjC2oM,GCHRJ,EAAoB52F,EAAI,ICAxB,MAEI,IAAIs6F,EAAe1D,EAAoB+B,EACnC4B,EAAgB3D,EAAoB/+L,EACpC2iM,EAAW,CAAC,EACZC,EAAW,CAAC,EAIhB7D,EAAoB+B,EAAI,SAAUF,GAEhC,OADa6B,EAAa7B,IAGvB+B,EAASzkI,eAAe0iI,GAAW,IAAM+B,EAAS/B,GAAW,GAElE,EACA7B,EAAoB/+L,EAAI,SAAU4gM,GAEhC,OADa8B,EAAc9B,GACb93I,OAAM,SAAUjjD,GAC5B,IAAIg9L,EAAUD,EAAS1kI,eAAe0iI,GAAWgC,EAAShC,GAAW,EACrE,GAAIiC,EAAU,EAAG,CACf,IAAIC,EAAUL,EAAa7B,GAQ3B,MAPA/6L,EAAM+F,QACJ,iBACAg1L,EACA,8BACAkC,EACA,IACFj9L,EAAMyxL,QAAUwL,EACVj9L,CACR,CACA,OAAO,IAAImhC,SAAQ,SAAUod,GAC3B,IAAI2+I,EAAe,EAAIF,EAAU,EACjCl8K,YAAW,WACT,IACIq8K,EACK,cAAgBhvK,KAAKy2C,MAG9Bk4H,EAAS/B,GAAWoC,EACpBJ,EAAShC,GAAWiC,EAAU,EAC9Bz+I,EAAQ26I,EAAoB/+L,EAAE4gM,GAChC,GApCc,SAAUmC,GAC5B,OAAO,IAAMA,EAAe,GAAK,GACnC,CAkCSE,CAAcF,GACnB,GACF,GACF,CAEH,EA/CD,G,MCAA,GAAwB,qBAAb9nL,SAAX,CACA,IAkDIioL,EAAkBtC,GACd,IAAI55J,SAAQ,CAACod,EAASkoB,KAC5B,IAAIssH,EAAOmG,EAAoBgC,SAASH,GACpCuC,EAAWpE,EAAoB52F,EAAIywF,EACvC,GAlBmB,EAACA,EAAMuK,KAE3B,IADA,IAAIC,EAAmBnoL,SAAS0mL,qBAAqB,QAC7Cz8J,EAAI,EAAGA,EAAIk+J,EAAiBjxM,OAAQ+yC,IAAK,CAChD,IACIm+J,GADAC,EAAMF,EAAiBl+J,IACR28J,aAAa,cAAgByB,EAAIzB,aAAa,QACjE,GAAe,eAAZyB,EAAIzK,MAAyBwK,IAAazK,GAAQyK,IAAaF,GAAW,OAAOG,CACrF,CACA,IAAIC,EAAoBtoL,SAAS0mL,qBAAqB,SACtD,IAAQz8J,EAAI,EAAGA,EAAIq+J,EAAkBpxM,OAAQ+yC,IAAK,CACjD,IAAIo+J,EAEJ,IADID,GADAC,EAAMC,EAAkBr+J,IACT28J,aAAa,gBAChBjJ,GAAQyK,IAAaF,EAAU,OAAOG,CACvD,GAMIE,CAAe5K,EAAMuK,GAAW,OAAO/+I,IAtDrB,EAACw8I,EAASuC,EAAUM,EAAQr/I,EAASkoB,KAC3D,IAAIo3H,EAAUzoL,SAASwhL,cAAc,QAErCiH,EAAQ7K,IAAM,aACd6K,EAAQtvL,KAAO,WACX2qL,EAAoBgD,KACvB2B,EAAQ7mG,MAAQkiG,EAAoBgD,IAmBrC2B,EAAQ5/G,QAAU4/G,EAAQzB,OAjBJjlM,IAGrB,GADA0mM,EAAQ5/G,QAAU4/G,EAAQzB,OAAS,KAChB,SAAfjlM,EAAMoX,KACTgwC,QACM,CACN,IAAIu/I,EAAY3mM,GAASA,EAAMoX,KAC3BwvL,EAAW5mM,GAASA,EAAMwJ,QAAUxJ,EAAMwJ,OAAOoyL,MAAQuK,EACzD5uM,EAAM,IAAIN,MAAM,qBAAuB2sM,EAAU,cAAgB+C,EAAY,KAAOC,EAAW,KACnGrvM,EAAIgG,KAAO,iBACXhG,EAAIs3C,KAAO,wBACXt3C,EAAI6f,KAAOuvL,EACXpvM,EAAI+iM,QAAUsM,EACVF,EAAQvB,YAAYuB,EAAQvB,WAAWC,YAAYsB,GACvDp3H,EAAO/3E,EACR,GAGDmvM,EAAQ9K,KAAOuK,EAGXM,EACHA,EAAOtB,WAAW0B,aAAaH,EAASD,EAAOK,aAE/C7oL,SAASonL,KAAK1F,YAAY+G,EAEb,EAqBbK,CAAiBnD,EAASuC,EAAU,KAAM/+I,EAASkoB,EAAO,IAIxD03H,EAAqB,CACxB,KAAM,GAGPjF,EAAoBpM,EAAEsR,QAAU,CAACrD,EAASC,KAEtCmD,EAAmBpD,GAAUC,EAASlgM,KAAKqjM,EAAmBpD,IACzB,IAAhCoD,EAAmBpD,IAFX,CAAC,KAAO,EAAE,KAAO,EAAE,KAAO,GAEaA,IACtDC,EAASlgM,KAAKqjM,EAAmBpD,GAAWsC,EAAetC,GAAS9tJ,MAAK,KACxEkxJ,EAAmBpD,GAAW,CAAC,IAC5B5gM,IAEH,aADOgkM,EAAmBpD,GACpB5gM,CAAC,IAET,CA1E0C,C,WCK3C,IAAIkkM,EAAkB,CACrB,KAAM,GAGPnF,EAAoBpM,EAAEoN,EAAI,CAACa,EAASC,KAElC,IAAIsD,EAAqBpF,EAAoB0B,EAAEyD,EAAiBtD,GAAWsD,EAAgBtD,QAAWhnM,EACtG,GAA0B,IAAvBuqM,EAGF,GAAGA,EACFtD,EAASlgM,KAAKwjM,EAAmB,QAC3B,CAGL,IAAI93H,EAAU,IAAIrlC,SAAQ,CAACod,EAASkoB,IAAY63H,EAAqBD,EAAgBtD,GAAW,CAACx8I,EAASkoB,KAC1Gu0H,EAASlgM,KAAKwjM,EAAmB,GAAK93H,GAGtC,IAAI0X,EAAMg7G,EAAoB52F,EAAI42F,EAAoB+B,EAAEF,GAEpD/6L,EAAQ,IAAI5R,MAgBhB8qM,EAAoB7R,EAAEnpG,GAfF/mF,IACnB,GAAG+hM,EAAoB0B,EAAEyD,EAAiBtD,KAEf,KAD1BuD,EAAqBD,EAAgBtD,MACRsD,EAAgBtD,QAAWhnM,GACrDuqM,GAAoB,CACtB,IAAIR,EAAY3mM,IAAyB,SAAfA,EAAMoX,KAAkB,UAAYpX,EAAMoX,MAChE0uL,EAAU9lM,GAASA,EAAMwJ,QAAUxJ,EAAMwJ,OAAOvC,IACpD4B,EAAM+F,QAAU,iBAAmBg1L,EAAU,cAAgB+C,EAAY,KAAOb,EAAU,IAC1Fj9L,EAAMtL,KAAO,iBACbsL,EAAMuO,KAAOuvL,EACb99L,EAAMyxL,QAAUwL,EAChBqB,EAAmB,GAAGt+L,EACvB,CACD,GAEwC,SAAW+6L,EAASA,EAE/D,CACD,EAWF7B,EAAoBU,EAAEM,EAAKa,GAA0C,IAA7BsD,EAAgBtD,GAGxD,IAAIwD,EAAuB,CAACC,EAA4BhgK,KACvD,IAKI26J,EAAU4B,EALVlB,EAAWr7J,EAAK,GAChBigK,EAAcjgK,EAAK,GACnBkgK,EAAUlgK,EAAK,GAGIa,EAAI,EAC3B,GAAGw6J,EAAS7xK,MAAMzoB,GAAgC,IAAxB8+L,EAAgB9+L,KAAa,CACtD,IAAI45L,KAAYsF,EACZvF,EAAoB0B,EAAE6D,EAAatF,KACrCD,EAAoBO,EAAEN,GAAYsF,EAAYtF,IAGhD,GAAGuF,EAAS,IAAIrrM,EAASqrM,EAAQxF,EAClC,CAEA,IADGsF,GAA4BA,EAA2BhgK,GACrDa,EAAIw6J,EAASvtM,OAAQ+yC,IACzB07J,EAAUlB,EAASx6J,GAChB65J,EAAoB0B,EAAEyD,EAAiBtD,IAAYsD,EAAgBtD,IACrEsD,EAAgBtD,GAAS,KAE1BsD,EAAgBtD,GAAW,EAE5B,OAAO7B,EAAoBU,EAAEvmM,EAAO,EAGjCsrM,EAAqBp2H,KAAgC,0BAAIA,KAAgC,2BAAK,GAClGo2H,EAAmBnkM,QAAQ+jM,EAAqBrmI,KAAK,KAAM,IAC3DymI,EAAmB7jM,KAAOyjM,EAAqBrmI,KAAK,KAAMymI,EAAmB7jM,KAAKo9D,KAAKymI,G,KCvFvFzF,EAAoBgD,QAAKnoM,ECGzB,IAAI6qM,EAAsB1F,EAAoBU,OAAE7lM,EAAW,CAAC,KAAK,KAAK,KAAK,MAAM,IAAOmlM,EAAoB,SAC5G0F,EAAsB1F,EAAoBU,EAAEgF,E","sources":["candid/ckBTCMint.did.ts","actor/ckBTC.ts","candid/swap/SwapFactory_update_call.did.ts","actor/swap.ts","assets/images/icons/dialog-close.tsx","components/Copy/index.tsx","components/CurrencySelector/TokenItem.tsx","components/CurrencySelector/BaseToken.tsx","components/CurrencySelector/selector.tsx","components/Image/Avatar.tsx","components/Image/Token.tsx","components/Image/Image.tsx","components/Image/Connector.tsx","components/ImportToken/steps/Tip.tsx","components/ImportToken/steps/Confirm.tsx","components/ImportToken/index.tsx","components/Input/FilledTextField.tsx","components/Loading/Loadable.tsx","assets/images/Maintenance.svg","components/Maintenance.tsx","components/Mui.tsx","components/ReclaimTips.tsx","components/TokenPair.tsx","components/Select/SelectPair.tsx","components/Select/SelectToken.tsx","components/Select/Select.tsx","components/Steps/View.tsx","components/TokenPoolPrice.tsx","components/Wallet/context.ts","components/authentication/ButtonConnector.tsx","components/Loading/Fullscreen.tsx","../../../packages/ui/src/components/Loading/List.tsx","../../../packages/ui/src/components/Loading/Dot.tsx","components/Wrapper/Wrapper.tsx","components/Wrapper/InfoWrapper.tsx","components/ViewMore/index.tsx","components/swap/FindPositions.tsx","components/Input/NumberTextField.tsx","components/Input/NumberFilledTextField.tsx","components/TabPanel/index.tsx","components/CollapseWrapper.tsx","components/switch/index.tsx","components/Button/ImportToNns.tsx","components/AddressFormat.tsx","components/IsSneedOwner.tsx","components/ObserverWrapper.tsx","components/ScrollTop.tsx","components/token/TokenTransferModal.tsx","components/token/TokenStandardLabel.tsx","components/info/InfoLayout.tsx","components/info/nav.config.ts","components/info/InfoNavBar.tsx","components/modal/index.tsx","components/modal/swap.tsx","components/notistack/SnackbarContext.ts","components/notistack/utils/index.ts","components/notistack/utils/defaultIconVariants.tsx","components/notistack/transitions/Transition/types.ts","components/notistack/transitions/Transition/Transition.tsx","components/notistack/transitions/useForkRef.ts","components/notistack/transitions/getTransitionProps.ts","components/notistack/transitions/utils.ts","components/notistack/transitions/createTransition.ts","components/notistack/transitions/document-window.ts","components/notistack/transitions/Slide/Slide.tsx","components/notistack/SnackbarProvider/merger.ts","components/notistack/transitions/getAutoHeightDuration.ts","components/notistack/utils/styles.ts","components/notistack/transitions/Collapse/Collapse.tsx","components/notistack/SnackbarItem/utils.ts","components/notistack/utils/createChainedFunction.ts","components/notistack/utils/useEventCallback.tsx","components/notistack/SnackbarItem/Snackbar.tsx","components/notistack/SnackbarContent/SnackbarContent.tsx","components/notistack/ui/MaterialDesignContent/MaterialDesignContent.tsx","components/notistack/SnackbarItem/SnackbarItem.tsx","components/notistack/SnackbarContainer/SnackbarContainer.tsx","components/notistack/SnackbarProvider/SnackbarProvider.tsx","components/notistack/useSnackbar.ts","components/pagination/index.tsx","constants/canister.ts","constants/ckBTC.ts","constants/ckERC20.ts","constants/icp.ts","constants/types.ts","constants/auth.ts","constants/swap-pro.ts","constants/index.ts","constants/nft.ts","constants/server.ts","constants/mint.ts","constants/swap.ts","constants/tokens.ts","constants/wallet.ts","constants/web3.ts","hooks/ck-bridge/useAllBridgeTokens.ts","hooks/ck-bridge/useTokenBalance.ts","hooks/ck-bridge/useTokenSymbol.ts","hooks/ck-bridge/btc.ts","hooks/useCopySuccess.ts","hooks/staking-token/useStateColors.ts","hooks/staking-token/usePools.ts","hooks/staking-token/useUnusedTokens.ts","hooks/staking-token/index.ts","hooks/swap/useSwapTokenTransfer.ts","hooks/swap/useSwapApprove.ts","hooks/swap/useMultiplePositions.ts","hooks/swap/usePositionValue.ts","hooks/swap/useWithdrawPCMBalance.ts","hooks/swap/useSortedPositions.ts","hooks/swap/useTokenInsufficient.ts","hooks/swap/useSwapPositions.ts","hooks/swap/usePCMBalances.ts","hooks/swap/useSwapTokenFeeCost.ts","hooks/swap/useLiquidityLocksImage.ts","hooks/sns/useSnsTokenInfoByGovernance.ts","hooks/swap/useSwapWithdraw.ts","hooks/swap/useTokenPairWithIcp.ts","hooks/swap/index.ts","hooks/swap/useMaxAmountSpend.ts","hooks/swap/usePoolsMetadata.ts","hooks/swap/usePools.ts","hooks/swap/usePosition.ts","hooks/swap/usePositionFees.ts","hooks/swap/useReclaimCallback.ts","../../../packages/swap-sdk/src/core/utils/sortedInsert.ts","../../../packages/swap-sdk/src/entities/route.ts","../../../packages/swap-sdk/src/entities/trade.ts","hooks/swap/useSwapPools.ts","hooks/swap/useAllCurrencyCombinations.ts","hooks/swap/useAllRoutes.ts","hooks/swap/useTrade.ts","hooks/swap/useUserPositionIds.ts","store/call/hooks.ts","hooks/useCallsData.ts","hooks/swap/v3Calls.ts","hooks/token/calls.ts","hooks/token/useERC20Token.ts","hooks/token/useTokenStandard.ts","hooks/token/useTokenImportToNns.ts","hooks/token/useTokenInSNS.ts","hooks/token/index.ts","hooks/token/useAllowance.ts","hooks/token/useApprove.ts","hooks/token/useSNSTokenRootId.ts","candid/ogy.did.ts","utils/token/adapter.ts","hooks/token/useTokenBalance.ts","../../../packages/utils/src/db/db.ts","hooks/token/useTokenInfo.ts","../../../packages/utils/src/db/storage.ts","constants/db.ts","hooks/token/useTokenLogo.ts","hooks/useCurrency.ts","hooks/useGlobalContext.ts","hooks/useIntervalFetch.ts","hooks/useSneedLedger.ts","hooks/useStepCall.ts","hooks/useTips.ts","hooks/useUSDPrice.ts","hooks/web3/useCurrentBlockTimestamp.ts","hooks/web3/useActiveChain.ts","hooks/web3/useETHBalance.ts","hooks/web3/useWeb3CallsData.ts","hooks/web3/useERC20Balance.ts","hooks/web3/useBlockNumber.ts","../../../packages/constants/src/web3-addresses.ts","hooks/web3/useEthersProvider.ts","hooks/web3/useContract.ts","hooks/web3/useERC20Allowance.ts","hooks/web3/useERC20Approve.ts","hooks/web3/useTokenFromNetwork.ts","i18n/shared.ts","i18n/locales/@types/i18next.ts","i18n/i18n-setup.tsx","i18n/index.ts","i18n/service.ts","serviceWorker.ts","components/GoogleAnalytics/index.tsx","components/RiskStatement/Modal.tsx","components/RiskStatement/index.tsx","constants/zIndex.ts","assets/images/boundary-error.svg","../../../packages/ui/src/components/GlobalTips.tsx","components/Background.tsx","components/Layout/V3Event.tsx","assets/images/logo-dark.svg","assets/images/logo-white.svg","components/Logo.tsx","components/LogoSection/index.tsx","components/Layout/Header/ProfileSection/Address.tsx","components/Layout/Header/ProfileSection/Account.tsx","components/Layout/Header/ProfileSection/Principal.tsx","components/Layout/Header/LogOutSection/Confirm.tsx","components/Layout/Header/LogOutSection/index.tsx","components/Layout/Header/ProfileSection/BalanceAndValue.tsx","components/Layout/Header/ProfileSection/index.tsx",".version.ts","components/Layout/Navbar/config.ts","components/Layout/Navbar/icons/SimpleMode.tsx","components/Layout/Navbar/icons/ProMode.tsx","components/Layout/Navbar/icons/Limit.tsx","components/Layout/Navbar/icons/Twitter.tsx","components/Layout/Navbar/icons/Telegram.tsx","components/Layout/Navbar/icons/DSCVR.tsx","components/Layout/Navbar/icons/Medium.tsx","components/Layout/Navbar/icons/Gitbook.tsx","components/Layout/Navbar/icons/Github.tsx","components/Layout/Navbar/icons/Discord.tsx","components/Layout/Navbar/icons/Website.tsx","components/Layout/Navbar/SubMenuPopper.tsx","components/Layout/Navbar/ExceedRoutesPopper.tsx","components/Layout/Navbar/ExceedRoutes.tsx","components/Layout/Navbar/Routes.tsx","components/Layout/Navbar/index.tsx","assets/images/logo1.svg","assets/images/arrow-down.svg","components/Layout/Navbar/mobile/Routes.tsx","components/Layout/Navbar/mobile/Navbar.tsx","components/Layout/Header/index.tsx","components/Layout/SnsTips.tsx","components/NetworkStateIcon.tsx","components/Layout/SubnetState.tsx","../../../packages/hooks/src/ic/useNodeMachine.ts","../../../packages/hooks/src/ic/useSubnetBlockRate.ts","components/Layout/MainLayout.tsx","components/Layout/Layout.tsx","components/ErrorBoundary/index.tsx","components/authentication/connector.tsx","components/authentication/ConnectorModal.tsx","hooks/token-claim/useAllClaimEvents.ts","hooks/useInitialTokenStandard.ts","components/Loading/GreenCircle.tsx","components/Steps/icons.tsx","components/Steps/Details.tsx","components/Steps/index.tsx","hooks/useActorError.ts","components/Actor/index.tsx","hooks/useActorSubmit.ts","hooks/transactions/retry.ts","hooks/transactions/updater.tsx","store/transactions/updater.tsx","constants/wagmi.ts","components/DisableIframe.tsx","GlobalFetch.tsx","utils/web3/connection/utils.ts","hooks/web3/useConnectors.ts","components/Web3Injector.tsx","hooks/web3/useEagerlyConnect.ts","components/NavigationScroll.tsx","theme/colors.ts","theme/compStyleOverride.ts","theme/palette.ts","theme/typography.ts","theme/index.ts","components/404/index.tsx","routes/config.ts","routes/Auth.tsx","routes/index.tsx","App.tsx","hooks/auth/usePlug.ts","Provider.tsx","utils/dayjs.ts","utils/env.ts","tracing.ts","index.tsx","routes/info.config.ts","store/allCanisters.ts","store/allTokens.ts","store/auth/actions.ts","store/auth/NF_IDConnector.ts","store/auth/hooks.ts","store/call/actions.ts","store/customization/actions.ts","store/global/actions.ts","../../../packages/hooks/src/exchange_rate.ts","../../../packages/hooks/src/icp.ts","store/global/hooks.ts","store/hooks.ts","store/customization/states.ts","store/customization/reducer.ts","store/wallet/states.ts","store/wallet/reducer.ts","constants/locales.ts","store/global/states.ts","store/global/reducer.ts","store/swap/state.ts","store/swap/reducer.ts","store/swap/liquidity/state.ts","store/swap/liquidity/reducer.ts","store/swap/cache/state.ts","store/swap/cache/reducer.ts","store/swap/burn/state.ts","store/swap/burn/reducer.ts","store/nft/states.ts","store/nft/reducer.ts","store/auth/states.ts","store/auth/reducer.ts","store/session/states.ts","store/session/reducer.ts","store/token/cache/states.ts","store/token/cache/reducer.ts","store/call/states.ts","store/call/reducer.ts","store/steps/state.ts","store/steps/reducer.ts","store/sns/states.ts","store/sns/reducer.ts","store/swap/limit-order/state.ts","store/swap/limit-order/reducer.ts","store/web3/states.ts","store/web3/reducer.ts","store/reducer.ts","store/index.ts","store/loadingReducer.ts","store/nft/actions.ts","store/session/actions.ts","store/sns/actions.ts","store/sns/hooks.ts","store/steps/actions.ts","store/steps/hooks.ts","store/swap/actions.ts","store/swap/burn/actions.ts","store/swap/cache/actions.ts","store/swap/cache/hooks.ts","store/swap/hooks.ts","store/swap/limit-order/actions.ts","store/swap/liquidity/actions.ts","store/token/cache/actions.ts","store/token/cache/hooks.ts","store/transactions/hooks.tsx","store/transactions/reducer.ts","store/transactions/types.ts","store/wallet/actions.ts","store/wallet/hooks.ts","store/web3/actions.ts","types/global.ts","types/staking-token.ts","types/swap.ts","constants/connector.ts","utils/connector/internet-identity.ts","utils/connector/stoic.ts","utils/connector/plug.ts","utils/connector/icpswap.ts","utils/connector/infinity.ts","utils/connector/metamask.ts","utils/connector/Oisy.ts","utils/connector/index.ts","utils/connector/me.ts","utils/ic/principalToBytes32.ts","utils/ic/importTokenToNns.ts","utils/index.ts","utils/nft/BaseNFTAdapter.ts","utils/nft/ICPSwapNFTAdapter.ts","utils/nft/NFT.ts","utils/nft/trade/BaseNFTAdapter.ts","utils/nft/trade/ICPSwapNFTTradeAdapter.ts","utils/nft/trade/index.ts","utils/nft/index.ts","utils/stake/state.ts","utils/swap/maxAmountFormat.ts","utils/swap/sortToken.ts","utils/swap/liquidity.ts","utils/swap/mint.ts","utils/swap/index.ts","utils/swap/limit-order.ts","utils/token/index.ts","utils/web3/calculateGasMargin.ts","utils/web3/connection/index.ts","utils/web3/index.ts","../../../packages/candid/src/token-list/TokenList.did.ts","../../../packages/candid/src/token-list/AllTokenOfSwap.did.ts","../../../packages/actor/src/actor.ts","../../../packages/actor/src/BaseActor.ts","../../../packages/actor/src/ActorName.ts","../../../packages/actor/src/token-list/index.ts","../../../packages/actor/src/sns/root.ts","../../../packages/candid/src/sns/wasm.did.ts","../../../packages/actor/src/sns/wasm.ts","../../../packages/candid/src/sns/swap.did.ts","../../../packages/actor/src/sns/swap.ts","../../../packages/candid/src/sns/governance.did.ts","../../../packages/actor/src/sns/governance.ts","../../../packages/candid/src/info/node_index.did.ts","../../../packages/actor/src/info/node_index.ts","../../../packages/candid/src/info/BaseIndex.did.ts","../../../packages/candid/src/info/BaseStorage.did.ts","../../../packages/actor/src/info/base.ts","../../../packages/candid/src/info/GlobalIndex.did.ts","../../../packages/candid/src/info/GlobalStorage.did.ts","../../../packages/candid/src/info/GlobalTVL.did.ts","../../../packages/actor/src/info/global.ts","../../../packages/candid/src/info/PoolStorage.did.ts","../../../packages/actor/src/info/pool.ts","../../../packages/candid/src/info/TokenStorage.did.ts","../../../packages/actor/src/info/token.ts","../../../packages/candid/src/info/UserStorage.did.ts","../../../packages/actor/src/info/user.ts","../../../packages/candid/src/info/PositionTransactionsStorage.did.ts","../../../packages/actor/src/info/positionTransactions.ts","../../../packages/candid/src/icrc/icrc.archive.did.ts","../../../packages/candid/src/icrc/icrc1.did.ts","../../../packages/candid/src/icrc/icrc2.did.ts","../../../packages/actor/src/token/icrc1.ts","../../../packages/candid/src/dip20/xtc.did.ts","../../../packages/candid/src/dip20/dip20.did.ts","../../../packages/candid/src/dip20/dip20_balance.did.ts","../../../packages/candid/src/dip20/dip20_supply.did.ts","../../../packages/actor/src/token/dip20.ts","../../../packages/candid/src/token/token.did.ts","../../../packages/candid/src/token/wicp.did.ts","../../../packages/actor/src/token/ext.ts","../../../packages/candid/src/icp/ledger.did.ts","../../../packages/actor/src/icp/ledger.ts","../../../packages/candid/src/nft/V3NFTCanisterController.did.ts","../../../packages/candid/src/nft/NFTCanister.did.ts","../../../packages/candid/src/nft/V3TradeCanister.did.ts","../../../packages/candid/src/nft/V3TradeStat.did.ts","../../../packages/candid/src/nft/v1NFTCanister.did.ts","../../../packages/candid/src/nft/EXT.did.ts","../../../packages/actor/src/nft/index.ts","../../../packages/candid/src/other/ExchangeRate.did.ts","../../../packages/actor/src/other/exchangeRate.ts","../../../packages/candid/src/chainKeyToken/Minter.did.ts","../../../packages/actor/src/other/chainKeyToken.ts","../../../packages/candid/src/other/LiquidityLocks.did.ts","../../../packages/actor/src/other/liquidityLocks.ts","../../../packages/candid/src/other/Tool.did.ts","../../../packages/actor/src/other/helper.ts","../../../packages/candid/src/swap/PassCodeManager.did.ts","../../../packages/candid/src/swap/LimitTransaction.did.ts","../../../packages/candid/src/swap/SwapNFT.did.ts","../../../packages/candid/src/swap/Factory.did.ts","../../../packages/candid/src/swap/SwapPool.did.ts","../../../packages/candid/src/swap/Position.did.ts","../../../packages/candid/src/swap/PositionCharts.did.ts","../../../packages/actor/src/swap/global.ts","../../../packages/candid/src/swap/TokenAnalysis.did.ts","../../../packages/actor/src/swap/tokenAnalysis.ts","../../../packages/actor/src/swap/index.ts","../../../packages/candid/src/staking-farm/FarmController.did.ts","../../../packages/candid/src/staking-farm/Farm.did.ts","../../../packages/candid/src/staking-farm/FarmIndex.did.ts","../../../packages/actor/src/staking/farm.ts","../../../packages/candid/src/staking-token/StakingPoolController.did.ts","../../../packages/candid/src/staking-token/TokenPool.did.ts","../../../packages/candid/src/staking-token/StakeIndex.did.ts","../../../packages/actor/src/staking/token.ts","../../../packages/candid/src/token-claim/ClaimController.did.ts","../../../packages/candid/src/token-claim/ClaimStorage.did.ts","../../../packages/actor/src/token-claim.ts","../../../packages/candid/src/voting/VoteController.did.ts","../../../packages/candid/src/voting/VoteProjectCanister.did.ts","../../../packages/candid/src/voting/FileCanister.did.ts","../../../packages/actor/src/voting.ts","../../../packages/constants/src/canisterIds.ts","../../../packages/constants/src/chains.ts","../../../packages/constants/src/constants.ts","../../../packages/constants/src/host.ts","../../../packages/constants/src/swap.ts","../../../packages/hooks/src/chainKeyToken/eth.ts","../../../packages/hooks/src/info/node.ts","../../../packages/hooks/src/info/useInfoToken.ts","../../../packages/hooks/src/swap/useSinglePoolMultiPositions.ts","../../../packages/hooks/src/liquidityLocks.ts","../../../packages/hooks/src/sns/useListDeployedSNSs.ts","../../../packages/hooks/src/staking-token/calls.ts","../../../packages/hooks/src/staking-token/storage.ts","../../../packages/hooks/src/swap/calls.ts","../../../packages/hooks/src/swap/useMultiPositionInfos.ts","../../../packages/hooks/src/swap/usePassCode.ts","../../../packages/hooks/src/swap/usePassCodeManager.ts","../../../packages/hooks/src/token-claim/index.ts","../../../packages/hooks/src/token-list/calls.ts","../../../packages/hooks/src/token/useTokenBalance.ts","../../../packages/hooks/src/useCallData.ts","../../../packages/hooks/src/useDebounce.ts","../../../packages/hooks/src/useDebouncedChangeHandler.ts","../../../packages/hooks/src/useInterval.ts","../../../packages/hooks/src/useLimitedInfinityCall.ts","../../../packages/hooks/src/useParsedQueryString.ts","../../../packages/hooks/src/usePromisesAwait.ts","../../../packages/swap-sdk/src/constants.ts","../../../packages/swap-sdk/src/core/constants.ts","../../../packages/swap-sdk/src/core/entities/erc20Token.ts","../../../packages/swap-sdk/src/core/entities/fractions/currencyAmount.ts","../../../packages/swap-sdk/src/core/entities/fractions/fraction.ts","../../../packages/swap-sdk/src/core/entities/fractions/percent.ts","../../../packages/swap-sdk/src/core/entities/fractions/price.ts","../../../packages/swap-sdk/src/core/entities/baseCurrency.ts","../../../packages/swap-sdk/src/core/entities/token.ts","../../../packages/swap-sdk/src/core/utils/validateAndParseAddress.ts","../../../packages/swap-sdk/src/utils/liquidityMath.ts","../../../packages/swap-sdk/src/utils/swapMath.ts","../../../packages/swap-sdk/src/entities/tickDataProvider.ts","../../../packages/swap-sdk/src/utils/tickList.ts","../../../packages/swap-sdk/src/utils/isSorted.ts","../../../packages/swap-sdk/src/entities/tick.ts","../../../packages/swap-sdk/src/entities/tickListDataProvider.ts","../../../packages/swap-sdk/src/entities/pool.ts","../../../packages/swap-sdk/src/utils/computePoolAddress.ts","../../../packages/swap-sdk/src/utils/maxLiquidityForAmounts.ts","../../../packages/swap-sdk/src/entities/position.ts","../../../packages/swap-sdk/src/internalConstants.ts","../../../packages/swap-sdk/src/core/utils/sqrt.ts","../../../packages/swap-sdk/src/utils/encodeSqrtRatioX96.ts","../../../packages/swap-sdk/src/utils/fullMath.ts","../../../packages/swap-sdk/src/utils/nearestUsableTick.ts","../../../packages/swap-sdk/src/utils/priceTickConversions.ts","../../../packages/swap-sdk/src/utils/sqrtPriceMath.ts","../../../packages/swap-sdk/src/utils/mostSignificantBit.ts","../../../packages/swap-sdk/src/utils/tickMath.ts","../../../packages/token-adapter/src/BaseTokenAdapter.ts","../../../packages/token-adapter/src/DIP20Adapter.ts","../../../packages/token-adapter/src/DIP20WICPAdapter.ts","../../../packages/token-adapter/src/DIP20XTCAdapter.ts","../../../packages/token-adapter/src/EXTAdapter.ts","../../../packages/token-adapter/src/ICP.ts","../../../packages/token-adapter/src/ICRC1.ts","../../../packages/token-adapter/src/utils.ts","../../../packages/token-adapter/src/ICRC2.ts","../../../packages/token-adapter/src/index.ts","../../../packages/token-adapter/src/types.ts","../../../packages/tokens/src/wicp.ts","../../../packages/tokens/src/icp.ts","../../../packages/tokens/src/ics.ts","../../../packages/tokens/src/ghost.ts","../../../packages/tokens/src/ckBTC.ts","../../../packages/tokens/src/ckUSDC.ts","../../../packages/tokens/src/erc20/usdc.ts","../../../packages/tokens/src/erc20/link.ts","../../../packages/tokens/src/ckETH.ts","../../../packages/tokens/src/ckLink.ts","../../../packages/tokens/src/bob.ts","../../../packages/tokens/src/ckUSDT.ts","../../../packages/tokens/src/alice.ts","../../../packages/types/src/global.ts","../../../packages/types/src/staking-token.ts","../../../packages/types/src/token.ts","../../../packages/ui/src/components/Breadcrumbs.tsx","../../../packages/ui/src/components/Grid/Flex.tsx","../../../packages/ui/src/components/Image/Image.tsx","../../../packages/ui/src/components/Link.tsx","../../../packages/ui/src/components/Loading/LinearLoader.tsx","../../../packages/ui/src/components/Loading/Loading.tsx","../../../packages/ui/src/components/Loading/LoadingRow.tsx","../../../packages/ui/src/components/Loading/Static.tsx","../../../packages/ui/src/components/MainCard.tsx","../../../packages/ui/src/components/Mui.tsx","../../../packages/ui/src/components/NoData.tsx","../../../packages/ui/src/components/Select/DropDownMenu.tsx","../../../packages/ui/src/components/Select/Panel.tsx","../../../packages/ui/src/components/Select/Select.tsx","../../../packages/ui/src/components/TextButton.tsx","../../../packages/ui/src/assets/icons/SNS.tsx","../../../packages/ui/src/components/TokenImage.tsx","../../../packages/ui/src/components/Tooltip.tsx","../../../packages/ui/src/components/button/MaxButton.tsx","../../../packages/ui/src/components/button/SmallButton.tsx","../../../packages/ui/src/components/info/types.ts","../../../packages/ui/src/components/menu/MenuItem.tsx","../../../packages/ui/src/components/menu/MenuWrapper.tsx","../../../packages/utils/src/availableArgsNull.ts","../../../packages/utils/src/enumToString.ts","../../../packages/utils/src/explorerLink.ts","../../../packages/utils/src/global.ts","../../../packages/utils/src/ic.ts","../../../packages/utils/src/isAvailablePageArgs.ts","../../../packages/utils/src/isBigIntMemo.ts","../../../packages/utils/src/isNullArgs.ts","../../../packages/utils/src/isPrincipal.ts","../../../packages/utils/src/isValidAccount.ts","../../../packages/utils/src/isValidPrincipal.ts","../../../packages/utils/src/mockALink.ts","../../../packages/utils/src/number.ts","../../../packages/utils/src/numberToString.ts","../../../packages/utils/src/pageArgsFormat.ts","../../../packages/utils/src/principal.ts","../../../packages/utils/src/resultFormat.ts","../../../packages/utils/src/shorten.ts","../../../packages/utils/src/toSignificant.ts","../../../packages/utils/src/tokenAmount.ts","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/chunk loaded","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/compat","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../webpack/startup"],"sourcesContent":["export const idlFactory = ({ IDL }: any) => {\n const Mode = IDL.Variant({\n RestrictedTo: IDL.Vec(IDL.Principal),\n DepositsRestrictedTo: IDL.Vec(IDL.Principal),\n ReadOnly: IDL.Null,\n GeneralAvailability: IDL.Null,\n });\n const UpgradeArgs = IDL.Record({\n kyt_principal: IDL.Opt(IDL.Principal),\n mode: IDL.Opt(Mode),\n retrieve_btc_min_amount: IDL.Opt(IDL.Nat64),\n max_time_in_queue_nanos: IDL.Opt(IDL.Nat64),\n min_confirmations: IDL.Opt(IDL.Nat32),\n kyt_fee: IDL.Opt(IDL.Nat64),\n });\n const BtcNetwork = IDL.Variant({\n Mainnet: IDL.Null,\n Regtest: IDL.Null,\n Testnet: IDL.Null,\n });\n const InitArgs = IDL.Record({\n kyt_principal: IDL.Opt(IDL.Principal),\n ecdsa_key_name: IDL.Text,\n mode: Mode,\n retrieve_btc_min_amount: IDL.Nat64,\n ledger_id: IDL.Principal,\n max_time_in_queue_nanos: IDL.Nat64,\n btc_network: BtcNetwork,\n min_confirmations: IDL.Opt(IDL.Nat32),\n kyt_fee: IDL.Opt(IDL.Nat64),\n });\n const MinterArg = IDL.Variant({\n Upgrade: IDL.Opt(UpgradeArgs),\n Init: InitArgs,\n });\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const Utxo = IDL.Record({\n height: IDL.Nat32,\n value: IDL.Nat64,\n outpoint: IDL.Record({ txid: IDL.Vec(IDL.Nat8), vout: IDL.Nat32 }),\n });\n const ReimbursementReason = IDL.Variant({\n CallFailed: IDL.Null,\n TaintedDestination: IDL.Record({\n kyt_fee: IDL.Nat64,\n kyt_provider: IDL.Principal,\n }),\n });\n const BitcoinAddress = IDL.Variant({\n p2wsh_v0: IDL.Vec(IDL.Nat8),\n p2tr_v1: IDL.Vec(IDL.Nat8),\n p2sh: IDL.Vec(IDL.Nat8),\n p2wpkh_v0: IDL.Vec(IDL.Nat8),\n p2pkh: IDL.Vec(IDL.Nat8),\n });\n const Event = IDL.Variant({\n received_utxos: IDL.Record({\n to_account: Account,\n mint_txid: IDL.Opt(IDL.Nat64),\n utxos: IDL.Vec(Utxo),\n }),\n schedule_deposit_reimbursement: IDL.Record({\n burn_block_index: IDL.Nat64,\n account: Account,\n amount: IDL.Nat64,\n reason: ReimbursementReason,\n }),\n sent_transaction: IDL.Record({\n fee: IDL.Opt(IDL.Nat64),\n change_output: IDL.Opt(IDL.Record({ value: IDL.Nat64, vout: IDL.Nat32 })),\n txid: IDL.Vec(IDL.Nat8),\n utxos: IDL.Vec(Utxo),\n requests: IDL.Vec(IDL.Nat64),\n submitted_at: IDL.Nat64,\n }),\n distributed_kyt_fee: IDL.Record({\n block_index: IDL.Nat64,\n amount: IDL.Nat64,\n kyt_provider: IDL.Principal,\n }),\n init: InitArgs,\n upgrade: UpgradeArgs,\n retrieve_btc_kyt_failed: IDL.Record({\n block_index: IDL.Nat64,\n owner: IDL.Principal,\n uuid: IDL.Text,\n address: IDL.Text,\n amount: IDL.Nat64,\n kyt_provider: IDL.Principal,\n }),\n accepted_retrieve_btc_request: IDL.Record({\n received_at: IDL.Nat64,\n block_index: IDL.Nat64,\n address: BitcoinAddress,\n amount: IDL.Nat64,\n kyt_provider: IDL.Opt(IDL.Principal),\n }),\n checked_utxo: IDL.Record({\n clean: IDL.Bool,\n utxo: Utxo,\n uuid: IDL.Text,\n kyt_provider: IDL.Opt(IDL.Principal),\n }),\n removed_retrieve_btc_request: IDL.Record({ block_index: IDL.Nat64 }),\n confirmed_transaction: IDL.Record({ txid: IDL.Vec(IDL.Nat8) }),\n replaced_transaction: IDL.Record({\n fee: IDL.Nat64,\n change_output: IDL.Record({ value: IDL.Nat64, vout: IDL.Nat32 }),\n old_txid: IDL.Vec(IDL.Nat8),\n new_txid: IDL.Vec(IDL.Nat8),\n submitted_at: IDL.Nat64,\n }),\n ignored_utxo: IDL.Record({ utxo: Utxo }),\n reimbursed_failed_deposit: IDL.Record({\n burn_block_index: IDL.Nat64,\n mint_block_index: IDL.Nat64,\n }),\n });\n const MinterInfo = IDL.Record({\n retrieve_btc_min_amount: IDL.Nat64,\n min_confirmations: IDL.Nat32,\n kyt_fee: IDL.Nat64,\n });\n const RetrieveBtcArgs = IDL.Record({\n address: IDL.Text,\n amount: IDL.Nat64,\n });\n const RetrieveBtcOk = IDL.Record({ block_index: IDL.Nat64 });\n const RetrieveBtcError = IDL.Variant({\n MalformedAddress: IDL.Text,\n GenericError: IDL.Record({\n error_message: IDL.Text,\n error_code: IDL.Nat64,\n }),\n TemporarilyUnavailable: IDL.Text,\n AlreadyProcessing: IDL.Null,\n AmountTooLow: IDL.Nat64,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat64 }),\n });\n const RetrieveBtcStatus = IDL.Variant({\n Signing: IDL.Null,\n Confirmed: IDL.Record({ txid: IDL.Vec(IDL.Nat8) }),\n Sending: IDL.Record({ txid: IDL.Vec(IDL.Nat8) }),\n AmountTooLow: IDL.Null,\n Unknown: IDL.Null,\n Submitted: IDL.Record({ txid: IDL.Vec(IDL.Nat8) }),\n Pending: IDL.Null,\n });\n const RetrieveBtcWithApprovalArgs = IDL.Record({\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n address: IDL.Text,\n amount: IDL.Nat64,\n });\n const RetrieveBtcWithApprovalError = IDL.Variant({\n MalformedAddress: IDL.Text,\n GenericError: IDL.Record({\n error_message: IDL.Text,\n error_code: IDL.Nat64,\n }),\n TemporarilyUnavailable: IDL.Text,\n InsufficientAllowance: IDL.Record({ allowance: IDL.Nat64 }),\n AlreadyProcessing: IDL.Null,\n AmountTooLow: IDL.Nat64,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat64 }),\n });\n const UtxoStatus = IDL.Variant({\n ValueTooSmall: Utxo,\n Tainted: Utxo,\n Minted: IDL.Record({\n minted_amount: IDL.Nat64,\n block_index: IDL.Nat64,\n utxo: Utxo,\n }),\n Checked: Utxo,\n });\n const UpdateBalanceError = IDL.Variant({\n GenericError: IDL.Record({\n error_message: IDL.Text,\n error_code: IDL.Nat64,\n }),\n TemporarilyUnavailable: IDL.Text,\n AlreadyProcessing: IDL.Null,\n NoNewUtxos: IDL.Record({\n required_confirmations: IDL.Nat32,\n current_confirmations: IDL.Opt(IDL.Nat32),\n }),\n });\n return IDL.Service({\n estimate_withdrawal_fee: IDL.Func(\n [IDL.Record({ amount: IDL.Opt(IDL.Nat64) })],\n [IDL.Record({ minter_fee: IDL.Nat64, bitcoin_fee: IDL.Nat64 })],\n [\"query\"],\n ),\n get_btc_address: IDL.Func(\n [\n IDL.Record({\n owner: IDL.Opt(IDL.Principal),\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n }),\n ],\n [IDL.Text],\n [],\n ),\n get_deposit_fee: IDL.Func([], [IDL.Nat64], [\"query\"]),\n get_events: IDL.Func([IDL.Record({ start: IDL.Nat64, length: IDL.Nat64 })], [IDL.Vec(Event)], [\"query\"]),\n get_minter_info: IDL.Func([], [MinterInfo], [\"query\"]),\n get_withdrawal_account: IDL.Func([], [Account], []),\n retrieve_btc: IDL.Func([RetrieveBtcArgs], [IDL.Variant({ Ok: RetrieveBtcOk, Err: RetrieveBtcError })], []),\n retrieve_btc_status: IDL.Func([IDL.Record({ block_index: IDL.Nat64 })], [RetrieveBtcStatus], [\"query\"]),\n retrieve_btc_with_approval: IDL.Func(\n [RetrieveBtcWithApprovalArgs],\n [\n IDL.Variant({\n Ok: RetrieveBtcOk,\n Err: RetrieveBtcWithApprovalError,\n }),\n ],\n [],\n ),\n update_balance: IDL.Func(\n [\n IDL.Record({\n owner: IDL.Opt(IDL.Principal),\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n }),\n ],\n [\n IDL.Variant({\n Ok: IDL.Vec(UtxoStatus),\n Err: UpdateBalanceError,\n }),\n ],\n [],\n ),\n });\n};\n","import { actor, icrc2 } from \"@icpswap/actor\";\nimport { type ActorIdentity } from \"@icpswap/types\";\nimport { ckBTC_MINTER_ID, ckBTC_ID } from \"constants/ckBTC\";\nimport { _SERVICE } from \"candid/ckBTCMint\";\nimport { idlFactory } from \"candid/ckBTCMint.did\";\n\nexport const ckBtcMinter = (identity?: ActorIdentity) =>\n actor.create<_SERVICE>({\n canisterId: ckBTC_MINTER_ID,\n identity,\n idlFactory,\n });\n\nexport const ckBTCActor = async (identity?: ActorIdentity) => await icrc2(ckBTC_ID, identity);\n","export const idlFactory = ({ IDL }: any) => {\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const CreatePoolArgs = IDL.Record({\n fee: IDL.Nat,\n sqrtPriceX96: IDL.Text,\n token0: Token,\n token1: Token,\n });\n const PoolData = IDL.Record({\n fee: IDL.Nat,\n key: IDL.Text,\n tickSpacing: IDL.Int,\n token0: Token,\n token1: Token,\n canisterId: IDL.Principal,\n });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_1 = IDL.Variant({ ok: PoolData, err: Error });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_2 = IDL.Variant({ ok: CycleInfo, err: Error });\n const GetPoolArgs = IDL.Record({\n fee: IDL.Nat,\n token0: Token,\n token1: Token,\n });\n const Result = IDL.Variant({ ok: IDL.Vec(PoolData), err: Error });\n const SwapFactory = IDL.Service({\n createPool: IDL.Func([CreatePoolArgs], [Result_1], []),\n deletePool: IDL.Func([IDL.Text], [], []),\n getAccessControlState: IDL.Func(\n [],\n [\n IDL.Record({\n owners: IDL.Vec(IDL.Principal),\n clients: IDL.Vec(IDL.Principal),\n }),\n ],\n [],\n ),\n getAvailabilityState: IDL.Func(\n [],\n [\n IDL.Record({\n whiteList: IDL.Vec(IDL.Principal),\n available: IDL.Bool,\n }),\n ],\n [],\n ),\n getCycleInfo: IDL.Func([], [Result_2], []),\n getPool: IDL.Func([GetPoolArgs], [Result_1], []),\n getPools: IDL.Func([], [Result], [\"query\"]),\n getRemovedPools: IDL.Func([], [Result], [\"query\"]),\n removePool: IDL.Func([GetPoolArgs], [], []),\n setAvailable: IDL.Func([IDL.Bool], [], []),\n setClients: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setOwnerToPool: IDL.Func([IDL.Text, IDL.Vec(IDL.Principal)], [], []),\n setOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setWhiteList: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n });\n return SwapFactory;\n};\n","import { actor, ActorName } from \"@icpswap/actor\";\n\nimport { _SERVICE as SwapFactory_update_call } from \"candid/swap/SwapFactory_update_call\";\nimport { idlFactory as SwapFactoryInterfaceFactory_update_call } from \"candid/swap/SwapFactory_update_call.did\";\n\nexport const swapFactory_update_call = () =>\n actor.create({\n actorName: ActorName.SwapFactory,\n idlFactory: SwapFactoryInterfaceFactory_update_call,\n });\n","import { SvgIcon, SvgIconProps } from \"components/Mui\";\n\nexport default function DialogCloseIcon(props: SvgIconProps) {\n return (\n \n \n \n \n );\n}\n","import copyToClipboard from \"copy-to-clipboard\";\nimport { ReactNode, forwardRef, useImperativeHandle, Ref } from \"react\";\nimport { Box, makeStyles } from \"components/Mui\";\n\nimport { useTips, TIP_SUCCESS } from \"../../hooks/useTips\";\n\nconst useStyles = makeStyles({\n copy: {\n display: \"inline-block\",\n cursor: \"pointer\",\n height: \"fit-content\",\n },\n});\n\nexport interface CopyRef {\n copy: () => void;\n}\n\nexport default forwardRef(\n (\n { content, children, hide = false }: { content: string; children?: ReactNode; hide?: boolean },\n ref: Ref,\n ) => {\n const classes = useStyles();\n const [openTips] = useTips();\n\n const copy = () => {\n copyToClipboard(content);\n openTips(\"Copy Success\", TIP_SUCCESS);\n };\n\n useImperativeHandle(\n ref,\n () => ({\n copy,\n }),\n [copy],\n );\n\n return hide ? null : (\n \n {children}\n \n );\n },\n);\n","import React, { useMemo, useEffect } from \"react\";\nimport { useTheme, Typography, Box, Grid, useMediaQuery } from \"components/Mui\";\nimport { useTokenBalance } from \"hooks/token/useTokenBalance\";\nimport { DotLoading, TokenImage, TokenStandardLabel } from \"components/index\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { useUSDPriceById } from \"hooks/useUSDPrice\";\nimport {\n parseTokenAmount,\n formatDollarAmount,\n BigNumber,\n isValidPrincipal,\n formatAmount,\n nonNullArgs,\n} from \"@icpswap/utils\";\nimport { PlusCircle } from \"react-feather\";\nimport { useTaggedTokenManager } from \"store/wallet/hooks\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { useToken } from \"hooks/index\";\nimport { TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport interface TokenItemProps {\n canisterId: string;\n onClick?: (token: Token) => void;\n onUpdateTokenAdditional?: (tokenId: string, balance: string) => void;\n searchWord?: string;\n showBalance?: boolean;\n onTokenHide: (canisterId: string, hidden: boolean) => void;\n isActive?: boolean;\n isDisabled?: boolean;\n hidden?: boolean;\n}\n\nexport function TokenItem({\n canisterId,\n onClick,\n onUpdateTokenAdditional,\n searchWord,\n showBalance,\n onTokenHide,\n isActive,\n isDisabled,\n hidden,\n}: TokenItemProps) {\n const theme = useTheme();\n const principal = useAccountPrincipal();\n const matchDownSM = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n const getBalanceId = useMemo(() => {\n if (showBalance) return canisterId;\n return undefined;\n }, [showBalance, canisterId]);\n\n const [, token] = useToken(canisterId);\n const { result: balance, loading } = useTokenBalance(getBalanceId, principal);\n const interfacePrice = useUSDPriceById(getBalanceId);\n\n const { taggedTokens, updateTaggedTokens, deleteTaggedTokens } = useTaggedTokenManager();\n\n const tokenBalanceAmount = useMemo(() => {\n if (!token || balance === undefined) return undefined;\n return parseTokenAmount(balance, token.decimals).toString();\n }, [token, balance]);\n\n const handleItemClick = () => {\n if (!token) return;\n if (onClick) onClick(token);\n };\n\n useEffect(() => {\n if (canisterId && balance) {\n if (onUpdateTokenAdditional) onUpdateTokenAdditional(canisterId, balance.toString());\n }\n }, [canisterId, balance]);\n\n const isTagged = taggedTokens.includes(canisterId);\n\n const handleAddToCache = (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (isTagged) {\n deleteTaggedTokens([canisterId]);\n } else {\n updateTaggedTokens([canisterId]);\n }\n };\n\n const isHidden = useMemo(() => {\n if (hidden) return true;\n if (!searchWord) return false;\n if (!token) return true;\n\n if (isValidPrincipal(searchWord)) {\n return token?.address !== searchWord;\n }\n\n return (\n !token.symbol.toLocaleLowerCase().includes(searchWord.toLocaleLowerCase()) &&\n !token.name.toLocaleLowerCase().includes(searchWord.toLocaleLowerCase())\n );\n }, [searchWord, token, hidden]);\n\n useEffect(() => {\n if (onTokenHide && canisterId) {\n onTokenHide(canisterId, isHidden);\n }\n }, [isHidden, canisterId, onTokenHide]);\n\n return (\n \n \n \n \n\n \n \n \n \n {token?.symbol}\n \n \n {token?.name}\n \n \n \n \n \n \n\n \n \n \n\n \n \n {!showBalance ? null : loading ? (\n \n ) : (\n \n \n {tokenBalanceAmount ? formatAmount(tokenBalanceAmount) : \"--\"}\n \n \n {nonNullArgs(interfacePrice) && nonNullArgs(balance) && nonNullArgs(token)\n ? formatDollarAmount(\n new BigNumber(interfacePrice).multipliedBy(parseTokenAmount(balance, token.decimals)).toString(),\n )\n : \"--\"}\n \n \n )}\n\n {showBalance || isTagged ? null : (\n \n )}\n \n \n \n );\n}\n","import { Flex, TokenImage } from \"components/index\";\nimport { useTheme, Typography } from \"components/Mui\";\nimport { ICP, ICS, ckBTC, ckETH, ckUSDC, ckUSDT, BOB, ALICE } from \"@icpswap/tokens\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { useCallback } from \"react\";\n\nconst BASE_TOKENS = [ICP, ICS, ckUSDC, ckBTC, ckETH, ckUSDT, BOB, ALICE];\n\nexport interface BaseTokenProps {\n token: Token;\n onTokenClick: (token: Token) => void;\n}\n\nexport function BaseToken({ token, onTokenClick }: BaseTokenProps) {\n const theme = useTheme();\n\n const handleClick = useCallback(() => {\n if (token) {\n onTokenClick(token);\n }\n }, [onTokenClick, token]);\n\n return (\n \n \n \n {token.symbol}\n \n \n );\n}\n\nexport interface BaseTokensProps {\n onTokenClick: (token: Token) => void;\n}\n\nexport function BaseTokens({ onTokenClick }: BaseTokensProps) {\n return (\n \n {BASE_TOKENS.map((base_token) => (\n \n ))}\n \n );\n}\n","import { useState, useCallback, useMemo } from \"react\";\nimport SwapModal from \"components/modal/swap\";\nimport { InputAdornment, useTheme, Typography, Box, useMediaQuery, makeStyles } from \"components/Mui\";\nimport { useGlobalTokenList } from \"store/global/hooks\";\nimport { isDarkTheme } from \"utils/index\";\nimport { FilledTextField, NoData } from \"components/index\";\nimport { isValidPrincipal } from \"@icpswap/utils\";\nimport { Search as SearchIcon } from \"react-feather\";\nimport { DEFAULT_DISPLAYED_TOKENS } from \"constants/wallet\";\nimport { useFetchSnsAllTokensInfo } from \"store/sns/hooks\";\nimport { TokenListMetadata } from \"types/token-list\";\nimport { useTaggedTokenManager } from \"store/wallet/hooks\";\nimport { ImportToken } from \"components/ImportToken/index\";\nimport { useDebouncedChangeHandler } from \"@icpswap/hooks\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { TokenItem } from \"./TokenItem\";\nimport { BaseTokens } from \"./BaseToken\";\n\nconst useStyles = makeStyles(() => {\n return {\n wrapper: {\n padding: \"0 24px\",\n \"@media(max-width: 640px)\": {\n padding: \"0 16px\",\n },\n },\n };\n});\n\nexport interface SelectorProps {\n open: boolean;\n onChange: (token: Token) => void;\n onClose: () => void;\n disabledCurrencyIds?: string[];\n activeCurrencyIds?: string[];\n}\n\nexport default function Selector({\n open,\n onChange,\n onClose,\n disabledCurrencyIds = [],\n activeCurrencyIds = [],\n}: SelectorProps) {\n const { t } = useTranslation();\n const theme = useTheme();\n const isDark = isDarkTheme(theme);\n const classes = useStyles();\n\n const matchDownSM = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const [searchKeyword, setSearchKeyword] = useState(\"\");\n const [importTokenCanceled, setImportTokenCanceled] = useState(false);\n const [hiddenCanisterIds, setHiddenCanisterIds] = useState([]);\n\n const { result: snsAllTokensInfo } = useFetchSnsAllTokensInfo();\n const globalTokenList = useGlobalTokenList();\n\n const { taggedTokens } = useTaggedTokenManager();\n\n const yourTokens: string[] = useMemo(() => {\n return [...new Set(DEFAULT_DISPLAYED_TOKENS.map((e) => e.address).concat(taggedTokens))];\n }, [DEFAULT_DISPLAYED_TOKENS, taggedTokens]);\n\n const { snsTokens, noneSnsTokens } = useMemo(() => {\n if (!snsAllTokensInfo) return {};\n\n const snsTokens: TokenListMetadata[] = [];\n const noneSnsTokens: TokenListMetadata[] = [];\n\n globalTokenList\n .filter((token) => {\n return !yourTokens.includes(token.canisterId);\n })\n .forEach((token) => {\n const snsTokenInfo = snsAllTokensInfo.find((e) => e.canister_ids.ledger_canister_id === token.canisterId);\n\n if (snsTokenInfo?.canister_ids.root_canister_id) {\n snsTokens.push(token);\n } else {\n noneSnsTokens.push(token);\n }\n });\n\n return { snsTokens: snsTokens.map((e) => e.canisterId), noneSnsTokens: noneSnsTokens.map((e) => e.canisterId) };\n }, [globalTokenList, yourTokens, snsAllTokensInfo]);\n\n const handleTokenClick = useCallback(\n (token: Token) => {\n if (disabledCurrencyIds.includes(token?.address.toString())) return;\n if (onChange) onChange(token);\n },\n [disabledCurrencyIds],\n );\n\n const handleSearchToken = useCallback((value: string) => {\n setImportTokenCanceled(false);\n setSearchKeyword(value);\n }, []);\n\n const [, debouncedSearch] = useDebouncedChangeHandler(searchKeyword, handleSearchToken, 300);\n\n const showImportToken = useMemo(() => {\n if (!searchKeyword || !yourTokens || !noneSnsTokens || !snsTokens) return false;\n\n if (isValidPrincipal(searchKeyword)) {\n return !yourTokens.concat(noneSnsTokens).concat(snsTokens).includes(searchKeyword);\n }\n\n return false;\n }, [searchKeyword, yourTokens, noneSnsTokens, snsTokens]);\n\n const handleTokenHidden = (canisterId: string, hidden: boolean) => {\n const index = hiddenCanisterIds.indexOf(canisterId);\n\n if (index !== -1) {\n if (!hidden) {\n setHiddenCanisterIds((prevState) => {\n const newCanisterIds = [...prevState];\n newCanisterIds.splice(index, 1);\n return [...newCanisterIds];\n });\n }\n return;\n }\n\n if (hidden) {\n setHiddenCanisterIds((prevState) => {\n const newCanisterIds = [...prevState, canisterId];\n return [...newCanisterIds];\n });\n }\n };\n\n const allTokenCanisterIds = useMemo(() => {\n return [...new Set([...yourTokens, ...(snsTokens ?? []), ...(noneSnsTokens ?? [])])];\n }, [yourTokens, snsTokens, noneSnsTokens]);\n\n const noData = useMemo(() => {\n return hiddenCanisterIds.length === allTokenCanisterIds.length && showImportToken === false;\n }, [hiddenCanisterIds, allTokenCanisterIds, showImportToken]);\n\n return (\n <>\n \n \n \n \n {t(\"common.disclaimer.descriptions\")}\n \n \n\n \n \n \n \n ),\n maxLength: 50,\n },\n },\n }}\n onChange={debouncedSearch}\n />\n \n\n \n\n \n\n \n {noData ? : null}\n\n {showImportToken && searchKeyword && isValidPrincipal(searchKeyword) && !importTokenCanceled ? (\n \n setImportTokenCanceled(true)} />\n \n ) : null}\n\n \n {searchKeyword ? null : (\n \n {t(\"swap.currency.selector.your.tokens\")}\n \n )}\n\n \n {(yourTokens ?? []).map((tokenId) => (\n \n ))}\n \n \n\n \n {searchKeyword || (snsTokens ?? []).concat(noneSnsTokens ?? []).length === 0 ? null : (\n \n {t(\"common.token.list\")}\n \n )}\n\n \n {searchKeyword || (snsTokens ?? []).length === 0 ? null : (\n \n {t(\"common.sns.tokens\")}\n \n )}\n\n \n {(snsTokens ?? []).map((tokenId) => (\n \n ))}\n \n \n\n \n {searchKeyword || (noneSnsTokens ?? []).length === 0 ? null : (\n \n {t(\"common.other.tokens\")}\n \n )}\n\n \n {(noneSnsTokens ?? []).map((tokenId) => (\n \n ))}\n \n \n \n \n \n \n \n );\n}\n","import { Avatar, AvatarProps } from \"components/Mui\";\n\nexport default function AvatarImage(props: AvatarProps) {\n return (\n \n  \n \n );\n}\n","import { TokenImage as UITokenImage } from \"@icpswap/ui\";\nimport { useSNSTokenRootId } from \"hooks/token/useSNSTokenRootId\";\nimport { BoxProps } from \"components/Mui\";\nimport { Null } from \"@icpswap/types\";\n\nexport interface TokenImageProps {\n logo: string | undefined;\n size?: string;\n tokenId?: string | Null;\n sx?: BoxProps[\"sx\"];\n}\n\nexport function TokenImage({ tokenId, logo, sx, size = \"28px\" }: TokenImageProps) {\n const root_canister_id = useSNSTokenRootId(tokenId);\n\n return ;\n}\n","import { Avatar, AvatarProps } from \"components/Mui\";\n\nexport function Image(props: AvatarProps) {\n return (\n \n  \n \n );\n}\n","import { useMemo } from \"react\";\nimport { ConnectorConfigs } from \"constants/wallet\";\nimport { useConnector } from \"store/auth/hooks\";\n\nimport { Image } from \"./Image\";\n\nexport interface ConnectorImageProps {\n size?: string;\n}\n\nexport function ConnectorImage({ size = \"20px\" }: ConnectorImageProps) {\n const connector = useConnector();\n\n const imageUrl = useMemo(() => {\n if (!connector) return null;\n return ConnectorConfigs.find((e) => e.value === connector)?.logo;\n }, [connector]);\n\n return connector && imageUrl ? : null;\n}\n","import { useTheme, Typography, Box, makeStyles, Theme, CircularProgress } from \"components/Mui\";\nimport { useCallback, useState } from \"react\";\nimport { getTokenStandard } from \"hooks/token/index\";\nimport { isNullArgs } from \"@icpswap/utils\";\nimport { useUpdateTokenStandard } from \"store/token/cache/hooks\";\nimport { registerTokens } from \"@icpswap/token-adapter\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n button: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"140px\",\n height: \"40px\",\n borderRadius: \"8px\",\n background: theme.palette.background.level1,\n cursor: \"pointer\",\n },\n };\n});\n\nexport interface ImportTokenTipProps {\n onOk: () => void;\n onNo: () => void;\n canisterId: string;\n}\n\nexport function ImportTokenTip({ canisterId, onOk }: ImportTokenTipProps) {\n const { t } = useTranslation();\n const theme = useTheme();\n const classes = useStyles();\n const updateTokenStandard = useUpdateTokenStandard();\n\n const [noStandard, setNoStandard] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const handleImport = useCallback(async () => {\n if (loading) return;\n setLoading(true);\n const standard = await getTokenStandard({ canisterId });\n\n if (isNullArgs(standard)) {\n setNoStandard(true);\n } else {\n updateTokenStandard([{ canisterId, standard }]);\n registerTokens([{ canisterId, standard }]);\n onOk();\n }\n setLoading(false);\n }, [canisterId, updateTokenStandard, loading]);\n\n return (\n \n {t(\"token.not.found\")}\n\n {noStandard ? (\n \n {t(\"token.no.standard\")}\n \n ) : null}\n\n \n \n \n {t(\"common.yes\")}\n \n {loading ? : null}\n \n \n \n );\n}\n","import { useState } from \"react\";\nimport { Button, Box, Typography, Checkbox, Avatar, useTheme } from \"components/Mui\";\nimport { Modal, TextButton, TokenStandardLabel } from \"components/index\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport { useSuccessTip } from \"hooks/useTips\";\nimport { INFO_URL } from \"constants/index\";\nimport { useTaggedTokenManager } from \"store/wallet/hooks\";\nimport { useToken } from \"hooks/index\";\nimport { Flex } from \"@icpswap/ui\";\nimport { useTranslation } from \"react-i18next\";\n\nexport function WarningIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport interface ImportTokenModalProps {\n open: boolean;\n canisterId: string;\n onClose: () => void;\n onImportSuccessfully?: () => void;\n}\n\nexport function ConfirmImport({ canisterId, open, onClose, onImportSuccessfully }: ImportTokenModalProps) {\n const { t } = useTranslation();\n const theme = useTheme();\n const [riskWarning, setRiskWarning] = useState(false);\n\n const { updateTaggedTokens } = useTaggedTokenManager();\n const [openSuccessTip] = useSuccessTip();\n\n const [, token] = useToken(canisterId);\n\n const handleConfirm = () => {\n if (!token) return;\n\n openSuccessTip(t`Imported successfully`);\n updateTaggedTokens([canisterId]);\n if (onImportSuccessfully) onImportSuccessfully();\n onClose();\n };\n\n let error = \"\";\n if (!getTokenStandard(canisterId)) error = t`No token standard.`;\n\n return (\n \n \n \n \n  \n \n\n \n \n {token?.symbol}({token?.name})\n \n \n {canisterId}\n \n\n \n \n \n\n \n \n {t(\"common.view.info\")}\n \n \n \n \n\n \n \n \n \n \n \n {t(\"common.tokens.waring\")}\n \n\n \n {t(\"common.tokens.waring1\")}\n \n \n \n\n \n {\n setRiskWarning(checked);\n }}\n sx={{\n padding: \"0\",\n }}\n />\n\n setRiskWarning(!riskWarning)}>\n {t(\"common.token.risk.agree\")}\n \n \n \n\n \n \n \n \n );\n}\n","import { useState } from \"react\";\n\nimport { ImportTokenTip } from \"./steps/Tip\";\nimport { ConfirmImport } from \"./steps/Confirm\";\n\nexport interface ImportTokenProps {\n canisterId: string;\n onCancel: () => void;\n onImportSuccessfully?: () => void;\n}\n\nexport function ImportToken({ canisterId, onCancel, onImportSuccessfully }: ImportTokenProps) {\n const [step, setStep] = useState(0);\n\n return (\n <>\n {step === 0 ? setStep(1)} onNo={onCancel} /> : null}\n {step === 1 ? (\n setStep(0)}\n onImportSuccessfully={onImportSuccessfully}\n />\n ) : null}\n \n );\n}\n","import React, { useEffect, useState, useRef, forwardRef, useImperativeHandle } from \"react\";\nimport { TextField, Typography, Box, Menu, MenuItem, makeStyles, Theme, TextFieldProps } from \"components/Mui\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport { Flex, NoData } from \"@icpswap/ui\";\n\ninterface UseStylesProps {\n contained: boolean;\n fullHeight?: boolean;\n borderRadius: string;\n border?: string | boolean;\n multiline?: boolean;\n background?: string | \"level3\";\n inputPadding?: string;\n}\n\nconst useStyles = ({\n inputPadding,\n contained,\n background,\n fullHeight,\n multiline,\n borderRadius,\n border,\n}: UseStylesProps) => {\n return makeStyles((theme: Theme) => {\n return {\n inputBox: {\n display: \"flex\",\n alignItems: \"center\",\n border: contained\n ? border ?? theme.palette.border.normal\n : border === true\n ? theme.palette.border.normal\n : border === \"border0\"\n ? theme.palette.border.border0\n : \"none\",\n background: background\n ? background === \"level3\"\n ? theme.palette.background.level3\n : background\n : theme.palette.background.level4,\n borderRadius,\n padding: inputPadding ?? (contained ? `7px 12px` : \"3px 12px\"),\n gap: \"0 5px\",\n height: contained || multiline ? \"auto\" : fullHeight ? \"100%\" : \"48px\",\n ...(multiline ? { minHeight: \"48px\" } : {}),\n margin: \"0px\",\n \"@media(max-width: 640px)\": {\n padding: inputPadding ?? contained ? `4px 6px` : \"0 16px\",\n },\n \"& input\": {\n color: theme.palette.text.primary,\n },\n \"&:hover\": {\n borderColor: \"#ffffff\",\n },\n },\n };\n });\n};\n\nexport type FilledTextFiledMenus = {\n label: string;\n value: any;\n};\n\nexport interface FilledTextFieldProps {\n value?: any;\n select?: boolean;\n onChange?: (value: any) => void;\n onFocus?: () => void;\n menus?: FilledTextFiledMenus[];\n maxWidth?: number;\n fullHeight?: boolean;\n disabled?: boolean;\n contained?: boolean;\n CustomNoData?: React.ReactNode;\n placeholder?: string;\n type?: string;\n menuDisabled?: (value: FilledTextFiledMenus) => boolean;\n helperText?: string;\n multiline?: boolean;\n borderRadius?: string;\n border?: string | boolean;\n fontSize?: string;\n placeholderSize?: string;\n background?: string;\n inputPadding?: string;\n textFieldProps?: TextFieldProps;\n [x: string]: any;\n}\n\nexport interface FilledTextFieldLabelProps {\n label?: React.ReactNode;\n required?: boolean;\n labelSize?: string;\n}\n\nexport function FilledTextFieldLabel({ label, required, labelSize = \"16px\" }: FilledTextFieldLabelProps) {\n return (\n \n {required && (\n \n *\n \n )}\n\n \n {label}\n \n \n );\n}\n\ninterface ValueProps {\n helperText?: string;\n select?: boolean;\n value?: any;\n menus?: FilledTextFiledMenus[];\n}\n\nfunction Value({ select, value, menus = [], helperText }: ValueProps) {\n return (\n <>\n \n {select ? menus.filter((menu) => menu.value === value)[0]?.label ?? value : value}\n \n {helperText ? (\n \n {helperText}\n \n ) : null}\n \n );\n}\n\nfunction FilledTextField(\n {\n value,\n select,\n onChange,\n menus = [],\n maxWidth,\n fullHeight,\n disabled,\n borderRadius = \"8px\",\n contained = false,\n CustomNoData,\n menuDisabled,\n helperText,\n multiline,\n onFocus,\n border,\n background,\n inputPadding,\n textFieldProps,\n ...props\n }: FilledTextFieldProps,\n ref,\n) {\n const classes = useStyles({\n inputPadding,\n contained,\n background,\n fullHeight,\n borderRadius,\n border,\n multiline,\n })();\n const [anchorEl, setAnchorEl] = useState(null);\n const inputRef = useRef(null);\n const outerBoxRef = useRef(null);\n const [menuWidth, setMenuWidth] = useState(undefined);\n\n const handleOuterBoxClick = (event: any) => {\n if (disabled) return;\n if (select) {\n setAnchorEl(event.currentTarget);\n } else {\n inputRef?.current?.focus();\n }\n };\n\n const focus = () => {\n inputRef?.current?.focus();\n };\n\n useImperativeHandle(\n ref,\n () => ({\n focus,\n }),\n [focus],\n );\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n useEffect(() => {\n const width = outerBoxRef?.current?.clientWidth;\n setMenuWidth(width ?? undefined);\n }, []);\n\n const handleMenuItemClick = ({ value }: { value: any }) => {\n if (onChange) onChange(value);\n setAnchorEl(null);\n };\n\n return (\n <>\n \n <>\n \n {!select ? (\n onChange && onChange(value)}\n value={value}\n multiline={multiline}\n fullWidth\n disabled={disabled}\n helperText={helperText}\n onFocus={onFocus}\n autoComplete=\"off\"\n spellCheck={false}\n />\n ) : value ? (\n \n ) : (\n \n {props.placeholder}\n \n )}\n {select && }\n \n \n \n\n {Boolean(anchorEl) && (\n \n {menus.map((menu, index) => (\n {\n if (!!menuDisabled && menuDisabled(menu)) return;\n handleMenuItemClick(menu);\n }}\n >\n {menu.label}\n \n ))}\n {menus.length === 0 ? CustomNoData || : null}\n \n )}\n \n );\n}\n\nexport default forwardRef(FilledTextField);\n","import React, { Suspense } from \"react\";\nimport { LinearLoader } from \"@icpswap/ui\";\n\nexport default function Loadable(Component: React.FC) {\n return (props: any) => (\n }>\n \n \n );\n}\n","var _path, _rect, _path2, _g, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _path25, _path26, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMaintenance(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 240,\n height: 200,\n viewBox: \"0 0 240 200\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_52028_12814)\"\n }, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.5309 114.894C33.1572 108.048 42.8431 108.048 45.4694 114.894L58.847 149.766H17.1533L30.5309 114.894Z\",\n fill: \"#ED9F18\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 12,\n y: 147.865,\n width: 52,\n height: 5.28814,\n rx: 2.64407,\n fill: \"#ED9F18\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_52028_12814\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 17,\n y: 95,\n width: 42,\n height: 55\n }, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M37.9992 95.4219L58.846 149.764H17.1523L37.9992 95.4219Z\",\n fill: \"#5C78E5\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_52028_12814)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 14.3154,\n y: 117.896,\n width: 44.0729,\n height: 8.37288,\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 13.9414,\n y: 130.676,\n width: 44.0729,\n height: 8.37288,\n fill: \"white\"\n }))), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M144.872 64.8281C144.872 64.8281 141.915 67.0742 139.825 70.2734L144.872 64.8281Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M144.872 64.8281C144.872 64.8281 141.915 67.0742 139.825 70.2734\",\n stroke: \"black\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M176.38 136.676C170.302 136.676 152.767 136.516 137.298 136.379C124.747 136.266 113.907 136.168 110.872 136.168C99.7236 136.168 88.7861 131.586 80.8603 123.598C73.0009 115.676 68.6338 105.207 68.5595 94.1133C68.4853 82.9336 72.7744 72.4805 80.6338 64.6836C88.333 57.0469 98.6025 52.8398 109.552 52.8398C120.501 52.8398 131.524 57.293 139.548 65.375C140.251 66.082 140.935 66.8203 141.587 67.582C146.185 63.3047 151.388 59.9375 157.442 57.3164C162.337 55.0156 168.474 53.7461 174.728 53.7461C186.509 53.7461 197.29 58.0703 205.083 65.9219C212.966 73.8672 217.329 84.3711 217.376 95.5078C217.423 106.652 213.134 117.066 205.306 124.832C197.606 132.473 187.333 136.68 176.384 136.68L176.38 136.676Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M109.548 54.3945C120.45 54.3945 130.708 58.6836 138.435 66.4687C139.505 67.5469 140.513 68.6797 141.454 69.8633C146.212 65.1562 151.669 61.5078 158.083 58.7305C162.778 56.5156 168.677 55.3008 174.728 55.3008C186.091 55.3008 196.478 59.4609 203.97 67.0156C219.665 82.8359 219.767 108.27 204.2 123.715C196.794 131.063 186.915 135.109 176.38 135.109C165.478 135.109 117.743 134.598 110.872 134.598C100.138 134.598 89.6026 130.184 81.9698 122.488C74.3994 114.859 70.1924 104.773 70.1221 94.0938C70.0518 83.3359 74.1768 73.2812 81.7354 65.7812C89.1416 58.4336 99.0205 54.3906 109.552 54.3906M109.552 51.2656C98.1885 51.2656 87.5284 55.6328 79.5362 63.5625C71.376 71.6602 66.9229 82.5078 67.001 94.1133C67.0752 105.617 71.6065 116.477 79.7549 124.688C87.9737 132.969 99.3135 137.719 110.876 137.719C113.903 137.719 124.735 137.816 137.278 137.93C152.755 138.07 170.298 138.227 176.384 138.23C187.747 138.23 198.411 133.863 206.407 125.93C223.196 109.27 223.103 81.8516 206.192 64.8086C198.106 56.6562 186.931 52.168 174.731 52.168C168.259 52.168 161.896 53.4844 156.802 55.875C151.106 58.3438 146.138 61.4609 141.708 65.3516C141.364 64.9805 141.013 64.6172 140.661 64.2578C132.345 55.875 121.298 51.2578 109.556 51.2578L109.552 51.2656Z\",\n fill: \"black\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M197.341 73.5882C186.508 62.6703 170.087 63.3148 161.93 67.2328C148.926 72.8109 143.298 81.4867 138.333 89.139L137.969 89.6976C133.348 96.8109 128.985 103.53 120.298 108.729C119.184 109.518 117.962 110.162 116.669 110.655C110.266 113.096 102.958 111.479 98.0514 106.534C91.2624 99.6898 91.1843 88.7171 97.8835 82.0726C104.583 75.4242 115.559 75.5843 122.348 82.4281C124.176 84.2718 125.544 86.4281 126.423 88.8421L127.184 90.9476L136.145 78.4906L135.696 77.8148C134.567 76.1156 133.255 74.514 131.805 73.0492C119.731 60.8812 100.216 60.596 88.3015 72.4203C76.3835 84.2445 76.5124 103.76 88.5866 115.928C98.61 126.03 114.02 128.186 125.997 121.213C135.934 116.315 141.579 108.393 147.426 99.307L148.075 98.2953C153.786 89.4046 158.298 82.3812 169.778 78.6742C176.032 76.514 183.133 78.2093 187.876 82.9867C194.661 89.8265 194.739 100.799 188.04 107.444C181.341 114.088 170.368 113.928 163.583 107.088C161.899 105.393 160.594 103.416 159.704 101.213L158.899 99.2328L150.075 111.498L150.548 112.182C151.602 113.702 152.801 115.147 154.122 116.475C166.192 128.643 185.708 128.92 197.622 117.1C209.536 105.28 209.411 85.764 197.337 73.5999L197.341 73.5882Z\",\n fill: \"url(#paint0_linear_52028_12814)\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M134.923 121.212C134.923 121.212 141.853 108.915 152.935 121.04\",\n stroke: \"black\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M131.286 66.3081C113.274 60.2456 121.067 48.4682 109.423 44.6088C103.431 42.6245 96.6494 45.8706 93.626 48.8901\",\n stroke: \"black\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M192.302 48.8867C176.317 69.4258 165.235 55.5664 160.556 48.8867\",\n stroke: \"black\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M110.431 105.02C116.176 105.02 120.833 100.362 120.833 94.6172C120.833 88.8721 116.176 84.2148 110.431 84.2148C104.686 84.2148 100.028 88.8721 100.028 94.6172C100.028 100.362 104.686 105.02 110.431 105.02Z\",\n fill: \"black\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M107.954 95.3398C109.648 95.3398 111.021 93.967 111.021 92.2734C111.021 90.5799 109.648 89.207 107.954 89.207C106.261 89.207 104.888 90.5799 104.888 92.2734C104.888 93.967 106.261 95.3398 107.954 95.3398Z\",\n fill: \"white\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M175.493 105.02C181.238 105.02 185.896 100.362 185.896 94.6172C185.896 88.8721 181.238 84.2148 175.493 84.2148C169.748 84.2148 165.091 88.8721 165.091 94.6172C165.091 100.362 169.748 105.02 175.493 105.02Z\",\n fill: \"black\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M173.017 95.3398C174.71 95.3398 176.083 93.967 176.083 92.2734C176.083 90.5799 174.71 89.207 173.017 89.207C171.323 89.207 169.95 90.5799 169.95 92.2734C169.95 93.967 171.323 95.3398 173.017 95.3398Z\",\n fill: \"white\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M85.9414 144.215C81.6563 144.215 78.293 138.492 78.2891 131.184C78.2852 123.875 81.6367 118.145 85.9258 118.141C90.2148 118.141 93.5781 123.863 93.582 131.172C93.5859 138.48 90.2344 144.211 85.9453 144.215H85.9414Z\",\n fill: \"white\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M85.9297 119.707C89.2891 119.707 92.0156 124.84 92.0195 131.176C92.0234 137.512 89.3047 142.652 85.9453 142.652C82.5859 142.652 79.8594 137.52 79.8555 131.184C79.8516 124.848 82.5703 119.707 85.9297 119.707ZM85.9297 116.582C83.1289 116.582 80.5586 118.418 78.8672 121.609C77.4844 124.219 76.7266 127.621 76.7266 131.187C76.7344 139.504 80.6953 145.777 85.9414 145.777C88.7422 145.777 91.3164 143.941 93.0039 140.75C94.3867 138.141 95.1445 134.738 95.1445 131.172C95.1367 122.855 91.1758 116.582 85.9297 116.582Z\",\n fill: \"black\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M102.203 144.535C97.7503 144.535 93.2855 142.719 90.262 139.672C87.7737 137.168 86.4691 134.078 86.4925 130.734C86.5277 124.93 89.3011 121.352 91.6214 119.371C94.5081 116.906 98.4105 115.496 102.332 115.496C108.407 115.496 114.86 119.094 115.59 127.125C116.102 132.758 114.879 137.367 112.059 140.457C109.657 143.086 106.157 144.535 102.207 144.535H102.203Z\",\n fill: \"white\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M102.328 117.055C108.024 117.055 113.399 120.336 114.028 127.262C115.047 138.457 108.813 142.969 102.199 142.969C95.5862 142.969 88.0003 138.074 88.0472 130.738C88.1018 121.828 95.4495 117.051 102.324 117.051M102.324 113.926C98.0354 113.926 93.762 115.477 90.5979 118.176C86.969 121.273 84.9495 125.73 84.9182 130.719C84.8948 134.488 86.3557 137.965 89.1409 140.77C92.4534 144.102 97.3323 146.094 102.192 146.094C106.586 146.094 110.496 144.465 113.2 141.508C115.379 139.121 117.832 134.664 117.133 126.98C116.758 122.879 114.989 119.465 112.008 117.109C109.414 115.059 105.973 113.93 102.321 113.93L102.324 113.926Z\",\n fill: \"black\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.063 149.785C124.048 149.785 129.711 144.122 129.711 137.137C129.711 130.151 124.048 124.488 117.063 124.488C110.077 124.488 104.414 130.151 104.414 137.137C104.414 144.122 110.077 149.785 117.063 149.785Z\",\n fill: \"#727171\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.063 126.051C123.184 126.051 128.148 131.012 128.148 137.137C128.148 143.262 123.188 148.223 117.063 148.223C110.938 148.223 105.977 143.262 105.977 137.137C105.977 131.012 110.938 126.051 117.063 126.051ZM117.063 122.926C109.227 122.926 102.852 129.301 102.852 137.137C102.852 144.973 109.227 151.348 117.063 151.348C124.898 151.348 131.273 144.973 131.273 137.137C131.273 129.301 124.898 122.926 117.063 122.926Z\",\n fill: \"black\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M147.371 138.18C146.508 138.18 145.809 137.48 145.809 136.617V133.984C145.809 131.582 147.762 129.629 150.164 129.629H179.934C180.797 129.629 181.496 130.328 181.496 131.191V136.617C181.496 137.48 180.797 138.18 179.934 138.18H147.371Z\",\n fill: \"#727171\"\n })), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M179.934 131.191V136.617H147.371V133.984C147.371 132.441 148.621 131.191 150.164 131.191H179.934ZM179.934 128.066H150.164C146.902 128.066 144.246 130.723 144.246 133.984V136.617C144.246 138.344 145.645 139.742 147.371 139.742H179.934C181.66 139.742 183.059 138.344 183.059 136.617V131.191C183.059 129.465 181.66 128.066 179.934 128.066Z\",\n fill: \"black\"\n })), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M169.367 138.18C168.848 138.18 168.359 137.922 168.07 137.488C167.781 137.055 167.723 136.508 167.922 136.027L182.41 100.477C182.648 99.8867 183.223 99.5039 183.855 99.5039H227.676C228.195 99.5039 228.683 99.7617 228.973 100.195C229.262 100.629 229.32 101.176 229.121 101.656L214.633 137.207C214.394 137.797 213.82 138.18 213.187 138.18H169.367Z\",\n fill: \"#727171\"\n })), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M227.676 101.066L213.187 136.617H169.367L183.855 101.066H227.676ZM227.676 97.9414H183.855C182.586 97.9414 181.441 98.7109 180.961 99.8867L166.472 135.437C166.078 136.402 166.191 137.496 166.773 138.359C167.355 139.223 168.328 139.742 169.367 139.742H213.187C214.457 139.742 215.601 138.973 216.082 137.797L230.57 102.246C230.965 101.281 230.851 100.187 230.269 99.3242C229.687 98.4609 228.715 97.9414 227.676 97.9414Z\",\n fill: \"black\"\n })), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M215.352 137.391H70.125C69.2621 137.391 68.5625 138.09 68.5625 138.953V152.461C68.5625 153.324 69.2621 154.023 70.125 154.023H215.352C216.214 154.023 216.914 153.324 216.914 152.461V138.953C216.914 138.09 216.214 137.391 215.352 137.391Z\",\n fill: \"#C9CACA\"\n })), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M215.352 138.953V152.461H70.125V138.953H215.352ZM215.352 135.828H70.125C68.3984 135.828 67 137.227 67 138.953V152.461C67 154.188 68.3984 155.586 70.125 155.586H215.352C217.078 155.586 218.477 154.188 218.477 152.461V138.953C218.477 137.227 217.078 135.828 215.352 135.828Z\",\n fill: \"black\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_52028_12814\",\n x1: 79.4499,\n y1: 94.7523,\n x2: 206.477,\n y2: 94.7523,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#596AD2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8075F5\"\n })), /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_52028_12814\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 240,\n height: 200,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMaintenance);\nexport default __webpack_public_path__ + \"static/media/Maintenance.cb304b622b98e546ac0f45c7cf3d2aa4.svg\";\nexport { ForwardRef as ReactComponent };","import { Box, Typography } from \"components/Mui\";\nimport MaintenanceSVG from \"assets/images/Maintenance.svg\";\nimport { TextButton, Flex } from \"@icpswap/ui\";\nimport { useTranslation } from \"react-i18next\";\n\nexport function Maintenance() {\n const { t } = useTranslation();\n\n return (\n \n \n \n \n {t(\"maintenance.title\")}\n \n \"\"\n \n \n \n We are currently upgrading this page to enhance your experience.\n \n \n Thank you for your patience! Stay updated by following \n \n ICPSwap on Twitter.\n \n \n \n We appreciate your support and look forward to welcoming you back soon.\n \n \n \n \n \n \n );\n}\n","import createTheme from \"@mui/material/styles/createTheme\";\nimport { Theme } from \"@mui/material/styles\";\nimport useMuiTheme from \"@mui/styles/useTheme\";\n\nexport { default as Box, type BoxProps } from \"@mui/material/Box\";\nexport { default as Typography, type TypographyProps } from \"@mui/material/Typography\";\nexport { default as Grid, type GridProps } from \"@mui/material/Grid\";\nexport { default as SvgIcon, type SvgIconProps } from \"@mui/material/SvgIcon\";\nexport { default as Button, type ButtonProps } from \"@mui/material/Button\";\nexport { default as TextField, type TextFieldProps } from \"@mui/material/TextField\";\nexport { default as Fade, type FadeProps } from \"@mui/material/Fade\";\nexport { default as Collapse, type CollapseProps } from \"@mui/material/Collapse\";\nexport { default as Checkbox, type CheckboxProps } from \"@mui/material/Checkbox\";\nexport { default as MenuList, type MenuListProps } from \"@mui/material/MenuList\";\nexport { default as MenuItem } from \"@mui/material/MenuItem\";\nexport { default as Popper } from \"@mui/material/Popper\";\nexport { default as useMediaQuery } from \"@mui/material/useMediaQuery\";\nexport { default as CircularProgress } from \"@mui/material/CircularProgress\";\nexport { default as InputAdornment } from \"@mui/material/InputAdornment\";\nexport { default as Avatar, type AvatarProps } from \"@mui/material/Avatar\";\nexport { default as Link } from \"@mui/material/Link\";\nexport { default as makeStyles } from \"@mui/styles/makeStyles\";\nexport { default as Tooltip, tooltipClasses } from \"@mui/material/Tooltip\";\nexport { default as Chip } from \"@mui/material/Chip\";\nexport { default as ButtonBase } from \"@mui/material/ButtonBase\";\nexport { default as Drawer } from \"@mui/material/Drawer\";\nexport { default as Menu } from \"@mui/material/Menu\";\nexport { ClickAwayListener } from \"@mui/base/ClickAwayListener\";\nexport { keyframes } from \"@emotion/react\";\nexport { default as Breadcrumbs } from \"@mui/material/Breadcrumbs\";\nexport { default as Input } from \"@mui/material/Input\";\nexport { default as Card } from \"@mui/material/Card\";\nexport { default as Switch, type SwitchProps } from \"@mui/material/Switch\";\nexport { default as Pagination } from \"@mui/material/Pagination\";\nexport { default as CssBaseline } from \"@mui/material/CssBaseline\";\nexport { default as StyledEngineProvider } from \"@mui/material/StyledEngineProvider\";\nexport { default as Dialog } from \"@mui/material/Dialog\";\nexport { default as DialogTitle } from \"@mui/material/DialogTitle\";\nexport { default as DialogContent } from \"@mui/material/DialogContent\";\nexport { default as Slider, type SliderProps } from \"@mui/material/Slider\";\nexport { default as Paper } from \"@mui/material/Paper\";\nexport { default as Backdrop } from \"@mui/material/Backdrop\";\n\nexport { default as styled } from \"@mui/styles/styled\";\nexport { default as ThemeProvider } from \"@mui/material/styles/ThemeProvider\";\n\nexport function useTheme() {\n return useMuiTheme() as Theme;\n}\n\nexport type { Theme };\n\nexport { createTheme };\n","import { TextButton } from \"components/index\";\nimport { Typography } from \"components/Mui\";\nimport { useHistory } from \"react-router-dom\";\nimport { useCloseStep } from \"hooks/useStepCall\";\n\nexport interface ReclaimTipsProps {\n message: string | undefined;\n onReclaimClick?: () => void;\n tipKey: string | undefined;\n poolId?: string;\n tokenId?: string;\n}\n\nexport function ReclaimTips({ message, onReclaimClick, tipKey, poolId, tokenId }: ReclaimTipsProps) {\n const history = useHistory();\n\n const closeStep = useCloseStep();\n\n const handleClick = () => {\n const to = poolId\n ? `/swap/withdraw?type=pair&poolId=${poolId}`\n : tokenId\n ? `/swap/withdraw?type=token&tokenId=${tokenId}`\n : \"/swap/withdraw\";\n\n history.push(to);\n if (onReclaimClick) onReclaimClick();\n closeStep(tipKey);\n };\n\n const msg = message?.includes(\"please withdraw your unused token\") ? (\n <>\n {message.replace(\"please withdraw your unused token\", \"\")}.  Please{\" \"}\n check your balance in the swap pool to see if tokens have been\n transferred to the swap pool.\n \n ) : (\n <>\n {message}.  Please check your balance in the swap pool to see\n if tokens have been transferred to the swap pool.\n \n );\n\n return {msg};\n}\n","import { Box, Typography } from \"components/Mui\";\nimport { TokenImage } from \"components/index\";\n\ninterface TokenPairProps {\n token0Logo: string | undefined;\n token1Logo: string | undefined;\n token0Symbol: string | undefined;\n token1Symbol: string | undefined;\n token0Id: string | undefined;\n token1Id: string | undefined;\n color?: \"primary\" | \"secondary\";\n}\n\nexport function TokenPair({\n token0Logo,\n token1Id,\n token0Id,\n token0Symbol,\n token1Logo,\n token1Symbol,\n color,\n}: TokenPairProps) {\n return (\n \n \n \n \n {token0Symbol && token1Symbol ? `${token0Symbol}/${token1Symbol}` : \"--\"}\n \n \n );\n}\n","import { Box, Typography } from \"components/Mui\";\nimport { ReactNode, useEffect, useMemo, useState } from \"react\";\nimport { Select } from \"components/Select/ForToken\";\nimport { TokenPair } from \"components/TokenPair\";\nimport type { AllTokenOfSwapTokenInfo, Null } from \"@icpswap/types\";\nimport { useTokenLogo } from \"hooks/token/useTokenLogo\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useStateSwapAllTokens } from \"store/global/hooks\";\nimport { useAllSwapPools } from \"store/swap/hooks\";\nimport { useTranslation } from \"react-i18next\";\n\nimport type { MenuProps, StringifyAllTokenOfSwapTokenInfo } from \"./types\";\n\nfunction isTokenHide(tokenInfo: AllTokenOfSwapTokenInfo, search: string | undefined) {\n if (!search) return false;\n if (!tokenInfo) return true;\n\n if (\n !tokenInfo.symbol.toLocaleLowerCase().includes(search.toLocaleLowerCase()) &&\n !tokenInfo.name.toLocaleLowerCase().includes(search.toLocaleLowerCase())\n )\n return true;\n\n return false;\n}\n\ninterface PairItemProps {\n canisterId?: string;\n token0: AllTokenOfSwapTokenInfo | undefined;\n token1: AllTokenOfSwapTokenInfo | undefined;\n select?: boolean;\n color?: \"primary\" | \"secondary\";\n}\n\nfunction PairMenuItem({ token0, token1, select, color }: PairItemProps) {\n const token0Logo = useTokenLogo(token0?.ledger_id.toString());\n const token1Logo = useTokenLogo(token1?.ledger_id.toString());\n\n return (\n \n \n \n );\n}\n\nexport interface SelectPairProps {\n border?: boolean;\n value?: string | Null;\n onPairChange?: (poolId: string | undefined) => void;\n filter?: (tokenInfo: AllTokenOfSwapTokenInfo) => boolean;\n search?: boolean;\n filled?: boolean;\n fullHeight?: boolean;\n showBackground?: boolean;\n showClean?: boolean;\n panelPadding?: string;\n defaultPanel?: ReactNode;\n customPanel?: (menu: MenuProps | Null) => ReactNode;\n allPair?: boolean;\n}\n\nexport function SelectPair({\n value: poolId,\n onPairChange,\n border,\n filter,\n search: hasSearch,\n filled,\n fullHeight,\n showBackground = true,\n showClean = true,\n panelPadding,\n defaultPanel,\n customPanel,\n allPair,\n}: SelectPairProps) {\n const { t } = useTranslation();\n const [value, setValue] = useState(null);\n const [search, setSearch] = useState(undefined);\n\n const allTokensOfSwap = useStateSwapAllTokens();\n const swapPools = useAllSwapPools();\n\n useEffect(() => {\n if (poolId) {\n setValue(poolId);\n }\n }, [poolId]);\n\n const menus = useMemo(() => {\n if (swapPools && allTokensOfSwap) {\n const data = swapPools.map((ele) => {\n const token0 = allTokensOfSwap.find((token) => token.ledger_id.toString() === ele.token0.address);\n const token1 = allTokensOfSwap.find((token) => token.ledger_id.toString() === ele.token1.address);\n\n return {\n poolId: ele.canisterId.toString(),\n token0: ele.token0.address,\n token1: ele.token1.address,\n additional: {\n token0,\n token1,\n },\n };\n });\n\n const menus = data\n .map((ele) => ({\n value: ele.poolId,\n label: ,\n additional: JSON.stringify(ele.additional),\n }))\n .filter((ele) => !!ele.label);\n\n if (allPair) {\n menus.unshift({\n value: \"ALL PAIR\",\n label: All Pair,\n additional: \"\",\n });\n }\n\n return menus;\n }\n\n return undefined;\n }, [swapPools, allTokensOfSwap, allPair]);\n\n const handleValueChange = (value: string | undefined) => {\n setValue(value);\n\n if (onPairChange) {\n onPairChange(value);\n }\n };\n\n const handleFilterMenu = (menu: MenuProps) => {\n if (!menu.additional) return false;\n\n const additional = JSON.parse(menu.additional) as {\n token0: AllTokenOfSwapTokenInfo;\n token1: AllTokenOfSwapTokenInfo;\n };\n\n return (\n (isTokenHide(additional.token0, search) && isTokenHide(additional.token1, search)) ||\n (!!filter && filter(additional.token0))\n );\n };\n\n return (\n {\n if (!menu) return defaultPanel;\n if (!menu.additional) return menu.label;\n\n if (customPanel) return customPanel(menu);\n\n const additional = JSON.parse(menu.additional) as {\n token0: StringifyAllTokenOfSwapTokenInfo;\n token1: StringifyAllTokenOfSwapTokenInfo;\n };\n\n if (!additional.token0 || !additional.token1) return menu.label;\n\n const token0 = {\n ...additional.token0,\n ledger_id: Principal.fromText(additional.token0.ledger_id.__principal__),\n } as AllTokenOfSwapTokenInfo;\n\n const token1 = {\n ...additional.token1,\n ledger_id: Principal.fromText(additional.token1.ledger_id.__principal__),\n } as AllTokenOfSwapTokenInfo;\n\n return ;\n }}\n />\n );\n}\n","import { Box, Typography } from \"components/Mui\";\nimport { useEffect, useMemo, useState, ReactNode } from \"react\";\nimport { Select } from \"components/Select/ForToken\";\nimport { generateLogoUrl } from \"hooks/token/useTokenLogo\";\nimport { isValidPrincipal } from \"@icpswap/utils\";\nimport { TokenImage } from \"components/index\";\nimport type { AllTokenOfSwapTokenInfo } from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useStateSwapAllTokens } from \"store/global/hooks\";\nimport { useTranslation } from \"react-i18next\";\n\nimport type { MenuProps, StringifyAllTokenOfSwapTokenInfo } from \"./types\";\n\ninterface TokenMenuItemProps {\n tokenInfo: AllTokenOfSwapTokenInfo;\n symbol?: string;\n search?: string;\n color?: \"primary\" | \"secondary\";\n panel?: boolean;\n}\n\nfunction isTokenHide(tokenInfo: AllTokenOfSwapTokenInfo, search: string | undefined) {\n if (!!search && isValidPrincipal(search) && tokenInfo.ledger_id.toString() !== search) return true;\n if (\n !!search &&\n !!tokenInfo &&\n !tokenInfo.symbol.toLocaleLowerCase().includes(search.toLocaleLowerCase()) &&\n !tokenInfo.name.toLocaleLowerCase().includes(search.toLocaleLowerCase())\n )\n return true;\n return false;\n}\n\nfunction TokenMenuItem({ tokenInfo, symbol, search, color, panel }: TokenMenuItemProps) {\n const hide = useMemo(() => {\n return isTokenHide(tokenInfo, search);\n }, [search, tokenInfo]);\n\n return hide ? null : (\n \n \n \n {symbol ?? tokenInfo?.symbol ?? \"--\"}\n \n \n );\n}\n\nexport interface SelectTokenProps {\n border?: boolean;\n value?: string;\n onTokenChange?: (tokenId: string) => void;\n filter?: (tokenInfo: AllTokenOfSwapTokenInfo) => boolean;\n search?: boolean;\n filled?: boolean;\n fullHeight?: boolean;\n showBackground?: boolean;\n showClean?: boolean;\n panelPadding?: string;\n defaultPanel?: ReactNode;\n}\n\nexport function SelectToken({\n value: tokenId,\n onTokenChange,\n border,\n filter,\n search: hasSearch,\n filled,\n fullHeight,\n showBackground,\n showClean,\n panelPadding,\n defaultPanel,\n}: SelectTokenProps) {\n const { t } = useTranslation();\n const [value, setValue] = useState(null);\n const [search, setSearch] = useState(undefined);\n\n const allTokensOfSwap = useStateSwapAllTokens();\n\n useEffect(() => {\n if (tokenId) {\n setValue(tokenId);\n }\n }, [tokenId]);\n\n const menus = useMemo(() => {\n if (!allTokensOfSwap) return undefined;\n\n return allTokensOfSwap.map((tokenInfo) => {\n return {\n value: tokenInfo.ledger_id.toString(),\n label: ,\n additional: JSON.stringify(tokenInfo),\n };\n });\n }, [allTokensOfSwap]);\n\n const handleValueChange = (value: string) => {\n setValue(value);\n if (onTokenChange) {\n onTokenChange(value);\n }\n };\n\n const handleFilterMenu = (menu: MenuProps) => {\n if (!menu.additional) return false;\n\n const tokenInfo = JSON.parse(menu.additional) as AllTokenOfSwapTokenInfo;\n\n return isTokenHide(tokenInfo, search) || (!!filter && filter(tokenInfo));\n };\n\n return (\n {\n if (!menu) return defaultPanel;\n if (!menu.additional) return null;\n\n const additional = JSON.parse(menu.additional) as StringifyAllTokenOfSwapTokenInfo;\n\n const tokenInfo = {\n ...additional,\n ledger_id: Principal.fromText(additional.ledger_id.__principal__),\n } as AllTokenOfSwapTokenInfo;\n\n return ;\n }}\n />\n );\n}\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { Typography, Box, Menu, Grid, MenuItem, useTheme, makeStyles, Theme } from \"components/Mui\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport { isDarkTheme } from \"utils\";\nimport { NoData } from \"components/index\";\n\nconst useStyles = (contained: boolean, fullHeight?: boolean) => {\n return makeStyles((theme: Theme) => {\n return {\n inputBox: {\n background: theme.palette.background.level4,\n borderRadius: \"8px\",\n padding: contained ? `15px 16px` : `${fullHeight ? \"0px\" : \"12px\"} 16px`,\n \"& input\": {\n color: theme.palette.text.primary,\n },\n },\n };\n });\n};\n\nexport type Menus = {\n label: React.ReactNode;\n value: any;\n};\n\nexport interface SelectProps {\n label?: string | React.ReactNode;\n value?: any;\n width?: number;\n onChange?: (value: any) => void;\n required?: boolean;\n menus: Menus[];\n maxWidth?: number;\n fullHeight?: boolean;\n disabled?: boolean;\n contained?: boolean;\n CustomNoData?: React.ReactNode;\n placeholder?: string;\n type?: string;\n menuDisabled?: (value: Menus) => boolean;\n helperText?: string;\n [x: string]: any;\n}\n\nexport function Label({ label, required }: { label?: React.ReactNode; required?: boolean }) {\n return (\n \n {required && (\n \n *\n \n )}\n \n {label}\n \n \n );\n}\n\nexport function Value({ value, menus = [], helperText }: { helperText?: string; value?: any; menus: Menus[] }) {\n return (\n <>\n \n {menus.filter((menu) => menu.value === value)[0]?.label ?? value}\n \n {helperText ? (\n \n {helperText}\n \n ) : null}\n \n );\n}\n\nexport function Select({\n value,\n onChange,\n menus = [],\n maxWidth,\n fullHeight,\n disabled,\n contained = true,\n width,\n CustomNoData,\n menuDisabled,\n helperText,\n ...props\n}: SelectProps) {\n const classes = useStyles(contained, fullHeight)();\n const [anchorEl, setAnchorEl] = useState(null);\n const outerBoxRef = useRef(null);\n const [menuWidth, setMenuWidth] = useState(undefined);\n const theme = useTheme();\n\n const handleOuterBoxClick = (event: any) => {\n if (disabled) return;\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n useEffect(() => {\n const width = outerBoxRef?.current?.clientWidth;\n setMenuWidth(width ?? undefined);\n }, []);\n\n const handleMenuItemClick = ({ value }: { value: any }) => {\n if (onChange) onChange(value);\n setAnchorEl(null);\n };\n\n const isDark = isDarkTheme(theme);\n\n return (\n <>\n \n \n <>\n \n \n {value ? (\n \n ) : (\n \n {props.placeholder}\n \n )}\n \n\n \n \n \n \n \n\n {Boolean(anchorEl) && (\n \n {menus.map((menu, index) => (\n {\n if (!!menuDisabled && menuDisabled(menu)) return;\n handleMenuItemClick(menu);\n }}\n >\n {menu.label}\n \n ))}\n {menus.length === 0 ? CustomNoData || : null}\n \n )}\n \n );\n}\n","import { TextButton } from \"components/index\";\nimport { useStepManager } from \"store/steps/hooks\";\n\nexport default function StepViewButton({ step }: { step: string | undefined | number }) {\n const { open } = useStepManager();\n\n return open(step?.toString())}>View Details;\n}\n","import { Typography, Box, useTheme, BoxProps } from \"components/Mui\";\nimport { formatAmount, BigNumber, formatDollarTokenPrice } from \"@icpswap/utils\";\nimport { TokenImage } from \"components/index\";\nimport { Token } from \"@icpswap/swap-sdk\";\n\nexport interface TokenPoolPriceProps {\n tokenA: Token | undefined;\n tokenB: Token | undefined;\n priceA: number | undefined;\n priceB: number | undefined;\n background?: \"none\" | \"level4\";\n disable?: boolean;\n wrapperSx?: BoxProps[\"sx\"];\n fontSize?: string;\n onClick?: () => void;\n}\n\nexport function TokenPoolPrice({\n tokenA,\n tokenB,\n priceB,\n priceA,\n wrapperSx,\n background = \"level4\",\n fontSize = \"12px\",\n onClick,\n}: TokenPoolPriceProps) {\n const theme = useTheme();\n\n return priceA && priceB ? (\n \n \n\n \n 1 {tokenA?.symbol} = {formatAmount(new BigNumber(priceA).dividedBy(priceB).toNumber())} {tokenB?.symbol}\n \n \n  = {formatDollarTokenPrice(priceA)}\n \n \n ) : null;\n}\n","import { createContext } from \"react\";\nimport BigNumber from \"bignumber.js\";\n\nexport type TokenBalance = { [tokenId: string]: BigNumber };\n\nexport type Page = \"token\" | \"nft\";\n\nexport interface WalletContextProps {\n refreshTotalBalance?: boolean;\n setRefreshTotalBalance?: (refreshTotalBalance: boolean) => void;\n refreshCounter: number;\n setRefreshCounter: (refreshCounter: number) => void;\n allTokenUSDMap: { [tokenId: string]: BigNumber };\n noUSDTokens: string[];\n setNoUSDTokens: (token: string) => void;\n totalValue: BigNumber;\n setTotalValue: (tokenId: string, value: BigNumber) => void;\n transferTo: string;\n setTransferTo: (transferTo: string) => void;\n transferAmount: BigNumber;\n setTransferAmount: (transferAmount: BigNumber) => void;\n page: Page;\n setPage: (page: Page) => void;\n totalUSDBeforeChange: BigNumber;\n setTotalUSDBeforeChange: (tokenId: string, value: BigNumber) => void;\n}\n\nexport default createContext({\n allTokenUSDMap: {},\n} as WalletContextProps);\n","import React, { ReactNode } from \"react\";\nimport { useConnectManager, useConnectorStateConnected } from \"store/auth/hooks\";\nimport { Override } from \"@icpswap/types\";\nimport { CircularProgress, Button, ButtonProps } from \"components/Mui\";\nimport { useTranslation } from \"react-i18next\";\n\nexport type ButtonConnectorProps = Override;\n\nexport default function ButtonConnector(props: ButtonConnectorProps) {\n const { t } = useTranslation();\n const { showConnector } = useConnectManager();\n const isConnected = useConnectorStateConnected();\n\n const handleConnect = (event: React.MouseEvent) => {\n if (!isConnected) {\n showConnector(true);\n } else if (props.onClick) props.onClick(event);\n };\n\n return (\n : null\n }\n >\n {isConnected ? props.children : t(\"common.connect.wallet\")}\n \n );\n}\n","import { useState, useEffect } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { closeLoading } from \"store/loadingReducer\";\nimport LoadingImage from \"assets/images/loading.png\";\nimport { makeStyles, Theme, Backdrop } from \"components/Mui\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: \"fixed\",\n top: 0,\n left: 0,\n zIndex: 1301,\n width: \"100%\",\n \"& > * + *\": {\n marginTop: theme.spacing(2),\n },\n },\n backdrop: {\n zIndex: 10000,\n color: \"#fff\",\n },\n}));\n\nexport default function FullscreenLoading({\n maskClosable,\n onMaskClick,\n}: {\n maskClosable?: boolean;\n onMaskClick?: () => void;\n}) {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n const [open, setOpen] = useState(false);\n const loadingInitial = useAppSelector((state) => state.loading);\n\n const onClick = () => {\n if (maskClosable) {\n dispatch(closeLoading());\n }\n\n if (onMaskClick) onMaskClick();\n };\n\n useEffect(() => {\n setOpen(loadingInitial.open);\n }, [loadingInitial.open]);\n\n return (\n \n \"\"\n \n );\n}\n","import LoadingImage from \"assets/images/loading.png\";\nimport { Grid, Box, makeStyles, Theme } from \"../Mui\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n loadingContainer: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n minHeight: \"140px\",\n paddingTop: \"56px\",\n overflow: \"hidden\",\n },\n mask: {\n position: \"absolute\",\n top: \"56px\",\n left: 0,\n width: \"100%\",\n height: \"100%\",\n background: theme.palette.loading.background,\n opacity: 0.2,\n },\n };\n});\n\nexport function ListLoading({ loading, mask = true }: { loading: boolean; mask?: boolean }) {\n const classes = useStyles();\n\n return loading ? (\n \n \n \"\"\n \n ) : null;\n}\n","import { Box, makeStyles } from \"../Mui\";\n\ninterface StylesProps {\n color?: string;\n size?: string;\n}\n\nconst useStyles = ({ color, size }: StylesProps) => {\n return makeStyles(() => {\n const translateLength = 5;\n\n return {\n dot: {\n display: \"inline-block\",\n width: size ?? \"5px\",\n height: size ?? \"5px\",\n backgroundColor: color ?? \"rgba(255, 255, 255, 0.4)\",\n borderRadius: \"50%\",\n animationDuration: \"800ms\",\n animationIterationCount: \"infinite\",\n },\n \"@keyframes dot1Keyframes\": {\n \"0%\": {\n transform: `translate(0, -${translateLength}px)`,\n },\n \"33%\": {\n transform: \"translate(0, 0)\",\n },\n },\n \"@keyframes dot2Keyframes\": {\n \"0%\": {\n transform: \"translate(0, 0)\",\n },\n \"33%\": {\n transform: `translate(0, -${translateLength}px)`,\n },\n \"66%\": {\n transform: \"translate(0, 0)\",\n },\n },\n \"@keyframes dot3Keyframes\": {\n \"0%\": {\n transform: \"translate(0, 0)\",\n },\n \"66%\": {\n transform: `translate(0, -${translateLength}px)`,\n },\n },\n dot1: {\n animationName: `$dot1Keyframes`,\n marginRight: \"4px\",\n },\n dot2: {\n animationName: `$dot2Keyframes`,\n marginRight: \"4px\",\n },\n dot3: {\n animationName: `$dot3Keyframes`,\n },\n };\n });\n};\n\nexport interface DotLoadingProps {\n loading: boolean;\n size?: string;\n color?: string;\n}\n\nexport function DotLoading({ loading, size, color }: DotLoadingProps) {\n const classes = useStyles({ color, size })();\n\n return loading ? (\n \n \n \n \n \n ) : null;\n}\n","import { ReactNode } from \"react\";\nimport { Box, BoxProps } from \"components/Mui\";\nimport { Flex } from \"@icpswap/ui\";\n\nexport interface WrapperProps {\n children: ReactNode;\n sx?: BoxProps[\"sx\"];\n}\n\nexport function Wrapper({ children, sx }: WrapperProps) {\n return (\n \n \n {children}\n \n \n );\n}\n","import { ReactNode } from \"react\";\nimport { Box, BoxProps } from \"components/Mui\";\nimport { Flex } from \"@icpswap/ui\";\n\nexport interface InfoWrapperProps {\n children: ReactNode;\n sx?: BoxProps[\"sx\"];\n size?: \"small\";\n}\n\nexport function InfoWrapper({ children, size, sx }: InfoWrapperProps) {\n return (\n \n \n {children}\n \n \n );\n}\n","import { Button, Typography, CircularProgress, useTheme } from \"components/Mui\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function ViewMore({ loading, onClick }: { loading: boolean; onClick: () => void }) {\n const { t } = useTranslation();\n const theme = useTheme();\n\n return (\n \n {loading ? : null}\n {t(\"common.view.more\")}\n \n );\n}\n","import { useState, useMemo, useCallback } from \"react\";\nimport { Modal } from \"components/index\";\nimport { getPool } from \"hooks/swap/v3Calls\";\nimport { useTheme, Typography, Box, Avatar, CircularProgress, Button } from \"components/Mui\";\nimport CurrencySelector from \"components/CurrencySelector/selector\";\nimport { getUserPositionIds } from \"hooks/swap/useUserPositionIds\";\nimport { useUpdateUserPositionPools } from \"store/hooks\";\nimport { updateUserPositionPoolId } from \"@icpswap/hooks\";\nimport { useTips, TIP_SUCCESS } from \"hooks/index\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { useTranslation } from \"react-i18next\";\n\nfunction AddIcon() {\n return (\n \n \n \n );\n}\n\nfunction ArrowIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\ninterface SelectedTokenProps {\n selectedTokenIds?: string[];\n onTokenChange: (token: Token) => void;\n}\n\nfunction SelectedToken({ selectedTokenIds, onTokenChange }: SelectedTokenProps) {\n const { t } = useTranslation();\n const theme = useTheme();\n\n const [token, setToken] = useState(null);\n const [selectorOpen, setSelectorOpen] = useState(false);\n\n const handleTokenChange = (token: Token) => {\n onTokenChange(token);\n setToken(token);\n setSelectorOpen(false);\n };\n\n const handleSelectToken = () => {\n setSelectorOpen(true);\n };\n\n return (\n <>\n \n {token ? (\n \n \n  \n \n \n {token?.symbol}\n \n \n ) : (\n \n {t(\"common.select.a.token\")}\n \n )}\n \n \n\n setSelectorOpen(false)}\n onChange={handleTokenChange}\n disabledCurrencyIds={selectedTokenIds}\n />\n \n );\n}\n\nexport interface FindPositionsModalProps {\n open: boolean;\n onClose: () => void;\n}\n\nexport default function FindPositionsModal({ open, onClose }: FindPositionsModalProps) {\n const { t } = useTranslation();\n const theme = useTheme();\n const [openTip] = useTips();\n\n const principal = useAccountPrincipal();\n\n const [error, setError] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const [tokenA, setTokenA] = useState(null);\n const [tokenB, setTokenB] = useState(null);\n\n const handleTokenAChange = (tokenA: Token) => {\n setTokenA(tokenA);\n setError(\"\");\n };\n\n const handleTokenBChange = (tokenB: Token) => {\n setTokenB(tokenB);\n setError(\"\");\n };\n\n const handleClose = useCallback(() => {\n onClose();\n setTokenA(null);\n setTokenB(null);\n }, [onClose, setTokenA, setTokenB]);\n\n const selectedTokenIds = useMemo(() => {\n return [tokenA?.address, tokenB?.address].filter((ele) => !!ele) as string[];\n }, [tokenA, tokenB]);\n\n const updateStoreUserPositionPool = useUpdateUserPositionPools();\n\n const handleImport = async () => {\n if (!tokenA || !tokenB || loading || !principal) return;\n\n setLoading(true);\n\n const poolData = await getPool(tokenA.address, tokenB.address);\n\n if (!poolData) {\n setError(t`No available pools`);\n setLoading(false);\n return;\n }\n\n const poolId = poolData.canisterId.toString();\n const positionIds = await getUserPositionIds(poolId, principal.toString());\n\n if (!positionIds || positionIds.length === 0) {\n setError(t`No available position in this pool`);\n setLoading(false);\n return;\n }\n\n updateStoreUserPositionPool([poolId]);\n updateUserPositionPoolId(poolId, true);\n\n openTip(\"Imported successfully\", TIP_SUCCESS);\n\n setLoading(false);\n\n handleClose();\n };\n\n return (\n \n \n \n\n \n\n \n\n : null}\n >\n {error || t(\"common.import\")}\n \n \n \n );\n}\n","import { Override } from \"@icpswap/types\";\nimport { forwardRef } from \"react\";\nimport { NumericFormat, NumericFormatProps } from \"react-number-format\";\nimport { TextField, TextFieldProps } from \"components/Mui\";\n\nexport type NumericProps = {\n decimalScale?: number;\n allowNegative?: boolean;\n maxLength?: number;\n thousandSeparator?: boolean;\n};\n\ntype InputProps = {\n onChange: (event: { target: { value: string } }) => void;\n name: string;\n value: any;\n};\n\nexport const TextFieldNumberComponent = forwardRef((props, ref) => {\n const { onChange, ...other } = props;\n\n return (\n {\n // Fix outside value change cause to maximum update\n if (values.value === props.value) return;\n\n onChange({\n target: {\n // Fix if user typed . first could case some NaN errors\n value: values.value === \".\" ? \"0.\" : values.value,\n },\n });\n }}\n />\n );\n});\n\nexport type NumberTextFieldProps = Override;\n\nexport default function NumberTextField(props: NumberTextFieldProps) {\n const { numericProps, ...otherProps } = props;\n\n return (\n \n );\n}\n","import { Override } from \"@icpswap/types\";\nimport FilledTextField, { FilledTextFieldProps } from \"components/Input/FilledTextField\";\nimport { TextFieldNumberComponent, NumericProps } from \"components/Input/NumberTextField\";\n\nexport type NumberFilledTextFieldProps = Override;\n\nexport function NumberFilledTextField(props: NumberFilledTextFieldProps) {\n const { numericProps, ...otherProps } = props;\n\n return (\n \n );\n}\n","import { useState, ReactNode } from \"react\";\nimport { Grid, Box, useTheme } from \"components/Mui\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport { mockALinkAndOpen } from \"@icpswap/utils\";\nimport { Flex } from \"@icpswap/ui\";\n\nexport interface Tab {\n key: string | any;\n value: ReactNode;\n path?: string;\n link?: string;\n}\n\nexport interface TabPanelProps {\n active?: string;\n tabs: Tab[];\n onChange?: (tab: Tab) => void;\n fontNormal?: boolean;\n fontSize?: string;\n fullWidth?: boolean;\n activeWithSearch?: boolean;\n bg0?: string;\n bg1?: string;\n size?: \"small\" | \"large\" | \"medium\";\n borderRadius?: string;\n padding0?: string;\n padding1?: string;\n}\n\nexport function TabPanel({\n tabs,\n onChange,\n active,\n fullWidth,\n fontNormal,\n activeWithSearch,\n fontSize = \"14px\",\n bg0,\n bg1,\n size,\n borderRadius,\n padding0,\n padding1,\n}: TabPanelProps) {\n const theme = useTheme();\n const history = useHistory();\n const location = useLocation();\n\n const [activeButtonKey, setActiveButtonKey] = useState(null);\n\n const loadPage = (tab: Tab) => {\n if (tab.link) {\n mockALinkAndOpen(tab.link, \"toggle_link\");\n return;\n }\n\n if (!tab.path) {\n setActiveButtonKey(tab.key);\n if (onChange) onChange(tab);\n return;\n }\n history.push(tab.path);\n };\n\n const isActive = (tab: Tab) => {\n if (tab.path) {\n if (tab.key === \"/swap\" || tab.key === \"/swap/v2\") {\n if (tab.key === location.pathname || `${tab.key}/` === location.pathname) return \"active\";\n return \"\";\n }\n\n if (activeWithSearch) {\n return location.search.includes(tab.key);\n }\n\n return location.pathname.includes(tab.key);\n }\n if (active) return active === tab.key;\n if (!activeButtonKey) return tabs[0].key === tab.key;\n return activeButtonKey === tab.key;\n };\n\n return (\n \n \n {tabs.map((tab) => (\n loadPage(tab)}\n sx={{\n fontSize,\n minWidth: size === \"small\" ? \"auto\" : \"90px\",\n padding: padding1 ?? (size === \"small\" ? \"0 12px\" : \"0 20px\"),\n height: size === \"small\" ? \"32px\" : \"40px\",\n color: theme.themeOption.textSecondary,\n cursor: \"pointer\",\n borderRadius: borderRadius ?? (size === \"small\" ? \"6px\" : \"12px\"),\n fontWeight: fontNormal ? 400 : 600,\n \"&.active\": {\n color: theme.themeOption.textPrimary,\n background: bg1 ?? theme.colors.darkLevel3,\n fontWeight: 600,\n },\n \"@media (max-width: 640px)\": {\n minWidth: size === \"small\" ? \"auto\" : \"76px\",\n padding: size === \"small\" ? \"0 12px\" : \"0 15px\",\n fontSize: \"12px\",\n },\n }}\n >\n \n {tab.value}\n \n \n ))}\n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { AlertCircle } from \"react-feather\";\n\nimport { Box, Collapse } from \"./Mui\";\n\nexport interface CollapseTextProps {\n description: React.ReactNode;\n label: React.ReactNode;\n}\n\nexport function CollapseText({ label, description }: CollapseTextProps) {\n const [open, setOpen] = useState(false);\n\n const handleToggle = () => {\n setOpen(!open);\n };\n\n return (\n \n \n {label}\n \n \n \n {description}\n \n \n );\n}\n","import { Switch, SwitchProps, makeStyles, Theme } from \"components/Mui\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n const trackBorder =\n theme.customization.mode === \"dark\" ? `1px solid ${theme.colors.darkTextSecondary}` : \"1px solid #EDE7F6\";\n\n const trackActiveBorder =\n theme.customization.mode === \"dark\" ? `1px solid ${theme.colors.darkSecondaryMain}` : \"1px solid #EDE7F6\";\n\n return {\n root: {\n height: 20,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 0,\n color: theme.palette.dark.light,\n top: \"50%\",\n left: \"3px\",\n marginTop: \"-7px\",\n \"&$checked\": {\n transform: \"translateX(15px)\",\n color: theme.palette.dark.light,\n \"& .MuiSwitch-thumb\": {\n background: theme.palette.mode === \"dark\" ? theme.colors.darkSecondaryMain : theme.colors.lightPrimaryMain,\n },\n \"& + $track\": {\n backgroundColor: theme.customization.mode === \"dark\" ? theme.colors.darkLevel3 : \"#FAFAFA\",\n opacity: 1,\n border: trackActiveBorder,\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#52d869\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 14,\n height: 14,\n boxShadow: \"none\",\n },\n track: {\n borderRadius: 20 / 2,\n border: trackBorder,\n background: theme.palette.mode === \"dark\" ? theme.colors.darkLevel3 : \"#fafafa\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n };\n});\n\nexport default function _Switch(props: SwitchProps) {\n const classes = useStyles();\n\n return (\n \n );\n}\n","import { nonNullArgs } from \"@icpswap/utils\";\nimport { Null } from \"@icpswap/types\";\nimport { useTokenImportToNns } from \"hooks/token\";\nimport { ReactNode } from \"react\";\nimport { Link } from \"components/index\";\nimport { importTokenToNnsUrl } from \"utils/ic\";\n\ninterface ImportToNnsProps {\n tokenId: string | Null;\n children: ReactNode;\n}\n\nexport function ImportToNns({ tokenId, children }: ImportToNnsProps) {\n const canImportToNns = useTokenImportToNns(tokenId);\n\n return canImportToNns && nonNullArgs(tokenId) ? {children} : null;\n}\n","import Copy, { CopyRef } from \"components/Copy\";\nimport { shorten } from \"@icpswap/utils\";\nimport { Typography, type TypographyProps } from \"components/Mui\";\nimport { useRef } from \"react\";\n\nexport interface AddressFormatProps {\n sx?: TypographyProps[\"sx\"];\n address: string;\n length?: number;\n}\n\nexport function AddressFormat({ address, sx, length = 8 }: AddressFormatProps) {\n const copyRef = useRef(null);\n\n const handleCopy = () => {\n if (copyRef) {\n copyRef.current?.copy();\n }\n };\n\n return (\n <>\n \n {shorten(address, 8)}\n \n \n {shorten(address, length)}\n \n \n );\n}\n","import { Image, Tooltip } from \"@icpswap/ui\";\nimport { Box } from \"components/Mui\";\nimport { ReactNode } from \"react\";\n\nexport interface IsSneedOwnerProps {\n isSneed: boolean;\n tooltip?: ReactNode;\n size?: string;\n}\n\nexport function IsSneedOwner({ isSneed, tooltip, size = \"18px\" }: IsSneedOwnerProps) {\n return isSneed ? (\n tooltip ? (\n \n \n \"\"\n \n \n ) : (\n \"\"\n )\n ) : null;\n}\n","import { Null } from \"@icpswap/types\";\nimport { Box, BoxProps } from \"components/Mui\";\nimport React, { useEffect, useRef, useState } from \"react\";\n\nexport interface ObserverWrapperProps {\n children: React.ReactNode;\n beforeClass?: string;\n afterClass?: string;\n props?: BoxProps;\n scrollInViewport?: () => void;\n scrollOutViewport?: () => void;\n}\n\nexport function ObserverWrapper({\n children,\n beforeClass = \"before-translate\",\n afterClass = \"after-translate\",\n props,\n scrollInViewport,\n scrollOutViewport,\n}: ObserverWrapperProps) {\n const eleRef = useRef(null);\n\n const [inViewport, setInViewport] = useState(false);\n\n useEffect(() => {\n let observer: IntersectionObserver | Null = null;\n\n const observerCallback: IntersectionObserverCallback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting && entry.target === eleRef.current) {\n setInViewport(true);\n if (scrollInViewport) scrollInViewport();\n return;\n }\n\n if (scrollOutViewport) {\n scrollOutViewport();\n }\n });\n };\n\n const options = {\n root: null,\n // 64px is the Header height\n rootMargin: \"-64px 0px 0px 0px\",\n threshold: 0,\n };\n\n observer = new IntersectionObserver(observerCallback, options);\n\n if (eleRef.current && observer) {\n observer.observe(eleRef.current);\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n }\n };\n }, []);\n\n return (\n \n {children}\n \n );\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { Box, useTheme, useMediaQuery } from \"components/Mui\";\nimport { Image } from \"@icpswap/ui\";\n\ninterface ScrollTopProps {\n left?: string;\n target: string;\n heightShowScrollTop: number;\n scrollTopTarget?: string;\n}\n\nexport function ScrollTop({ target, heightShowScrollTop, scrollTopTarget }: ScrollTopProps) {\n const [showScrollTop, setShowScrollTop] = useState(false);\n const [scrollTopPositionLeft, setScrollTopPositionLeft] = useState(null);\n\n const theme = useTheme();\n const matchDownSM = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n const handleScrollTop = useCallback(() => {\n let top = 0;\n\n if (scrollTopTarget) {\n const target = document.querySelector(`#${scrollTopTarget}`) as HTMLElement;\n\n if (target !== null) {\n top = target.offsetTop;\n }\n }\n\n window.scrollTo({\n top,\n left: 0,\n behavior: \"smooth\",\n });\n }, [scrollTopTarget]);\n\n useEffect(() => {\n const onScroll = () => {\n if (document.documentElement.scrollTop > heightShowScrollTop) {\n setShowScrollTop(true);\n } else {\n setShowScrollTop(false);\n }\n };\n\n window.addEventListener(\"scroll\", onScroll);\n\n return () => {\n window.removeEventListener(\"scroll\", onScroll);\n };\n }, [heightShowScrollTop]);\n\n useEffect(() => {\n const wrapper = document.querySelector(`#${target}`);\n if (wrapper) {\n const boundingClientRect = wrapper.getBoundingClientRect();\n\n if (matchDownSM) {\n setScrollTopPositionLeft(boundingClientRect.right - 12 - 48);\n } else {\n setScrollTopPositionLeft(boundingClientRect.right + 20);\n }\n }\n }, [matchDownSM, target]);\n\n return showScrollTop ? (\n \n \n \n ) : null;\n}\n","import React, { useState, useContext, useMemo } from \"react\";\nimport { Button, Typography, Box, InputAdornment, makeStyles, Theme, CircularProgress } from \"components/Mui\";\nimport {\n parseTokenAmount,\n formatTokenAmount,\n isValidAccount,\n isValidPrincipal,\n toSignificantWithGroupSeparator,\n BigNumber,\n} from \"@icpswap/utils\";\nimport { MessageTypes, useFullscreenLoading, useTips } from \"hooks/useTips\";\nimport { tokenTransfer } from \"hooks/token/calls\";\nimport { useTokenBalance } from \"hooks/token/useTokenBalance\";\nimport { getLocaleMessage } from \"i18n/service\";\nimport { useAccountPrincipalString, useAccount, useAccountPrincipal } from \"store/auth/hooks\";\nimport WalletContext from \"components/Wallet/context\";\nimport { Modal, FilledTextField, NumberFilledTextField } from \"components/index\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useUSDPriceById } from \"hooks/useUSDPrice\";\nimport { ICP, WRAPPED_ICP } from \"@icpswap/tokens\";\nimport { MaxButton, Flex } from \"@icpswap/ui\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n warningText: {\n color: theme.palette.warning.dark,\n },\n };\n});\n\nexport type Values = {\n to: string;\n amount: string;\n};\n\nfunction usePrincipalStandard(tokenId: string, standard: string) {\n return (standard.includes(\"DIP20\") || standard.includes(\"ICRC\")) && tokenId !== ICP.address;\n}\n\nfunction useAccountStandard(tokenId: string, standard: string) {\n return !usePrincipalStandard(tokenId, standard);\n}\n\nexport interface TransferModalProps {\n open: boolean;\n onClose: () => void;\n onTransferSuccess?: () => void;\n token: Token;\n transferTo?: string;\n}\n\nexport function TokenTransferModal({ open, onClose, onTransferSuccess, token, transferTo }: TransferModalProps) {\n const { t } = useTranslation();\n const classes = useStyles();\n const account = useAccount();\n const principalString = useAccountPrincipalString();\n const principal = useAccountPrincipal();\n const [openTip] = useTips();\n const [openFullLoading, closeFullLoading] = useFullscreenLoading();\n\n const { refreshTotalBalance, setRefreshTotalBalance } = useContext(WalletContext);\n\n const { result: balance } = useTokenBalance(token.address, principal);\n const tokenUSDPrice = useUSDPriceById(token.address);\n\n const [loading, setLoading] = useState(false);\n\n const initialValues = {\n to: transferTo ?? \"\",\n amount: \"\",\n };\n\n const [values, setValues] = useState(initialValues);\n\n const handleFieldChange = (value: string, field: string) => {\n setValues({\n ...values,\n [field]: value,\n });\n };\n\n const getErrorMessage = () => {\n if (!values.to) return t(\"wallet.transfer.enter.to\");\n\n if (usePrincipalStandard(token.address, token.standard)) {\n try {\n Principal.fromText(values.to);\n } catch (error) {\n return t`Invalid principal ID`;\n }\n } else if (!isValidAccount(values.to) && !isValidPrincipal(values.to)) return t`Invalid account ID or principal ID`;\n\n if (!values.amount) return t(\"common.enter.input.amount\");\n if (\n values.amount &&\n new BigNumber(values.amount ?? 0).isGreaterThan(parseTokenAmount(balance ?? 0, token.decimals))\n )\n return t(\"common.error.insufficient.balance\");\n if (!new BigNumber(values.amount).minus(parseTokenAmount(token.transFee, token.decimals)).isGreaterThan(0))\n return t`Must be greater than trans fee`;\n\n return undefined;\n };\n\n const handleSubmit = async () => {\n try {\n if (!account) return;\n\n openFullLoading();\n setLoading(true);\n\n const { status, message } = await tokenTransfer({\n canisterId: token.address.toString(),\n to: values.to,\n amount: formatTokenAmount(\n new BigNumber(values.amount).minus(parseTokenAmount(token.transFee, token.decimals)),\n token.decimals,\n ),\n from: account,\n fee: token.transFee,\n decimals: token.decimals,\n });\n\n if (status === \"ok\") {\n openTip(t`Transferred successfully`, MessageTypes.success);\n setValues(initialValues);\n if (onTransferSuccess) onTransferSuccess();\n if (token.address.toString() === ICP.address || token.address.toString() === WRAPPED_ICP.address) {\n if (setRefreshTotalBalance) setRefreshTotalBalance(!refreshTotalBalance);\n }\n } else {\n openTip(getLocaleMessage(message) ?? t`Failed to transfer`, MessageTypes.error);\n }\n } catch (error) {\n console.error(error);\n }\n\n closeFullLoading();\n setLoading(false);\n };\n\n const actualTransferAmount = useMemo(() => {\n const amount = new BigNumber(values.amount ?? 0).minus(parseTokenAmount(token.transFee, token.decimals));\n return amount.isGreaterThan(0) ? amount.toString() : 0;\n }, [values, token]);\n\n const addressHelpText = () => {\n if (\n (usePrincipalStandard(token.address, token.standard) && principalString === values.to) ||\n (useAccountStandard(token.address, token.standard) && account === values.to) ||\n (useAccountStandard(token.address, token.standard) &&\n isValidPrincipal(values.to) &&\n principalString === values.to)\n ) {\n return {t(\"common.warning.transfer\")};\n }\n };\n\n const errorMessage = getErrorMessage();\n\n const handleMax = (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (balance) {\n handleFieldChange(parseTokenAmount(balance, token.decimals).toString(), \"amount\");\n }\n };\n\n return (\n \n \n \n handleFieldChange(value, \"to\")}\n helperText={addressHelpText()}\n fullWidth\n autoComplete=\"To\"\n multiline\n />\n\n handleFieldChange(value, \"amount\")}\n fullWidth\n numericProps={{\n allowNegative: false,\n decimalScale: token.decimals,\n }}\n autoComplete=\"off\"\n textFieldProps={{\n slotProps: {\n input: {\n endAdornment: (\n \n \n {tokenUSDPrice && values.amount\n ? `~$${toSignificantWithGroupSeparator(\n new BigNumber(values.amount).multipliedBy(tokenUSDPrice).toString(),\n 4,\n )}`\n : \"--\"}\n \n \n ),\n },\n },\n }}\n />\n\n \n \n {t(\"common.balance.colon.amount\", {\n amount: `${\n balance\n ? new BigNumber(\n parseTokenAmount(balance, token.decimals).toFixed(token.decimals > 8 ? 8 : token.decimals),\n ).toFormat()\n : \"--\"\n }`,\n })}\n \n\n \n \n\n \n {t(\"common.fee.colon.amount\", {\n amount: `${parseTokenAmount(token?.transFee?.toString(), token.decimals).toFormat()} ${token.symbol} (${\n tokenUSDPrice && token\n ? `$${toSignificantWithGroupSeparator(\n parseTokenAmount(token.transFee.toString(), token.decimals).multipliedBy(tokenUSDPrice).toString(),\n 4,\n )}`\n : \"--\"\n })`,\n })}\n \n \n {t(\"wallet.amount.received\", {\n amount: `${toSignificantWithGroupSeparator(actualTransferAmount, 18)} ${token.symbol} (${\n tokenUSDPrice && token\n ? `$${toSignificantWithGroupSeparator(\n new BigNumber(actualTransferAmount).multipliedBy(tokenUSDPrice).toString(),\n 4,\n )}`\n : \"--\"\n })`,\n })}\n \n {t(\"common.warning.transfer.address.supports\")}\n\n \n {errorMessage || (!loading ? t(\"common.confirm\") : )}\n \n \n \n );\n}\n","import { Box, Typography } from \"components/Mui\";\nimport { TOKEN_STANDARD } from \"constants/tokens\";\n\nexport const StandardText = {\n [TOKEN_STANDARD.DIP20]: \"DIP20\",\n [TOKEN_STANDARD.DIP20_WICP]: \"DIP20\",\n [TOKEN_STANDARD.DIP20_XTC]: \"DIP20\",\n [TOKEN_STANDARD.EXT]: \"EXT\",\n [TOKEN_STANDARD.ICP]: \"--\",\n [TOKEN_STANDARD.ICRC1]: \"ICRC-1\",\n [TOKEN_STANDARD.ICRC2]: \"ICRC-2\",\n};\n\nexport const StandardLabelBg = {\n [TOKEN_STANDARD.DIP20]: \"#606AA5\",\n [TOKEN_STANDARD.DIP20_WICP]: \"#606AA5\",\n [TOKEN_STANDARD.DIP20_XTC]: \"#606AA5\",\n [TOKEN_STANDARD.EXT]: \"#4E9A8C\",\n [TOKEN_STANDARD.ICP]: \"transparent\",\n [TOKEN_STANDARD.ICRC1]: \"#2D54BA\",\n [TOKEN_STANDARD.ICRC2]: \"#2D98BA\",\n};\n\nexport interface TokenStandardLabelProps {\n standard: TOKEN_STANDARD | undefined | null;\n borderRadius?: string;\n height?: string;\n fontSize?: string;\n width?: string;\n}\n\nexport function TokenStandardLabel({\n standard,\n height,\n fontSize = \"12px\",\n borderRadius = \"4px\",\n width,\n}: TokenStandardLabelProps) {\n return (\n \n \n \n {standard ? StandardText[standard] : \"--\"}\n \n \n \n );\n}\n","import { ReactNode } from \"react\";\nimport { Box } from \"components/Mui\";\n\nimport { InfoNavBar } from \"./InfoNavBar\";\n\nexport function InfoLayout({ children }: { children: ReactNode }) {\n return (\n <>\n \n\n {children}\n \n );\n}\n","import i18n from \"i18n\";\n\nexport type Route = {\n key: string;\n name: string;\n path: string;\n link?: string;\n};\n\nexport const routes: Route[] = [\n {\n key: \"info-overview\",\n name: \"Overview\",\n path: \"/info-overview\",\n },\n {\n name: \"Swap\",\n path: \"/info-swap\",\n key: \"info-swap\",\n },\n {\n key: \"info-tokens\",\n name: \"Tokens\",\n path: \"/info-tokens\",\n },\n {\n key: \"info-stake\",\n name: \"Stake\",\n path: \"/info-stake\",\n },\n {\n key: \"info-farm\",\n name: \"Farm\",\n path: \"/info-farm\",\n },\n {\n key: \"info-tools\",\n name: \"Tools\",\n path: `/info-tools`,\n },\n {\n key: \"info-claim\",\n name: i18n.t(\"nav.token.claim\"),\n path: \"/info-claim\",\n },\n {\n key: \"info-nfts\",\n name: \"NFTs\",\n path: `/info-nfts`,\n },\n {\n key: \"info-wrap\",\n name: \"WICP\",\n path: \"/info-wrap\",\n },\n];\n","import { useRef, useState } from \"react\";\nimport { useLocation, useHistory } from \"react-router-dom\";\nimport { MenuWrapper, MenuItem, Flex } from \"@icpswap/ui\";\nimport { Link } from \"components/index\";\nimport { makeStyles, useTheme, Box, Typography, useMediaQuery, Theme } from \"components/Mui\";\nimport { routes, Route } from \"./nav.config\";\n\nconst linearGradient = \"linear-gradient(89.44deg, #5569DB -0.31%, #8572FF 91.14%)\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n container: {\n background: theme.palette.background.level2,\n borderBottom: `1px solid ${theme.palette.background.level4}`,\n padding: \"20px\",\n [theme.breakpoints.down(\"sm\")]: {\n padding: \"10px\",\n },\n },\n navItem: {\n height: \"40px\",\n borderRadius: \"12px\",\n cursor: \"pointer\",\n padding: \"0 16px\",\n background: theme.palette.background.level4,\n [theme.breakpoints.down(\"sm\")]: {\n height: \"36px\",\n padding: \"0 10px\",\n },\n \"&:hover\": {\n background: linearGradient,\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n \"&.active\": {\n background: linearGradient,\n },\n },\n more: {\n padding: \"0 17px\",\n background: theme.palette.background.level4,\n borderRadius: \"12px\",\n cursor: \"pointer\",\n \"&:hover\": {\n background: linearGradient,\n },\n },\n dot: {\n width: \"5px\",\n height: \"5px\",\n background: \"#fff\",\n borderRadius: \"50%\",\n marginRight: \"6px\",\n \"&:last-child\": {\n marginRight: \"0px\",\n },\n },\n };\n});\n\nexport function InfoNavBar() {\n const classes = useStyles();\n const location = useLocation();\n const theme = useTheme() as Theme;\n const history = useHistory();\n const ref = useRef(null);\n const pathName = location.pathname;\n\n const matchUpLG = useMediaQuery(theme.breakpoints.up(\"lg\"));\n const matchDownMD = useMediaQuery(theme.breakpoints.down(\"md\"));\n const matchDownSM = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n const RoutesNumber = matchDownMD ? (matchDownSM ? 3 : 4) : matchUpLG ? 6 : 5;\n\n const [open, setOpen] = useState(false);\n\n const handleMouseEnter = () => {\n setOpen(true);\n };\n\n const handleMouseLeave = () => {\n setOpen(false);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handlerOpenTo = (val: Route) => {\n history.push(val.path);\n };\n\n const handleMenuClick = (route: Route) => {\n if (!route.path) return;\n handleClose();\n history.push(route.path);\n };\n\n function isActive(route: Route) {\n return (!!route.path && route.key === pathName.split(\"/\")[1]) || (pathName === \"/\" && route.path === \"/\");\n }\n\n function hidden() {\n return pathName.includes(\"/token/details\") && !pathName.includes(\"/swap/token/details\");\n }\n\n return (\n \n \n {routes.map((route, index) =>\n index >= RoutesNumber ? null : (\n handlerOpenTo(route)}\n className={`${classes.navItem} ${isActive(route) ? \"active\" : \"\"}`}\n >\n ({\n fontSize: \"16px\",\n [theme.breakpoints.down(\"sm\")]: {\n fontSize: \"14px\",\n },\n })}\n color={isActive(route) ? \"text.primary\" : \"text.secondary\"}\n >\n {route.name}\n \n \n ),\n )}\n\n {RoutesNumber < routes.length ? (\n \n \n \n \n \n \n\n \n {routes.map((route, index) =>\n index > RoutesNumber || index === RoutesNumber ? (\n \n handleMenuClick(route)} />\n \n ) : null,\n )}\n \n \n ) : null}\n \n \n );\n}\n","import { ReactNode } from \"react\";\nimport {\n makeStyles,\n useTheme,\n Theme,\n Box,\n Button,\n Typography,\n useMediaQuery,\n Dialog,\n DialogTitle,\n DialogContent,\n} from \"components/Mui\";\nimport DialogCloseIcon from \"assets/images/icons/dialog-close\";\nimport { isElement } from \"react-is\";\nimport i18n from \"i18n/index\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n titleContainer: {\n position: \"relative\",\n },\n title: {\n fontSize: \"20px\",\n fontWeight: 700,\n \"@media (max-width: 640px)\": {\n fontSize: \"1rem\",\n },\n \"&.warning\": {\n color: \"#D3625B\",\n },\n },\n detailItem: {\n marginBottom: \"24px\",\n },\n value: {\n textAlign: \"right\",\n wordBreak: \"break-all\",\n },\n closeButton: {\n position: \"absolute\",\n right: 0,\n top: \"50%\",\n transform: \"translate(0, -50%)\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.colors.primaryMain,\n },\n \"&.warning\": {\n color: \"#D3625B\",\n \"&:hover\": {\n color: \"#D3625B\",\n },\n },\n },\n closeButton1: {\n position: \"absolute\",\n right: \"5px\",\n top: \"5px\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.colors.primaryMain,\n },\n \"&.warning\": {\n color: \"#D3625B\",\n \"&:hover\": {\n color: \"#D3625B\",\n },\n },\n },\n}));\n\nexport interface ModalProps {\n title?: string | ReactNode;\n showClose?: boolean;\n children: ReactNode;\n open: boolean;\n confirmText?: ReactNode;\n cancelText?: ReactNode;\n onClose?: () => void;\n onConfirm?: () => void;\n onCancel?: () => void;\n showConfirm?: boolean;\n showCancel?: boolean;\n confirmDisabled?: boolean;\n fullWidth?: boolean;\n maxWidth?: string;\n dialogProps?: any;\n type?: string;\n background?: string;\n contentPadding?: string;\n [key: string]: any;\n}\n\nexport default function Modal({\n title,\n children,\n open,\n confirmText = i18n.t(\"common.confirm\"),\n cancelText = i18n.t(\"common.cancel\"),\n onClose,\n onConfirm,\n onCancel,\n showConfirm = false,\n showCancel = false,\n showClose = true,\n confirmDisabled,\n fullWidth = true,\n maxWidth = \"sm\",\n type,\n background,\n dialogProps,\n contentPadding,\n}: ModalProps) {\n const classes = useStyles();\n const theme = useTheme() as Theme;\n const matchDownMD = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const down760 = useMediaQuery(\"(max-width:760px)\");\n\n return (\n \n {title ? (\n isElement(title) ? (\n title\n ) : (\n \n \n \n {title}\n \n {showClose ? (\n \n ) : null}\n \n \n )\n ) : null}\n \n {showClose && !title ? (\n \n ) : null}\n {children}\n\n {showConfirm || showCancel ? (\n \n {showCancel ? (\n \n \n \n ) : null}\n {showConfirm ? (\n \n \n \n ) : null}\n \n ) : null}\n \n \n );\n}\n","import React from \"react\";\nimport { useTheme } from \"components/Mui\";\nimport { isDarkTheme } from \"utils\";\n\nimport Modal from \"./index\";\n\nexport interface SwapModalProps {\n width?: string;\n open: boolean;\n children: React.ReactNode;\n [key: string]: any;\n}\n\nexport default ({ width = \"570px\", open, children, ...props }: SwapModalProps) => {\n const theme = useTheme();\n\n return (\n \n {children}\n \n );\n};\n","import React from \"react\";\nimport { ProviderContext } from \"./types\";\n\nexport default React.createContext({} as ProviderContext);\n","import { InternalSnack } from \"../types\";\n\nexport const breakpoints = {\n downXs: \"@media (max-width:599.95px)\",\n upSm: \"@media (min-width:600px)\",\n};\n\nconst capitalise = (text: string): string => text.charAt(0).toUpperCase() + text.slice(1);\n\nexport const originKeyExtractor = (anchor: InternalSnack[\"anchorOrigin\"]): string =>\n `${capitalise(anchor.vertical)}${capitalise(anchor.horizontal)}`;\n\nexport const isDefined = (value: string | null | undefined | number): boolean => !!value || value === 0;\n","import React from \"react\";\nimport { CircularProgress } from \"components/Mui\";\n\nfunction SvgIcon(props: any) {\n return (\n \n );\n}\n\nfunction CheckIcon() {\n return (\n \n \n \n \n );\n}\n\nconst WarningIcon: React.FC = () => (\n \n \n \n);\n\nconst ErrorIcon: React.FC = () => (\n \n \n \n);\n\nconst InfoIcon: React.FC = () => (\n \n \n \n);\n\nconst defaultIconVariants: Record = {\n default: undefined,\n success: ,\n warning: ,\n error: ,\n info: ,\n loading: ,\n};\n\nexport default defaultIconVariants;\n","export enum TransitionStatus {\n UNMOUNTED = \"unmounted\",\n EXITED = \"exited\",\n ENTERING = \"entering\",\n ENTERED = \"entered\",\n EXITING = \"exiting\",\n}\n","// @ts-nocheck\n/* eslint-disable */\n\nimport React from \"react\";\nimport { TransitionStatus } from \"./types\";\n\nclass Transition extends React.Component {\n constructor(props: any) {\n super(props);\n\n const { appear } = props;\n\n let initialStatus;\n\n this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = TransitionStatus.EXITED;\n this.appearStatus = TransitionStatus.ENTERING;\n } else {\n initialStatus = TransitionStatus.ENTERED;\n }\n } else if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = TransitionStatus.UNMOUNTED;\n } else {\n initialStatus = TransitionStatus.EXITED;\n }\n\n this.state = { status: initialStatus };\n\n this.nextCallback = null;\n }\n\n static getDerivedStateFromProps({ in: nextIn }, prevState) {\n if (nextIn && prevState.status === TransitionStatus.UNMOUNTED) {\n return { status: TransitionStatus.EXITED };\n }\n return null;\n }\n\n componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n }\n\n componentDidUpdate(prevProps) {\n let nextStatus = null;\n if (prevProps !== this.props) {\n const { status } = this.state;\n\n if (this.props.in) {\n if (status !== TransitionStatus.ENTERING && status !== TransitionStatus.ENTERED) {\n nextStatus = TransitionStatus.ENTERING;\n }\n } else if (status === TransitionStatus.ENTERING || status === TransitionStatus.ENTERED) {\n nextStatus = TransitionStatus.EXITING;\n }\n }\n this.updateStatus(false, nextStatus);\n }\n\n componentWillUnmount() {\n this.cancelNextCallback();\n }\n\n getTimeouts() {\n const { timeout } = this.props;\n let enter = timeout;\n let exit = timeout;\n\n if (timeout != null && typeof timeout !== \"number\") {\n exit = timeout.exit;\n enter = timeout.enter;\n }\n return { exit, enter };\n }\n\n updateStatus(mounting = false, nextStatus) {\n if (nextStatus !== null) {\n this.cancelNextCallback();\n\n if (nextStatus === TransitionStatus.ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === TransitionStatus.EXITED) {\n this.setState({ status: TransitionStatus.UNMOUNTED });\n }\n }\n\n get node() {\n const node = this.props.nodeRef.current;\n if (!node) {\n throw new Error(\"notistack - Custom snackbar is not refForwarding\");\n }\n return node;\n }\n\n performEnter(mounting) {\n const { enter, id } = this.props;\n const isAppearing = mounting;\n\n const timeouts = this.getTimeouts();\n\n if (!mounting && !enter) {\n this.safeSetState({ status: TransitionStatus.ENTERED }, () => {\n this.props.onEntered(this.node, isAppearing, id);\n });\n return;\n }\n\n this.props.onEnter(this.node, isAppearing, id);\n\n this.safeSetState({ status: TransitionStatus.ENTERING }, () => {\n this.props.onEntering(this.node, isAppearing, id);\n\n this.onTransitionEnd(timeouts.enter, () => {\n this.safeSetState({ status: TransitionStatus.ENTERED }, () => {\n this.props.onEntered(this.node, isAppearing, id);\n });\n });\n });\n }\n\n performExit() {\n const { exit, id } = this.props;\n const timeouts = this.getTimeouts();\n\n // no exit animation skip right to EXITED\n if (!exit) {\n this.safeSetState({ status: TransitionStatus.EXITED }, () => {\n this.props.onExited(this.node, id);\n });\n return;\n }\n\n this.props.onExit(this.node, id);\n\n this.safeSetState({ status: TransitionStatus.EXITING }, () => {\n this.props.onExiting(this.node, id);\n\n this.onTransitionEnd(timeouts.exit, () => {\n this.safeSetState({ status: TransitionStatus.EXITED }, () => {\n this.props.onExited(this.node, id);\n });\n });\n });\n }\n\n cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n }\n\n safeSetState(nextState, callback) {\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n }\n\n setNextCallback(callback) {\n let active = true;\n\n this.nextCallback = (event) => {\n if (active) {\n active = false;\n this.nextCallback = null;\n\n callback(event);\n }\n };\n\n this.nextCallback.cancel = () => {\n active = false;\n };\n\n return this.nextCallback;\n }\n\n onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n const doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n if (!this.node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(this.node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n }\n\n render() {\n const { status } = this.state;\n\n if (status === TransitionStatus.UNMOUNTED) {\n return null;\n }\n\n const {\n children,\n // filter props for `Transition`\n id: _id,\n in: _in,\n mountOnEnter: _mountOnEnter,\n unmountOnExit: _unmountOnExit,\n appear: _appear,\n enter: _enter,\n exit: _exit,\n timeout: _timeout,\n addEndListener: _addEndListener,\n onEnter: _onEnter,\n onEntering: _onEntering,\n onEntered: _onEntered,\n onExit: _onExit,\n onExiting: _onExiting,\n onExited: _onExited,\n nodeRef: _nodeRef,\n ...childProps\n } = this.props;\n\n return children(status, childProps);\n }\n}\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n\n onExit: noop,\n onExiting: noop,\n onExited: noop,\n};\n\nexport default Transition;\n","/* eslint-disable no-param-reassign */\nimport * as React from \"react\";\n\n/**\n * passes {value} to {ref}\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nfunction setRef(\n ref: React.MutableRefObject | ((instance: T | null) => void) | null | undefined,\n value: T | null,\n): void {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nexport default function useForkRef(\n refA: React.Ref | null | undefined,\n refB: React.Ref | null | undefined,\n): React.Ref | null {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refA == null && refB == null) {\n return null;\n }\n return (refValue) => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}\n","import { TransitionDuration } from \"../types\";\n\ninterface ComponentProps {\n style: React.CSSProperties | undefined;\n /**\n * number: 400\n * string: 'auto'\n * TransitionDuration: { enter: 200, exit: 400 }\n */\n timeout: number | string | TransitionDuration;\n mode: \"enter\" | \"exit\";\n}\n\ninterface TransitionPropsReturnType {\n duration: string | number;\n easing: string | undefined;\n delay: string | undefined;\n}\n\nexport default function getTransitionProps(props: ComponentProps): TransitionPropsReturnType {\n const { timeout, style = {}, mode } = props;\n return {\n duration: style.transitionDuration ?? (typeof timeout === \"object\" ? timeout[mode] || 0 : timeout),\n easing: style.transitionTimingFunction,\n delay: style.transitionDelay,\n };\n}\n","/* eslint-disable no-param-reassign */\nexport const defaultEasing = {\n // This is the most common easing curve.\n easeInOut: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: \"cubic-bezier(0.0, 0, 0.2, 1)\",\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: \"cubic-bezier(0.4, 0, 1, 1)\",\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: \"cubic-bezier(0.4, 0, 0.6, 1)\",\n};\n\n/**\n * CSS hack to force a repaint\n */\nexport const reflow = (node: Element): void => {\n // We have to do something with node.scrollTop.\n // Otherwise it removed from the compiled code by optimisers\n // eslint-disable-next-line no-self-assign\n node.scrollTop = node.scrollTop;\n};\n","import { defaultEasing } from \"./utils\";\n\ninterface CreateTransitionOptions {\n duration: string | number;\n easing?: string;\n delay?: string | number;\n}\n\nconst formatMs = (milliseconds: number) => `${Math.round(milliseconds)}ms`;\n\nexport default function createTransition(\n props: string | string[] = [\"all\"],\n options?: CreateTransitionOptions,\n): string {\n const { duration = 300, easing = defaultEasing.easeInOut, delay = 0 } = options || {};\n\n const properties = Array.isArray(props) ? props : [props];\n\n return properties\n .map((animatedProp) => {\n const formattedDuration = typeof duration === \"string\" ? duration : formatMs(duration);\n const formattedDelay = typeof delay === \"string\" ? delay : formatMs(delay);\n return `${animatedProp} ${formattedDuration} ${easing} ${formattedDelay}`;\n })\n .join(\",\");\n}\n","export function ownerDocument(node: Node | null | undefined): Document {\n return (node && node.ownerDocument) || document;\n}\n\nexport function ownerWindow(node: Node | null): Window {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}\n","// @ts-nocheck\n/* eslint-disable no-param-reassign */\n\nimport * as React from \"react\";\nimport TransitionComponent, { TransitionStatus } from \"../Transition\";\nimport useForkRef from \"../useForkRef\";\nimport getTransitionProps from \"../getTransitionProps\";\nimport createTransition from \"../createTransition\";\nimport { defaultEasing, reflow } from \"../utils\";\nimport { ownerWindow } from \"../document-window\";\nimport { SlideTransitionDirection, TransitionHandlerProps, TransitionProps } from \"../../types\";\n\n/**\n * Corresponds to 10 frames at 60 Hz.\n * A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\n */\nfunction debounce(func, wait = 166) {\n let timeout;\n function debounced(...args: any[]) {\n const later = () => {\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n\n return debounced;\n}\n\n/**\n * Translate the node so it can't be seen on the screen.\n * Later, we're going to translate the node back to its original location with `none`.\n */\nfunction getTranslateValue(\n direction: SlideTransitionDirection,\n node: HTMLElement & { fakeTransform?: string },\n): string {\n const rect = node.getBoundingClientRect();\n const containerWindow = ownerWindow(node);\n let transform;\n\n if (node.fakeTransform) {\n transform = node.fakeTransform;\n } else {\n const computedStyle = containerWindow.getComputedStyle(node);\n transform = computedStyle.getPropertyValue(\"-webkit-transform\") || computedStyle.getPropertyValue(\"transform\");\n }\n\n let offsetX = 0;\n let offsetY = 0;\n\n if (transform && transform !== \"none\" && typeof transform === \"string\") {\n const transformValues = transform.split(\"(\")[1].split(\")\")[0].split(\",\");\n offsetX = parseInt(transformValues[4], 10);\n offsetY = parseInt(transformValues[5], 10);\n }\n\n switch (direction) {\n case \"left\":\n return `translateX(${containerWindow.innerWidth + offsetX - rect.left}px)`;\n case \"right\":\n return `translateX(-${rect.left + rect.width - offsetX}px)`;\n case \"up\":\n return `translateY(${containerWindow.innerHeight + offsetY - rect.top}px)`;\n default:\n // down\n return `translateY(-${rect.top + rect.height - offsetY}px)`;\n }\n}\n\nfunction setTranslateValue(direction: SlideTransitionDirection, node: HTMLElement | null): void {\n if (!node) return;\n const transform = getTranslateValue(direction, node);\n if (transform) {\n node.style.webkitTransform = transform;\n node.style.transform = transform;\n }\n}\n\nexport const Slide = React.forwardRef((props, ref) => {\n const {\n children,\n direction = \"down\",\n in: inProp,\n style,\n timeout = 0,\n onEnter,\n onEntered,\n onExit,\n onExited,\n ...other\n } = props;\n\n const nodeRef = React.useRef(null);\n const handleRefIntermediary = useForkRef(children.ref, nodeRef);\n const handleRef = useForkRef(handleRefIntermediary, ref);\n\n const handleEnter: TransitionHandlerProps[\"onEnter\"] = (node, isAppearing, snackId) => {\n setTranslateValue(direction, node);\n reflow(node);\n\n if (onEnter) {\n onEnter(node, isAppearing, snackId);\n }\n };\n\n const handleEntering = (node: HTMLElement) => {\n const easing = style?.transitionTimingFunction || defaultEasing.easeOut;\n const transitionProps = getTransitionProps({\n timeout,\n mode: \"enter\",\n style: { ...style, transitionTimingFunction: easing },\n });\n\n node.style.webkitTransition = createTransition(\"-webkit-transform\", transitionProps);\n node.style.transition = createTransition(\"transform\", transitionProps);\n\n node.style.webkitTransform = \"none\";\n node.style.transform = \"none\";\n };\n\n const handleExit: TransitionHandlerProps[\"onExit\"] = (node, snackId) => {\n const easing = style?.transitionTimingFunction || defaultEasing.sharp;\n const transitionProps = getTransitionProps({\n timeout,\n mode: \"exit\",\n style: { ...style, transitionTimingFunction: easing },\n });\n\n node.style.webkitTransition = createTransition(\"-webkit-transform\", transitionProps);\n node.style.transition = createTransition(\"transform\", transitionProps);\n\n setTranslateValue(direction, node);\n\n if (onExit) {\n onExit(node, snackId);\n }\n };\n\n const handleExited: TransitionHandlerProps[\"onExited\"] = (node, snackId) => {\n // No need for transitions when the component is hidden\n node.style.webkitTransition = \"\";\n node.style.transition = \"\";\n\n if (onExited) {\n onExited(node, snackId);\n }\n };\n\n const updatePosition = React.useCallback(() => {\n if (nodeRef.current) {\n setTranslateValue(direction, nodeRef.current);\n }\n }, [direction]);\n\n React.useEffect(() => {\n // Skip configuration where the position is screen size invariant.\n if (inProp || direction === \"down\" || direction === \"right\") {\n return undefined;\n }\n\n const handleResize = debounce(() => {\n if (nodeRef.current) {\n setTranslateValue(direction, nodeRef.current);\n }\n });\n\n const containerWindow = ownerWindow(nodeRef.current);\n containerWindow.addEventListener(\"resize\", handleResize);\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener(\"resize\", handleResize);\n };\n }, [direction, inProp]);\n\n React.useEffect(() => {\n if (!inProp) {\n // We need to update the position of the drawer when the direction change and\n // when it's hidden.\n updatePosition();\n }\n }, [inProp, updatePosition]);\n\n return (\n \n {(state: TransitionStatus, childProps: Record) =>\n React.cloneElement(children, {\n ref: handleRef,\n style: {\n visibility: state === \"exited\" && !inProp ? \"hidden\" : undefined,\n ...style,\n ...children.props.style,\n },\n ...childProps,\n })\n }\n \n );\n});\n","import defaultIconVariants from \"../utils/defaultIconVariants\";\nimport { InternalSnack } from \"../types\";\nimport { Slide } from \"../transitions/Slide\";\n\nexport const defaults = {\n maxSnack: 3,\n persist: false,\n hideIconVariant: false,\n disableWindowBlurListener: false,\n variant: \"default\",\n autoHideDuration: 5000,\n iconVariant: defaultIconVariants,\n anchorOrigin: { vertical: \"top\", horizontal: \"right\" },\n TransitionComponent: Slide,\n transitionDuration: {\n enter: 225,\n exit: 195,\n },\n};\n\n/**\n * Derives the right autoHideDuration taking into account the following\n * prority order: 1: Options, 2: Props, 3: default fallback\n */\nconst getAutoHideDuration = (optionsDuration: any, propsDuration: any) => {\n const isNumberOrNull = (numberish: number | null) => typeof numberish === \"number\" || numberish === null;\n\n if (isNumberOrNull(optionsDuration)) return optionsDuration;\n if (isNumberOrNull(propsDuration)) return propsDuration;\n return defaults.autoHideDuration;\n};\n\n/**\n * Derives the right transitionDuration taking into account the following\n * prority order: 1: Options, 2: Props, 3: default fallback\n */\nconst getTransitionDuration = (optionsDuration: any, propsDuration: any) => {\n const is = (item: any, types: string[]) => types.some((t) => typeof item === t);\n\n if (is(optionsDuration, [\"string\", \"number\"])) {\n return optionsDuration;\n }\n\n if (is(optionsDuration, [\"object\"])) {\n return {\n ...defaults.transitionDuration,\n ...(is(propsDuration, [\"object\"]) && propsDuration),\n ...optionsDuration,\n };\n }\n\n if (is(propsDuration, [\"string\", \"number\"])) {\n return propsDuration;\n }\n\n if (is(propsDuration, [\"object\"])) {\n return {\n ...defaults.transitionDuration,\n ...propsDuration,\n };\n }\n\n return defaults.transitionDuration;\n};\n\nexport const merge =\n (options: any, props: any) =>\n (name: keyof InternalSnack, shouldObjectMerge = false): any => {\n if (shouldObjectMerge) {\n return {\n // @ts-ignore\n ...defaults[name],\n ...props[name],\n ...options[name],\n };\n }\n\n if (name === \"autoHideDuration\") {\n return getAutoHideDuration(options.autoHideDuration, props.autoHideDuration);\n }\n\n if (name === \"transitionDuration\") {\n return getTransitionDuration(options.transitionDuration, props.transitionDuration);\n }\n\n // @ts-ignore\n return options[name] || props[name] || defaults[name];\n };\n","/**\n * https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n */\nexport default function getAutoHeightDuration(height: number): number {\n if (!height) {\n return 0;\n }\n\n const constant = height / 36;\n\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\n","export const ComponentClasses = {\n SnackbarContainer: \"notistack-SnackbarContainer\",\n Snackbar: \"notistack-Snackbar\",\n CollapseWrapper: \"notistack-CollapseWrapper\",\n MuiContent: \"notistack-MuiContent\",\n};\n","/* eslint-disable no-param-reassign */\n\n/**\n * Credit to MUI team @ https://mui.com\n */\nimport * as React from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"components/Mui\";\n\nimport TransitionComponent, { TransitionStatus } from \"../Transition\";\nimport useForkRef from \"../useForkRef\";\nimport { TransitionHandlerProps, TransitionProps } from \"../../types\";\nimport getAutoHeightDuration from \"../getAutoHeightDuration\";\nimport getTransitionProps from \"../getTransitionProps\";\nimport createTransition from \"../createTransition\";\nimport { ComponentClasses } from \"../../utils/styles\";\n\nconst useStyles = makeStyles({\n root: {\n height: 0,\n },\n entered: {\n height: \"auto\",\n },\n});\n\nconst collapsedSize = \"0px\";\n\nconst Collapse = React.forwardRef((props, ref) => {\n const { children, style, timeout = 300, in: inProp, onEnter, onEntered, onExit, onExited, ...other } = props;\n\n const classes = useStyles();\n\n const timer = React.useRef>();\n const wrapperRef = React.useRef(null);\n const autoTransitionDuration = React.useRef();\n\n React.useEffect(\n () => () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n },\n [],\n );\n\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(ref, nodeRef);\n\n const getWrapperSize = () => (wrapperRef.current ? wrapperRef.current.clientHeight : 0);\n\n const handleEnter: TransitionHandlerProps[\"onEnter\"] = (node, isAppearing, snackId) => {\n node.style.height = collapsedSize;\n if (onEnter) {\n onEnter(node, isAppearing, snackId);\n }\n };\n\n const handleEntering = (node: HTMLElement) => {\n const wrapperSize = getWrapperSize();\n\n const { duration: transitionDuration, easing } = getTransitionProps({\n style,\n timeout,\n mode: \"enter\",\n });\n\n if (timeout === \"auto\") {\n const duration2 = getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration =\n typeof transitionDuration === \"string\" ? transitionDuration : `${transitionDuration}ms`;\n }\n\n node.style.height = `${wrapperSize}px`;\n node.style.transitionTimingFunction = easing || \"\";\n };\n\n const handleEntered: TransitionHandlerProps[\"onEntered\"] = (node, isAppearing, snackId) => {\n node.style.height = \"auto\";\n if (onEntered) {\n onEntered(node, isAppearing, snackId);\n }\n };\n\n const handleExit: TransitionHandlerProps[\"onExit\"] = (node, snackId) => {\n node.style.height = `${getWrapperSize()}px`;\n if (onExit) {\n onExit(node, snackId);\n }\n };\n\n const handleExiting = (node: HTMLElement) => {\n const wrapperSize = getWrapperSize();\n const { duration: transitionDuration, easing } = getTransitionProps({\n style,\n timeout,\n mode: \"exit\",\n });\n\n if (timeout === \"auto\") {\n const duration2 = getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration =\n typeof transitionDuration === \"string\" ? transitionDuration : `${transitionDuration}ms`;\n }\n\n node.style.height = collapsedSize;\n node.style.transitionTimingFunction = easing || \"\";\n };\n\n const handleAddEndListener = (next: any) => {\n if (timeout === \"auto\") {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n };\n\n return (\n // @ts-ignore\n \n {(state: TransitionStatus, childProps: Record) => (\n \n \n
{children}
\n \n \n )}\n \n );\n});\n\nexport default Collapse;\n","import {\n InternalSnack,\n SlideTransitionDirection,\n SnackbarOrigin,\n SnackbarClassKey,\n SnackbarProviderProps,\n ClassNameMap,\n ContainerClassKey,\n} from \"../types\";\nimport { originKeyExtractor } from \"../utils\";\n\nconst direction: Record = {\n right: \"left\",\n left: \"right\",\n bottom: \"up\",\n top: \"down\",\n};\n\nexport const getSlideDirection = (anchorOrigin: InternalSnack[\"anchorOrigin\"]): SlideTransitionDirection => {\n if (anchorOrigin.horizontal !== \"center\") {\n return direction[anchorOrigin.horizontal];\n }\n return direction[anchorOrigin.vertical];\n};\n\n/** Tranforms classes name */\nexport const toSnackbarAnchorOrigin = (anchorOrigin: SnackbarOrigin): SnackbarClassKey =>\n `anchorOrigin${originKeyExtractor(anchorOrigin)}` as SnackbarClassKey;\n\n/**\n * Omit SnackbarContainer class keys that are not needed for SnackbarItem\n */\nexport const keepSnackbarClassKeys = (\n classes: SnackbarProviderProps[\"classes\"] = {},\n): Partial> => {\n const containerClasses: Record = {\n containerRoot: true,\n containerAnchorOriginTopCenter: true,\n containerAnchorOriginBottomCenter: true,\n containerAnchorOriginTopRight: true,\n containerAnchorOriginBottomRight: true,\n containerAnchorOriginTopLeft: true,\n containerAnchorOriginBottomLeft: true,\n };\n return (Object.keys(classes) as ContainerClassKey[])\n .filter((key) => !containerClasses[key])\n .reduce((obj, key) => ({ ...obj, [key]: classes[key] }), {});\n};\n","/* eslint-disable @typescript-eslint/no-empty-function */\n// @ts-nocheck\nexport default function createChainedFunction(funcs) {\n return funcs.reduce(\n (acc, func) => {\n if (func == null) return acc;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof func !== \"function\") {\n // eslint-disable-next-line no-console\n console.error(\"Invalid Argument Type. must only provide functions, undefined, or null.\");\n }\n }\n\n return function chainedFunction(...args) {\n const argums = [...args];\n acc.apply(this, argums);\n func.apply(this, argums);\n };\n },\n () => {},\n );\n}\n","/**\n * @link https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/utils/useEventCallback.js\n */\n\n// @ts-nocheck\n\nimport * as React from \"react\";\n\nconst useEnhancedEffect = typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nexport default function useEventCallback(fn) {\n const ref = React.useRef(fn);\n\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n\n return React.useCallback((...args) => (0, ref.current)(...args), []);\n}\n","/**\n * Credit to MUI team @ https://mui.com\n */\nimport * as React from \"react\";\nimport clsx from \"clsx\";\nimport { ClickAwayListener } from \"components/Mui\";\n\nimport useEventCallback from \"../utils/useEventCallback\";\nimport { CloseReason, SharedProps, SnackbarKey } from \"../types\";\nimport { ComponentClasses } from \"../utils/styles\";\n\ninterface SnackbarProps extends Required> {\n open: boolean;\n id: SnackbarKey;\n className: string;\n children: JSX.Element;\n autoHideDuration: number | null | undefined;\n SnackbarProps: SharedProps[\"SnackbarProps\"];\n}\n\nconst Snackbar = React.forwardRef((props, ref) => {\n const {\n children,\n className,\n autoHideDuration,\n disableWindowBlurListener = false,\n onClose,\n id,\n open,\n SnackbarProps = {},\n } = props;\n\n const timerAutoHide = React.useRef>();\n\n const handleClose = useEventCallback((...args: [React.SyntheticEvent, CloseReason, SnackbarKey]) => {\n if (onClose) {\n onClose(...args);\n }\n });\n\n const setAutoHideTimer = useEventCallback((autoHideDurationParam: number | null) => {\n if (!onClose || autoHideDurationParam == null) {\n return;\n }\n\n if (timerAutoHide.current) {\n clearTimeout(timerAutoHide.current);\n }\n timerAutoHide.current = setTimeout(() => {\n handleClose(null, \"timeout\", id);\n }, autoHideDurationParam);\n });\n\n React.useEffect(() => {\n if (open) {\n setAutoHideTimer(autoHideDuration);\n }\n\n return () => {\n if (timerAutoHide.current) {\n clearTimeout(timerAutoHide.current);\n }\n };\n }, [open, autoHideDuration, setAutoHideTimer]);\n\n /**\n * Pause the timer when the user is interacting with the Snackbar\n * or when the user hide the window.\n */\n const handlePause = () => {\n if (timerAutoHide.current) {\n clearTimeout(timerAutoHide.current);\n }\n };\n\n /**\n * Restart the timer when the user is no longer interacting with the Snackbar\n * or when the window is shown back.\n */\n const handleResume = React.useCallback(() => {\n if (autoHideDuration != null) {\n setAutoHideTimer(autoHideDuration * 0.5);\n }\n }, [autoHideDuration, setAutoHideTimer]);\n\n const handleMouseEnter: React.MouseEventHandler = (event) => {\n if (SnackbarProps.onMouseEnter) {\n SnackbarProps.onMouseEnter(event);\n }\n handlePause();\n };\n\n const handleMouseLeave: React.MouseEventHandler = (event) => {\n if (SnackbarProps.onMouseLeave) {\n SnackbarProps.onMouseLeave(event);\n }\n handleResume();\n };\n\n const handleClickAway = (event: MouseEvent | TouchEvent) => {\n if (onClose) {\n // @ts-ignore\n onClose(event, \"clickaway\", id);\n }\n };\n\n React.useEffect(() => {\n if (!disableWindowBlurListener && open) {\n window.addEventListener(\"focus\", handleResume);\n window.addEventListener(\"blur\", handlePause);\n\n return () => {\n window.removeEventListener(\"focus\", handleResume);\n window.removeEventListener(\"blur\", handlePause);\n };\n }\n\n return undefined;\n }, [disableWindowBlurListener, handleResume, open]);\n\n return (\n \n {/* @ts-ignore */}\n \n {children}\n \n \n );\n});\n\nexport default Snackbar;\n","import { forwardRef } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"components/Mui\";\n\nimport { SnackbarContentProps } from \"../types\";\nimport { breakpoints } from \"../utils\";\n\nconst useStyles = makeStyles({\n root: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexGrow: 1,\n [breakpoints.upSm]: {\n flexGrow: \"initial\",\n minWidth: \"288px\",\n },\n },\n});\n\nconst SnackbarContent = forwardRef(({ className, ...props }, ref) => {\n const classes = useStyles();\n return
;\n});\n\nexport default SnackbarContent;\n","import { memo, forwardRef, useEffect, useState } from \"react\";\nimport { Box, makeStyles, Theme } from \"components/Mui\";\nimport clsx from \"clsx\";\nimport DialogCloseIcon from \"assets/images/icons/dialog-close\";\n\nimport SnackbarContent from \"../../SnackbarContent\";\nimport { CustomContentProps } from \"../../types\";\nimport { ComponentClasses } from \"../../utils/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n root: {\n backgroundColor: theme.palette.background.level3, // dark grey\n fontSize: \"0.875rem\",\n lineHeight: 1.43,\n letterSpacing: \"0.01071em\",\n color: \"#fff\",\n alignItems: \"center\",\n padding: \"24px 26px\",\n borderRadius: \"8px\",\n boxShadow:\n \"0px 3px 28px 1px rgba(0, 0, 0, 0.14), 0px 0px 6px 0px rgba(0, 0, 0, 0.12), 0px 0px 16px 9px rgba(0, 0, 0, 0.08)\",\n position: \"relative\",\n paddingRight: \"70px\",\n overflow: \"hidden\",\n display: \"block\",\n \"&.loading\": {\n paddingRight: \"26px\",\n },\n },\n iconWrapper: {\n width: \"42px\",\n },\n message: {\n display: \"flex\",\n alignItems: \"flex-start\",\n },\n messageContent: {\n maxWidth: \"214px\",\n margin: \"0\",\n wordBreak: \"break-word\",\n fontWeight: 500,\n },\n extraContent: {\n paddingLeft: \"42px\",\n marginTop: \"6px\",\n },\n action: {\n display: \"flex\",\n alignItems: \"center\",\n marginLeft: \"auto\",\n paddingLeft: \"16px\",\n marginRight: \"-8px\",\n },\n close: {\n position: \"absolute\",\n right: \"18px\",\n top: \"18px\",\n cursor: \"pointer\",\n color: \"#8492C4\",\n },\n line: {\n position: \"absolute\",\n width: \"100%\",\n height: \"2px\",\n bottom: 0,\n left: 0,\n borderRadius: \"0 0 8px 8px\",\n \"&.tick\": {\n width: \"0px\",\n borderRadius: \"0 0 0 8px\",\n },\n \"&.success\": {\n backgroundColor: theme.colors.successDark,\n },\n \"&.error\": {\n backgroundColor: theme.colors.danger,\n },\n },\n };\n});\n\nconst MaterialDesignContent = forwardRef((props, forwardedRef) => {\n const { id, message, action: componentOrFunctionAction, iconVariant, variant, hideIconVariant, style } = props;\n\n const [tick, setTick] = useState(false);\n\n const classes = useStyles();\n\n const icon = iconVariant[variant];\n\n let action = componentOrFunctionAction;\n if (typeof action === \"function\") {\n action = action(id);\n }\n\n const isLoading = variant === \"loading\";\n\n useEffect(() => {\n setTick(true);\n }, [setTick]);\n\n return (\n \n
\n {!hideIconVariant ?
{icon}
: null}\n
{message}
\n {/* @ts-ignore */}\n {!isLoading ? : \"\"}\n
\n\n {props.extraContent ?
{props.extraContent}
: null}\n\n {action &&
{action}
}\n\n {!isLoading ? (\n \n ) : null}\n \n );\n});\n\nexport default memo(MaterialDesignContent);\n","import React, { useState, useEffect, useRef, useCallback, useMemo } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"components/Mui\";\n\nimport Collapse from \"../transitions/Collapse\";\nimport { getSlideDirection, toSnackbarAnchorOrigin, keepSnackbarClassKeys } from \"./utils\";\nimport {\n TransitionHandlerProps,\n SnackbarProviderProps,\n CustomContentProps,\n InternalSnack,\n SharedProps,\n} from \"../types\";\nimport createChainedFunction from \"../utils/createChainedFunction\";\nimport Snackbar from \"./Snackbar\";\nimport MaterialDesignContent from \"../ui/MaterialDesignContent\";\n\nconst useStyles = makeStyles({\n wrappedRoot: {\n position: \"relative\",\n transform: \"translateX(0)\",\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n minWidth: \"288px\",\n margin: \"6px 0\",\n },\n});\n\ninterface SnackbarItemProps extends Required> {\n snack: InternalSnack;\n classes: SnackbarProviderProps[\"classes\"];\n onEnter: SnackbarProviderProps[\"onEnter\"];\n onExit: SnackbarProviderProps[\"onExit\"];\n Component?: React.ComponentType;\n}\n\nexport default function SnackbarItem(props: SnackbarItemProps) {\n const styles = useStyles();\n\n const timeout = useRef>();\n const [collapsed, setCollapsed] = useState(true);\n\n const handleClose: NonNullable = createChainedFunction([props.snack.onClose, props.onClose]);\n\n const handleEntered: TransitionHandlerProps[\"onEntered\"] = () => {\n if (props.snack.requestClose) {\n handleClose(null, \"instructed\", props.snack.id);\n }\n };\n\n const handleExitedScreen = useCallback((): void => {\n timeout.current = setTimeout(() => {\n setCollapsed((col) => !col);\n }, 125);\n }, []);\n\n useEffect(\n () => (): void => {\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n },\n [],\n );\n\n const { snack, classes: allClasses, Component = MaterialDesignContent } = props;\n\n const classes = useMemo(() => keepSnackbarClassKeys(allClasses), [allClasses]);\n\n const {\n open,\n SnackbarProps,\n TransitionComponent,\n TransitionProps,\n transitionDuration,\n disableWindowBlurListener,\n content: componentOrFunctionContent,\n ...otherSnack\n } = snack;\n\n const transitionProps = {\n direction: getSlideDirection(otherSnack.anchorOrigin),\n timeout: transitionDuration,\n ...TransitionProps,\n };\n\n let content = componentOrFunctionContent;\n if (typeof content === \"function\") {\n content = content(otherSnack.id, otherSnack.message);\n }\n\n const callbacks: { [key in keyof TransitionHandlerProps]?: any } = (\n [\"onEnter\", \"onEntered\", \"onExit\", \"onExited\"] as (keyof TransitionHandlerProps)[]\n ).reduce(\n (acc, cbName) => ({\n ...acc,\n [cbName]: createChainedFunction([props.snack[cbName], props[cbName]]),\n }),\n {},\n );\n\n return (\n \n \n \n {/* @ts-ignore */}\n {content || handleClose(null, \"instructed\", props.snack.id)} />}\n \n \n \n );\n}\n","import React, { memo } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"components/Mui\";\n\nimport createTransition from \"../transitions/createTransition\";\nimport { ComponentClasses } from \"../utils/styles\";\nimport { breakpoints, originKeyExtractor } from \"../utils\";\nimport { ContainerClassKey, SnackbarProviderProps } from \"../types\";\n\nconst indents = {\n view: { default: 20, dense: 4 },\n snackbar: { default: 6, dense: 2 },\n};\n\nconst collapseWrapper = `.${ComponentClasses.CollapseWrapper}`;\n\nconst xsWidthMargin = 16;\n\nconst useStyles = makeStyles({\n root: {\n boxSizing: \"border-box\",\n display: \"flex\",\n maxHeight: \"100%\",\n position: \"fixed\",\n zIndex: 1400,\n height: \"auto\",\n width: \"auto\",\n transition: createTransition([\"top\", \"right\", \"bottom\", \"left\", \"max-width\"], { duration: 300, easing: \"ease\" }),\n // container itself is invisible and should not block clicks, clicks should be passed to its children\n // a pointerEvents: all is applied in the collapse component\n pointerEvents: \"none\",\n [collapseWrapper]: {\n padding: `${indents.snackbar.default}px 0px`,\n transition: \"padding 300ms ease 0ms\",\n },\n maxWidth: `calc(100% - ${indents.view.default * 2}px)`,\n [breakpoints.downXs]: {\n width: \"100%\",\n maxWidth: `calc(100% - ${xsWidthMargin * 2}px)`,\n },\n },\n rootDense: {\n [collapseWrapper]: {\n padding: `${indents.snackbar.dense}px 0px`,\n },\n },\n top: {\n top: \"60px\",\n flexDirection: \"column\",\n },\n bottom: {\n bottom: `${indents.view.default - indents.snackbar.default}px`,\n flexDirection: \"column-reverse\",\n },\n left: {\n left: `${indents.view.default}px`,\n [breakpoints.upSm]: {\n alignItems: \"flex-start\",\n },\n [breakpoints.downXs]: {\n left: `${xsWidthMargin}px`,\n },\n },\n right: {\n right: `${indents.view.default}px`,\n [breakpoints.upSm]: {\n alignItems: \"flex-end\",\n },\n [breakpoints.downXs]: {\n right: `${xsWidthMargin}px`,\n },\n },\n center: {\n left: \"50%\",\n transform: \"translateX(-50%)\",\n [breakpoints.upSm]: {\n alignItems: \"center\",\n },\n },\n});\n\ninterface SnackbarContainerProps {\n children: React.ReactNode;\n dense: SnackbarProviderProps[\"dense\"];\n anchorOrigin: NonNullable;\n classes: SnackbarProviderProps[\"classes\"];\n}\n\nconst SnackbarContainer: React.FC = (props) => {\n const { classes = {}, anchorOrigin, dense, children } = props;\n const styles = useStyles();\n\n const combinedClassname = clsx(\n ComponentClasses.SnackbarContainer,\n styles[anchorOrigin.vertical],\n styles[anchorOrigin.horizontal],\n { [styles.rootDense]: dense },\n styles.root, // root should come after others to override maxWidth\n classes.containerRoot,\n classes[`containerAnchorOrigin${originKeyExtractor(anchorOrigin)}` as ContainerClassKey],\n );\n\n return
{children}
;\n};\n\nexport default memo(SnackbarContainer);\n","import React, { Component } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport clsx from \"clsx\";\nimport SnackbarContext from \"../SnackbarContext\";\nimport { originKeyExtractor, isDefined } from \"../utils\";\nimport { defaults, merge } from \"./merger\";\nimport SnackbarItem from \"../SnackbarItem\";\nimport SnackbarContainer from \"../SnackbarContainer\";\nimport warning from \"../utils/warning\";\nimport {\n SnackbarProviderProps,\n SnackbarKey,\n ProviderContext,\n TransitionHandlerProps,\n InternalSnack,\n OptionsObject,\n SharedProps,\n} from \"../types\";\nimport createChainedFunction from \"../utils/createChainedFunction\";\n\ntype Reducer = (state: State) => State;\ntype SnacksByPosition = { [key: string]: InternalSnack[] };\n\ninterface State {\n snacks: InternalSnack[];\n queue: InternalSnack[];\n contextValue: ProviderContext;\n}\n\nclass SnackbarProvider extends Component {\n constructor(props: SnackbarProviderProps) {\n super(props);\n this.state = {\n snacks: [],\n queue: [], // eslint-disable-line react/no-unused-state\n contextValue: {\n enqueueSnackbar: this.enqueueSnackbar,\n closeSnackbar: this.closeSnackbar,\n },\n };\n }\n\n get maxSnack(): number {\n return this.props.maxSnack || defaults.maxSnack;\n }\n\n /**\n * Adds a new snackbar to the queue to be presented.\n * Returns generated or user defined key referencing the new snackbar or null\n */\n enqueueSnackbar = (message: string | React.ReactNode, optsOrUndefined: OptionsObject = {}): SnackbarKey => {\n const opts = optsOrUndefined;\n\n const { key, preventDuplicate, ...options } = opts;\n\n const hasSpecifiedKey = isDefined(key);\n const id = hasSpecifiedKey ? (key as SnackbarKey) : new Date().getTime() + Math.random();\n\n const merger = merge(options, this.props);\n const snack: InternalSnack = {\n id,\n ...options,\n message,\n open: true,\n entered: false,\n requestClose: false,\n persist: merger(\"persist\"),\n action: merger(\"action\"),\n content: merger(\"content\"),\n variant: merger(\"variant\"),\n anchorOrigin: merger(\"anchorOrigin\"),\n disableWindowBlurListener: merger(\"disableWindowBlurListener\"),\n autoHideDuration: merger(\"autoHideDuration\"),\n hideIconVariant: merger(\"hideIconVariant\"),\n TransitionComponent: merger(\"TransitionComponent\"),\n transitionDuration: merger(\"transitionDuration\"),\n TransitionProps: merger(\"TransitionProps\", true),\n iconVariant: merger(\"iconVariant\", true),\n style: merger(\"style\", true),\n SnackbarProps: merger(\"SnackbarProps\", true),\n className: clsx(this.props.className, options.className),\n };\n\n if (snack.persist) {\n snack.autoHideDuration = undefined;\n }\n\n this.setState((state) => {\n if ((preventDuplicate === undefined && this.props.preventDuplicate) || preventDuplicate) {\n const compareFunction = (item: InternalSnack): boolean =>\n hasSpecifiedKey ? item.id === id : item.message === message;\n\n const inQueue = state.queue.findIndex(compareFunction) > -1;\n const inView = state.snacks.findIndex(compareFunction) > -1;\n if (inQueue || inView) {\n return state;\n }\n }\n\n return this.handleDisplaySnack({\n ...state,\n queue: [...state.queue, snack],\n });\n });\n\n return id;\n };\n\n /**\n * Reducer: Display snack if there's space for it. Otherwise, immediately\n * begin dismissing the oldest message to start showing the new one.\n */\n handleDisplaySnack: Reducer = (state) => {\n const { snacks } = state;\n if (snacks.length >= this.maxSnack) {\n return this.handleDismissOldest(state);\n }\n return this.processQueue(state);\n };\n\n /**\n * Reducer: Display items (notifications) in the queue if there's space for them.\n */\n processQueue: Reducer = (state) => {\n const { queue, snacks } = state;\n if (queue.length > 0) {\n return {\n ...state,\n snacks: [...snacks, queue[0]],\n queue: queue.slice(1, queue.length),\n };\n }\n return state;\n };\n\n /**\n * Reducer: Hide oldest snackbar on the screen because there exists a new one which we have to display.\n * (ignoring the one with 'persist' flag. i.e. explicitly told by user not to get dismissed).\n *\n * Note 1: If there is already a message leaving the screen, no new messages are dismissed.\n * Note 2: If the oldest message has not yet entered the screen, only a request to close the\n * snackbar is made. Once it entered the screen, it will be immediately dismissed.\n */\n handleDismissOldest: Reducer = (state) => {\n if (state.snacks.some((item) => !item.open || item.requestClose)) {\n return state;\n }\n\n let popped = false;\n let ignore = false;\n\n const persistentCount = state.snacks.reduce((acc, current) => acc + (current.open && current.persist ? 1 : 0), 0);\n\n if (persistentCount === this.maxSnack) {\n warning(\"NO_PERSIST_ALL\");\n ignore = true;\n }\n\n const snacks = state.snacks.map((item) => {\n if (!popped && (!item.persist || ignore)) {\n popped = true;\n\n if (!item.entered) {\n return {\n ...item,\n requestClose: true,\n };\n }\n\n if (item.onClose) {\n item.onClose(null, \"maxsnack\", item.id);\n }\n\n if (this.props.onClose) {\n this.props.onClose(null, \"maxsnack\", item.id);\n }\n\n return {\n ...item,\n open: false,\n };\n }\n\n return { ...item };\n });\n\n return { ...state, snacks };\n };\n\n /**\n * Set the entered state of the snackbar with the given key.\n */\n handleEnteredSnack: TransitionHandlerProps[\"onEntered\"] = (node, isAppearing, key) => {\n if (!isDefined(key)) {\n throw new Error(\"handleEnteredSnack Cannot be called with undefined key\");\n }\n\n this.setState(({ snacks }) => ({\n snacks: snacks.map((item) => (item.id === key ? { ...item, entered: true } : { ...item })),\n }));\n };\n\n /**\n * Hide a snackbar after its timeout.\n */\n handleCloseSnack: NonNullable = (event, reason, key) => {\n // should not use createChainedFunction for onClose.\n // because this.closeSnackbar called this function\n if (this.props.onClose) {\n this.props.onClose(event, reason, key);\n }\n\n if (reason === \"clickaway\") {\n return;\n }\n\n const shouldCloseAll = key === undefined;\n\n this.setState(({ snacks, queue }) => ({\n snacks: snacks.map((item) => {\n if (!shouldCloseAll && item.id !== key) {\n return { ...item };\n }\n\n return item.entered ? { ...item, open: false } : { ...item, requestClose: true };\n }),\n queue: queue.filter((item) => item.id !== key), // eslint-disable-line react/no-unused-state\n }));\n };\n\n /**\n * Close snackbar with the given key\n */\n closeSnackbar: ProviderContext[\"closeSnackbar\"] = (key) => {\n // call individual snackbar onClose callback passed through options parameter\n const toBeClosed = this.state.snacks.find((item) => item.id === key);\n if (isDefined(key) && toBeClosed && toBeClosed.onClose) {\n toBeClosed.onClose(null, \"instructed\", key);\n }\n\n this.handleCloseSnack(null, \"instructed\", key);\n };\n\n /**\n * When we set open attribute of a snackbar to false (i.e. after we hide a snackbar),\n * it leaves the screen and immediately after leaving animation is done, this method\n * gets called. We remove the hidden snackbar from state and then display notifications\n * waiting in the queue (if any). If after this process the queue is not empty, the\n * oldest message is dismissed.\n */\n handleExitedSnack: TransitionHandlerProps[\"onExited\"] = (node, key) => {\n if (!isDefined(key)) {\n throw new Error(\"handleExitedSnack Cannot be called with undefined key\");\n }\n\n this.setState((state) => {\n const newState = this.processQueue({\n ...state,\n snacks: state.snacks.filter((item) => item.id !== key),\n });\n\n if (newState.queue.length === 0) {\n return newState;\n }\n\n return this.handleDismissOldest(newState);\n });\n };\n\n render(): JSX.Element {\n const { contextValue } = this.state;\n const { domRoot, children, dense = false, Components = {}, classes } = this.props;\n\n const categ = this.state.snacks.reduce((acc, current) => {\n const category = originKeyExtractor(current.anchorOrigin);\n const existingOfCategory = acc[category] || [];\n return {\n ...acc,\n [category]: [...existingOfCategory, current],\n };\n }, {});\n\n const snackbars = Object.keys(categ).map((origin) => {\n const snacks = categ[origin];\n const [nomineeSnack] = snacks;\n\n return (\n \n {snacks.map((snack) => (\n \n ))}\n \n );\n });\n\n return (\n \n {children}\n {domRoot ? createPortal(snackbars, domRoot) : snackbars}\n \n );\n }\n}\n\nexport default SnackbarProvider;\n","import { useContext } from \"react\";\nimport SnackbarContext from \"./SnackbarContext\";\nimport { ProviderContext } from \"./types\";\n\nexport default (): ProviderContext => useContext(SnackbarContext);\n","import React from \"react\";\nimport { Grid, Menu, MenuItem, Pagination as PaginationComponent } from \"components/Mui\";\nimport { MainCard } from \"components/index\";\nimport ExpandMoreRoundedIcon from \"@mui/icons-material/ExpandMoreRounded\";\n\nconst PageSizeList = [10, 50, 100];\n\nexport type PaginationType = {\n pageNum: number;\n pageSize: number;\n};\n\nexport interface PaginationProps {\n count: number;\n onPageChange?: (pagination: PaginationType) => void;\n onPageSizeChange?: (pagination: PaginationType) => void;\n defaultPageSize?: number;\n flexEnd?: boolean;\n showPageSize?: boolean;\n}\n\nexport default ({\n count,\n onPageChange,\n onPageSizeChange,\n defaultPageSize = 10,\n flexEnd,\n showPageSize = false,\n}: PaginationProps) => {\n const [pageNum, setPageNum] = React.useState(1);\n const [pageSize, setPageSize] = React.useState(defaultPageSize);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handleClick = (event: any) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const paginationChange = (e: any, pageNum: number): void => {\n setPageNum(pageNum);\n if (onPageChange) {\n onPageChange({\n pageNum,\n pageSize,\n });\n }\n };\n\n const pageSizeChange = (pageSize: number) => {\n handleClose();\n setPageSize(pageSize);\n setPageNum(1);\n if (onPageSizeChange) {\n onPageSizeChange({\n pageNum: 1,\n pageSize,\n });\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n {showPageSize && (\n \n \n \n {pageSize} Rows \n \n \n \n {PageSizeList.map((pageSize) => (\n pageSizeChange(pageSize)}>\n {pageSize} Rows\n \n ))}\n \n \n )}\n \n \n );\n};\n","/* eslint-disable global-require */\n/* eslint-disable @typescript-eslint/no-var-requires */\nimport { actor, Actor } from \"@icpswap/actor\";\nimport { network, NETWORK, host } from \"./server\";\n\nlet CanisterIdsJson: { [key: string]: { [key1: string]: string } } = {};\n\ntry {\n const canister_ids = require(\"../canister_ids.json\");\n const temp_canister_ids = require(\"../temp_canister_ids.json\");\n\n CanisterIdsJson = {\n ...canister_ids,\n ...temp_canister_ids,\n };\n} catch (error) {\n console.error(error);\n}\n\nconst canisterIds: { [key: string]: string } = {};\nObject.keys(CanisterIdsJson).forEach((canister) => {\n canisterIds[canister] = CanisterIdsJson[canister][network];\n});\n\nexport const getCanisterId = (canisterName: string): string => {\n return canisterIds[canisterName];\n};\n\nexport const CANISTER_NAMES = {\n TOKEN_CANISTER_CONTROLLER: \"TokenCanisterController\",\n TOKEN_SERVICE: \"token\",\n SWAP_POSITION_MANAGER: \"SwapPositionManager\",\n WICP: network === NETWORK.IC ? \"wicp\" : \"WICP_T\",\n FILE: \"FileAssets\",\n NFTCanisterController: \"V3NFTCanisterController\",\n SwapNFTCanister: \"V3SwapNFTCanister\",\n V3NFTCanister: \"NFTDynamicCanister\",\n V3TradeStat: \"V3TradeStat\",\n NFTTrade: \"V3TradeCanister\",\n FileCanister: \"FileCanister\",\n V1StakingController: \"SwapStakerController\",\n SingleSmartChef: \"SingleSmartChef\",\n SwapStaker: \"SwapStaker\",\n VOTE: \"Vote\",\n FileActor: \"File\",\n SwapRecord: \"BaseDataStructure\",\n SwapGraphPool: \"Pools\",\n TokenList: \"TokenList\",\n\n V3SwapFactory: \"SwapFactory\",\n V3SwapPool: \"SwapPool\",\n V3SwapNFT: \"SwapNFT\",\n PassCodeManager: \"PassCodeManager\",\n\n ClaimStorage: \"ClaimStorage\",\n\n VotingFileCanister: \"VotingFileCanister\",\n FarmController: \"FarmController\",\n StakingTokenController: \"StakingTokenController\",\n StakeIndex: \"StakeIndex\",\n\n NodeIndex: \"node_index\",\n GlobalIndex: \"global_index\",\n};\n\nexport const fileCanisterId = getCanisterId(CANISTER_NAMES.FILE);\nexport const WICPCanisterId = getCanisterId(CANISTER_NAMES.WICP);\nexport const swapPositionManagerCanisterId = getCanisterId(CANISTER_NAMES.SWAP_POSITION_MANAGER);\nexport const SwapNFTCanisterId = getCanisterId(CANISTER_NAMES.SwapNFTCanister);\nexport const NFTCanisterController = getCanisterId(CANISTER_NAMES.NFTCanisterController);\nexport const FileCanisterId = getCanisterId(CANISTER_NAMES.FileActor);\nexport const ClaimStorageId = getCanisterId(CANISTER_NAMES.ClaimStorage);\nexport const NFTTradeTokenCanisterId = WICPCanisterId;\nexport const V3SwapNFTCanisterId = getCanisterId(CANISTER_NAMES.V3SwapNFT);\nexport const VotingFileCanisterId = getCanisterId(CANISTER_NAMES.VotingFileCanister);\nexport const FarmControllerId = getCanisterId(CANISTER_NAMES.FarmController);\nexport const NodeIndexId = getCanisterId(CANISTER_NAMES.NodeIndex);\nexport const GlobalId = getCanisterId(CANISTER_NAMES.GlobalIndex);\nexport const PassCodeManagerId = getCanisterId(CANISTER_NAMES.PassCodeManager);\n\nActor.setActorCanisterIds(canisterIds);\nactor.setHost(host);\n\nexport const ALL_CANISTER_IDS = [...Object.values(canisterIds)];\n\nexport { canisterIds };\n","export const ckBTC_ID = \"mxzaz-hqaaa-aaaar-qaada-cai\";\n\nexport const ckBTC_MINTER_ID = \"mqygn-kiaaa-aaaar-qaadq-cai\";\n\nexport const ckBTC_DASHBOARD = \"https://dashboard.internetcomputer.org/bitcoin\";\n\nexport const DISSOLVE_FEE = \"0.0000001\";\n","import { ChainId } from \"@icpswap/constants\";\nimport { EXPLORER_MAPS, chain, EXPLORER_BLOCK_LINKS, EXPLORER_TX_LINKS, getMinterDashboard } from \"constants/web3\";\n\nconst MINTER_ID = {\n [ChainId.MAINNET]: \"sv3dd-oaaaa-aaaar-qacoa-cai\",\n [ChainId.SEPOLIA]: \"jzenf-aiaaa-aaaar-qaa7q-cai\",\n};\n\nexport const MINTER_CANISTER_ID = MINTER_ID[chain];\n\nexport const ERC20_MINTER_DASHBOARD = getMinterDashboard(MINTER_ID[chain]);\n\nexport const ckERC20LedgerDashboardLink = (ledger_id: string) =>\n `https://dashboard.internetcomputer.org/canister/${ledger_id}`;\n\nexport const EXPLORER_TX_LINK = EXPLORER_TX_LINKS[chain];\n\nexport const EXPLORER_BLOCK_LINK = EXPLORER_BLOCK_LINKS[chain];\n\nexport const EXPLORER_ADDRESS_LINK = EXPLORER_MAPS[chain];\n\nexport enum WithdrawalState {\n TxFinalized = \"TxFinalized\",\n TxSent = \"TxSent\",\n TxCreated = \"TxCreated\",\n Pending = \"Pending\",\n}\n","export const ICP_TRANSFER_TYPE_FORMAT: { [key: string]: string } = {\n TRANSACTION: \"transfer\",\n};\n\nexport const CYCLES_MINTING_CANISTER_ID = \"rkp4c-7iaaa-aaaaa-aaaca-cai\";\n\nexport { LEDGER_CANISTER_ID } from \"@icpswap/constants\";\n","export enum ResultStatus {\n ERROR = \"err\",\n OK = \"ok\",\n}\n\nexport type StatusResult = {\n readonly status: ResultStatus;\n readonly data: T | string;\n};\n\nexport type StatusResult1 = {\n readonly status: ResultStatus;\n readonly data?: T;\n readonly message: string;\n};\n\nexport type CallResult = {\n readonly result: ApiResult;\n readonly loading: boolean;\n};\n\nexport type ApiResult = null | undefined | T;\n\nexport type PaginationResult = {\n totalElements: number;\n offset: number;\n limit: number;\n content: T[];\n};\n\nexport type DynamicObject = {\n [key: string]: any;\n};\n","import { Connector } from \"constants/wallet\";\nimport { NFIDW, Plug, InternetIdentity } from \"@nfid/identitykit\";\n\nexport const IdentityKitConnector = [Connector.NFID];\n\nexport const IdentityKitId = {\n [Connector.IC]: InternetIdentity.id,\n [Connector.NFID]: NFIDW.id,\n [Connector.PLUG]: Plug.id,\n};\n","import { ChartButton, ChartView } from \"@icpswap/ui\";\n\nexport const DefaultChartView: ChartButton = {\n label: \"DexTools\",\n value: ChartView.DexTools,\n};\n","import { isNullArgs } from \"@icpswap/utils\";\nimport { network, NETWORK } from \"./server\";\n\nexport const ASSETS_DECIMALS = 2;\nexport const ICP_BALANCE_DECIMALS = 4;\nexport const ICS_BALANCE_DECIMALS = 2;\nexport const MAX_TOKEN_MINT_NAME_LENGTH = 30;\nexport const MAX_TOKEN_MINT_SYMBOL_LENGTH = 15;\n\nexport const NONE_PRICE_SYMBOL = \"--\";\nexport const DEFAULT_PERCENT_SYMBOL = \"0.00%\";\nexport const TOKEN_AMOUNT_DISPLAY_DECIMALS = 8;\nexport const NONE_TOKEN_SYMBOL = \"--\";\nexport const EMPTY_CONTENT_SYMBOL = \"--\";\n\nexport const REACT_GA_TRACKING_ID = \"UA-200662567-2\";\n\nexport const MINT_TOKEN_CYCLES = 1860000000000;\n\nexport const MINT_NFT_PAY_MOUNT = 10;\nexport const NFT_UPLOAD_FILES = [\n \"image\",\n \"video\",\n \"audio\",\n \"txt\",\n \"js\",\n \"ts\",\n \"pdf\",\n \"json\",\n \"ppt\",\n \"pptx\",\n \"xls\",\n \"xlsx\",\n \"docx\",\n \"doc\",\n];\n\nexport const CurrencyAmountFormatDecimals = (decimals: number | bigint | undefined) => {\n if (isNullArgs(decimals)) return TOKEN_AMOUNT_DISPLAY_DECIMALS;\n if (Number(decimals) > TOKEN_AMOUNT_DISPLAY_DECIMALS) return TOKEN_AMOUNT_DISPLAY_DECIMALS;\n return Number(decimals);\n};\n\nexport const INFO_URL_MAP = {\n [NETWORK.IC]: \"\",\n};\n\nexport const INFO_URL = INFO_URL_MAP[network];\n\nexport const APP_URL = \"https://app.icpswap.com\";\n\nexport const DAYJS_FORMAT = \"YYYY-MM-DD HH:mm:ss\";\n\nexport const V2SwapLink = \"https://app.icpswap.com\";\n\nexport const V3SwapLink = \"https://app.icpswap.com\";\n\nexport const AnonymousPrincipal = \"2vxsx-fae\";\n\nexport const MaxInt64 = (2 ** 64 - 1).toString();\nexport const APPROVE_MAX_NUMBER = Number.MAX_VALUE;\n\nexport const SAFE_INTEGER_LENGTH = 12;\nexport const SAFE_DECIMALS_LENGTH = 8;\nexport const MAX_SWAP_INPUT_LENGTH = 25;\n\nexport const ICPSwapSubnet = \"lhg73-sax6z-2zank-6oer2-575lz-zgbxx-ptudx-5korm-fy7we-kh4hl-pqe\";\nexport const ICPSwapStableBlockRate = 2;\n\n// 24 hours (nanosecond)\nexport const MAX_IDENTITY_KIT_TIME_LIVE = BigInt(24 * 3600) * BigInt(1000 * 1000 * 1000);\n\nexport * from \"./canister\";\nexport * from \"./server\";\nexport * from \"./tokens\";\nexport * from \"./swap\";\nexport * from \"./nft\";\nexport * from \"./types\";\nexport * from \"./icp\";\nexport * from \"./wallet\";\nexport * from \"./ckERC20\";\nexport * from \"./auth\";\nexport * from \"./swap-pro\";\n","import { V3SwapNFTCanisterId } from \"constants/canister\";\nimport V2Ids from \"constants/swap-v2-ids.json\";\nimport i18n from \"i18n\";\n\nexport const OFFICIAL_CANISTER_IDS = [\n \"e7xmv-vyaaa-aaaag-qahha-cai\",\n \"ewuhj-dqaaa-aaaag-qahgq-cai\",\n \"brx5n-xqaaa-aaaan-qanqa-cai\",\n V2Ids.V3SwapNFTCanister.ic,\n V3SwapNFTCanisterId,\n];\n\n// for controller get canister's image\nexport const OLD_CANISTER_IDS = [\n \"ewuhj-dqaaa-aaaag-qahgq-cai\",\n \"e7xmv-vyaaa-aaaag-qahha-cai\",\n \"ey3ct-4aaaa-aaaak-aaueq-cai\",\n \"wpojy-qiaaa-aaaak-acfva-cai\",\n \"brx5n-xqaaa-aaaan-qanqa-cai\",\n V2Ids.V3SwapNFTCanister.ic,\n V3SwapNFTCanisterId,\n];\n\nexport type SOCIAL_LINK_TYPE = {\n label: string;\n id: string;\n value: string;\n};\n\nexport const SOCIAL_LINKS: SOCIAL_LINK_TYPE[] = [\n {\n label: \"Website\",\n id: \"Website\",\n value: \"Website\",\n },\n {\n label: \"Github\",\n id: \"Github\",\n value: \"Github\",\n },\n {\n label: \"Discord\",\n id: \"Discord\",\n value: \"Discord\",\n },\n {\n label: \"Twitter\",\n id: \"Twitter\",\n value: \"Twitter\",\n },\n {\n label: \"Telegram\",\n id: \"Telegram\",\n value: \"Telegram\",\n },\n {\n label: \"Instagram\",\n id: \"Instagram\",\n value: \"Instagram\",\n },\n {\n label: \"Medium\",\n id: \"Medium\",\n value: \"Medium\",\n },\n {\n label: \"DSCVR\",\n id: \"Dscvr\",\n value: \"Dscvr\",\n },\n {\n label: \"Distrikt\",\n id: \"Distrikt\",\n value: \"Distrikt\",\n },\n\n {\n label: i18n.t(\"common.other\"),\n id: \"Other\",\n value: \"Other\",\n },\n];\n\nexport const NFTTradeFee = 0.01;\n\nexport const MAX_NFT_MINT_SUPPLY = 10000;\n\nexport enum NFT_STANDARDS {\n ICPSwap = \"ICPSwap\",\n}\n","export enum NETWORK {\n IC = \"ic\",\n LOCAL = \"local\",\n}\n\nexport const hostMap = {\n [NETWORK.LOCAL]: `http://localhost:8000`,\n [NETWORK.IC]: \"https://icp0.io\",\n};\n\nexport const network = process.env.REACT_APP_IC_NETWORK as NETWORK;\n\nexport const isIC: boolean = network === NETWORK.IC;\nexport const isLocal: boolean = network === NETWORK.LOCAL;\n\nexport const host = hostMap[network];\n\nexport const ICHost = hostMap[NETWORK.IC];\n\nexport const localhost = hostMap[NETWORK.LOCAL];\n","import { Percent, BigintIsh } from \"@icpswap/swap-sdk\";\n\nexport enum Bound {\n LOWER = \"LOWER\",\n UPPER = \"UPPER\",\n}\n\nexport enum FIELD {\n CURRENCY_A = \"CURRENCY_A\",\n CURRENCY_B = \"CURRENCY_B\",\n}\n\nexport const DEFAULT_FEE = 3000;\n\nexport enum FeeAmount {\n LOW = 500,\n MEDIUM = 3000,\n HIGH = 10000,\n}\n\nexport const TICK_SPACING = {\n [FeeAmount.LOW]: 10,\n [FeeAmount.MEDIUM]: 60,\n [FeeAmount.HIGH]: 200,\n};\n\nexport enum BURN_FIELD {\n LIQUIDITY_PERCENT = \"LIQUIDITY_PERCENT\",\n LIQUIDITY = \"LIQUIDITY\",\n CURRENCY_A = \"CURRENCY_A\",\n CURRENCY_B = \"CURRENCY_B\",\n}\n\nexport const DEFAULT_SWAP_SLIPPAGE = 500;\n\nexport const DEFAULT_MINT_SLIPPAGE = 500;\n\nexport const DEFAULT_BURN_SLIPPAGE = 5000;\n\nexport const SLIPPAGE_TOLERANCE: { id: string; value: number }[] = [\n { id: \"swap\", value: 100 },\n { id: \"burn\", value: 500 },\n { id: \"mint\", value: 5000 },\n];\n\nexport const MAX_SLIPPAGE_TOLERANCE = 50000;\n\nexport const WARNING_SLIPPAGE_TOLERANCE = 20000;\n\nexport const getDefaultSlippageTolerance = (type: string) =>\n SLIPPAGE_TOLERANCE.filter((item) => item.id === type)[0]?.value || 500;\n\nexport const slippageToPercent = (slippage: BigintIsh) => new Percent(slippage, 1000 * 100);\n\nexport const MAX_TRANSACTIONS_DEADLINE = 180;\nexport const DEFAULT_TRANSACTIONS_DEADLINE = 30;\n\nexport const DEFAULT_MULTIPLE_APPROVE = 1000;\n\nexport const ZOOM_LEVEL_INITIAL_MIN_MAX = {\n [FeeAmount.LOW]: {\n min: 0.999,\n max: 1.001,\n },\n [FeeAmount.MEDIUM]: {\n min: 0.5,\n max: 2,\n },\n [FeeAmount.HIGH]: {\n min: 0.5,\n max: 2,\n },\n};\n\nexport const ADD_LIQUIDITY_REFRESH_KEY = \"AddLiquidity\";\nexport const INCREASE_LIQUIDITY_REFRESH_KEY = \"IncreaseLiquidity\";\n","import { ICP, WRAPPED_ICP, ICS } from \"@icpswap/tokens\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { ChartView } from \"@icpswap/ui\";\n\nimport { isIC } from \"./server\";\n\nexport enum SWAP_FIELD {\n INPUT = \"INPUT\",\n OUTPUT = \"OUTPUT\",\n}\n\nexport const DEFAULT_SWAP_INPUT_ID = isIC ? ICP.address : WRAPPED_ICP.address;\nexport const DEFAULT_SWAP_OUTPUT_ID = isIC ? ICS.address : ICS.address;\n\nexport const SWAP_REFRESH_KEY = \"swap\";\n\nexport const LIQUIDITY_OWNER_REFRESH_KEY = \"LIQUIDITY_OWNER_REFRESH_KEY\";\n\nexport const SWAP_CHART_CURRENT_PRICE_COLOR = \"#ffffff\";\nexport const SWAP_CHART_RANGE_PRICE_COLOR = \"#8672FF\";\n\nexport const SWAP_CHART_RANGE_LEFT_COLOR = \"#788686\";\nexport const SWAP_CHART_RANGE_RIGHT_COLOR = \"#bb8d00\";\nexport const SWAP_CHART_RANGE_AREA_COLOR = \"#0068FC\";\n\nexport const icrc_standards = [TOKEN_STANDARD.ICRC1, TOKEN_STANDARD.ICRC2];\n\nexport const TRADING_VIEW_DESCRIPTIONS = [ChartView.PRICE, ChartView.DexTools, ChartView.DexScreener];\n\nexport * from \"./mint\";\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { WICPCanisterId } from \"constants/canister\";\nimport { TokenInfo, TokenMetadata } from \"types/token\";\nimport { Principal } from \"@dfinity/principal\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\n\nexport { TOKEN_STANDARD };\n\nexport const XTCCanisterId = \"aanaa-xaaaa-aaaah-aaeiq-cai\";\n\nexport const WRAPPED_ICP_METADATA: TokenMetadata = {\n standardType: TOKEN_STANDARD.EXT,\n metadata: [],\n name: \"Wrapped ICP\",\n decimals: 8,\n symbol: \"WICP\",\n canisterId: Principal.fromText(WICPCanisterId ?? \"aaaaa-aa\"),\n};\n\nexport const WRAPPED_ICP_TOKEN_INFO: TokenInfo = {\n ...WRAPPED_ICP_METADATA,\n logo: `/images/tokens/${WRAPPED_ICP_METADATA.canisterId.toString()}.jpeg`,\n transFee: BigInt(0),\n canisterId: WRAPPED_ICP_METADATA.canisterId.toString(),\n totalSupply: BigInt(0),\n};\n\nexport const WRAPPED_ICP = new Token({\n address: WRAPPED_ICP_TOKEN_INFO.canisterId,\n decimals: WRAPPED_ICP_TOKEN_INFO.decimals,\n symbol: WRAPPED_ICP_TOKEN_INFO.symbol,\n name: WRAPPED_ICP_TOKEN_INFO.name,\n logo: WRAPPED_ICP_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.EXT,\n transFee: Number(WRAPPED_ICP_TOKEN_INFO.transFee),\n});\n\nexport const XTC = new Token({\n address: XTCCanisterId,\n decimals: 12,\n symbol: \"XTC\",\n name: \"Cycles\",\n logo: \"\",\n standard: TOKEN_STANDARD.DIP20_XTC,\n transFee: 0,\n});\n\nexport const SNS1 = new Token({\n address: \"zfcdd-tqaaa-aaaaq-aaaga-cai\",\n decimals: 8,\n symbol: \"SNS1\",\n name: \"SNS1\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 0,\n});\n\nexport const CHAT = new Token({\n address: \"2ouva-viaaa-aaaaq-aaamq-cai\",\n decimals: 8,\n symbol: \"CHAT\",\n name: \"CHAT\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 0,\n});\n\nexport const CAT = new Token({\n address: \"uf2wh-taaaa-aaaaq-aabna-cai\",\n decimals: 8,\n symbol: \"CAT\",\n name: \"CatalyzeDAO\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 0,\n});\n\nexport const MOD = new Token({\n address: \"xsi2v-cyaaa-aaaaq-aabfq-cai\",\n decimals: 8,\n symbol: \"MOD\",\n name: \"Modclub\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 10000,\n});\n\nexport const BoomDAO = new Token({\n address: \"vtrom-gqaaa-aaaaq-aabia-cai\",\n decimals: 8,\n symbol: \"BOOM\",\n name: \"BoomDAO\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n\nexport const ICX = new Token({\n address: \"rffwt-piaaa-aaaaq-aabqq-cai\",\n decimals: 8,\n symbol: \"ICX\",\n name: \"IC-X\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n\nexport const NUA = new Token({\n address: \"rxdbk-dyaaa-aaaaq-aabtq-cai\",\n decimals: 8,\n symbol: \"NUA\",\n name: \"Nuance\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n\nexport const SONIC = new Token({\n address: \"qbizb-wiaaa-aaaaq-aabwq-cai\",\n decimals: 8,\n symbol: \"SONIC\",\n name: \"Sonic\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n","import { ICP, WRAPPED_ICP, ICS, ckUSDC, ckBTC, ckETH } from \"@icpswap/tokens\";\nimport { Connector } from \"constants/wallet\";\n\nexport const DISPLAY_IN_WALLET_FOREVER = [\n ICP.address,\n WRAPPED_ICP.address,\n ICS.address,\n ckUSDC.address,\n ckBTC.address,\n ckETH.address,\n];\n\nexport const NO_HIDDEN_TOKENS = [ICP.address, WRAPPED_ICP.address];\n\nexport const DEFAULT_DISPLAYED_TOKENS = [ICP, ICS, ckUSDC, ckBTC, ckETH];\n\nexport interface ConnectorConfig {\n label: string;\n value: Connector;\n logo: any;\n tips?: string;\n disabled?: boolean;\n}\n\nexport const ConnectorConfigs: ConnectorConfig[] = [\n {\n label: \"Internet Identity\",\n value: Connector.IC,\n logo: \"/images/connect/InternetIdentity.svg\",\n },\n { label: \"Plug\", value: Connector.PLUG, logo: \"/images/connect/Plug.svg\" },\n {\n label: \"Stoic Wallet\",\n value: Connector.STOIC,\n logo: \"/images/connect/stoic.svg\",\n },\n {\n label: \"ICPSwap Wallet\",\n value: Connector.ICPSwap,\n logo: \"/images/connect/icpswap.svg\",\n },\n { label: \"NFID\", value: Connector.NFID, logo: \"/images/connect/NFID.svg\" },\n {\n label: \"Bitfinity Wallet\",\n value: Connector.INFINITY,\n logo: \"/images/connect/Infinity.svg\",\n },\n {\n label: \"AstroX ME\",\n value: Connector.ME,\n logo: \"/images/connect/AstroX.svg\",\n },\n {\n label: \"MetaMask\",\n value: Connector.Metamask,\n logo: \"/images/connect/metamask.svg\",\n },\n {\n label: \"Oisy\",\n value: Connector.Oisy,\n logo: \"/images/connect/Oisy.svg\",\n },\n];\n\nexport { Connector } from \"@icpswap/actor\";\n","import { ChainId } from \"@icpswap/constants\";\n\nexport const chain: ChainId = ChainId.MAINNET;\n\nexport const ETH_MINT_CHAIN = 1;\n\nexport const DEFAULT_CHAIN_ID = 1;\n\nexport const SUPPORTED_CHAINS = [ChainId.MAINNET, ChainId.SEPOLIA];\n\nexport const chainIdToNetwork: { [network: number]: string } = {\n 1: \"Ethereum mainnet\",\n 3: \"ropsten\",\n 4: \"rinkeby\",\n 42: \"kovan\",\n 97: \"chapel\", // BSC Testnet\n 137: \"polygon\", // Polygon Mainnet\n 80001: \"mumbai\", // Polygon Testnet\n 43114: \"avalanche\", // Avalanche Mainnet\n 43113: \"fuji\", // Avalanche Testnet\n 11155111: \"sepolia\", // testnet\n};\n\nexport const EXPLORER_MAPS = {\n [ChainId.MAINNET]: `https://etherscan.io/address`,\n [ChainId.SEPOLIA]: `https://sepolia.etherscan.io/address`,\n};\n\nexport const getExplorerAddress = (address: string) => {\n return `${EXPLORER_MAPS[chain]}/${address}`;\n};\n\nexport const getMinterDashboard = (minterId: string) => {\n return `https://${minterId}.raw.icp0.io/dashboard`;\n};\n\nexport const getIcDashboard = (tokenId: string) => {\n return `https://dashboard.internetcomputer.org/ethereum/${tokenId}`;\n};\n\nexport const EXPLORER_TX_LINKS = {\n [ChainId.MAINNET]: `https://etherscan.io/tx`,\n [ChainId.SEPOLIA]: `https://sepolia.etherscan.io/tx`,\n};\n\nexport const EXPLORER_BLOCK_LINKS = {\n [ChainId.MAINNET]: `https://etherscan.io/block`,\n [ChainId.SEPOLIA]: `https://sepolia.etherscan.io/block`,\n};\n","import { useMemo } from \"react\";\nimport { useChainKeyMinterInfo } from \"@icpswap/hooks\";\nimport { MINTER_CANISTER_ID } from \"constants/index\";\nimport { ckETH, ckBTC } from \"@icpswap/tokens\";\nimport { ChainKeyETHMinterInfo } from \"@icpswap/types\";\n\nexport interface UseAllBridgeTokensProps {\n minter?: ChainKeyETHMinterInfo;\n}\n\nexport function useAllBridgeTokens(__minterInfo?: ChainKeyETHMinterInfo) {\n const id = useMemo(() => {\n return __minterInfo ? undefined : MINTER_CANISTER_ID;\n }, [__minterInfo]);\n\n const { result: minterInfo } = useChainKeyMinterInfo(id);\n\n const supportedERC20Tokens = useMemo(() => {\n return (__minterInfo ?? minterInfo)?.supported_ckerc20_tokens[0]?.map((e) => e.ledger_canister_id.toString());\n }, [minterInfo, __minterInfo]);\n\n return [ckBTC.address, ckETH.address, ...(supportedERC20Tokens ?? [])];\n}\n","import { useMemo } from \"react\";\nimport { useStoreTokenBalance } from \"hooks/token/useTokenBalance\";\nimport { useERC20Balance, useETHBalance } from \"hooks/web3/index\";\nimport { ckBridgeChain } from \"@icpswap/constants\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { ChainKeyETHMinterInfo, Null } from \"@icpswap/types\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { ckETH } from \"@icpswap/tokens\";\n\nexport interface UseTokenBalanceProps {\n token: Token | Null;\n chain: ckBridgeChain;\n minterInfo?: ChainKeyETHMinterInfo | Null;\n refresh?: number;\n}\n\nexport function useBridgeTokenBalance({ token, minterInfo, chain, refresh }: UseTokenBalanceProps) {\n const principal = useAccountPrincipal();\n\n const ChainKeyETHMinterInfo = useMemo(() => {\n if (!token) return undefined;\n\n const ChainKeyETHMinterInfo = minterInfo?.supported_ckerc20_tokens[0]?.find(\n (minterInfo) => minterInfo.ledger_canister_id.toString() === token.address,\n );\n\n return ChainKeyETHMinterInfo;\n }, [minterInfo, token]);\n\n const { result: ethBalance } = useETHBalance();\n const { result: erc20TokenBalance } = useERC20Balance(ChainKeyETHMinterInfo?.erc20_contract_address, refresh);\n const { result: tokenBalance } = useStoreTokenBalance(token?.address, principal?.toString(), refresh);\n\n return useMemo(() => {\n if (!token) return undefined;\n if (chain === ckBridgeChain.icp) return tokenBalance;\n if (chain === ckBridgeChain.eth && token.address === ckETH.address) return ethBalance;\n if (chain === ckBridgeChain.eth) return erc20TokenBalance;\n return undefined;\n }, [chain, ethBalance, erc20TokenBalance, token, tokenBalance]);\n}\n","import { ckBridgeChain } from \"@icpswap/constants\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { Null } from \"@icpswap/types\";\nimport { useMemo } from \"react\";\n\nexport interface UseTokenSymbolProps {\n token: Token | Null;\n bridgeChain: ckBridgeChain | Null;\n}\n\nexport function useTokenSymbol({ token, bridgeChain }: UseTokenSymbolProps) {\n return useMemo(() => {\n if (!token || !bridgeChain) return undefined;\n return bridgeChain === ckBridgeChain.icp ? token.symbol : token.symbol.replace(\"ck\", \"\");\n }, [token, bridgeChain]);\n}\n","import { useCallsData } from \"@icpswap/hooks\";\nimport { resultFormat, availableArgsNull } from \"@icpswap/utils\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ckBtcMinter } from \"actor/ckBTC\";\nimport { Principal } from \"@dfinity/principal\";\nimport {\n useUserBTCDepositAddress,\n useUpdateUserBTCDepositAddress,\n useUserBTCWithdrawAddress,\n useUpdateUserBTCWithdrawAddress,\n useUserTxs,\n useUpdateUserTx,\n} from \"store/wallet/hooks\";\nimport { useAccountPrincipalString } from \"store/auth/hooks\";\nimport { TxState } from \"types/ckBTC\";\nimport { Null } from \"@icpswap/types\";\n\nimport { useIntervalFetch } from \"../useIntervalFetch\";\n\nexport function isEndedState(state: TxState) {\n return !(state !== \"Confirmed\" && state !== \"AmountTooLow\");\n}\n\nexport function useBtcDepositAddress(principal: string | undefined, subaccount?: Uint8Array) {\n const [address, setAddress] = useState(null);\n const [loading, setLoading] = useState(false);\n\n const storeUserDepositAddress = useUserBTCDepositAddress(principal);\n const updateUserBTCAddress = useUpdateUserBTCDepositAddress();\n\n useEffect(() => {\n async function call() {\n if (!principal) return;\n if (storeUserDepositAddress) {\n setAddress(storeUserDepositAddress);\n return;\n }\n\n setLoading(true);\n\n const address = resultFormat(\n await (\n await ckBtcMinter(true)\n ).get_btc_address({\n owner: availableArgsNull(Principal.fromText(principal)),\n subaccount: availableArgsNull(subaccount),\n }),\n ).data;\n\n if (address && principal) {\n updateUserBTCAddress(principal, address);\n }\n\n setAddress(address);\n setLoading(false);\n }\n\n call();\n }, [principal, subaccount, storeUserDepositAddress]);\n\n return useMemo(() => ({ result: address, loading }), [address, loading]);\n}\n\nexport function useRefreshBtcBalanceCallback() {\n return useCallback(async (principal: string, subaccount?: Uint8Array) => {\n return await (\n await ckBtcMinter(true)\n ).update_balance({\n owner: availableArgsNull(Principal.fromText(principal)),\n subaccount: availableArgsNull(subaccount),\n });\n }, []);\n}\n\nexport function useBtcWithdrawAddress() {\n const principal = useAccountPrincipalString();\n const storeAddress = useUserBTCWithdrawAddress(principal);\n const updateUserWithdrawAddress = useUpdateUserBTCWithdrawAddress();\n\n return useCallsData(\n useCallback(async () => {\n if (!principal) return undefined;\n\n const address = resultFormat<{ owner: Principal; subaccount: [] | Uint8Array[] }>(\n await (await ckBtcMinter(true)).get_withdrawal_account(),\n ).data;\n\n if (address) {\n updateUserWithdrawAddress(principal, address.owner, address.subaccount);\n }\n\n return address;\n }, [storeAddress?.owner, principal]),\n );\n}\n\ntype VOut = {\n scriptpubkey: string;\n scriptpubkey_address: string;\n scriptpubkey_asm: string;\n scriptpubkey_type: string;\n value: number;\n};\n\ntype VIn = {\n txid: string;\n vout: number;\n prevout: {\n scriptpubkey: string;\n scriptpubkey_asm: string;\n scriptpubkey_type: string;\n scriptpubkey_address: string;\n value: 200000;\n };\n scriptsig: string;\n scriptsig_asm: string;\n};\n\nexport type BTCTx = {\n fee: number;\n locktime: number;\n size: number;\n status: {\n confirmed: boolean;\n block_height?: number;\n block_hash?: string;\n block_time?: number;\n };\n version: number;\n txid: string;\n weight: number;\n vout: VOut[];\n vin: VIn[];\n};\n\nexport function useBtcTransactions(address: string | undefined | null, refresh?: number | boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!address) return undefined;\n\n try {\n const result = await fetch(`https://blockstream.info/api/address/${address}/txs`);\n return (await result.json()) as BTCTx[];\n } catch (error) {\n return undefined;\n }\n }, [address]),\n refresh,\n );\n}\n\nexport function useBtcTransaction(tx: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!tx) return undefined;\n\n try {\n const result = await fetch(`https://blockchain.info/rawtx/${tx}`);\n const json = await result.json();\n return json as BTCTx[];\n } catch (error) {\n return undefined;\n }\n }, [tx]),\n reload,\n );\n}\n\nexport function useFetchUserTxStates() {\n const principal = useAccountPrincipalString();\n const txs = useUserTxs(principal);\n const updateUserTx = useUpdateUserTx();\n\n useEffect(() => {\n async function call() {\n if (txs && txs.length && !!principal) {\n for (let i = 0; i < txs.length; i++) {\n const block_index = BigInt(txs[i].block_index);\n const { state } = txs[i];\n if (!isEndedState(state)) {\n const res = await (await ckBtcMinter()).retrieve_btc_status({ block_index });\n updateUserTx(principal, block_index, res, undefined);\n }\n }\n }\n }\n\n const timer = setInterval(() => {\n call();\n }, 10000);\n\n return () => {\n clearInterval(timer);\n };\n }, [txs, principal]);\n}\n\nexport function useBtcCurrentBlock() {\n const call = async () => {\n try {\n const result = await fetch(`https://blockchain.info/q/getblockcount`);\n return (await result.json()) as number;\n } catch (error) {\n return undefined;\n }\n };\n\n const block = useIntervalFetch(call, undefined, 30000);\n\n return useMemo(() => block, [block]);\n}\n","import { useCallback } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { useTips, MessageTypes } from \"./useTips\";\n\nexport function useCopySuccess() {\n const { t } = useTranslation();\n const [openTip] = useTips();\n\n return useCallback(() => {\n openTip(t(\"common.copy.success\"), MessageTypes.success);\n }, []);\n}\n","import type { FarmState } from \"@icpswap/types\";\n\nexport const COLORS = {\n NOT_START: \"#5669DC\",\n LIVE: \"#54C081\",\n FINISHED: \"#8492C4\",\n CLOSED: \"#8492C4\",\n DEFAULT: \"#8492C4\",\n};\n\nexport function useStateColors(state: FarmState | undefined): string {\n return COLORS[state ?? \"DEFAULT\"];\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { FilterState } from \"types/staking-token\";\nimport { getStakePools, getUserStakePools, getStakingPoolFromController } from \"@icpswap/hooks\";\nimport { StakingPoolControllerPoolInfo } from \"@icpswap/types\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { isAvailablePageArgs } from \"@icpswap/utils\";\nimport { getStateValueByFilterState } from \"utils/stake/index\";\n\nexport interface UsePoolsArgs {\n filterState: FilterState;\n offset: number;\n limit: number;\n stakeTokenId: string | undefined | null;\n rewardTokenId: string | undefined | null;\n}\n\nexport function usePools({ filterState, stakeTokenId, rewardTokenId, offset, limit }: UsePoolsArgs) {\n const principal = useAccountPrincipal();\n const [loading, setLoading] = useState(false);\n const [pools, setPools] = useState>(null);\n\n useEffect(() => {\n async function call() {\n if (!isAvailablePageArgs(offset, limit)) return;\n\n const state = getStateValueByFilterState(filterState);\n setPools(null);\n\n if (filterState === FilterState.YOUR) {\n if (!principal) return;\n\n setLoading(true);\n\n const poolsResult = await getUserStakePools(principal.toString(), offset, limit, stakeTokenId, rewardTokenId);\n const pools = poolsResult?.content ?? [];\n\n const infos = (\n await Promise.all(\n pools.map(async (pool) => {\n return await getStakingPoolFromController(pool.stakingPool.toString());\n }),\n )\n ).flat();\n\n setPools(infos);\n } else {\n setLoading(true);\n const result = await getStakePools({ state, offset, limit, stakeTokenId, rewardTokenId });\n const pools = result?.content;\n setPools(pools);\n }\n\n setLoading(false);\n }\n\n call();\n }, [filterState, principal, offset, limit, stakeTokenId, rewardTokenId]);\n\n return useMemo(() => ({ loading, result: pools }), [loading, pools]);\n}\n","import { useMemo, useState, useEffect } from \"react\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { Principal } from \"@dfinity/principal\";\nimport { getTokenBalance } from \"hooks/token/useTokenBalance\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\n\nexport function useUserUnusedTokenByPool(\n poolId: string | undefined,\n stakingTokenId: string | undefined,\n reload?: boolean | number,\n) {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState<{ balance: bigint | undefined; poolId: string; stakingTokenId: string } | null>(\n null,\n );\n const principal = useAccountPrincipal();\n\n useEffect(() => {\n const call = async () => {\n if (poolId && principal && stakingTokenId) {\n const result = await getTokenBalance(\n stakingTokenId,\n Principal.fromText(poolId),\n SubAccount.fromPrincipal(principal).toUint8Array(),\n );\n\n setData({\n balance: result.data,\n poolId,\n stakingTokenId,\n });\n setLoading(false);\n }\n };\n\n call();\n }, [poolId, principal, reload, stakingTokenId]);\n\n return useMemo(() => {\n return {\n loading,\n result: data,\n };\n }, [loading, data]);\n}\n","import { useCallback, useMemo, useState, useEffect } from \"react\";\nimport {\n getStakingPools,\n usePaginationAllData,\n getStakingTokenUserInfo,\n getStakingTokenPool,\n getPaginationAllData,\n useInterval,\n} from \"@icpswap/hooks\";\nimport { ResultStatus, type StakingPoolUserInfo, StakingPoolInfo, Null } from \"@icpswap/types\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { UnusedBalance } from \"types/staking-token\";\nimport { Principal } from \"@dfinity/principal\";\nimport { getTokenBalance } from \"hooks/token/useTokenBalance\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\nimport { useIntervalFetch } from \"hooks/useIntervalFetch\";\n\nexport async function getAllTokenPools() {\n const call = async (offset: number, limit: number) => {\n return await getStakingPools(undefined, offset, limit);\n };\n\n return getPaginationAllData(call, 500);\n}\n\nexport function useStakingTokenAllPools() {\n const call = useCallback(async (offset: number, limit: number) => {\n return await getStakingPools(undefined, offset, limit);\n }, []);\n\n return usePaginationAllData(call, 500);\n}\n\nexport function useUserUnusedTokens(reload?: boolean | number) {\n const [loading, setLoading] = useState(true);\n const [balances, setBalances] = useState([]);\n const principal = useAccountPrincipal();\n\n const { result, loading: poolsLoading } = useStakingTokenAllPools();\n\n // filter standard dip20, because dip20 use transferFrom, no unused tokens\n const pools = useMemo(() => {\n return result.filter((ele) => ele.stakingToken.standard !== TOKEN_STANDARD.DIP20);\n }, [result]);\n\n useEffect(() => {\n const call = async () => {\n if (pools && principal) {\n if (pools.length === 0) {\n setLoading(false);\n } else {\n const calls = pools.map(async (ele) => {\n return await getTokenBalance(\n ele.stakingToken.address,\n Principal.fromText(ele.canisterId.toString()),\n SubAccount.fromPrincipal(principal).toUint8Array(),\n );\n });\n\n const _result = await Promise.all(calls);\n\n const data = _result\n .map((ele, index) => {\n if (ele.status === ResultStatus.OK && ele.data) {\n const pool = pools[index];\n\n return {\n balance: ele.data,\n poolId: pool.canisterId.toString(),\n rewardTokenId: pool.rewardToken.address,\n ...pool,\n } as UnusedBalance;\n }\n return null;\n })\n .filter((ele) => !!ele) as UnusedBalance[];\n\n setBalances(data);\n\n setLoading(false);\n }\n }\n };\n\n call();\n }, [pools, principal, reload]);\n\n return useMemo(() => {\n return {\n loading: poolsLoading || loading,\n result: balances,\n };\n }, [loading, poolsLoading, balances]);\n}\n\nexport function useIntervalUserPoolInfo(\n poolId: string | undefined,\n principal: Principal | undefined,\n refresh?: number | Null,\n) {\n const callback = useCallback(async () => {\n if (!poolId || !principal) return;\n return await getStakingTokenUserInfo(poolId, principal);\n }, [poolId, principal]);\n\n return useIntervalFetch(callback, refresh);\n}\n\nexport function useIntervalStakingPoolInfo(poolId: string | undefined): [StakingPoolInfo | undefined, () => void] {\n const [forceUpdate, setForceUpdate] = useState(0);\n\n const update = useCallback(() => {\n setForceUpdate((prevState) => prevState + 1);\n }, []);\n\n const callback = useCallback(async () => {\n if (!poolId) return;\n return await getStakingTokenPool(poolId);\n }, [poolId]);\n\n const poolInfo = useInterval(callback, forceUpdate);\n\n return [poolInfo, update];\n}\n\nexport * from \"./useStateColors\";\nexport * from \"./usePools\";\nexport * from \"./useUnusedTokens\";\n","import { useCallback } from \"react\";\nimport { BigNumber } from \"@icpswap/utils\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { useErrorTip, TIP_OPTIONS } from \"hooks/useTips\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { tokenTransfer } from \"hooks/token/calls\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\n\nexport function useSwapTransfer() {\n const [openErrorTip] = useErrorTip();\n\n const principal = useAccountPrincipal();\n\n return useCallback(\n async (token: Token, amount: string, poolId: string, options?: TIP_OPTIONS) => {\n if (!principal) {\n openErrorTip(`Failed to transfer: no principal`);\n return false;\n }\n\n const { status, message } = await tokenTransfer({\n to: poolId,\n canisterId: token.address,\n amount: new BigNumber(amount),\n from: principal?.toString() ?? \"\",\n subaccount: [...SubAccount.fromPrincipal(principal).toUint8Array()],\n fee: token.transFee,\n decimals: token.decimals,\n });\n\n if (status === \"err\") {\n openErrorTip(`Failed to transfer ${token.symbol}: ${message}`, options);\n return false;\n }\n\n return true;\n },\n [principal],\n );\n}\n","import { useCallback } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { useErrorTip, TIP_OPTIONS } from \"hooks/useTips\";\nimport { approve } from \"hooks/token/useApprove\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { useMultipleApproveManager } from \"store/swap/cache/hooks\";\nimport { allowance } from \"hooks/token/useAllowance\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\n\nexport interface UseSwapApproveArgs {\n token: Token;\n amount: string;\n poolId: string;\n options?: TIP_OPTIONS;\n standard?: TOKEN_STANDARD;\n}\n\nexport function useSwapApprove() {\n const principal = useAccountPrincipal();\n const [openErrorTip] = useErrorTip();\n const { multipleApprove } = useMultipleApproveManager();\n\n return useCallback(\n async ({ token, amount, poolId, options, standard }: UseSwapApproveArgs) => {\n if (!principal) return false;\n\n const allowedBalance = await allowance({\n canisterId: token.address,\n owner: principal.toString(),\n spender: poolId,\n });\n\n const multipleApproveAmount = (BigInt(amount) * BigInt(multipleApprove)).toString();\n\n if (!allowedBalance || allowedBalance === BigInt(0) || BigInt(amount) > allowedBalance) {\n const { status, message } = await approve({\n canisterId: token.address,\n spender: poolId,\n value: multipleApproveAmount,\n account: principal,\n standard,\n });\n\n if (status === \"err\") {\n openErrorTip(`Failed to approve ${token.symbol}: ${message}`, options);\n return false;\n }\n\n return true;\n }\n\n return true;\n },\n [approve, principal, multipleApprove],\n );\n}\n","import { useMemo } from \"react\";\nimport { Position } from \"@icpswap/swap-sdk\";\nimport { usePools, type PoolKey } from \"hooks/swap/usePools\";\nimport { useTokens } from \"hooks/useCurrency\";\nimport type { PoolMetadata } from \"@icpswap/types\";\n\nexport interface PositionInfo {\n liquidity: bigint;\n tickLower: bigint;\n tickUpper: bigint;\n}\n\nexport interface UseMultiplePositionProps {\n positionInfos: PositionInfo[] | undefined;\n metadata: PoolMetadata | undefined;\n}\n\nexport function useMultiplePositions(args: UseMultiplePositionProps[]) {\n const { tokenIds } = useMemo(() => {\n const tokenIds: string[] = [];\n\n args.forEach(({ metadata }) => {\n if (metadata) {\n if (!tokenIds.includes(metadata.token0.address)) {\n tokenIds.push(metadata.token0.address);\n }\n\n if (!tokenIds.includes(metadata.token1.address)) {\n tokenIds.push(metadata.token1.address);\n }\n }\n });\n\n return { tokenIds };\n }, [JSON.stringify(args)]);\n\n const tokens = useTokens(tokenIds);\n\n const poolKeys = useMemo(() => {\n return args.map(({ metadata }) => {\n if (!metadata) return [undefined, undefined, undefined] as PoolKey;\n\n const tokenA = tokens.find((e) => {\n return e[1]?.address === metadata.token0.address;\n });\n\n const tokenB = tokens.find((e) => {\n return e[1]?.address === metadata.token1.address;\n });\n\n return [tokenA ? tokenA[1] : undefined, tokenB ? tokenB[1] : undefined, Number(metadata.fee)] as PoolKey;\n });\n }, [JSON.stringify(args), tokens]);\n\n const pools = usePools(poolKeys);\n\n return useMemo(() => {\n const positions = args.map((arg, index) => {\n const infos = arg.positionInfos;\n const pool = pools[index]?.[1];\n\n if (!infos) return undefined;\n\n return infos.map((info) => {\n if (!pool) return undefined;\n\n return new Position({\n pool,\n liquidity: info.liquidity.toString(),\n tickLower: Number(info.tickLower),\n tickUpper: Number(info.tickUpper),\n });\n });\n });\n\n return positions;\n }, [JSON.stringify(args), pools]);\n}\n","import { useMemo } from \"react\";\nimport type { PoolMetadata } from \"@icpswap/types\";\nimport { BigNumber } from \"@icpswap/utils\";\nimport { useInfoAllTokens } from \"@icpswap/hooks\";\nimport { useMultiplePositions, type PositionInfo } from \"hooks/swap/useMultiplePositions\";\n\nexport interface UseMultiPositionsValueProps {\n positionInfos: PositionInfo[] | undefined;\n metadata: PoolMetadata | undefined;\n}\n\nexport function useMultiPoolPositionsValue(args: UseMultiPositionsValueProps[]) {\n const allTokenInfos = useInfoAllTokens();\n\n const positions = useMultiplePositions(args);\n\n return useMemo(() => {\n if (!allTokenInfos || !positions) return undefined;\n if (allTokenInfos.length === 0 || positions.length === 0) return undefined;\n\n const vals = positions.flat().map((position) => {\n if (position) {\n const token0Amount = position.amount0.toExact();\n const token1Amount = position.amount1.toExact();\n\n const token0Price = allTokenInfos.find((info) => info.address === position.pool.token0.address)?.priceUSD;\n const token1Price = allTokenInfos.find((info) => info.address === position.pool.token1.address)?.priceUSD;\n\n if (token0Price !== undefined && token1Price !== undefined) {\n return new BigNumber(token0Amount)\n .multipliedBy(token0Price)\n .plus(new BigNumber(token1Amount).multipliedBy(token1Price));\n }\n }\n\n return null;\n });\n\n return vals;\n }, [JSON.stringify(positions), allTokenInfos]);\n}\n\nexport interface UsePositionsValue {\n positionInfos: PositionInfo[] | undefined;\n metadata: PoolMetadata | undefined;\n}\n\nexport function usePositionsValue({ metadata, positionInfos }: UsePositionsValue) {\n return useMultiPoolPositionsValue([{ metadata, positionInfos }]);\n}\n\nexport interface UseMultiPoolPositionsTotalValue {\n positionInfos: PositionInfo[] | undefined;\n metadata: PoolMetadata | undefined;\n}\n\nexport function useMultiPoolPositionsTotalValue(args: UseMultiPoolPositionsTotalValue[]) {\n const allTokenInfos = useInfoAllTokens();\n\n const positions = useMultiplePositions(args);\n\n return useMemo(() => {\n if (!allTokenInfos || !positions) return undefined;\n if (allTokenInfos.length === 0 || positions.length === 0) return undefined;\n\n let totalValue: BigNumber | undefined;\n\n positions.flat().forEach((position) => {\n if (position) {\n const token0Amount = position.amount0.toExact();\n const token1Amount = position.amount1.toExact();\n\n const token0Price = allTokenInfos.find((info) => info.address === position.pool.token0.address)?.priceUSD;\n const token1Price = allTokenInfos.find((info) => info.address === position.pool.token1.address)?.priceUSD;\n\n if (token0Price !== undefined && token1Price !== undefined) {\n totalValue = (totalValue ?? new BigNumber(0))\n .plus(new BigNumber(token0Amount).multipliedBy(token0Price))\n .plus(new BigNumber(token1Amount).multipliedBy(token1Price));\n }\n }\n });\n\n return totalValue?.toString();\n }, [JSON.stringify(positions), allTokenInfos]);\n}\n\nexport interface UsePositionsTotalValue {\n positionInfos: PositionInfo[] | undefined;\n metadata: PoolMetadata | undefined;\n}\n\nexport function usePositionsTotalValue({ metadata, positionInfos }: UsePositionsTotalValue) {\n return useMultiPoolPositionsTotalValue([{ metadata, positionInfos }]);\n}\n","import { useCallback, useMemo, useState } from \"react\";\nimport { parseTokenAmount } from \"@icpswap/utils\";\nimport { TokenInfo } from \"types/token\";\nimport { useTips, MessageTypes } from \"hooks/useTips\";\nimport { destroyPassCode, withdrawPCMBalance } from \"@icpswap/hooks\";\nimport { type PassCode, type PCMMetadata, ResultStatus } from \"@icpswap/types\";\nimport { type Token } from \"@icpswap/swap-sdk\";\n\nexport interface WithdrawPCMBalanceArgs {\n token: TokenInfo | Token;\n name: string | undefined;\n type: \"code\" | \"unUsed\";\n metadata: PCMMetadata | undefined | null;\n code?: PassCode | undefined;\n amount: bigint | number | string;\n}\n\nexport function useWithdrawPCMBalanceCallback() {\n const [openTip, closeTip] = useTips();\n const [loading, setLoading] = useState(false);\n\n const callback = useCallback(async (args: WithdrawPCMBalanceArgs[]) => {\n return await Promise.all(\n args.map(async ({ token, name, type, code, amount: __amount }) => {\n const amount = BigInt(__amount);\n const tokenTransFee = BigInt(token.transFee);\n const unavailableClaim =\n amount === BigInt(0) || (type === \"code\" ? amount < tokenTransFee * BigInt(2) : amount < tokenTransFee);\n\n if (unavailableClaim) return;\n\n setLoading(true);\n\n const loadingKey = openTip(\n `Withdraw your ${parseTokenAmount(amount, token.decimals).toFormat()} ${token.symbol}`,\n MessageTypes.loading,\n );\n\n if (type === \"code\" && !!code) {\n const result = await destroyPassCode(code.token0.toString(), code.token1.toString(), code.fee);\n\n if (result.status === ResultStatus.OK) {\n const result = await withdrawPCMBalance(amount, tokenTransFee);\n if (result.status === ResultStatus.OK) {\n openTip(`Withdrew ${name} successfully`, MessageTypes.success);\n } else {\n openTip(`Failed to Withdraw ${name}: ${result.message}`, MessageTypes.error);\n }\n } else {\n openTip(`Failed to Withdraw: ${result.message ?? \"\"}`, MessageTypes.error);\n }\n } else {\n const result = await withdrawPCMBalance(amount, tokenTransFee);\n\n if (result.status === ResultStatus.OK) {\n openTip(`Withdrew ${name} successfully`, MessageTypes.success);\n } else {\n openTip(result.message ? result.message : `Failed to Withdraw ${name}`, MessageTypes.error);\n }\n }\n\n closeTip(loadingKey);\n setLoading(false);\n }),\n );\n }, []);\n\n return useMemo(() => ({ loading, callback }), [loading, callback]);\n}\n","import { useMemo } from \"react\";\nimport { BigNumber } from \"@icpswap/utils\";\nimport { PositionSort, UserPosition, UserPositionForFarm } from \"types/swap\";\n\nexport interface UseSortedPositionsProps {\n sort: PositionSort;\n positions: (UserPosition | UserPositionForFarm)[] | undefined;\n feesValue: { [id: string]: BigNumber | undefined } | undefined;\n positionValue: { [id: string]: BigNumber | undefined } | undefined;\n}\n\nexport function useSortedPositions({ positions, sort, feesValue, positionValue }: UseSortedPositionsProps): T[] {\n return useMemo(() => {\n if (!positions) return [];\n\n if (sort === PositionSort.Default) return [...positions];\n\n if (sort === PositionSort.FeesValue) {\n if (!feesValue) return positions;\n\n if (Object.keys(feesValue).length < positions.length) return positions;\n\n return [...positions].sort((a, b) => {\n const allKeys = Object.keys(feesValue);\n\n const keyA = allKeys.find((key) => key.includes(a.id) && key.includes(a.index.toString()));\n const keyB = allKeys.find((key) => key.includes(b.id) && key.includes(b.index.toString()));\n\n if (keyA && keyB) {\n const valueA = feesValue[keyA];\n const valueB = feesValue[keyB];\n\n if (valueA && valueB) {\n return valueA.isGreaterThan(valueB) ? -1 : 1;\n }\n }\n\n return 0;\n });\n }\n\n if (sort === PositionSort.PositionValue) {\n if (!positionValue) return positions;\n if (Object.keys(positionValue).length < positions.length) return positions;\n\n return [...positions].sort((a, b) => {\n const allKeys = Object.keys(positionValue);\n\n const keyA = allKeys.find((key) => key.includes(a.id) && key.includes(a.index.toString()));\n const keyB = allKeys.find((key) => key.includes(b.id) && key.includes(b.index.toString()));\n\n if (keyA && keyB) {\n const valueA = positionValue[keyA];\n const valueB = positionValue[keyB];\n\n if (valueA && valueB) {\n return valueA.isGreaterThan(valueB) ? -1 : 1;\n }\n }\n\n return 0;\n });\n }\n\n return [];\n }, [feesValue, positionValue, sort, positions]) as T[];\n}\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { BigNumber, isNullArgs } from \"@icpswap/utils\";\nimport { Null } from \"@icpswap/types\";\nimport { isUseTransfer } from \"utils/token\";\n\nexport interface GetTokenInsufficientProps {\n token: Token | undefined;\n subAccountBalance: BigNumber | undefined;\n unusedBalance: bigint | undefined;\n balance: BigNumber | undefined;\n formatTokenAmount: string | undefined;\n allowance?: bigint | Null;\n}\n\nexport function getTokenInsufficient({\n token,\n subAccountBalance,\n unusedBalance,\n balance,\n formatTokenAmount,\n allowance,\n}: GetTokenInsufficientProps) {\n if (\n isNullArgs(token) ||\n isNullArgs(subAccountBalance) ||\n isNullArgs(unusedBalance) ||\n isNullArgs(balance) ||\n isNullArgs(formatTokenAmount)\n )\n return undefined;\n\n // console.log(\"xxxx unusedBalance:\", unusedBalance.toString());\n // console.log(\"xxxx subAccountBalance:\", subAccountBalance.toString());\n // console.log(\"xxxx formatTokenAmount: \", formatTokenAmount);\n // console.log(\"xxxx balance:\", balance.toString());\n // console.log(\"allowance:\", allowance);\n\n if (!new BigNumber(unusedBalance.toString()).isLessThan(formatTokenAmount)) return \"NO_TRANSFER_APPROVE\";\n\n if (\n !new BigNumber(unusedBalance.toString())\n .plus(subAccountBalance)\n .isLessThan(new BigNumber(formatTokenAmount).plus(token.transFee))\n )\n return \"NEED_DEPOSIT\";\n\n if (\n !new BigNumber(unusedBalance.toString())\n .plus(subAccountBalance)\n .plus(balance)\n .isLessThan(\n new BigNumber(formatTokenAmount).plus(\n isUseTransfer(token) || !allowance\n ? token.transFee * 2\n : // formatTokenAmount is the total amount, includes the unused balance\n // The approve amount is the user balance\n !new BigNumber(allowance?.toString()).isLessThan(balance)\n ? token.transFee\n : token.transFee * 2,\n ),\n )\n )\n return \"NEED_TRANSFER_APPROVE\";\n\n return \"INSUFFICIENT\";\n}\n","import { getSwapPosition } from \"@icpswap/hooks\";\nimport { isNullArgs } from \"@icpswap/utils\";\nimport { Null, type FarmInfoWithId } from \"@icpswap/types\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { UserPosition, UserPositionForFarm } from \"types/swap\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\n\ntype UserPositions = {\n positions: bigint[];\n poolId: string;\n};\n\nexport function useSwapPositions(data: UserPositions[] | undefined, refresh?: number) {\n const [loading, setLoading] = useState(false);\n const [positions, setPositions] = useState(undefined);\n\n const principal = useAccountPrincipal();\n\n useEffect(() => {\n async function call() {\n if (isNullArgs(data)) return;\n if (data.length === 0 || isNullArgs(principal)) {\n setPositions([]);\n return;\n }\n\n setLoading(true);\n\n const positions = await Promise.all(\n data\n .reduce(\n (prev, curr) => {\n return prev.concat(curr.positions.map((index) => [curr.poolId, index]));\n },\n [] as [string, bigint][],\n )\n .map(async ([canisterId, index]) => {\n const position = await getSwapPosition(canisterId, index);\n return { ...position, id: canisterId, index: Number(index) };\n }),\n );\n\n setPositions(positions.filter((position) => !!position) as UserPosition[]);\n setLoading(false);\n }\n\n call();\n }, [data, principal, refresh]);\n\n return useMemo(() => ({ loading, result: positions }), [positions, loading]);\n}\n\nexport function useSwapPositionsMultipleFarm(farms: FarmInfoWithId[] | Null, refresh?: number) {\n const principal = useAccountPrincipal();\n const [loading, setLoading] = useState(false);\n const [positions, setPositions] = useState(undefined);\n\n useEffect(() => {\n async function call() {\n if (isNullArgs(farms) || isNullArgs(principal) || farms.length === 0) {\n setPositions([]);\n return;\n }\n\n setLoading(true);\n\n const positions = await Promise.all(\n farms\n .reduce(\n (prev, curr) => {\n return prev.concat(curr.positionIds.map((positionId) => [curr.pool.toString(), positionId, curr]));\n },\n [] as [string, bigint, FarmInfoWithId][],\n )\n .map(async ([poolId, positionId, farm]) => {\n const position = await getSwapPosition(poolId.toString(), positionId);\n return { ...position, id: poolId.toString(), index: Number(positionId), farm } as UserPositionForFarm;\n }),\n );\n\n setPositions(positions.filter((position) => !!position));\n setLoading(false);\n }\n\n call();\n }, [farms, principal, refresh]);\n\n return useMemo(() => ({ loading, result: positions }), [positions, loading]);\n}\n\nexport function useSwapPositionsByFarm(farm: FarmInfoWithId | undefined, refresh?: number) {\n return useSwapPositionsMultipleFarm(farm ? [farm] : undefined, refresh);\n}\n","import { useAccountPrincipal } from \"store/auth/hooks\";\nimport { usePassCode } from \"@icpswap/hooks\";\n\nexport function useUserPassCodes(reload?: number | boolean) {\n const principal = useAccountPrincipal();\n return usePassCode(principal?.toString(), reload);\n}\n","import { useMemo } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { getTokenInsufficient } from \"hooks/swap/index\";\nimport { BigNumber, isNullArgs } from \"@icpswap/utils\";\nimport { Null } from \"@icpswap/types\";\n\nexport interface useSwapTokenFeeCostProps {\n tokenBalance: BigNumber | undefined;\n subAccountBalance: BigNumber | undefined;\n unusedBalance: bigint | undefined;\n token: Token | Null;\n amount: string | undefined;\n}\n\nexport function useSwapTokenFeeCost({\n token,\n tokenBalance,\n subAccountBalance,\n unusedBalance,\n amount,\n}: useSwapTokenFeeCostProps) {\n return useMemo(() => {\n if (\n isNullArgs(token) ||\n isNullArgs(tokenBalance) ||\n isNullArgs(subAccountBalance) ||\n isNullArgs(unusedBalance) ||\n isNullArgs(amount)\n )\n return undefined;\n\n const tokenInsufficient = getTokenInsufficient({\n token,\n subAccountBalance,\n balance: tokenBalance,\n formatTokenAmount: amount,\n unusedBalance,\n });\n\n if (tokenInsufficient === \"NO_TRANSFER_APPROVE\") return \"0\";\n if (tokenInsufficient === \"NEED_DEPOSIT\") return token.transFee.toString();\n if (tokenInsufficient === \"NEED_TRANSFER_APPROVE\") return (token.transFee * 2).toString();\n\n return \"0\";\n }, [token, tokenBalance, subAccountBalance, unusedBalance]);\n}\n","import { useMemo } from \"react\";\nimport { useToken } from \"hooks/useCurrency\";\nimport { useSnsTokenInfoByGovernance } from \"hooks/sns/useSnsTokenInfoByGovernance\";\n\nexport function useLiquidityLocksImage(name: string | undefined, principalId: string | undefined) {\n const governanceId = useMemo(() => {\n if (!name || !principalId) return undefined;\n if (name.includes(\"Governance\")) return principalId;\n return undefined;\n }, [name, principalId]);\n\n const snsTokenInfo = useSnsTokenInfoByGovernance(governanceId);\n\n const tokenId = useMemo(() => {\n if (!name || !principalId) return undefined;\n if (name.includes(\"Governance\")) {\n return snsTokenInfo?.canister_ids.ledger_canister_id;\n }\n\n return undefined;\n }, [name, principalId, snsTokenInfo]);\n\n const [, token] = useToken(tokenId);\n\n return useMemo(() => {\n if (!tokenId) {\n switch (name) {\n case \"Sneedlocked\":\n return \"/images/liquidity_locks_sneed.png\";\n case \"Black Hole\":\n return \"/images/liquidity_locks_blackhole.png\";\n case \"Free liquidity\":\n return \"/images/liquidity_locks_free.png\";\n default:\n return undefined;\n }\n }\n\n return token?.logo;\n }, [token, tokenId, name, principalId]);\n}\n","import { useMemo } from \"react\";\nimport { useStateSnsAllTokensInfo } from \"store/sns/hooks\";\n\nexport function useSnsTokenInfoByGovernance(governanceId: string | undefined) {\n const allSnsTokensInfo = useStateSnsAllTokensInfo();\n\n return useMemo(() => {\n return allSnsTokensInfo.find((e) => e.canister_ids.governance_canister_id === governanceId);\n }, [governanceId, allSnsTokensInfo]);\n}\n","import { useCallback } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { withdraw } from \"@icpswap/hooks\";\nimport { useErrorTip } from \"hooks/useTips\";\nimport { OpenExternalTip } from \"types/index\";\nimport i18n from \"i18n/index\";\n\nexport function useSwapWithdraw() {\n const [openErrorTip] = useErrorTip();\n\n return useCallback(async (token: Token, poolId: string, amount: string, openExternalTip?: OpenExternalTip) => {\n const { status, message } = await withdraw(poolId, token.address, BigInt(token.transFee), BigInt(amount));\n\n if (status === \"err\") {\n if (openExternalTip) {\n openExternalTip({ message });\n } else {\n openErrorTip(i18n.t(\"common.failed.withdraw.error.with.reclaimMsg\", { symbol: token.symbol, message }));\n }\n\n return false;\n }\n\n return true;\n }, []);\n}\n\nexport interface UseSwapWithdrawByTokenIdProps {\n tokenId: string;\n tokenFee: number | string | bigint;\n poolId: string;\n amount: string | bigint | number;\n openExternalTip?: OpenExternalTip;\n}\n\nexport function useSwapWithdrawByTokenId() {\n const [openErrorTip] = useErrorTip();\n\n return useCallback(async ({ tokenFee, tokenId, poolId, amount, openExternalTip }: UseSwapWithdrawByTokenIdProps) => {\n const { status, message } = await withdraw(poolId, tokenId, BigInt(tokenFee), BigInt(amount));\n\n if (status === \"err\") {\n if (openExternalTip) {\n openExternalTip({ message });\n } else {\n openErrorTip(i18n.t(\"common.failed.withdraw.error.with.reclaimMsg\", { symbol: \"\", message }));\n }\n\n return false;\n }\n\n return true;\n }, []);\n}\n","import { useMemo } from \"react\";\nimport { useNodeInfoAllPools } from \"@icpswap/hooks\";\nimport { Null } from \"@icpswap/types\";\nimport { ICP } from \"@icpswap/tokens\";\n\ninterface UesTokenPairWithIcpProps {\n tokenId: string | Null;\n}\n\nexport function uesTokenPairWithIcp({ tokenId }: UesTokenPairWithIcpProps) {\n const { result: infoAllPools } = useNodeInfoAllPools();\n\n return useMemo(() => {\n if (!tokenId || !infoAllPools) return null;\n\n const infoPool = infoAllPools.find((element) =>\n element.token0Id === tokenId || element.token0Id === tokenId\n ? element.token0Id === tokenId\n ? element.token1Id === ICP.address\n : element.token0Id === ICP.address\n : false,\n );\n\n return infoPool?.pool;\n }, [tokenId, infoAllPools]);\n}\n","import { useMemo, useCallback, useEffect, useState } from \"react\";\nimport { NumberType, ResultStatus } from \"@icpswap/types\";\nimport { parseTokenAmount, formatTokenAmount, BigNumber } from \"@icpswap/utils\";\nimport { Token, FeeAmount } from \"@icpswap/swap-sdk\";\nimport { getPoolCanisterId } from \"hooks/swap/v3Calls\";\nimport { getSwapPosition, depositFrom, deposit } from \"@icpswap/hooks\";\nimport { usePoolCanisterIdManager } from \"store/swap/hooks\";\nimport { PositionDetail } from \"types/swap\";\nimport type { SwapNFTTokenMetadata, TOKEN_STANDARD } from \"@icpswap/types\";\nimport { useErrorTip } from \"hooks/useTips\";\nimport { isUseTransfer, isUseTransferByStandard } from \"utils/token/index\";\nimport { OpenExternalTip } from \"types/index\";\n\n// Now the amount that user input is the final amount swap/add/increase\n// Amount is the value that the subaccount balance when use transfer, 1 token fees should be added on the amount\n// And if use approve, amount is the value that the pool unused balance\nexport function getTokenActualTransferAmount(amount: NumberType, token: Token): string {\n const typedValue = formatTokenAmount(amount, token.decimals);\n const fee = token.transFee;\n\n // And 1 token fees will be subtracted by token canister,\n // so user balance should be equal to or greater than typeValue + token.fee * 2 if use transfer\n // typeValue + token.fee if use approve\n return isUseTransfer(token)\n ? parseTokenAmount(typedValue.plus(fee), token.decimals).toString()\n : parseTokenAmount(typedValue, token.decimals).toString();\n}\n\nexport function getTokenActualTransferRawAmount(rawAmount: NumberType, token: Token): string {\n const fee = token.transFee;\n\n // And 1 token fees will be subtracted by token canister,\n // so user balance should be equal to or greater than typeValue + token.fee * 2 if use transfer\n // typeValue + token.fee if use approve\n return isUseTransfer(token) ? new BigNumber(rawAmount.toString()).plus(fee).toString() : rawAmount.toString();\n}\n\nexport function getTokenActualDepositAmount(amount: NumberType, token: Token): string {\n const typedValue = formatTokenAmount(amount, token.decimals);\n const fee = token.transFee;\n\n return isUseTransfer(token)\n ? parseTokenAmount(typedValue.plus(fee), token.decimals).toString()\n : parseTokenAmount(typedValue, token.decimals).toString();\n}\n\nexport function getTokenActualDepositRawAmount(rawAmount: NumberType, token: Token): string {\n const fee = token.transFee;\n\n return isUseTransfer(token)\n ? new BigNumber(rawAmount.toString()).plus(fee).toString()\n : new BigNumber(rawAmount.toString()).toString();\n}\n\nexport function usePoolCanisterId(\n token0CanisterId: string | undefined | null,\n token1CanisterId: string | undefined | null,\n fee: FeeAmount | undefined | null,\n) {\n const key = useMemo(() => {\n return token0CanisterId && token1CanisterId && fee\n ? `${token0CanisterId}_${token1CanisterId}_${String(fee)}`\n : undefined;\n }, [token0CanisterId, token1CanisterId, fee]);\n\n const [id, updatePoolCanisterId] = usePoolCanisterIdManager(key);\n\n useEffect(() => {\n const call = async () => {\n if (token0CanisterId && token1CanisterId && fee && key && !id) {\n const _id = await getPoolCanisterId(token0CanisterId, token1CanisterId, fee);\n if (_id) {\n updatePoolCanisterId({ key, id: _id });\n }\n }\n };\n\n call();\n }, [id, token0CanisterId, token1CanisterId, fee, key]);\n\n return useMemo(() => id, [id]);\n}\n\nexport async function getPositionFromNFT(metadata: SwapNFTTokenMetadata) {\n const { attributes } = metadata;\n\n const positionDetail: { [key: string]: string } = {\n pool: \"\",\n token0: \"\",\n token1: \"\",\n fee: \"\",\n tickLower: \"\",\n tickUpper: \"\",\n positionId: \"\",\n };\n\n attributes.forEach((ele) => {\n positionDetail[ele.k] = ele.v;\n });\n\n if (!positionDetail.pool) return undefined;\n\n const position = await getSwapPosition(positionDetail.pool, BigInt(positionDetail.positionId));\n\n return {\n ...positionDetail,\n ...position,\n } as PositionDetail;\n}\n\nexport function usePositionFromNFT(metadata: SwapNFTTokenMetadata) {\n const [loading, setLoading] = useState(false);\n const [position, setPosition] = useState(undefined);\n\n useEffect(() => {\n const call = async () => {\n setLoading(true);\n const position = await getPositionFromNFT(metadata);\n setPosition(position);\n setLoading(false);\n };\n\n call();\n }, [metadata]);\n\n return useMemo(\n () => ({\n loading,\n result: position,\n }),\n [position, loading],\n );\n}\n\nexport function usePositionsFromNFTs(data: SwapNFTTokenMetadata[] | undefined) {\n const [loading, setLoading] = useState(false);\n const [positions, setPositions] = useState([]);\n\n useEffect(() => {\n const call = () => {\n if (!data) return;\n if (data.length === 0) {\n setPositions([]);\n return;\n }\n\n setLoading(true);\n\n Promise.all(\n data.map(async (ele) => {\n return await getPositionFromNFT(ele);\n }),\n ).then((result) => {\n const positions = result.filter((ele) => ele !== undefined) as PositionDetail[];\n setPositions(positions);\n setLoading(false);\n });\n };\n\n call();\n }, [data]);\n\n return useMemo(() => ({ loading, result: positions }), [positions, loading]);\n}\n\nexport interface UseSwapDepositArgs {\n token: Token;\n amount: string;\n poolId: string;\n openExternalTip?: OpenExternalTip;\n standard: TOKEN_STANDARD;\n}\n\nexport function useSwapDeposit() {\n const [openErrorTip] = useErrorTip();\n\n return useCallback(async ({ token, amount, poolId, openExternalTip, standard }: UseSwapDepositArgs) => {\n const useTransfer = isUseTransferByStandard(standard);\n\n let status: ResultStatus = ResultStatus.ERROR;\n let message = \"\";\n\n if (useTransfer) {\n const { status: _status, message: _message } = await deposit(\n poolId,\n token.address,\n BigInt(amount),\n BigInt(token.transFee),\n );\n status = _status;\n message = _message;\n } else {\n const { status: _status, message: _message } = await depositFrom(\n poolId,\n token.address,\n BigInt(amount),\n BigInt(token.transFee),\n );\n status = _status;\n message = _message;\n }\n\n if (status === \"err\") {\n if (openExternalTip) {\n openExternalTip({ message });\n } else {\n openErrorTip(\n `Failed to deposit ${token.symbol}: ${message}. Please check your balance in the swap pool to see if tokens have been transferred to the swap pool.`,\n );\n }\n\n return false;\n }\n\n return true;\n }, []);\n}\n\nexport * from \"./useSwapTokenTransfer\";\nexport * from \"./useReclaimCallback\";\nexport * from \"./useSwapApprove\";\nexport * from \"./usePositionValue\";\nexport * from \"./useWithdrawPCMBalance\";\nexport * from \"./useSortedPositions\";\nexport * from \"./useTokenInsufficient\";\nexport * from \"./useSwapPositions\";\nexport * from \"./usePCMBalances\";\nexport * from \"./useSwapTokenFeeCost\";\nexport * from \"./useLiquidityLocksImage\";\nexport * from \"./useMaxAmountSpend\";\nexport * from \"./useSwapWithdraw\";\nexport * from \"./usePositionFees\";\nexport * from \"./usePosition\";\nexport * from \"./usePools\";\nexport * from \"./useTokenPairWithIcp\";\n","import { CurrencyAmount, Token } from \"@icpswap/swap-sdk\";\nimport { BigNumber, isNullArgs, nonNullArgs } from \"@icpswap/utils\";\nimport { Null } from \"@icpswap/types\";\nimport { useAllowance } from \"hooks/token\";\nimport { useMemo } from \"react\";\nimport { useAccountPrincipalString } from \"store/auth/hooks\";\nimport { isUseTransfer } from \"utils/token\";\n\nexport interface UseMaxPoolBalanceSpendProps {\n token: Token | Null;\n subBalance: BigNumber | Null;\n unusedBalance: bigint | Null;\n}\n\nexport function usePoolBalanceMaxSpend({ token, subBalance, unusedBalance }: UseMaxPoolBalanceSpendProps) {\n return useMemo(() => {\n if (!token || isNullArgs(unusedBalance) || isNullArgs(subBalance)) return undefined;\n\n const totalPoolBalance = new BigNumber(unusedBalance.toString()).plus(subBalance);\n\n if (totalPoolBalance.isEqualTo(0)) return CurrencyAmount.fromRawAmount(token, 0);\n\n // The token use transfer to deposit\n // 1 token fee is needed for deposit\n if (isUseTransfer(token)) {\n // No token fee needed\n if (subBalance.isEqualTo(0)) {\n return CurrencyAmount.fromRawAmount(token, unusedBalance.toString());\n }\n\n return CurrencyAmount.fromRawAmount(\n token,\n new BigNumber(unusedBalance.toString()).plus(subBalance).minus(token.transFee).toString(),\n );\n }\n\n // If token use approve, no token fee needed\n // And the subAccountBalance is 0\n return CurrencyAmount.fromRawAmount(\n token,\n new BigNumber(unusedBalance.toString()).plus(subBalance.toString()).toString(),\n );\n }, [unusedBalance, subBalance]);\n}\n\nexport interface UseMaxBalanceSpendArgs {\n token: Token | Null;\n balance: string | Null;\n poolId?: string | Null;\n allowance?: bigint | Null;\n}\n\nexport function useBalanceMaxSpend({ token, balance, poolId, allowance: __allowance }: UseMaxBalanceSpendArgs) {\n const principal = useAccountPrincipalString();\n\n const allowanceCanisterId = useMemo(() => {\n if (!token || nonNullArgs(__allowance)) return undefined;\n return isUseTransfer(token) ? undefined : token.address;\n }, [token, __allowance]);\n\n const { result: allowance } = useAllowance({ canisterId: allowanceCanisterId, owner: principal, spender: poolId });\n\n return useMemo(() => {\n if (isNullArgs(balance) || isNullArgs(token)) return undefined;\n\n if (new BigNumber(balance).isEqualTo(0)) return CurrencyAmount.fromRawAmount(token, 0);\n\n // The token use transfer to deposit\n // 2 token fee is needed, 1 for deposit, 1 for token canister\n if (isUseTransfer(token)) {\n return CurrencyAmount.fromRawAmount(token, new BigNumber(balance).minus(token.transFee * 2).toString());\n }\n\n // The token use approve to deposit\n const innerAllowance = (allowance ?? __allowance) as bigint;\n\n // If token use approve, subaccount balance is 0\n // The tokens use approve to deposit, but can't get allowance, so 2 trans fee is needed\n if (innerAllowance === undefined) {\n return CurrencyAmount.fromRawAmount(token, new BigNumber(balance).minus(token.transFee * 2).toString());\n }\n\n // Need call token approve, would cost one transfer fee\n if (new BigNumber(innerAllowance.toString()).isLessThan(balance)) {\n return CurrencyAmount.fromRawAmount(token, new BigNumber(balance).minus(token.transFee * 2).toString());\n }\n\n return CurrencyAmount.fromRawAmount(token, new BigNumber(balance).minus(token.transFee).toString());\n }, [allowance, __allowance, token, balance, allowanceCanisterId]);\n}\n\nexport interface UseMaxAmountSpendArgs {\n token: Token | Null;\n balance: string | Null;\n poolId?: string | Null;\n subBalance: BigNumber | Null;\n unusedBalance: bigint | Null;\n allowance?: bigint | Null;\n}\n\nexport function useAllBalanceMaxSpend({\n poolId,\n subBalance,\n unusedBalance,\n allowance: __allowance,\n token,\n balance,\n}: UseMaxAmountSpendArgs) {\n const maxBalanceSpend = useBalanceMaxSpend({ token, balance, poolId, allowance: __allowance });\n const maxPoolBalanceSpent = usePoolBalanceMaxSpend({ token, subBalance, unusedBalance });\n\n return useMemo(() => {\n if (isNullArgs(maxBalanceSpend) || isNullArgs(maxPoolBalanceSpent) || isNullArgs(token)) return undefined;\n if (!maxBalanceSpend.currency.equals(maxPoolBalanceSpent.currency)) return undefined;\n\n return maxBalanceSpend.add(maxPoolBalanceSpent);\n }, [maxBalanceSpend, maxPoolBalanceSpent]);\n}\n","import { isNullArgs } from \"@icpswap/utils\";\nimport { Token, FeeAmount } from \"@icpswap/swap-sdk\";\nimport { useMemo, useEffect, useState } from \"react\";\nimport { getSwapPool, getSwapPoolMetadata } from \"@icpswap/hooks\";\nimport type { Null, PoolMetadata } from \"@icpswap/types\";\n\nexport interface PoolResult {\n poolId: string;\n metadata: PoolMetadata;\n}\n\nexport async function getMultiPoolsMetadata(poolKeys: [Token | Null, Token | Null, FeeAmount | Null][]) {\n const transformedPoolKeys: ([Token, Token, FeeAmount] | null)[] = poolKeys.map(\n ([currencyA, currencyB, feeAmount]) => {\n if (!currencyA || !currencyB || !feeAmount) return null;\n\n const tokenA = currencyA?.wrapped;\n const tokenB = currencyB?.wrapped;\n if (!tokenA || !tokenB || tokenA.equals(tokenB)) return null;\n\n const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA];\n\n return [token0, token1, feeAmount];\n },\n );\n\n return await Promise.all(\n transformedPoolKeys.map(async (ele) => {\n if (isNullArgs(ele)) return null;\n\n const [token0, token1, fee] = ele;\n\n // Args for get pool base ifo\n const args = {\n token0: { address: token0.wrapped.address, standard: token0.standard },\n token1: { address: token1.wrapped.address, standard: token1.standard },\n fee: BigInt(fee),\n sqrtPriceX96: \"0\",\n };\n\n const poolBaseInfo = await getSwapPool(args);\n\n if (poolBaseInfo) {\n const poolId = poolBaseInfo.canisterId.toString();\n const poolMetadata = await getSwapPoolMetadata(poolId);\n\n return {\n poolId,\n metadata: poolMetadata,\n };\n }\n\n return null;\n }),\n );\n}\n\nexport function useMultiPoolsMetadata(poolKeys: [Token | undefined, Token | undefined, FeeAmount | undefined][]) {\n const [pools, setPools] = useState<(PoolResult | Null)[]>([]);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n if (poolKeys && poolKeys.length) {\n setLoading(true);\n\n const result = await getMultiPoolsMetadata(poolKeys);\n\n setPools(result);\n setLoading(false);\n }\n }\n\n call();\n }, [JSON.stringify(poolKeys)]);\n\n return useMemo(\n () => ({\n result: pools,\n loading,\n }),\n [pools, loading],\n );\n}\n","import { useMemo, useEffect, useState } from \"react\";\nimport { Pool, Token, FeeAmount } from \"@icpswap/swap-sdk\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { getSwapPoolMetadata, useSwapPools } from \"@icpswap/hooks\";\nimport { isNullArgs, nonNullArgs, numberToString } from \"@icpswap/utils\";\nimport type { Null, PoolMetadata } from \"@icpswap/types\";\nimport { getPool_update_call } from \"hooks/swap/v3Calls\";\nimport { NETWORK, network } from \"constants/index\";\nimport { useToken, getTokensFromInfos } from \"hooks/useCurrency\";\nimport { getTokenInfo } from \"hooks/token/calls\";\nimport { TokenInfo, PoolState } from \"types/index\";\n\nimport { getMultiPoolsMetadata } from \"./usePoolsMetadata\";\n\nconst POOL_METADATA_UPDATE_INTERVAL = 60000;\n\ntype TypePoolsState = {\n id: string;\n metadata: PoolMetadata | undefined;\n key: string;\n checked: boolean;\n};\n\ntype TransformedKey = { token0: string; token1: string; fee: FeeAmount };\n\nfunction transformedKeyToKey(transformedKey: TransformedKey) {\n return `${transformedKey.token0}_${transformedKey.token1}_${transformedKey.fee}`;\n}\n\nexport type PoolKey = [Token | Null, Token | Null, FeeAmount | undefined];\n\nexport function usePools(poolKeys: PoolKey[], withoutVerify = false): [PoolState, Pool | null][] {\n const [pools, setPools] = useState<{ [key: string]: TypePoolsState | null }>({});\n const [loading, setLoading] = useState(false);\n\n const sortedPoolKeys: PoolKey[] = useMemo(() => {\n return poolKeys.map(([token0, token1, fee]) => {\n if (isNullArgs(token0) || isNullArgs(token1) || isNullArgs(fee)) return [token0, token1, fee];\n\n const __token0 = token0.sortsBefore(token1) ? token0 : token1;\n const __token1 = __token0.equals(token0) ? token1 : token0;\n\n return [__token0, __token1, fee];\n });\n }, [JSON.stringify(poolKeys)]);\n\n useEffect(() => {\n async function call() {\n if (sortedPoolKeys && sortedPoolKeys.length > 0) {\n setLoading(true);\n\n const poolsMetadata = await getMultiPoolsMetadata(sortedPoolKeys);\n const pools: { [id: string]: TypePoolsState } = {};\n\n sortedPoolKeys.forEach((poolKey, index) => {\n const [token0, token1, fee] = poolKey;\n\n if (isNullArgs(token0) || isNullArgs(token1) || isNullArgs(fee)) return;\n\n const key = transformedKeyToKey({ token0: token0.address, token1: token1.address, fee });\n\n const metadataResult = poolsMetadata[index];\n\n if (isNullArgs(metadataResult)) return;\n\n pools[key] = {\n id: metadataResult.poolId,\n metadata: metadataResult.metadata,\n key,\n checked: !!withoutVerify,\n };\n });\n\n setPools(pools);\n setLoading(false);\n\n // Use update call to verify the pool.\n if (withoutVerify === false) {\n sortedPoolKeys.map(async (poolKey, index) => {\n const [token0, token1, fee] = poolKey;\n\n if (isNullArgs(token0) || isNullArgs(token1) || isNullArgs(fee)) return null;\n\n const pool = await getPool_update_call(token0.address, token1.address, fee);\n\n const key = transformedKeyToKey({ token0: token0.address, token1: token1.address, fee });\n\n if (!pool) {\n setPools((prevState) => ({\n ...prevState,\n [key]: null,\n }));\n } else {\n const metadataResult = poolsMetadata[index];\n\n if (nonNullArgs(metadataResult)) {\n setPools((prevState) => ({\n ...prevState,\n [key]: {\n key,\n id: pool.canisterId.toString(),\n metadata: metadataResult.metadata,\n checked: true,\n },\n }));\n }\n }\n });\n }\n }\n }\n\n call();\n }, [JSON.stringify(sortedPoolKeys), withoutVerify]);\n\n // Interval update pool's metadata\n useEffect(() => {\n let timer: number | null = null;\n\n async function call() {\n if (pools) {\n Object.values(pools).forEach(async (poolResult) => {\n if (poolResult) {\n const { id, key, metadata, checked } = poolResult;\n\n if (!metadata || !pools[key]) return;\n\n getSwapPoolMetadata(id).then((result) => {\n if (result) {\n if (result.liquidity !== metadata.liquidity || result.sqrtPriceX96 !== metadata.sqrtPriceX96) {\n setPools((prevState) => ({\n ...prevState,\n [key]: {\n key,\n id,\n metadata: result,\n checked,\n },\n }));\n }\n }\n });\n }\n });\n }\n }\n\n timer = setInterval(() => call(), POOL_METADATA_UPDATE_INTERVAL);\n\n return () => {\n if (timer) {\n clearInterval(timer);\n timer = null;\n }\n };\n }, [JSON.stringify(pools)]);\n\n return useMemo(() => {\n return sortedPoolKeys.map((poolKey, index) => {\n const [token0, token1, fee] = poolKey;\n\n if (isNullArgs(token0) || isNullArgs(token1) || isNullArgs(fee)) return [PoolState.INVALID, null];\n\n if (loading) return [PoolState.LOADING, null];\n\n const key = transformedKeyToKey({ token0: token0.address, token1: token1.address, fee });\n\n const result: TypePoolsState | null | undefined = pools[key];\n\n if (!result) return [PoolState.NOT_EXISTS, null];\n\n const { metadata, id, checked } = result;\n\n if (\n isNullArgs(metadata) ||\n isNullArgs(metadata.token0) ||\n isNullArgs(metadata.token1) ||\n isNullArgs(metadata.fee) ||\n isNullArgs(id)\n )\n return [PoolState.NOT_EXISTS, null];\n\n try {\n const { fee, sqrtPriceX96, liquidity, tick } = metadata;\n\n const [token0, token1] = poolKeys[index];\n\n if (isNullArgs(token0) || isNullArgs(token1)) return [PoolState.NOT_EXISTS, null];\n\n // Renew token standard from the pool metadata\n const __token0 = new Token({\n address: token0.address,\n decimals: token0.decimals,\n symbol: token0.symbol,\n name: token0.name,\n standard: token0.address === metadata.token0.address ? metadata.token0.standard : metadata.token1.standard,\n logo: token0.logo,\n transFee: token0.transFee,\n });\n\n const __token1 = new Token({\n address: token1.address,\n decimals: token1.decimals,\n symbol: token1.symbol,\n name: token1.name,\n standard: token1.address === metadata.token1.address ? metadata.token1.standard : metadata.token0.standard,\n logo: token1.logo,\n transFee: token1.transFee,\n });\n\n return [\n checked ? PoolState.EXISTS : PoolState.NOT_CHECK,\n new Pool(\n id,\n __token0,\n __token1,\n Number(fee),\n numberToString(sqrtPriceX96),\n numberToString(liquidity),\n Number(tick),\n ),\n ];\n } catch (error) {\n console.error(\"Error when constructing the pool\", error);\n return [PoolState.NOT_EXISTS, null];\n }\n });\n }, [JSON.stringify(pools), loading, , JSON.stringify(sortedPoolKeys)]);\n}\n\nexport function usePool(\n currencyA: Token | Null,\n currencyB: Token | Null,\n feeAmount: FeeAmount | undefined,\n withoutVerify = false,\n) {\n const poolKeys: [Token | Null, Token | Null, FeeAmount | undefined][] = useMemo(\n () => [[currencyA, currencyB, feeAmount]],\n [currencyA, currencyB, feeAmount],\n );\n\n return usePools(poolKeys, withoutVerify)[0];\n}\n\nexport function useTokenSwapPools(tokens: string[] | undefined) {\n const { result: allPools } = useSwapPools();\n\n return useMemo(() => {\n if (!tokens || !allPools) return undefined;\n\n return tokens.map((token) => {\n return allPools.filter((pool) => {\n return pool.token1.address === token || pool.token0.address === token;\n });\n });\n }, [allPools, tokens]);\n}\n\nexport function useTokenHasPairWithBaseToken(token: string | undefined) {\n const tokenPools = useTokenSwapPools(token ? [token] : undefined);\n\n return useMemo(() => {\n if (!tokenPools || !tokenPools[0] || !token) return undefined;\n\n return !!tokenPools[0].find((pool) => pool.token0.address === ICP.address || pool.token1.address === ICP.address);\n }, [tokenPools]);\n}\n\nexport function useTokensHasPairWithBaseToken(tokens: string[] | undefined) {\n const tokenPools = useTokenSwapPools(tokens);\n\n return useMemo(() => {\n if (!tokenPools || !tokenPools[0] || !tokens) return undefined;\n\n if (network === NETWORK.LOCAL) return true;\n\n if (tokens.find((token) => token === ICP.address)) return true;\n\n return tokens.reduce((prev, curr, index) => {\n const hasPairWithBaseToken = !!tokenPools[index].find(\n (pool) => pool.token0.address === ICP.address || pool.token1.address === ICP.address,\n );\n\n return prev || hasPairWithBaseToken;\n }, false);\n }, [tokenPools]);\n}\n\nexport function usePoolByPoolId(canisterId: string | Null): [PoolState, Pool | null] {\n const [pool, setPool] = useState(undefined);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n const call = async () => {\n if (canisterId) {\n setLoading(true);\n const poolInfo = await getSwapPoolMetadata(canisterId);\n setPool(poolInfo);\n setLoading(false);\n }\n };\n\n call();\n }, [canisterId]);\n\n const [, token0] = useToken(pool?.token0.address);\n const [, token1] = useToken(pool?.token1.address);\n\n return useMemo(() => {\n if (loading) return [PoolState.LOADING, null];\n if (!pool || !pool?.token0 || !pool?.token1 || !pool?.fee || !token0 || !token1 || !canisterId)\n return [PoolState.NOT_EXISTS, null];\n\n const { fee, sqrtPriceX96, liquidity, tick } = pool;\n\n try {\n return [\n PoolState.EXISTS,\n new Pool(\n canisterId,\n token0.wrapped,\n token1.wrapped,\n Number(fee),\n numberToString(sqrtPriceX96),\n numberToString(liquidity),\n Number(tick),\n ),\n ];\n } catch (error) {\n console.error(\"Error when constructing the pool\", error);\n return [PoolState.NOT_EXISTS, null];\n }\n }, [pool, loading, token0, token1, canisterId]);\n}\n\nexport function usePoolsByIds(canisterIds: string[] | undefined): {\n Pools: [PoolState, Pool | null][];\n tokens: { [key: string]: Token };\n} {\n const [pools, setPools] = useState<(PoolMetadata | undefined)[] | undefined>(undefined);\n const [loading, setLoading] = useState(true);\n\n const [tokens, setTokens] = useState<{ [key: string]: Token }>({} as { [key: string]: Token });\n\n useEffect(() => {\n async function call() {\n if (canisterIds) {\n setLoading(true);\n\n const pools = await Promise.all(\n canisterIds.map(async (canisterId) => {\n return await getSwapPoolMetadata(canisterId);\n }),\n );\n\n setPools(pools);\n setLoading(false);\n }\n }\n\n call();\n }, [canisterIds]);\n\n const tokenIds = useMemo(() => {\n if (pools) {\n const ids = pools.reduce((prev, curr) => {\n return prev.concat(curr ? [curr.token0.address, curr.token1.address] : []);\n }, [] as string[]);\n\n return [...new Set(ids)];\n }\n\n return undefined;\n }, [pools]);\n\n useEffect(() => {\n async function call() {\n if (tokenIds) {\n const tokenInfos = await Promise.all(tokenIds.map(async (id) => await getTokenInfo(id)));\n const tokens = getTokensFromInfos(tokenInfos.filter((info) => !!info) as TokenInfo[]);\n\n const _tokens: { [key: string]: Token } = {};\n\n tokens?.forEach((token) => {\n if (token) {\n _tokens[token.address] = token;\n }\n });\n\n setTokens(_tokens);\n }\n }\n\n call();\n }, [tokenIds]);\n\n return useMemo(() => {\n if (loading) return { Pools: [] as [PoolState, null][], tokens: {} };\n\n if (!pools || Object.keys(tokens).length === 0) return { Pools: [] as [PoolState, null][], tokens: {} };\n\n const Pools: [PoolState, null | Pool][] = [];\n\n pools.forEach((pool, index) => {\n if (!pool || !canisterIds) return [PoolState.NOT_EXISTS, null];\n\n const { fee, sqrtPriceX96, liquidity, tick } = pool;\n\n const token0 = tokens[pool.token0.address];\n const token1 = tokens[pool.token1.address];\n\n try {\n Pools.push([\n PoolState.EXISTS,\n new Pool(\n canisterIds[index],\n token0.wrapped,\n token1.wrapped,\n Number(fee),\n numberToString(sqrtPriceX96),\n numberToString(liquidity),\n Number(tick),\n ),\n ]);\n } catch (error) {\n console.error(\"Error when constructing the pool\", error);\n\n Pools.push([PoolState.NOT_EXISTS, null]);\n }\n });\n\n return { Pools, tokens };\n }, [pools, loading, tokens, canisterIds]);\n}\n\nexport { PoolState } from \"types/swap\";\n","import { useMemo } from \"react\";\nimport { Position, Pool } from \"@icpswap/swap-sdk\";\nimport { usePoolByPoolId, PoolState } from \"hooks/swap/usePools\";\nimport { nonNullArgs } from \"@icpswap/utils\";\n\nexport interface UsePositionProps {\n poolId: string | undefined;\n tickLower: bigint | undefined;\n tickUpper: bigint | undefined;\n liquidity: bigint | undefined;\n}\n\nexport function usePosition(userPosition: UsePositionProps | undefined) {\n const [poolState, pool] = usePoolByPoolId(userPosition?.poolId);\n\n let position: Position | undefined;\n\n if (\n pool &&\n userPosition &&\n userPosition.tickLower !== undefined &&\n userPosition.tickUpper !== undefined &&\n userPosition.liquidity !== undefined\n ) {\n position = new Position({\n pool,\n liquidity: userPosition.liquidity.toString(),\n tickLower: Number(userPosition.tickLower),\n tickUpper: Number(userPosition.tickUpper),\n });\n }\n\n return {\n loading: poolState === PoolState.LOADING,\n checking: poolState === PoolState.NOT_CHECK,\n position,\n pool: pool ?? undefined,\n };\n}\n\nexport interface usePositionWithPoolProps {\n pool: Pool | null | undefined;\n liquidity: bigint | number | string | undefined;\n tickLower: bigint | number | string | undefined;\n tickUpper: bigint | number | string | undefined;\n}\n\nexport function usePositionWithPool({ tickLower, tickUpper, liquidity, pool }: usePositionWithPoolProps) {\n let position: Position | undefined;\n\n if (pool && nonNullArgs(liquidity) && nonNullArgs(tickLower) && nonNullArgs(tickUpper)) {\n position = new Position({\n pool,\n liquidity: liquidity.toString(),\n tickLower: Number(tickLower),\n tickUpper: Number(tickUpper),\n });\n }\n\n return useMemo(() => position, [position]);\n}\n","import { useMemo } from \"react\";\nimport { usePositionFee } from \"@icpswap/hooks\";\n\nexport function usePositionFees(\n canisterId: string | undefined,\n positionId: bigint | string | undefined | number,\n refresh?: number | boolean,\n) {\n const { result } = usePositionFee(canisterId, positionId ? BigInt(positionId) : undefined, refresh);\n\n return useMemo(() => {\n return {\n amount0: result?.tokensOwed0,\n amount1: result?.tokensOwed1,\n };\n }, [result]);\n}\n","import { useCallback } from \"react\";\nimport { useCloseAllSteps } from \"store/steps/hooks\";\nimport { useHistory } from \"react-router-dom\";\n\nexport function useReclaimCallback() {\n const history = useHistory();\n const closeAllSteps = useCloseAllSteps();\n\n return useCallback(() => {\n history.push(\"/swap/withdraw\");\n closeAllSteps();\n }, [history, closeAllSteps]);\n}\n","import invariant from \"tiny-invariant\";\n\n// given an array of items sorted by `comparator`, insert an item into its sort index and constrain the size to\n// `maxSize` by removing the last item\nexport function sortedInsert(items: T[], add: T, maxSize: number, comparator: (a: T, b: T) => number): T | null {\n invariant(maxSize > 0, \"MAX_SIZE_ZERO\");\n // this is an invariant because the interface cannot return multiple removed items if items.length exceeds maxSize\n invariant(items.length <= maxSize, \"ITEMS_SIZE\");\n\n // short circuit first item add\n if (items.length === 0) {\n items.push(add);\n return null;\n } else {\n const isFull = items.length === maxSize;\n // short circuit if full and the additional item does not come before the last item\n if (isFull && comparator(items[items.length - 1], add) <= 0) {\n return add;\n }\n\n let lo = 0,\n hi = items.length;\n\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (comparator(items[mid], add) <= 0) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n items.splice(lo, 0, add);\n return isFull ? items.pop()! : null;\n }\n}\n","import invariant from \"tiny-invariant\";\nimport { Token, Price } from \"../core\";\nimport { Pool } from \"./pool\";\n\n/**\n * Represents a list of pools through which a swap can occur\n * @template TInput The input token\n * @template TOutput The output token\n */\nexport class Route {\n public readonly pools: Pool[];\n\n public readonly tokenPath: Token[];\n\n public readonly input: TInput;\n\n public readonly output: TOutput;\n\n private _midPrice: Price | null = null;\n\n /**\n * Creates an instance of route.\n * @param pools An array of `Pool` objects, ordered by the route the swap will take\n * @param input The input token\n * @param output The output token\n */\n public constructor(pools: Pool[], input: TInput, output: TOutput) {\n invariant(pools.length > 0, \"POOLS\");\n\n const wrappedInput = input.wrapped;\n invariant(pools[0].involvesToken(wrappedInput), \"INPUT\");\n\n invariant(pools[pools.length - 1].involvesToken(output.wrapped), \"OUTPUT\");\n\n /**\n * Normalizes token0-token1 order and selects the next token/fee step to add to the path\n * */\n const tokenPath: Token[] = [wrappedInput];\n for (const [i, pool] of pools.entries()) {\n const currentInputToken = tokenPath[i];\n invariant(currentInputToken.equals(pool.token0) || currentInputToken.equals(pool.token1), \"PATH\");\n const nextToken = currentInputToken.equals(pool.token0) ? pool.token1 : pool.token0;\n tokenPath.push(nextToken);\n }\n\n this.pools = pools;\n this.tokenPath = tokenPath;\n this.input = input;\n this.output = output ?? (tokenPath[tokenPath.length - 1] as TOutput);\n }\n\n /**\n * Returns the mid price of the route\n */\n public get midPrice(): Price {\n if (this._midPrice !== null) return this._midPrice;\n\n const price = this.pools.slice(1).reduce(\n ({ nextInput, price }, pool) => {\n return nextInput.equals(pool.token0)\n ? {\n nextInput: pool.token1,\n price: price.multiply(pool.token0Price),\n }\n : {\n nextInput: pool.token0,\n price: price.multiply(pool.token1Price),\n };\n },\n this.pools[0].token0.equals(this.input.wrapped)\n ? {\n nextInput: this.pools[0].token1,\n price: this.pools[0].token0Price,\n }\n : {\n nextInput: this.pools[0].token0,\n price: this.pools[0].token1Price,\n },\n ).price;\n\n this._midPrice = new Price(this.input, this.output, price.denominator, price.numerator);\n\n return this._midPrice;\n }\n}\n","import invariant from \"tiny-invariant\";\nimport { Fraction, Percent, Price, sortedInsert, CurrencyAmount, TradeType, Token } from \"../core\";\nimport { ONE, ZERO } from \"../internalConstants\";\nimport { Pool } from \"./pool\";\nimport { Route } from \"./route\";\n\n/**\n * Trades comparator, an extension of the input output comparator that also considers other dimensions of the trade in ranking them\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @template TTradeType The trade type, either exact input or exact output\n * @param a The first trade to compare\n * @param b The second trade to compare\n * @returns A sorted ordering for two neighboring elements in a trade array\n */\nexport function tradeComparator(\n a: Trade,\n b: Trade,\n) {\n // must have same input and output token for comparison\n invariant(a.inputAmount.currency.equals(b.inputAmount.currency), \"INPUT_CURRENCY\");\n invariant(a.outputAmount.currency.equals(b.outputAmount.currency), \"OUTPUT_CURRENCY\");\n if (a.outputAmount.equalTo(b.outputAmount)) {\n if (a.inputAmount.equalTo(b.inputAmount)) {\n // consider the number of hops since each hop costs gas\n const aHops = a.swaps.reduce((total, cur) => total + cur.route.tokenPath.length, 0);\n const bHops = b.swaps.reduce((total, cur) => total + cur.route.tokenPath.length, 0);\n return aHops - bHops;\n }\n // trade A requires less input than trade B, so A should come first\n if (a.inputAmount.lessThan(b.inputAmount)) {\n return -1;\n } \n return 1;\n \n } \n // tradeA has less output than trade B, so should come second\n if (a.outputAmount.lessThan(b.outputAmount)) {\n return 1;\n } \n return -1;\n \n \n}\n\nexport interface BestTradeOptions {\n // how many results to return\n maxNumResults?: number;\n // the maximum number of hops a trade should contain\n maxHops?: number;\n}\n\n/**\n * Represents a trade executed against a set of routes where some percentage of the input is\n * split across each route.\n *\n * Each route has its own set of pools. Pools can not be re-used across routes.\n *\n * Does not account for slippage, i.e., changes in price environment that can occur between\n * the time the trade is submitted and when it is executed.\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @template TTradeType The trade type, either exact input or exact output\n */\nexport class Trade {\n /**\n * @deprecated Deprecated in favor of 'swaps' property. If the trade consists of multiple routes\n * this will return an error.\n *\n * When the trade consists of just a single route, this returns the route of the trade,\n * i.e. which pools the trade goes through.\n */\n public get route(): Route {\n invariant(this.swaps.length === 1, \"MULTIPLE_ROUTES\");\n return this.swaps[0].route;\n }\n\n /**\n * The swaps of the trade, i.e. which routes and how much is swapped in each that\n * make up the trade.\n */\n public readonly swaps: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n }[];\n\n /**\n * The type of the trade, either exact in or exact out.\n */\n public readonly tradeType: TTradeType;\n\n /**\n * The cached result of the input amount computation\n * @private\n */\n private _inputAmount: CurrencyAmount | undefined;\n\n /**\n * The input amount for the trade assuming no slippage.\n */\n public get inputAmount(): CurrencyAmount {\n if (this._inputAmount) {\n return this._inputAmount;\n }\n\n const inputCurrency = this.swaps[0].inputAmount.currency;\n const totalInputFromRoutes = this.swaps\n .map(({ inputAmount }) => inputAmount)\n .reduce((total, cur) => total.add(cur), CurrencyAmount.fromRawAmount(inputCurrency, 0));\n\n this._inputAmount = totalInputFromRoutes;\n return this._inputAmount;\n }\n\n /**\n * The cached result of the output amount computation\n * @private\n */\n private _outputAmount: CurrencyAmount | undefined;\n\n /**\n * The output amount for the trade assuming no slippage.\n */\n public get outputAmount(): CurrencyAmount {\n if (this._outputAmount) {\n return this._outputAmount;\n }\n\n const outputCurrency = this.swaps[0].outputAmount.currency;\n const totalOutputFromRoutes = this.swaps\n .map(({ outputAmount }) => outputAmount)\n .reduce((total, cur) => total.add(cur), CurrencyAmount.fromRawAmount(outputCurrency, 0));\n\n this._outputAmount = totalOutputFromRoutes;\n return this._outputAmount;\n }\n\n /**\n * The cached result of the computed execution price\n * @private\n */\n private _executionPrice: Price | undefined;\n\n /**\n * The price expressed in terms of output amount/input amount.\n */\n public get executionPrice(): Price {\n if (this._executionPrice) return this._executionPrice;\n\n this._executionPrice = new Price(\n this.inputAmount.currency,\n this.outputAmount.currency,\n this.inputAmount.quotient,\n this.outputAmount.quotient,\n );\n\n return new Price(\n this.inputAmount.currency,\n this.outputAmount.currency,\n this.inputAmount.quotient,\n this.outputAmount.quotient,\n );\n }\n\n /**\n * The cached result of the price impact computation\n * @private\n */\n private _priceImpact: Percent | undefined;\n\n /**\n * Returns the percent difference between the route's mid price and the price impact\n */\n public get priceImpact(): Percent {\n if (this._priceImpact) {\n return this._priceImpact;\n }\n\n let spotOutputAmount = CurrencyAmount.fromRawAmount(this.outputAmount.currency, 0);\n for (const { route, inputAmount } of this.swaps) {\n const midPrice = route.midPrice;\n spotOutputAmount = spotOutputAmount.add(midPrice.quote(inputAmount));\n }\n\n const priceImpact = spotOutputAmount.subtract(this.outputAmount).divide(spotOutputAmount);\n this._priceImpact = new Percent(priceImpact.numerator, priceImpact.denominator);\n\n return this._priceImpact;\n }\n\n /**\n * Constructs an exact in trade with the given amount in and route\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @param route The route of the exact in trade\n * @param amountIn The amount being passed in\n * @returns The exact in trade\n */\n public static async exactIn(\n route: Route,\n amountIn: CurrencyAmount,\n ): Promise> {\n return Trade.fromRoute(route, amountIn, TradeType.EXACT_INPUT);\n }\n\n /**\n * Constructs an exact out trade with the given amount out and route\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @param route The route of the exact out trade\n * @param amountOut The amount returned by the trade\n * @returns The exact out trade\n */\n public static async exactOut(\n route: Route,\n amountOut: CurrencyAmount,\n ): Promise> {\n return Trade.fromRoute(route, amountOut, TradeType.EXACT_OUTPUT);\n }\n\n /**\n * Constructs a trade by simulating swaps through the given route\n * @template TInput The input token, either Ether or an ERC-20.\n * @template TOutput The output token, either Ether or an ERC-20.\n * @template TTradeType The type of the trade, either exact in or exact out.\n * @param route route to swap through\n * @param amount the amount specified, either input or output, depending on tradeType\n * @param tradeType whether the trade is an exact input or exact output swap\n * @returns The route\n */\n public static async fromRoute(\n route: Route,\n amount: TTradeType extends TradeType.EXACT_INPUT ? CurrencyAmount : CurrencyAmount,\n tradeType: TTradeType,\n ): Promise> {\n const amounts: CurrencyAmount[] = new Array(route.tokenPath.length);\n let inputAmount: CurrencyAmount;\n let outputAmount: CurrencyAmount;\n if (tradeType === TradeType.EXACT_INPUT) {\n invariant(amount.currency.equals(route.input), \"INPUT\");\n amounts[0] = amount.wrapped;\n for (let i = 0; i < route.tokenPath.length - 1; i++) {\n const pool = route.pools[i];\n const [outputAmount] = await pool.getOutputAmount(amounts[i]);\n amounts[i + 1] = outputAmount;\n }\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amount.numerator, amount.denominator);\n outputAmount = CurrencyAmount.fromFractionalAmount(\n route.output,\n amounts[amounts.length - 1].numerator,\n amounts[amounts.length - 1].denominator,\n );\n } else {\n invariant(amount.currency.equals(route.output), \"OUTPUT\");\n amounts[amounts.length - 1] = amount.wrapped;\n for (let i = route.tokenPath.length - 1; i > 0; i--) {\n const pool = route.pools[i - 1];\n const [inputAmount] = await pool.getInputAmount(amounts[i]);\n amounts[i - 1] = inputAmount;\n }\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amounts[0].numerator, amounts[0].denominator);\n outputAmount = CurrencyAmount.fromFractionalAmount(route.output, amount.numerator, amount.denominator);\n }\n\n return new Trade({\n routes: [{ inputAmount, outputAmount, route }],\n tradeType,\n });\n }\n\n /**\n * Constructs a trade from routes by simulating swaps\n *\n * @template TInput The input token, either Ether or an ERC-20.\n * @template TOutput The output token, either Ether or an ERC-20.\n * @template TTradeType The type of the trade, either exact in or exact out.\n * @param routes the routes to swap through and how much of the amount should be routed through each\n * @param tradeType whether the trade is an exact input or exact output swap\n * @returns The trade\n */\n public static async fromRoutes(\n routes: {\n amount: TTradeType extends TradeType.EXACT_INPUT ? CurrencyAmount : CurrencyAmount;\n route: Route;\n }[],\n tradeType: TTradeType,\n ): Promise> {\n const populatedRoutes: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n }[] = [];\n\n for (const { route, amount } of routes) {\n const amounts: CurrencyAmount[] = new Array(route.tokenPath.length);\n let inputAmount: CurrencyAmount;\n let outputAmount: CurrencyAmount;\n\n if (tradeType === TradeType.EXACT_INPUT) {\n invariant(amount.currency.equals(route.input), \"INPUT\");\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amount.numerator, amount.denominator);\n amounts[0] = CurrencyAmount.fromFractionalAmount(route.input.wrapped, amount.numerator, amount.denominator);\n\n for (let i = 0; i < route.tokenPath.length - 1; i++) {\n const pool = route.pools[i];\n const [outputAmount] = await pool.getOutputAmount(amounts[i]);\n amounts[i + 1] = outputAmount;\n }\n\n outputAmount = CurrencyAmount.fromFractionalAmount(\n route.output,\n amounts[amounts.length - 1].numerator,\n amounts[amounts.length - 1].denominator,\n );\n } else {\n invariant(amount.currency.equals(route.output), \"OUTPUT\");\n outputAmount = CurrencyAmount.fromFractionalAmount(route.output, amount.numerator, amount.denominator);\n amounts[amounts.length - 1] = CurrencyAmount.fromFractionalAmount(\n route.output.wrapped,\n amount.numerator,\n amount.denominator,\n );\n\n for (let i = route.tokenPath.length - 1; i > 0; i--) {\n const pool = route.pools[i - 1];\n const [inputAmount] = await pool.getInputAmount(amounts[i]);\n amounts[i - 1] = inputAmount;\n }\n\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amounts[0].numerator, amounts[0].denominator);\n }\n\n populatedRoutes.push({ route, inputAmount, outputAmount });\n }\n\n return new Trade({\n routes: populatedRoutes,\n tradeType,\n });\n }\n\n /**\n * Creates a trade without computing the result of swapping through the route. Useful when you have simulated the trade\n * elsewhere and do not have any tick data\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @template TTradeType The type of the trade, either exact in or exact out\n * @param constructorArguments The arguments passed to the trade constructor\n * @returns The unchecked trade\n */\n public static createUncheckedTrade<\n TInput extends Token,\n TOutput extends Token,\n TTradeType extends TradeType,\n >(constructorArguments: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n tradeType: TTradeType;\n }): Trade {\n return new Trade({\n ...constructorArguments,\n routes: [\n {\n inputAmount: constructorArguments.inputAmount,\n outputAmount: constructorArguments.outputAmount,\n route: constructorArguments.route,\n },\n ],\n });\n }\n\n /**\n * Creates a trade without computing the result of swapping through the routes. Useful when you have simulated the trade\n * elsewhere and do not have any tick data\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @template TTradeType The type of the trade, either exact in or exact out\n * @param constructorArguments The arguments passed to the trade constructor\n * @returns The unchecked trade\n */\n public static createUncheckedTradeWithMultipleRoutes<\n TInput extends Token,\n TOutput extends Token,\n TTradeType extends TradeType,\n >(constructorArguments: {\n routes: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n }[];\n tradeType: TTradeType;\n }): Trade {\n return new Trade(constructorArguments);\n }\n\n /**\n * Construct a trade by passing in the pre-computed property values\n * @param routes The routes through which the trade occurs\n * @param tradeType The type of trade, exact input or exact output\n */\n private constructor({\n routes,\n tradeType,\n }: {\n routes: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n }[];\n tradeType: TTradeType;\n }) {\n const inputCurrency = routes[0].inputAmount.currency;\n const outputCurrency = routes[0].outputAmount.currency;\n invariant(\n routes.every(({ route }) => inputCurrency.wrapped.equals(route.input.wrapped)),\n \"INPUT_CURRENCY_MATCH\",\n );\n invariant(\n routes.every(({ route }) => outputCurrency.wrapped.equals(route.output.wrapped)),\n \"OUTPUT_CURRENCY_MATCH\",\n );\n\n const numPools = routes.map(({ route }) => route.pools.length).reduce((total, cur) => total + cur, 0);\n const poolAddressSet = new Set();\n for (const { route } of routes) {\n for (const pool of route.pools) {\n poolAddressSet.add(Pool.getAddress(pool.token0, pool.token1, pool.fee));\n }\n }\n\n invariant(numPools === poolAddressSet.size, \"POOLS_DUPLICATED\");\n\n this.swaps = routes;\n this.tradeType = tradeType;\n }\n\n /**\n * Get the minimum amount that must be received from this trade for the given slippage tolerance\n * @param slippageTolerance The tolerance of unfavorable slippage from the execution price of this trade\n * @returns The amount out\n */\n public minimumAmountOut(slippageTolerance: Percent, amountOut = this.outputAmount): CurrencyAmount {\n invariant(!slippageTolerance.lessThan(ZERO), \"SLIPPAGE_TOLERANCE\");\n if (this.tradeType === TradeType.EXACT_OUTPUT) {\n return amountOut;\n } \n const slippageAdjustedAmountOut = new Fraction(ONE)\n .add(slippageTolerance)\n .invert()\n .multiply(amountOut.quotient).quotient;\n return CurrencyAmount.fromRawAmount(amountOut.currency, slippageAdjustedAmountOut);\n \n }\n\n /**\n * Get the maximum amount in that can be spent via this trade for the given slippage tolerance\n * @param slippageTolerance The tolerance of unfavorable slippage from the execution price of this trade\n * @returns The amount in\n */\n public maximumAmountIn(slippageTolerance: Percent, amountIn = this.inputAmount): CurrencyAmount {\n invariant(!slippageTolerance.lessThan(ZERO), \"SLIPPAGE_TOLERANCE\");\n if (this.tradeType === TradeType.EXACT_INPUT) {\n return amountIn;\n } \n const slippageAdjustedAmountIn = new Fraction(ONE).add(slippageTolerance).multiply(amountIn.quotient).quotient;\n return CurrencyAmount.fromRawAmount(amountIn.currency, slippageAdjustedAmountIn);\n \n }\n\n /**\n * Return the execution price after accounting for slippage tolerance\n * @param slippageTolerance the allowed tolerated slippage\n * @returns The execution price\n */\n public worstExecutionPrice(slippageTolerance: Percent): Price {\n return new Price(\n this.inputAmount.currency,\n this.outputAmount.currency,\n this.maximumAmountIn(slippageTolerance).quotient,\n this.minimumAmountOut(slippageTolerance).quotient,\n );\n }\n\n /**\n * Given a list of pools, and a fixed amount in, returns the top `maxNumResults` trades that go from an input token\n * amount to an output token, making at most `maxHops` hops.\n * Note this does not consider aggregation, as routes are linear. It's possible a better route exists by splitting\n * the amount in among multiple routes.\n * @param pools the pools to consider in finding the best trade\n * @param nextAmountIn exact amount of input currency to spend\n * @param currencyOut the desired currency out\n * @param maxNumResults maximum number of results to return\n * @param maxHops maximum number of hops a returned trade can make, e.g. 1 hop goes through a single pool\n * @param currentPools used in recursion; the current list of pools\n * @param currencyAmountIn used in recursion; the original value of the currencyAmountIn parameter\n * @param bestTrades used in recursion; the current list of best trades\n * @returns The exact in trade\n */\n public static async bestTradeExactIn(\n pools: Pool[],\n currencyAmountIn: CurrencyAmount,\n currencyOut: TOutput,\n { maxNumResults = 3, maxHops = 3 }: BestTradeOptions = {},\n // used in recursion.\n currentPools: Pool[] = [],\n nextAmountIn: CurrencyAmount = currencyAmountIn,\n bestTrades: Trade[] = [],\n ): Promise[]> {\n invariant(pools.length > 0, \"POOLS\");\n invariant(maxHops > 0, \"MAX_HOPS\");\n invariant(currencyAmountIn === nextAmountIn || currentPools.length > 0, \"INVALID_RECURSION\");\n\n const amountIn = nextAmountIn.wrapped;\n const tokenOut = currencyOut.wrapped;\n for (let i = 0; i < pools.length; i++) {\n const pool = pools[i];\n // pool irrelevant\n if (!pool.token0.equals(amountIn.currency) && !pool.token1.equals(amountIn.currency)) continue;\n\n let amountOut: CurrencyAmount;\n try {\n [amountOut] = await pool.getOutputAmount(amountIn);\n } catch (error) {\n // input too low\n if (error.isInsufficientInputAmountError) {\n continue;\n }\n throw error;\n }\n // we have arrived at the output token, so this is the final trade of one of the paths\n if (amountOut.currency.isToken && amountOut.currency.equals(tokenOut)) {\n sortedInsert(\n bestTrades,\n await Trade.fromRoute(\n new Route([...currentPools, pool], currencyAmountIn.currency, currencyOut),\n currencyAmountIn,\n TradeType.EXACT_INPUT,\n ),\n maxNumResults,\n tradeComparator,\n );\n } else if (maxHops > 1 && pools.length > 1) {\n const poolsExcludingThisPool = pools.slice(0, i).concat(pools.slice(i + 1, pools.length));\n\n // otherwise, consider all the other paths that lead from this token as long as we have not exceeded maxHops\n await Trade.bestTradeExactIn(\n poolsExcludingThisPool,\n currencyAmountIn,\n currencyOut,\n {\n maxNumResults,\n maxHops: maxHops - 1,\n },\n [...currentPools, pool],\n amountOut,\n bestTrades,\n );\n }\n }\n\n return bestTrades;\n }\n\n /**\n * similar to the above method but instead targets a fixed output amount\n * given a list of pools, and a fixed amount out, returns the top `maxNumResults` trades that go from an input token\n * to an output token amount, making at most `maxHops` hops\n * note this does not consider aggregation, as routes are linear. it's possible a better route exists by splitting\n * the amount in among multiple routes.\n * @param pools the pools to consider in finding the best trade\n * @param currencyIn the currency to spend\n * @param currencyAmountOut the desired currency amount out\n * @param nextAmountOut the exact amount of currency out\n * @param maxNumResults maximum number of results to return\n * @param maxHops maximum number of hops a returned trade can make, e.g. 1 hop goes through a single pool\n * @param currentPools used in recursion; the current list of pools\n * @param bestTrades used in recursion; the current list of best trades\n * @returns The exact out trade\n */\n public static async bestTradeExactOut(\n pools: Pool[],\n currencyIn: TInput,\n currencyAmountOut: CurrencyAmount,\n { maxNumResults = 3, maxHops = 3 }: BestTradeOptions = {},\n // used in recursion.\n currentPools: Pool[] = [],\n nextAmountOut: CurrencyAmount = currencyAmountOut,\n bestTrades: Trade[] = [],\n ): Promise[]> {\n invariant(pools.length > 0, \"POOLS\");\n invariant(maxHops > 0, \"MAX_HOPS\");\n invariant(currencyAmountOut === nextAmountOut || currentPools.length > 0, \"INVALID_RECURSION\");\n\n const amountOut = nextAmountOut.wrapped;\n const tokenIn = currencyIn.wrapped;\n for (let i = 0; i < pools.length; i++) {\n const pool = pools[i];\n // pool irrelevant\n if (!pool.token0.equals(amountOut.currency) && !pool.token1.equals(amountOut.currency)) continue;\n\n let amountIn: CurrencyAmount;\n try {\n [amountIn] = await pool.getInputAmount(amountOut);\n } catch (error) {\n // not enough liquidity in this pool\n if (error.isInsufficientReservesError) {\n continue;\n }\n throw error;\n }\n // we have arrived at the input token, so this is the first trade of one of the paths\n if (amountIn.currency.equals(tokenIn)) {\n sortedInsert(\n bestTrades,\n await Trade.fromRoute(\n new Route([pool, ...currentPools], currencyIn, currencyAmountOut.currency),\n currencyAmountOut,\n TradeType.EXACT_OUTPUT,\n ),\n maxNumResults,\n tradeComparator,\n );\n } else if (maxHops > 1 && pools.length > 1) {\n const poolsExcludingThisPool = pools.slice(0, i).concat(pools.slice(i + 1, pools.length));\n\n // otherwise, consider all the other paths that arrive at this token as long as we have not exceeded maxHops\n await Trade.bestTradeExactOut(\n poolsExcludingThisPool,\n currencyIn,\n currencyAmountOut,\n {\n maxNumResults,\n maxHops: maxHops - 1,\n },\n [pool, ...currentPools],\n amountIn,\n bestTrades,\n );\n }\n }\n\n return bestTrades;\n }\n}\n","import { FeeAmount, Token } from \"@icpswap/swap-sdk\";\nimport { useMemo } from \"react\";\nimport { useAllCurrencyCombinations } from \"./useAllCurrencyCombinations\";\nimport { PoolState, usePools } from \"./usePools\";\n\nexport function useSwapPools(currencyIn: Token | undefined, currencyOut: Token | undefined) {\n const allCurrencyCombinations = useAllCurrencyCombinations(currencyIn, currencyOut);\n\n const allCurrencyCombinationsWithAllFees: [Token, Token, FeeAmount][] = useMemo(() => {\n return allCurrencyCombinations.reduce(\n (list, [tokenA, tokenB]) => {\n return list.concat([\n // [tokenA, tokenB, FeeAmount.LOW],\n [tokenA, tokenB, FeeAmount.MEDIUM],\n // [tokenA, tokenB, FeeAmount.HIGH],\n ]);\n },\n [] as [Token, Token, FeeAmount][],\n );\n }, [allCurrencyCombinations]);\n\n const pools = usePools(allCurrencyCombinationsWithAllFees);\n\n return useMemo(() => {\n return {\n pools: pools\n .filter((tuple) => {\n return (tuple[0] === PoolState.EXISTS || tuple[0] === PoolState.NOT_CHECK) && tuple[1] !== null;\n })\n .map(([, pool]) => pool),\n loading: pools.some(([state]) => state === PoolState.LOADING),\n checked: !pools.some(([state]) => state === PoolState.NOT_CHECK),\n noLiquidity: !!pools.find((tuple) => tuple[0] === PoolState.NOT_EXISTS),\n };\n }, [pools]);\n}\n","import { useMemo } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\n\nexport function useAllCurrencyCombinations(tokenA: Token | undefined, tokenB: Token | undefined): Token[][] {\n return useMemo(() => {\n return tokenA && tokenB\n ? [[tokenA, tokenB]]\n .filter((tokens) => Boolean(tokens[0] && tokens[1]))\n .filter(([t0, t1]) => t0.address !== t1.address)\n : [];\n }, [tokenA, tokenB]);\n}\n","import { Route, Pool, Token } from \"@icpswap/swap-sdk\";\nimport { useMemo } from \"react\";\nimport { useIsSingleHop } from \"store/swap/cache/hooks\";\n\nimport { useSwapPools } from \"./useSwapPools\";\n\nfunction poolEquals(poolA: Pool, poolB: Pool) {\n return (\n poolA === poolB ||\n (poolA.token0.equals(poolB.token0) && poolA.token1.equals(poolB.token1) && poolA.fee === poolB.fee)\n );\n}\n\nexport function computeAllRoutes(\n currencyIn: Token,\n currencyOut: Token,\n pools: (Pool | null)[],\n currentPath: Pool[],\n allPaths: Route[],\n startCurrencyIn: Token = currencyIn,\n maxHops = 2,\n) {\n const tokenIn = currencyIn?.wrapped;\n const tokenOut = currencyOut?.wrapped;\n\n if (!tokenIn || !tokenOut) throw new Error(\"Missing tokenIn/tokenOut\");\n\n for (const pool of pools) {\n if (!pool || !pool.involvesToken(tokenIn) || currentPath.find((pathPool) => poolEquals(pool, pathPool))) continue;\n\n const outputToken = pool.token0.equals(tokenIn) ? pool.token1 : pool.token0;\n if (outputToken.equals(tokenOut)) {\n allPaths.push(new Route([...currentPath, pool], startCurrencyIn, currencyOut));\n } else if (maxHops > 1) {\n computeAllRoutes(outputToken, currencyOut, pools, [...currentPath, pool], allPaths, startCurrencyIn, maxHops - 1);\n }\n }\n\n return allPaths;\n}\n\nexport function useAllRoutes(currencyIn: Token | undefined, currencyOut: Token | undefined) {\n const { pools, loading: poolsLoading, checked, noLiquidity } = useSwapPools(currencyIn, currencyOut);\n\n const singleHopOnly = useIsSingleHop();\n\n return useMemo(() => {\n if (poolsLoading || !pools || !currencyIn || !currencyOut) return { loading: true, routes: [], checked: false };\n const routes = computeAllRoutes(currencyIn, currencyOut, pools, [], [], currencyIn, singleHopOnly ? 1 : 2);\n return { loading: false, routes, checked, noLiquidity };\n }, [currencyIn, currencyOut, pools, poolsLoading, singleHopOnly, checked, noLiquidity]);\n}\n","import { useMemo } from \"react\";\nimport { TradeType } from \"@icpswap/constants\";\nimport { CurrencyAmount, Trade, Token, Route } from \"@icpswap/swap-sdk\";\nimport { tryParseAmount } from \"utils/swap\";\nimport { BigNumber } from \"bignumber.js\";\nimport { formatTokenAmount, numberToString } from \"@icpswap/utils\";\nimport { useQuoteExactInput, useSwapPoolAvailable } from \"hooks/swap/v3Calls\";\n\nimport { useAllRoutes } from \"./useAllRoutes\";\n\nexport enum TradeState {\n LOADING = \"LOADING\",\n INVALID = \"INVALID\",\n NO_ROUTE_FOUND = \"NO_ROUTE_FOUND\",\n VALID = \"VALID\",\n SYNCING = \"SYNCING\",\n NOT_CHECK = \"NOT_CHECK\",\n}\n\nexport function useBestTrade(\n inputToken: Token | undefined,\n outputToken: Token | undefined,\n typedValue: string | undefined,\n) {\n const actualSwapValue = typedValue;\n\n // reload when typeValue is changed\n const { routes, loading: routesLoading, checked, noLiquidity } = useAllRoutes(inputToken, outputToken);\n\n const zeroForOne = inputToken && outputToken ? inputToken.sortsBefore(outputToken) : undefined;\n\n const pool = useMemo(() => {\n if (!routes) return undefined;\n return routes[0]?.pools[0];\n }, [routes]);\n\n const params = useMemo(() => {\n if (!actualSwapValue || zeroForOne === undefined) return undefined;\n\n const route = routes\n .sort((a, b) => {\n if (a.midPrice.greaterThan(b.midPrice)) return -1;\n if (a.midPrice.lessThan(b.midPrice)) return 1;\n return 0;\n })\n .map((route) => {\n return {\n pool: route.pools[0]?.id,\n tokenIn: route.input?.wrapped?.address,\n tokenOut: route.output?.wrapped?.address,\n amountIn: actualSwapValue ? numberToString(formatTokenAmount(actualSwapValue, route.input?.decimals)) : \"0\",\n feeAmount: route.pools[0]?.fee,\n };\n });\n\n if (!route[0]) return undefined;\n\n return JSON.stringify({\n poolId: route[0].pool,\n amountIn: route[0].amountIn,\n zeroForOne,\n });\n }, [routes, actualSwapValue]);\n\n const available = useSwapPoolAvailable(pool?.id);\n\n const { loading: exactInputLoading, result: _quotesResults } = useQuoteExactInput(params);\n\n const quotesResults = useMemo(() => {\n if (_quotesResults) {\n return [{ amountOut: `0x${new BigNumber(String(_quotesResults)).toString(16)}` }];\n }\n return [];\n }, [_quotesResults, exactInputLoading]);\n\n return useMemo(() => {\n if (\n !inputToken ||\n !outputToken ||\n inputToken.equals(outputToken) ||\n !actualSwapValue ||\n new BigNumber(actualSwapValue).isEqualTo(0)\n ) {\n return {\n state: TradeState.INVALID,\n trade: null,\n pool,\n routes,\n noLiquidity,\n };\n }\n\n if (routesLoading || exactInputLoading) {\n return {\n state: TradeState.LOADING,\n trade: null,\n pool,\n routes,\n noLiquidity,\n };\n }\n\n const { bestRoute, amountOut } = quotesResults.reduce(\n (currentBest: { bestRoute: Route | null; amountOut: string | null }, { amountOut }, i) => {\n if (!amountOut) return currentBest;\n\n if (currentBest.amountOut === null) {\n return {\n bestRoute: routes[i],\n amountOut,\n };\n }\n if (new BigNumber(currentBest.amountOut).isLessThan(amountOut)) {\n return {\n bestRoute: routes[i],\n amountOut,\n };\n }\n\n return currentBest;\n },\n {\n bestRoute: null,\n amountOut: null,\n },\n );\n\n const inputAmount = tryParseAmount(actualSwapValue, inputToken);\n\n if (!bestRoute || !amountOut || !inputAmount) {\n return {\n state: TradeState.NO_ROUTE_FOUND,\n trade: null,\n pool,\n routes,\n noLiquidity,\n };\n }\n\n return {\n state: checked ? TradeState.VALID : TradeState.NOT_CHECK,\n available,\n trade: Trade.createUncheckedTrade({\n route: bestRoute,\n tradeType: TradeType.EXACT_INPUT,\n inputAmount,\n outputAmount: CurrencyAmount.fromRawAmount(outputToken, amountOut.toString()),\n }),\n pool,\n routes,\n noLiquidity,\n };\n }, [\n inputToken,\n outputToken,\n actualSwapValue,\n quotesResults,\n routes,\n routesLoading,\n available,\n checked,\n pool,\n noLiquidity,\n ]);\n}\n","import { Principal } from \"@dfinity/principal\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { swapPool } from \"@icpswap/actor\";\nimport { useCallsData } from \"@icpswap/hooks\";\nimport { useCallback } from \"react\";\n\nexport async function getUserPositionIds(canisterId: string, principal: string) {\n return resultFormat>(\n await (await swapPool(canisterId)).getUserPositionIdsByPrincipal(Principal.fromText(principal)),\n ).data;\n}\n\nexport function useUserPositionIds(canisterId: string | undefined, principal: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !principal) return undefined;\n return await getUserPositionIds(canisterId, principal);\n }, [canisterId, principal]),\n );\n}\n","import { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { useCallback, useMemo } from \"react\";\nimport store from \"store/index\";\nimport { updateCallKeys, updateCallResult } from \"./actions\";\n\nexport function useCallResult(callKey: string) {\n return useAppSelector((state) => state.call.callResults)[callKey];\n}\n\nexport function useUpdateCallResult() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (callKey: string, result: any) => {\n dispatch(updateCallResult({ callKey, result }));\n },\n [dispatch],\n );\n}\n\nexport function useCallAllIndex() {\n return useAppSelector((state) => state.call.callKeys);\n}\n\nexport function getCallIndex(key: string) {\n return store.getState().call.callKeys[key];\n}\n\nexport function useCallKeysIndexManager(callKey: string): [number, ({ callIndex }: { callIndex: number }) => void] {\n const callAllIndex = useCallAllIndex();\n const dispatch = useAppDispatch();\n\n const _updateCallKeyIndex = useCallback(\n ({ callIndex }: { callIndex: number }) => {\n dispatch(updateCallKeys({ callKey, callIndex }));\n },\n [callKey, dispatch],\n );\n\n return useMemo(() => [callAllIndex[callKey], _updateCallKeyIndex], [callKey, _updateCallKeyIndex, callAllIndex]);\n}\n","import { useState, useMemo, useEffect } from \"react\";\nimport type { ApiResult } from \"@icpswap/types\";\nimport { useCallKeysIndexManager, useUpdateCallResult, useCallResult, getCallIndex } from \"store/call/hooks\";\n\nexport type Call = () => Promise>;\n\nlet stateCallIndex = 0;\n\nexport function useStateCallsData(fn: Call, key: string, valid: boolean, reload?: boolean, useOldData?: boolean) {\n const callResults = useCallResult(key) ?? {};\n\n const updateCallResult = useUpdateCallResult();\n\n const [loading, setLoading] = useState(false);\n const [callKeyIndex, updateCallKeyIndex] = useCallKeysIndexManager(key);\n\n useEffect(() => {\n if (fn && valid !== false) {\n setLoading(true);\n\n stateCallIndex++;\n const index = stateCallIndex;\n\n updateCallKeyIndex({ callIndex: index });\n\n fn().then((result) => {\n const stateIndex = getCallIndex(key);\n\n if (stateIndex === index) {\n updateCallResult(key, { ...callResults, [index]: result });\n setLoading(false);\n }\n });\n }\n }, [fn, valid, reload]);\n\n return useMemo(() => {\n const result = (\n callResults[callKeyIndex] ? callResults[callKeyIndex] : useOldData ? callResults[callKeyIndex - 1] : undefined\n ) as T | undefined;\n\n return {\n result,\n loading,\n };\n }, [callResults, loading, callKeyIndex]);\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { getSwapTokenArgs } from \"hooks/token/index\";\nimport { userStorage, swapPool } from \"@icpswap/actor\";\nimport {\n useCallsData,\n useInfoUserStorageIds,\n getInfoUserStorageIds,\n quote,\n getSwapPoolMetadata,\n getSwapPosition,\n getSwapPool,\n createSwapPool,\n _getSwapPoolAllBalance,\n} from \"@icpswap/hooks\";\nimport { resultFormat, isAvailablePageArgs, isNullArgs, availableArgsNull } from \"@icpswap/utils\";\nimport { FeeAmount } from \"@icpswap/swap-sdk\";\nimport type { Null, PaginationResult, SwapPoolData, UserStorageTransaction } from \"@icpswap/types\";\nimport BigNumber from \"bignumber.js\";\nimport { swapFactory_update_call } from \"actor/swap\";\nimport { UserPosition } from \"types/swap\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useStateCallsData } from \"hooks/useCallsData\";\nimport { sortToken } from \"utils/swap\";\n\nexport async function getPool(token0: string, token1: string, fee: FeeAmount = FeeAmount.MEDIUM) {\n const sortedToken = sortToken(token0, token1);\n\n return await getSwapPool({\n fee: BigInt(fee),\n token0: getSwapTokenArgs(sortedToken.token0),\n token1: getSwapTokenArgs(sortedToken.token1),\n });\n}\n\nexport async function getPool_update_call(token0: string, token1: string, fee: FeeAmount = FeeAmount.MEDIUM) {\n const sortedToken = sortToken(token0, token1);\n\n return resultFormat(\n await (\n await swapFactory_update_call()\n ).getPool({\n fee: BigInt(fee),\n token0: getSwapTokenArgs(sortedToken.token0),\n token1: getSwapTokenArgs(sortedToken.token1),\n }),\n ).data;\n}\n\nexport interface CreatePoolArgs {\n token0: string;\n token1: string;\n fee: FeeAmount;\n sqrtPriceX96: string;\n subnet?: string | Null;\n}\n\nexport async function createPool({ token0, token1, fee, sqrtPriceX96, subnet }: CreatePoolArgs) {\n let _token0 = token0;\n let _token1 = token1;\n\n if (_token0 > _token1) {\n _token0 = token1;\n _token1 = token0;\n }\n\n return await createSwapPool({\n fee: BigInt(fee),\n token0: getSwapTokenArgs(_token0),\n token1: getSwapTokenArgs(_token1),\n sqrtPriceX96,\n subnet: availableArgsNull(subnet),\n });\n}\n\nexport { deposit, mint, increaseLiquidity, decreaseLiquidity, quote, swap, collect, withdraw } from \"@icpswap/hooks\";\n\nexport async function getPositionDetailsFromId(poolId: string, positionId: string) {\n const pool = await getSwapPoolMetadata(poolId);\n const position = await getSwapPosition(poolId, BigInt(positionId));\n\n if (pool && position) {\n return {\n tickLower: position.tickLower,\n tickUpper: position.tickUpper,\n liquidity: position.liquidity,\n tokensOwed0: position.tokensOwed0,\n tokensOwed1: position.tokensOwed1,\n feeGrowthInside0LastX128: position.feeGrowthInside0LastX128,\n feeGrowthInside1LastX128: position.feeGrowthInside1LastX128,\n index: Number(positionId),\n id: poolId,\n token0: pool.token0.address,\n token1: pool.token1.address,\n fee: pool.fee.toString(),\n } as UserPosition;\n }\n\n return undefined;\n}\n\nexport function usePositionDetailsFromId(poolId: string | Null, positionId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (isNullArgs(poolId) || isNullArgs(positionId)) return undefined;\n return await getPositionDetailsFromId(poolId, positionId);\n }, [poolId, positionId]),\n );\n}\n\nexport function useQuoteExactInput(args: string | undefined) {\n const call = useCallback(async () => {\n if (!args) return undefined;\n\n const _args = JSON.parse(args) as { amountIn: string; zeroForOne: boolean; poolId: string };\n\n return await quote(_args.poolId, {\n amountIn: _args.amountIn,\n zeroForOne: _args.zeroForOne,\n amountOutMinimum: \"0\",\n });\n }, [args]);\n\n return useStateCallsData(call, \"quoteExactInput\", !!args);\n}\n\nexport function useQuoteUnitPrice(\n poolId: string | undefined,\n amountIn: string | undefined,\n zeroForOne: boolean | undefined,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!amountIn || amountIn === \"0\" || !poolId || zeroForOne === undefined) return undefined;\n return await quote(poolId, {\n amountIn,\n zeroForOne,\n amountOutMinimum: \"0\",\n });\n }, [amountIn, poolId, zeroForOne]),\n );\n}\n\nexport async function getPoolCanisterId(token0Id: string, token1Id: string, fee: FeeAmount) {\n const pool = await getPool(token0Id, token1Id, fee);\n return pool?.canisterId.toString();\n}\n\nexport function usePoolCanisterId(\n token0Id: string | undefined | null,\n token1Id: string | undefined | null,\n fee: FeeAmount | undefined | null,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!token0Id || !token1Id || !fee) return undefined;\n return await getPoolCanisterId(token0Id, token1Id, fee);\n }, [token0Id, token1Id, fee]),\n );\n}\n\nexport type TokenAmounts = [Principal, { balance0: bigint; balance1: bigint }];\n\nexport async function getPoolTokenAmounts(poolId: string) {\n const result = await _getSwapPoolAllBalance(poolId);\n\n if (result) {\n return result.reduce(\n (prev, curr) => {\n return {\n balance0: prev.balance0.plus(curr[1].balance0.toString()),\n balance1: prev.balance1.plus(curr[1].balance1.toString()),\n };\n },\n { balance0: new BigNumber(0), balance1: new BigNumber(1) },\n );\n }\n\n return undefined;\n}\n\nexport function usePoolTokenAmounts(poolId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!poolId) return undefined;\n return await getPoolTokenAmounts(poolId);\n }, [poolId]),\n );\n}\n\nexport type Key = {\n token0: string;\n token1: string;\n fee: FeeAmount;\n};\n\nexport function usePoolIdsFromKey(keys: (Key | undefined)[] | undefined) {\n const [ids, setIds] = useState<(string | undefined)[]>([]);\n\n useEffect(() => {\n const call = async () => {\n const queries = keys?.map(async (key) => {\n if (!key) return undefined;\n return await getPoolCanisterId(key.token0, key.token1, key.fee);\n });\n\n if (queries && !!queries.length) {\n const ids = await Promise.all(queries);\n setIds(ids);\n }\n };\n\n call();\n }, [keys]);\n\n return useMemo(() => ids, [ids]);\n}\n\nexport function usePoolIdFromKey(key: Key | undefined) {\n const ids = usePoolIdsFromKey([key]);\n return useMemo(() => ids[0], [ids]);\n}\n\nexport function usePoolsTokenAmountsFromKey(keys: (Key | undefined)[] | undefined) {\n const [amounts, setAmounts] = useState<({ balance0: BigNumber; balance1: BigNumber } | undefined)[]>([]);\n const [loading, setLoading] = useState(false);\n\n const ids = usePoolIdsFromKey(keys);\n\n useEffect(() => {\n const call = async () => {\n if (ids.length) {\n setLoading(true);\n const queries = ids?.map(async (id) => {\n if (id) return await getPoolTokenAmounts(id);\n return undefined;\n });\n\n if (queries && !!queries.length) {\n const results = await Promise.all<{ balance0: BigNumber; balance1: BigNumber } | undefined>(queries);\n setAmounts(results);\n }\n setLoading(false);\n }\n };\n\n call();\n }, [ids]);\n\n return useMemo(() => ({ result: amounts, loading }), [amounts, loading]);\n}\n\nexport function usePoolTokenAmountsFromKey(key: Key | undefined) {\n const keys = useMemo(() => [key], [key]);\n const { result, loading } = usePoolsTokenAmountsFromKey(keys);\n return useMemo(() => ({ result: result[0], loading }), [result, loading]);\n}\n\nexport function useUserSwapTransactions(principal: string | undefined, offset: number, limit: number) {\n const { result: storageIds } = useInfoUserStorageIds(principal);\n\n const storageId = useMemo(() => {\n if (!storageIds) return undefined;\n return storageIds[storageIds.length - 1];\n }, [storageIds]);\n\n return useCallsData(\n useCallback(async () => {\n if (!principal || !isAvailablePageArgs(offset, limit)) return undefined;\n\n const storageIds = await getInfoUserStorageIds(principal);\n\n if (!storageIds || storageIds.length === 0) return undefined;\n\n const storageId = storageIds[storageIds.length - 1];\n\n return resultFormat>(\n await (await userStorage(storageId)).get(principal, BigInt(offset), BigInt(limit), []),\n ).data;\n }, [principal, offset, limit, storageId]),\n );\n}\n\nexport async function getSwapPoolAvailable(canisterId: string) {\n const result = resultFormat<{ whitelist: string[]; available: boolean }>(\n await (await swapPool(canisterId)).getAvailabilityState(),\n ).data;\n\n return result?.available;\n}\n\nexport function useSwapPoolAvailable(canisterId: string | undefined) {\n const [available, setAvailable] = useState(true);\n\n useEffect(() => {\n const call = async () => {\n if (!canisterId) return;\n const available = await getSwapPoolAvailable(canisterId);\n setAvailable(!!available);\n };\n\n call();\n }, [canisterId]);\n\n return useMemo(() => available, [available]);\n}\n","import { useCallback } from \"react\";\nimport { BigNumber, isValidPrincipal, isAvailablePageArgs, parseTokenAmount } from \"@icpswap/utils\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { Principal } from \"@dfinity/principal\";\nimport { TokenInfo } from \"types/token\";\nimport { tokenAdapter, icpAdapter } from \"@icpswap/token-adapter\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport TokenDefaultLogo from \"assets/images/Token_default_logo.png\";\nimport { useCallsData } from \"@icpswap/hooks\";\nimport { ResultStatus, StatusResult, TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport interface TokenTransferProps {\n canisterId: string;\n to: string;\n amount: BigNumber | number;\n from: string;\n subaccount?: number[];\n memo?: number[] | bigint;\n fee?: number | string | bigint;\n decimals?: number;\n}\n\nexport async function tokenTransfer({\n canisterId,\n to,\n amount,\n from,\n subaccount,\n memo,\n fee,\n decimals,\n}: TokenTransferProps) {\n let result: StatusResult = { data: undefined, message: \"\", status: ResultStatus.ERROR };\n\n if (canisterId === ICP.address) {\n result = await icpAdapter.transfer({\n canisterId,\n identity: true,\n params: {\n from: isValidPrincipal(from) ? { principal: Principal.fromText(from) } : { address: from },\n to: isValidPrincipal(to) ? { principal: Principal.fromText(to) } : { address: to },\n amount: BigInt(amount.toString()),\n subaccount,\n memo,\n },\n });\n } else {\n result = await tokenAdapter.transfer({\n identity: true,\n canisterId,\n params: {\n from: isValidPrincipal(from) ? { principal: Principal.fromText(from) } : { address: from },\n to: isValidPrincipal(to) ? { principal: Principal.fromText(to) } : { address: to },\n amount: BigInt(amount.toString()),\n subaccount,\n memo,\n fee: fee !== undefined ? BigInt(fee) : undefined,\n },\n });\n }\n\n const { data, message, status } = result;\n\n let new_message = message;\n\n if (new_message.includes(\"InsufficientFunds\")) {\n const balance = new_message.replace(/\\D/g, \"\");\n\n if (balance) {\n new_message = `InsufficientFunds: ${decimals ? parseTokenAmount(balance, decimals).toFormat() : balance}`;\n }\n }\n\n return {\n status,\n message: new_message,\n data,\n } as StatusResult;\n}\n\nexport async function getTokenTransaction(\n canisterId: string,\n account: string | undefined,\n offset: number,\n limit: number,\n) {\n return (\n await tokenAdapter.transactions({\n canisterId,\n params: {\n user: account ? { address: account } : undefined,\n offset,\n limit,\n },\n })\n ).data;\n}\n\nexport function useTokenTransactions(canisterId: string, account: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return getTokenTransaction(canisterId, account, offset, limit);\n }, [offset, limit, canisterId]),\n );\n}\n\nexport async function getTokenSupply(canisterId: string | undefined) {\n if (!canisterId) return undefined;\n return (await tokenAdapter.supply({ canisterId })).data;\n}\n\nexport function useTokenSupply(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getTokenSupply(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n\nexport async function getTokenMetadata(canisterId: string) {\n return tokenAdapter.metadata({ canisterId });\n}\n\nexport function useTokenMetadata(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return (await getTokenMetadata(canisterId)).data;\n }, [canisterId]),\n );\n}\n\nexport async function getTokenInfo(canisterId: string | undefined) {\n if (!canisterId) return undefined;\n\n return Promise.all([getTokenMetadata(canisterId)]).then(([result]) => {\n if (!result) return undefined;\n\n const metadata = result.data;\n\n if (!metadata || metadata.decimals === undefined || metadata.fee === undefined || metadata.symbol === undefined)\n return undefined;\n\n const _logo = metadata.logo && metadata.logo !== \"\" ? metadata.logo : null;\n\n return {\n logo: _logo || TokenDefaultLogo,\n transFee: metadata.fee,\n decimals: metadata.decimals,\n name: metadata.name,\n symbol: metadata.symbol,\n canisterId,\n standardType: getTokenStandard(canisterId) ?? TOKEN_STANDARD.ICRC1,\n totalSupply: BigInt(0),\n } as TokenInfo;\n });\n}\n\nexport function useTokenInfo(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getTokenInfo(canisterId);\n }, [canisterId]),\n );\n}\n","import { useMemo } from \"react\";\nimport type { ChainKeyETHMinterInfo, Null } from \"@icpswap/types\";\nimport { useTokenFromActiveNetwork } from \"hooks/web3/useTokenFromNetwork\";\n\nexport function useERC20Token(tokenAddress: string | undefined) {\n return useTokenFromActiveNetwork(tokenAddress);\n}\n\nexport function useERC20TokenByChainKeyId(\n tokenId: string | undefined,\n chainKeyMinterInfo: ChainKeyETHMinterInfo | Null,\n) {\n const tokenAddress = useMemo(() => {\n if (!tokenId || !chainKeyMinterInfo || !chainKeyMinterInfo.supported_ckerc20_tokens[0]) return undefined;\n\n const chainKeyInfo = chainKeyMinterInfo.supported_ckerc20_tokens[0].find(\n (token) => token.ledger_canister_id.toString() === tokenId,\n );\n\n return chainKeyInfo?.erc20_contract_address;\n }, [tokenId, chainKeyMinterInfo]);\n\n return useTokenFromActiveNetwork(tokenAddress);\n}\n","import { nonNullArgs } from \"@icpswap/utils\";\nimport { icrc1 } from \"@icpswap/actor\";\nimport { EXTAdapter, icrc1Adapter, DIP20Adapter } from \"@icpswap/token-adapter\";\nimport { TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport async function getIcrcStandard(canisterId: string) {\n try {\n const metadata = (await icrc1Adapter.metadata({ canisterId })).data;\n if (metadata.symbol) {\n const standards = await (await icrc1(canisterId)).icrc1_supported_standards();\n const support_icrc2 = standards.find((e) => e.name === \"ICRC-2\");\n if (support_icrc2) return TOKEN_STANDARD.ICRC2;\n return TOKEN_STANDARD.ICRC1;\n }\n } catch (error) {\n console.error(error);\n }\n\n return undefined;\n}\n\nexport async function getExtStandard(canisterId: string) {\n try {\n const metadata = (await EXTAdapter.metadata({ canisterId })).data;\n if (metadata.symbol) return TOKEN_STANDARD.EXT;\n } catch (error) {\n console.error(error);\n }\n\n return undefined;\n}\n\nexport async function getDIP20Standard(canisterId: string) {\n try {\n const metadata = (await DIP20Adapter.metadata({ canisterId })).data;\n if (metadata.symbol) return TOKEN_STANDARD.DIP20;\n } catch (error) {\n console.error(error);\n }\n\n return undefined;\n}\n\nexport interface GetTokenStandardProps {\n canisterId: string;\n}\n\nexport async function getTokenStandard({ canisterId }: GetTokenStandardProps) {\n const icrc_standard = await getIcrcStandard(canisterId);\n if (nonNullArgs(icrc_standard)) return icrc_standard;\n\n const dip20_standard = await getDIP20Standard(canisterId);\n if (nonNullArgs(dip20_standard)) return dip20_standard;\n\n const ext_standard = await getExtStandard(canisterId);\n if (nonNullArgs(ext_standard)) return ext_standard;\n\n return undefined;\n}\n","import { useMemo } from \"react\";\nimport type { Null } from \"@icpswap/types\";\nimport { isNullArgs } from \"@icpswap/utils\";\nimport { ckBTC, ckETH, ckUSDC, ICP } from \"@icpswap/tokens\";\nimport { useTokenStandard } from \"store/token/cache/hooks\";\n\nimport { useIsSnsToken } from \"./useTokenInSNS\";\n\nconst ImportedTokens = [ICP.address, ckBTC.address, ckUSDC.address, ckETH.address];\n\nexport function useTokenImportToNns(tokenId: string | Null) {\n const isSnsToken = useIsSnsToken(tokenId);\n const tokenStandard = useTokenStandard(tokenId);\n\n return useMemo(() => {\n if (isNullArgs(isSnsToken) || isNullArgs(tokenStandard) || isNullArgs(tokenId)) return false;\n\n return isSnsToken === false && tokenStandard.includes(\"ICRC\") && !ImportedTokens.includes(tokenId);\n }, [tokenId, isSnsToken, tokenStandard]);\n}\n","import { useMemo } from \"react\";\nimport { useSNSTokenRootId } from \"hooks/token/useSNSTokenRootId\";\nimport { Null } from \"@icpswap/types\";\n\nexport function useIsSnsToken(tokenId: string | Null) {\n const root_canister_id = useSNSTokenRootId(tokenId);\n\n return useMemo(() => {\n return !!root_canister_id;\n }, [tokenId, root_canister_id]);\n}\n","import { WRAPPED_ICP_TOKEN_INFO } from \"constants/index\";\nimport store from \"store/index\";\nimport { ICP_TOKEN_INFO } from \"@icpswap/tokens\";\n\nexport function getSwapTokenArgs(token: string) {\n const { standards } = store.getState().tokenCache;\n let standard = standards[token];\n if (token === WRAPPED_ICP_TOKEN_INFO.canisterId) standard = WRAPPED_ICP_TOKEN_INFO.standardType;\n if (token === ICP_TOKEN_INFO.canisterId) standard = ICP_TOKEN_INFO.standardType;\n if (!standard) throw Error(`No token standard: ${token}, please reload the page`);\n return { address: token, standard: standard as string };\n}\n\nexport * from \"./useAllowance\";\nexport * from \"./useApprove\";\nexport * from \"./useTokenInfo\";\nexport * from \"./useTokenBalance\";\nexport * from \"./useTokenInSNS\";\nexport * from \"./useERC20Token\";\nexport * from \"./useTokenStandard\";\nexport * from \"./useTokenImportToNns\";\n","import { Principal } from \"@dfinity/principal\";\nimport { isNullArgs, isValidPrincipal } from \"@icpswap/utils\";\nimport { useCallback } from \"react\";\nimport { useCallsData } from \"@icpswap/hooks\";\nimport { tokenAdapter } from \"@icpswap/token-adapter\";\nimport { Null } from \"@icpswap/types\";\n\nexport interface AllowanceArgs {\n canisterId: string;\n spender: string;\n spenderSub?: number[] | Null;\n owner: string;\n ownerSub?: number[] | Null;\n}\n\nexport async function allowance({ canisterId, owner, spender, spenderSub, ownerSub }: AllowanceArgs) {\n return (\n await tokenAdapter.allowance({\n canisterId,\n params: {\n spender: Principal.fromText(spender),\n owner: isValidPrincipal(owner) ? { principal: Principal.fromText(owner) } : { address: owner },\n spenderSub,\n subaccount: ownerSub,\n },\n })\n ).data;\n}\n\nexport interface useAllowanceArgs {\n canisterId: string | Null;\n spender: string | Null;\n spenderSub?: number[];\n owner: string | Null;\n ownerSub?: number[];\n}\n\nexport function useAllowance({ canisterId, spender, spenderSub, owner, ownerSub }: useAllowanceArgs) {\n return useCallsData(\n useCallback(async () => {\n if (!spender || !owner || isNullArgs(canisterId)) return undefined;\n return await allowance({\n spender,\n spenderSub,\n owner,\n ownerSub,\n canisterId,\n });\n }, [spender, spenderSub, owner, ownerSub, canisterId]),\n );\n}\n","import { useCallback } from \"react\";\nimport { Principal } from \"@dfinity/principal\";\nimport { TOKEN_STANDARD, tokenAdapter } from \"@icpswap/token-adapter\";\nimport { ResultStatus, StatusResult } from \"@icpswap/types\";\nimport { allowance } from \"./useAllowance\";\n\nexport interface ApproveArgs {\n canisterId: string;\n spender: string;\n value: number | string | bigint;\n account: string | Principal | undefined;\n standard?: TOKEN_STANDARD;\n}\n\nexport async function approve({ canisterId, spender, value, account, standard }: ApproveArgs) {\n if (!account) {\n return { status: ResultStatus.ERROR, data: undefined, message: \"No account\" };\n }\n\n if (standard) {\n const adapter = tokenAdapter.getAdapterByName(standard);\n return adapter.approve({\n canisterId,\n identity: true,\n params: {\n spender: Principal.fromText(spender),\n allowance: BigInt(value),\n subaccount: undefined,\n account,\n },\n });\n }\n\n return tokenAdapter.approve({\n canisterId,\n identity: true,\n params: {\n spender: Principal.fromText(spender),\n allowance: BigInt(value),\n subaccount: undefined,\n account,\n },\n });\n}\n\nexport function useApprove(): (approveParams: ApproveArgs) => Promise> {\n return useCallback(async ({ canisterId, spender, value, account, standard }: ApproveArgs) => {\n if (!account)\n return await Promise.resolve({\n status: \"err\",\n message: \"Invalid account\",\n } as StatusResult);\n\n const allowedBalance = await allowance({\n canisterId,\n owner: account.toString(),\n spender,\n });\n\n if (!allowedBalance || allowedBalance === BigInt(0) || BigInt(value) > allowedBalance) {\n return await approve({\n canisterId,\n spender,\n value,\n account,\n standard,\n });\n }\n return await Promise.resolve({\n status: \"ok\",\n data: true,\n message: \"You have approved successfully\",\n } as StatusResult);\n }, []);\n}\n","import { useMemo } from \"react\";\nimport { useFetchSnsAllTokensInfo } from \"store/sns/hooks\";\nimport { Null } from \"@icpswap/types\";\n\nexport function useSNSTokenRootId(tokenId: string | Null) {\n const { result: snsAllTokensInfo } = useFetchSnsAllTokensInfo();\n\n return useMemo(() => {\n if (!tokenId || !snsAllTokensInfo) return undefined;\n const snsTokenInfo = snsAllTokensInfo.find((e) => e.canister_ids.ledger_canister_id === tokenId);\n return snsTokenInfo?.canister_ids.root_canister_id;\n }, [snsAllTokensInfo, tokenId]);\n}\n","export const idlFactory = ({ IDL }: any) => {\n const TxReceipt = IDL.Variant({\n Ok: IDL.Nat,\n Err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n InsufficientBalance: IDL.Null,\n ErrorOperationStyle: IDL.Null,\n Unauthorized: IDL.Null,\n LedgerTrap: IDL.Null,\n ErrorTo: IDL.Null,\n Other: IDL.Text,\n BlockUsed: IDL.Null,\n AmountTooSmall: IDL.Null,\n }),\n });\n const Metadata = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat8,\n owner: IDL.Principal,\n logo: IDL.Text,\n name: IDL.Text,\n totalSupply: IDL.Nat,\n symbol: IDL.Text,\n });\n const TokenInfo = IDL.Record({\n holderNumber: IDL.Nat64,\n deployTime: IDL.Nat64,\n metadata: Metadata,\n historySize: IDL.Nat64,\n cycles: IDL.Nat64,\n feeTo: IDL.Principal,\n });\n return IDL.Service({\n allowance: IDL.Func([IDL.Principal, IDL.Principal], [IDL.Nat], [\"query\"]),\n approve: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], []),\n cleanOutOldAllowances: IDL.Func([], [IDL.Nat], []),\n decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n filterAllowancesArray: IDL.Func(\n [IDL.Int],\n [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Tuple(IDL.Nat, IDL.Int)))))],\n [],\n ),\n getASize: IDL.Func([], [IDL.Nat], [\"query\"]),\n getAgeAllowanceLimit: IDL.Func([], [IDL.Int], []),\n getAllowanceSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n getAllowancesArray: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Tuple(IDL.Nat, IDL.Int)))))],\n [],\n ),\n getMaxAllowances: IDL.Func([], [IDL.Int], []),\n getMetadata: IDL.Func([], [Metadata], [\"query\"]),\n getResultArrayIndex: IDL.Func([], [IDL.Int], []),\n getSpendersSize: IDL.Func([], [IDL.Nat], []),\n getTokenFee: IDL.Func([], [IDL.Nat], [\"query\"]),\n getTokenInfo: IDL.Func([], [TokenInfo], [\"query\"]),\n getUserApprovals: IDL.Func([IDL.Principal], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat))], [\"query\"]),\n historySize: IDL.Func([], [IDL.Nat], []),\n logo: IDL.Func([], [IDL.Text], [\"query\"]),\n name: IDL.Func([], [IDL.Text], [\"query\"]),\n setAgeAllowanceLimit: IDL.Func([], [IDL.Nat], []),\n setFee: IDL.Func([IDL.Nat], [], [\"oneway\"]),\n setLogo: IDL.Func([IDL.Text], [], [\"oneway\"]),\n setMaxAllowances: IDL.Func([IDL.Int], [], []),\n setName: IDL.Func([IDL.Text], [], [\"oneway\"]),\n setOwner: IDL.Func([IDL.Principal], [], [\"oneway\"]),\n symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n totalSupply: IDL.Func([], [IDL.Nat], []),\n transfer: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n transferFrom: IDL.Func([IDL.Principal, IDL.Principal, IDL.Nat], [TxReceipt], []),\n });\n};\n","import { actor } from \"@icpswap/actor\";\nimport { type ActorIdentity } from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\nimport { resultFormat, isPrincipal } from \"@icpswap/utils\";\nimport { idlFactory as OGY_IDL } from \"candid/ogy.did\";\nimport { _SERVICE as OGY_SERVICE } from \"candid/ogy\";\n\nconst ORG_ID = \"rd6wb-lyaaa-aaaaj-acvla-cai\";\n\nconst ogy = async (identity?: ActorIdentity) =>\n actor.create({ canisterId: ORG_ID, idlFactory: OGY_IDL, identity });\n\nconst BALANCE_ADAPTER_IDS = [ORG_ID];\n\nexport const isNeedBalanceAdapter = (canisterId: string) => BALANCE_ADAPTER_IDS.includes(canisterId);\n\nexport async function balanceAdapter(canisterId: string, account: string | Principal) {\n switch (canisterId) {\n case ORG_ID:\n if (isPrincipal(account)) {\n return resultFormat(await (await ogy()).balanceOf(account));\n }\n throw Error(\"not support address\");\n\n default:\n throw Error(\"no canister id\");\n }\n}\n","import { useCallback, useState, useEffect, useMemo } from \"react\";\nimport { Principal } from \"@dfinity/principal\";\nimport { Token, CurrencyAmount } from \"@icpswap/swap-sdk\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport { balanceAdapter, isNeedBalanceAdapter } from \"utils/token/adapter\";\nimport { ICP } from \"@icpswap/tokens\";\nimport {\n isPrincipal,\n isValidPrincipal,\n isOkSubAccount,\n principalToAccount,\n BigNumber,\n isNullArgs,\n nonNullArgs,\n} from \"@icpswap/utils\";\nimport { AccountIdentifier, SubAccount } from \"@dfinity/ledger-icp\";\nimport { icpAdapter, tokenAdapter, TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { useLatestDataCall } from \"@icpswap/hooks\";\nimport { Null } from \"@icpswap/types\";\n\nexport async function getTokenBalance(canisterId: string, account: string | Principal, subAccount?: Uint8Array) {\n if (isNeedBalanceAdapter(canisterId)) return await balanceAdapter(canisterId, account);\n\n const standard = getTokenStandard(canisterId);\n\n if (standard === TOKEN_STANDARD.EXT) {\n let address = \"\";\n\n if (!subAccount) {\n if (isPrincipal(account)) {\n address = principalToAccount(account.toString());\n } else if (isValidPrincipal(account)) {\n address = principalToAccount(account);\n } else {\n address = account;\n }\n } else {\n const sub = SubAccount.fromBytes(subAccount);\n\n if (isOkSubAccount(sub)) {\n if (isPrincipal(account)) {\n address = AccountIdentifier.fromPrincipal({\n principal: account,\n subAccount: sub,\n }).toHex();\n }\n }\n }\n\n return await tokenAdapter.balance({\n canisterId,\n params: {\n user: { address },\n token: \"\",\n },\n });\n }\n\n if (canisterId === ICP.address) {\n return await icpAdapter.balance({\n canisterId,\n params: {\n user: isPrincipal(account)\n ? { principal: account }\n : isValidPrincipal(account)\n ? { principal: Principal.fromText(account) }\n : { address: account },\n token: \"\",\n subaccount: subAccount ? [...subAccount] : undefined,\n },\n });\n }\n\n return await tokenAdapter.balance({\n canisterId,\n params: {\n user: isPrincipal(account)\n ? { principal: account }\n : isValidPrincipal(account)\n ? { principal: Principal.fromText(account) }\n : { address: account },\n token: \"\",\n subaccount: subAccount ? [...subAccount] : undefined,\n },\n });\n}\n\nexport function useTokenBalance(\n canisterId: string | undefined,\n account: string | Principal | Null,\n refresh?: number | boolean | Null,\n subAccount?: Uint8Array,\n) {\n return useLatestDataCall(\n useCallback(async () => {\n if (!account || !canisterId) return undefined;\n const result = await getTokenBalance(canisterId, account, subAccount);\n return result && nonNullArgs(result.data) ? new BigNumber(result.data.toString()) : undefined;\n }, [account, canisterId, subAccount]),\n refresh,\n );\n}\n\nexport type Balances = {\n [key: string]: CurrencyAmount;\n};\n\nexport function useCurrencyBalances(\n account: string | Principal | undefined,\n currencies: (Token | undefined | null)[],\n reload?: boolean,\n) {\n const [balances, setBalances] = useState({} as Balances);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (account && currencies && currencies.length) {\n setLoading(true);\n\n const queryPromise = currencies.map((currency) => {\n if (currency) {\n return getTokenBalance(currency.address, account).then(\n (result) => new BigNumber(result ? result.toString() : \"0\"),\n );\n }\n\n return new Promise((resolve) => resolve(new BigNumber(0)));\n });\n\n Promise.all(queryPromise).then((result: BigNumber[]) => {\n const balances = {} as Balances;\n\n result.forEach((balance: BigNumber, index: number) => {\n const currency = currencies[index];\n\n if (currency) {\n balances[currency.address] = CurrencyAmount.fromRawAmount(\n currency,\n balance ? balance.toString() : 0,\n );\n }\n });\n\n setBalances(balances);\n setLoading(false);\n });\n }\n }, [currencies, account, reload]);\n\n return useMemo(\n () => ({\n loading,\n result: balances ?? {},\n }),\n [balances, loading],\n );\n}\n\nexport function useCurrencyBalance(\n account: string | Principal | undefined,\n currency: Token | undefined,\n refresh?: boolean | number,\n) {\n const { loading, result } = useTokenBalance(currency?.address, account, refresh);\n\n return useMemo(() => {\n if (isNullArgs(result) || loading || !currency)\n return {\n loading,\n result: undefined,\n };\n\n return {\n loading,\n result: CurrencyAmount.fromRawAmount(currency, result.toNumber()),\n };\n }, [loading, result, currency]);\n}\n\nexport function useCurrencyBalanceV1(\n account: string | Principal | undefined,\n currency: Token | undefined,\n refresh?: boolean | number,\n) {\n const [storeResult, setStoreResult] = useState(undefined);\n\n const { loading, result } = useTokenBalance(currency?.address, account, refresh);\n\n useEffect(() => {\n if (nonNullArgs(result)) {\n setStoreResult(result);\n }\n }, [result]);\n\n return useMemo(() => {\n if (!currency || isNullArgs(storeResult) || loading || isNaN(storeResult.toNumber()))\n return {\n loading,\n result: storeResult && currency ? CurrencyAmount.fromRawAmount(currency, storeResult.toNumber()) : undefined,\n };\n\n return {\n loading,\n result: CurrencyAmount.fromRawAmount(currency, storeResult.toNumber()),\n };\n }, [loading, storeResult, currency]);\n}\n\nexport function useStoreTokenBalance(\n tokenId: string | undefined,\n address: string | Principal | undefined,\n refresh?: boolean | number,\n) {\n const [storeResult, setStoreResult] = useState(undefined);\n\n const { loading, result } = useTokenBalance(tokenId, address, refresh);\n\n useEffect(() => {\n if (nonNullArgs(result)) {\n if (!address) {\n setStoreResult(undefined);\n } else {\n setStoreResult(result);\n }\n }\n }, [result, address]);\n\n return useMemo(() => {\n if (!tokenId || isNullArgs(storeResult) || loading || isNaN(storeResult.toNumber())) {\n return {\n loading,\n result: storeResult && tokenId ? storeResult : undefined,\n };\n }\n\n return {\n loading,\n result: storeResult,\n };\n }, [loading, storeResult, tokenId]);\n}\n","/* eslint-disable no-useless-constructor */\nimport { openDB, IDBPDatabase, deleteDB } from \"idb\";\n\ntype Database = IDBPDatabase;\ntype IDBValidKey = string | number | Date | BufferSource | IDBValidKey[];\n\nfunction isLessThanCurrentVersion(err: string) {\n // Chrome\n if (err.includes(\"is less than the existing version\")) return true;\n // Safari\n if (err.includes(\"using a lower version than the existing version.\")) return true;\n // Firefox\n if (err.includes(\"is a higher version than the version requested\")) return true;\n}\n\nconst _openDbStore = async (dbName: string, storeName: string, version: number) => {\n return await openDB(dbName, version, {\n upgrade: (database, oldVersion, newVersion, transaction) => {\n if (oldVersion === 0) {\n database.createObjectStore(storeName);\n }\n\n if (!database.objectStoreNames.contains(storeName)) {\n database.createObjectStore(storeName);\n }\n\n if (oldVersion < version) {\n const store = transaction.objectStore(storeName);\n store.clear();\n }\n },\n }).catch((err) => {\n // For development\n if (isLessThanCurrentVersion(String(err))) {\n deleteDB(dbName).then(() => {\n window.location.reload();\n });\n }\n\n return undefined;\n });\n};\n\nasync function _getValue(db: Database, storeName: string, key: IDBValidKey): Promise {\n return await db.get(storeName, key);\n}\n\nasync function _setValue(db: Database, storeName: string, key: IDBValidKey, value: T): Promise {\n return await db.put(storeName, value, key);\n}\n\nasync function _removeValue(db: Database, storeName: string, key: IDBValidKey): Promise {\n return await db.delete(storeName, key);\n}\n\nasync function _getAllValues(db: Database, storeName: string): Promise<(T | undefined)[]> {\n return await db.getAll(storeName);\n}\n\nexport type DBCreateOptions = {\n dbName: string;\n storeName: string;\n version: number;\n};\n\n/**\n * Simple Key Value store\n * Defaults to `'auth-client-db'` with an object store of `'ic-keyval'`\n */\nexport class IdbKeyVal {\n /**\n *\n * @param {DBCreateOptions} options {@link DbCreateOptions}\n * @param {DBCreateOptions['dbName']} options.dbName name for the indexDB database\n * @default\n * @param {DBCreateOptions['storeName']} options.storeName name for the indexDB Data Store\n * @default\n * @param {DBCreateOptions['version']} options.version version of the database. Increment to safely upgrade\n * @constructs an {@link IdbKeyVal}\n */\n public static async create(options?: DBCreateOptions): Promise {\n const { dbName, storeName, version = 1 } = options ?? {};\n const db = await _openDbStore(dbName, storeName, version);\n return new IdbKeyVal(db, storeName);\n }\n\n // Do not use - instead prefer create\n private constructor(\n private _db: Database,\n private _storeName: string,\n ) {}\n\n /**\n * Basic setter\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @param value value to set\n * @returns void\n */\n public async set(key: IDBValidKey, value: T) {\n return await _setValue(this._db, this._storeName, key, value);\n }\n\n /**\n * Basic getter\n * Pass in a type T for type safety if you know the type the value will have if it is found\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @returns `Promise`\n * @example\n * await get('exampleKey') -> 'exampleValue'\n */\n public async get(key: IDBValidKey): Promise {\n return (await _getValue(this._db, this._storeName, key)) ?? null;\n }\n\n /**\n * Remove a key\n * @param key {@link IDBValidKey}\n * @returns void\n */\n public async remove(key: IDBValidKey) {\n return await _removeValue(this._db, this._storeName, key);\n }\n\n /**\n * Get all values\n * @param key {@link IDBValidKey}\n * @returns void\n */\n public async getAll(): Promise<(T | undefined)[] | null> {\n return await _getAllValues(this._db, this._storeName);\n }\n}\n","import { useMemo, useEffect, useState, useCallback } from \"react\";\nimport { WRAPPED_ICP_TOKEN_INFO } from \"constants/index\";\nimport type { TokenInfo, StorageTokenInfo, Null } from \"@icpswap/types\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport { DB_NAME, DB_VERSION } from \"constants/db\";\nimport { IdbStorage } from \"@icpswap/utils\";\nimport { getPromisesAwait } from \"@icpswap/hooks\";\nimport { ICP_TOKEN_INFO } from \"@icpswap/tokens\";\n\nimport { getTokenInfo } from \"./calls\";\n\nconst storage = new IdbStorage(DB_NAME, DB_VERSION, \"tokens\");\n\nexport async function getStorageTokenInfo(tokenId: string) {\n const storageInfo = await storage.get(`TOKEN_${tokenId}`);\n if (storageInfo) return JSON.parse(storageInfo) as StorageTokenInfo;\n return undefined;\n}\n\nexport async function setStorageTokenInfo(tokenInfo: StorageTokenInfo) {\n await storage.set(`TOKEN_${tokenInfo.canisterId}`, JSON.stringify(tokenInfo));\n}\n\nfunction isStorageInfoValid(storageInfo: StorageTokenInfo | undefined): storageInfo is StorageTokenInfo {\n return !!storageInfo && storageInfo.decimals !== undefined && storageInfo.transFee !== undefined;\n}\n\nexport async function __getTokenInfo(tokenId: string) {\n const storageInfo = await getStorageTokenInfo(tokenId);\n\n if (isStorageInfoValid(storageInfo)) {\n return storageInfo;\n }\n\n const baseTokenInfo = await getTokenInfo(tokenId);\n\n if (baseTokenInfo) {\n await setStorageTokenInfo({\n ...baseTokenInfo,\n totalSupply: \"0\",\n transFee: baseTokenInfo.transFee.toString(),\n });\n\n return baseTokenInfo as TokenInfo;\n }\n}\n\nexport enum TokenInfoState {\n LOADING = \"LOADING\",\n NOT_EXISTS = \"NOT_EXISTS\",\n EXISTS = \"EXISTS\",\n INVALID = \"INVALID\",\n}\n\nexport function useTokensInfo(tokenIds: (string | undefined | null)[]): [TokenInfoState, TokenInfo | undefined][] {\n const [tokenInfos, setTokenInfos] = useState<{ [id: string]: TokenInfo | undefined }>({});\n const [loadings, setLoadings] = useState<{ [id: string]: boolean }>({});\n\n const tokenIdsKey = useMemo(() => JSON.stringify(tokenIds), [tokenIds]);\n\n const fetch_token_info = useCallback(async (tokenId: string | undefined | null) => {\n if (!tokenId) return undefined;\n\n let tokeInfo: undefined | TokenInfo;\n\n if (tokenId === ICP_TOKEN_INFO.canisterId) tokeInfo = ICP_TOKEN_INFO;\n if (tokenId === WRAPPED_ICP_TOKEN_INFO.canisterId) tokeInfo = WRAPPED_ICP_TOKEN_INFO;\n\n if (tokeInfo) {\n setTokenInfos((prevState) => ({\n ...prevState,\n [tokenId]: tokeInfo,\n }));\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: false,\n }));\n return;\n }\n\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: true,\n }));\n\n const storageInfo = await getStorageTokenInfo(tokenId);\n\n let getStorageInfoErrored = false;\n\n // Fix some user's wrong cache: transFee or some bigint is liked \"bigint:5\"\n try {\n if (isStorageInfoValid(storageInfo)) {\n setTokenInfos((prevState) => ({\n ...prevState,\n [tokenId]: {\n name: storageInfo.name,\n logo: storageInfo.logo,\n symbol: storageInfo.symbol,\n canisterId: storageInfo.canisterId,\n totalSupply: BigInt(0),\n transFee: storageInfo.transFee.includes(\"bigint:\")\n ? BigInt(storageInfo.transFee.replace(/\\D/g, \"\"))\n : BigInt(storageInfo.transFee.toString()),\n decimals: Number(storageInfo.decimals),\n standardType: storageInfo.standardType,\n },\n }));\n\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: false,\n }));\n }\n } catch (err) {\n console.error(err);\n getStorageInfoErrored = true;\n }\n\n if (!storageInfo || !isStorageInfoValid(storageInfo) || getStorageInfoErrored) {\n const tokenInfo = await getTokenInfo(tokenId);\n\n if (tokenInfo) {\n await setStorageTokenInfo({\n ...tokenInfo,\n transFee: tokenInfo.transFee.toString(),\n totalSupply: \"0\",\n });\n\n // The token standard maybe changed in some case,\n // So get the standard from the storage to upgrade the token info\n const tokenStandard = getTokenStandard(tokenInfo.canisterId);\n\n setTokenInfos((prevState) => ({\n ...prevState,\n [tokenId]: {\n ...tokenInfo,\n transFee: BigInt(tokenInfo.transFee.toString()),\n decimals: Number(tokenInfo.decimals),\n standardType: tokenStandard ?? tokenInfo.standardType,\n },\n }));\n }\n }\n\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: false,\n }));\n }, []);\n\n useEffect(() => {\n let mounted = true;\n\n async function call() {\n try {\n const calls = tokenIds.map(async (tokenId) => await fetch_token_info(tokenId));\n await getPromisesAwait(calls, 20);\n } catch (error) {\n console.error(\"Failed to fetch token infos:\", error);\n }\n }\n\n if (mounted) call();\n\n return () => {\n mounted = false;\n };\n }, [tokenIdsKey, fetch_token_info]);\n\n return useMemo(() => {\n return tokenIds.map((tokenId) => {\n if (!tokenId) return [TokenInfoState.INVALID, undefined];\n\n const tokenInfo = tokenInfos[tokenId];\n const loading = loadings[tokenId];\n\n if (loading) return [TokenInfoState.LOADING, undefined];\n if (!tokenInfo) return [TokenInfoState.INVALID, undefined];\n\n return [TokenInfoState.EXISTS, tokenInfo];\n });\n }, [tokenInfos, loadings, tokenIds]);\n}\n\nexport function useTokenInfo(tokenId: string | Null) {\n const [state, tokenInfo] = useTokensInfo([tokenId])[0];\n\n return useMemo(() => {\n if (!tokenInfo) {\n return {\n result: undefined,\n loading: state === TokenInfoState.LOADING,\n };\n }\n\n return {\n result: tokenInfo as TokenInfo,\n loading: state === TokenInfoState.LOADING,\n };\n }, [tokenInfo, state]);\n}\n","import { IdbKeyVal } from \"./db\";\n\nexport const isBrowser = typeof window !== \"undefined\";\n\nexport type StoredKey = string | CryptoKeyPair;\n\n/**\n * Interface for persisting user authentication data\n */\nexport interface ClientStorage {\n get(key: string): Promise;\n\n set(key: string, value: StoredKey): Promise;\n\n remove(key: string): Promise;\n}\n\n/**\n * IdbStorage is an interface for simple storage of string key-value pairs built on {@link IdbKeyVal}\n *\n * It replaces {@link LocalStorage}\n * @see implements {@link AuthClientStorage}\n */\nexport class IdbStorage implements ClientStorage {\n // Initializes a KeyVal on first request\n private initializedDb: IdbKeyVal | undefined;\n\n private version = 1;\n\n private dbName: string;\n\n private storeName: string;\n\n constructor(dbName: string, DB_VERSION = 1, storeName: string) {\n this.version = DB_VERSION;\n this.dbName = dbName;\n this.storeName = storeName;\n }\n\n get _db(): Promise {\n return new Promise((resolve) => {\n if (this.initializedDb) {\n resolve(this.initializedDb);\n return;\n }\n\n IdbKeyVal.create({\n version: this.version,\n storeName: this.storeName,\n dbName: this.dbName,\n }).then((db) => {\n this.initializedDb = db;\n resolve(db);\n });\n });\n }\n\n public async get(key: string): Promise {\n const db = await this._db;\n return await db.get(key);\n }\n\n public async set(key: string, value: string): Promise {\n const db = await this._db;\n await db.set(key, value);\n }\n\n public async remove(key: string): Promise {\n const db = await this._db;\n await db.remove(key);\n }\n\n public async getAll(): Promise<(string | undefined)[] | null> {\n const db = await this._db;\n return await db.getAll();\n }\n}\n","export const DB_NAME = \"ICPSwap-app\";\nexport const DB_VERSION = 11;\n","import { useMemo } from \"react\";\n\nexport function generateLogoUrl(tokenId: string) {\n return `https://wqfao-piaaa-aaaag-qj5ba-cai.raw.icp0.io/${tokenId}`;\n}\n\nexport function useTokenLogo(tokenId: string | undefined) {\n return useMemo(() => {\n if (!tokenId) return undefined;\n\n return `https://wqfao-piaaa-aaaag-qj5ba-cai.raw.icp0.io/${tokenId}`;\n }, [tokenId]);\n}\n","import { useMemo } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { TOKEN_STANDARD, WRAPPED_ICP } from \"constants/index\";\nimport { TokenInfo } from \"types/token\";\nimport { useTokenInfo, useTokensInfo } from \"hooks/token/useTokenInfo\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { Null } from \"@icpswap/types\";\n\nexport enum UseCurrencyState {\n LOADING = \"LOADING\",\n VALID = \"VALID\",\n INVALID = \"INVALID\",\n}\n\nexport function useToken(tokenId: string | Null): [UseCurrencyState, Token | undefined] {\n const { result: tokenInfo, loading: queryLoading } = useTokenInfo(tokenId);\n\n return useMemo(() => {\n if (!tokenId) return [UseCurrencyState.INVALID, undefined];\n if (tokenId === ICP.address) return [UseCurrencyState.VALID, ICP];\n if (tokenId === WRAPPED_ICP.address) return [UseCurrencyState.VALID, WRAPPED_ICP];\n if (!tokenInfo) return [UseCurrencyState.INVALID, undefined];\n if (queryLoading) return [UseCurrencyState.LOADING, undefined];\n\n return [\n UseCurrencyState.VALID,\n new Token({\n address: tokenId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n transFee: Number(tokenInfo.transFee),\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.ICRC1,\n }),\n ];\n }, [tokenId, tokenInfo, queryLoading]);\n}\n\nexport function useTokens(tokenIds: (string | undefined)[]): [UseCurrencyState, Token | undefined][] {\n const tokens = useTokensInfo(tokenIds);\n\n return useMemo(() => {\n return tokenIds.map((tokenId, index) => {\n const [, tokenInfo] = tokens[index];\n\n if (!tokenInfo || !tokenId) {\n return [UseCurrencyState.INVALID, undefined];\n }\n\n return [\n UseCurrencyState.VALID,\n new Token({\n address: tokenId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n transFee: Number(tokenInfo.transFee),\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.ICRC1,\n }),\n ];\n });\n }, [tokens, tokenIds]);\n}\n\nexport function getTokensFromInfos(tokenInfos: TokenInfo[] | undefined | null) {\n if (!tokenInfos) return undefined;\n\n return tokenInfos.map((tokenInfo) =>\n tokenInfo\n ? new Token({\n address: tokenInfo.canisterId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.EXT,\n })\n : undefined,\n );\n}\n\nexport function useTokenFromInfo(tokenInfo: TokenInfo | undefined) {\n return useMemo(() => {\n if (!tokenInfo) return undefined;\n\n return new Token({\n address: tokenInfo.canisterId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.EXT,\n });\n }, [tokenInfo]);\n}\n\nexport function useTokensFromInfos(tokenInfos: TokenInfo[] | undefined | null) {\n return useMemo(() => {\n if (!tokenInfos) return undefined;\n\n return tokenInfos.map((tokenInfo) =>\n tokenInfo\n ? new Token({\n address: tokenInfo.canisterId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.EXT,\n })\n : undefined,\n );\n }, [tokenInfos]);\n}\n","import { createContext, useContext, useMemo } from \"react\";\nimport type { SwapPoolData, PublicTokenOverview, Null } from \"@icpswap/types\";\n\nexport type GlobalContextProps = {\n AllPools: SwapPoolData[] | undefined;\n refreshTriggers: { [key: string]: number };\n setRefreshTriggers: (key: string) => void;\n infoAllTokens: PublicTokenOverview[] | Null;\n setInfoAllTokens: (args: PublicTokenOverview[]) => void;\n};\n\nexport const GlobalContext = createContext({} as GlobalContextProps);\n\nexport function useGlobalContext() {\n return useContext(GlobalContext);\n}\n\nexport function useRefreshTrigger(key: string | undefined) {\n const { refreshTriggers } = useGlobalContext();\n\n return useMemo(() => {\n if (!key) return undefined;\n return refreshTriggers[key];\n }, [refreshTriggers, key]);\n}\n\nexport function useRefreshTriggerManager(key: string | undefined): [undefined | number, () => void] {\n const { refreshTriggers, setRefreshTriggers } = useGlobalContext();\n\n return useMemo(() => {\n if (!key) return [undefined, () => setRefreshTriggers(\"Global_key\")];\n\n return [refreshTriggers[key], () => setRefreshTriggers(key)];\n }, [refreshTriggers, key, setRefreshTriggers]);\n}\n","import { Null } from \"@icpswap/types\";\nimport { useState, useEffect, useMemo } from \"react\";\n\nexport function useIntervalFetch(\n call: (() => Promise) | undefined,\n force: boolean | number | Null = false,\n interval = 5000,\n) {\n const [data, setData] = useState(undefined);\n const [tick, setTick] = useState(0);\n\n useEffect(() => {\n async function _call() {\n if (call) {\n const result = await call();\n setData(result);\n }\n }\n\n _call();\n }, [tick, call, force]);\n\n useEffect(() => {\n const timer = setInterval(() => {\n if (call) {\n setTick((prevState) => prevState + 1);\n }\n }, interval);\n\n return () => {\n clearInterval(timer);\n };\n }, [interval, call]);\n\n return useMemo(() => data, [data]);\n}\n","import { isNullArgs, isValidPrincipal, principalToAccount } from \"@icpswap/utils\";\nimport { useLiquidityLockIds } from \"@icpswap/hooks\";\nimport { useMemo } from \"react\";\nimport { Null } from \"@icpswap/types\";\n\nexport function useSneedLedger(tokenIds: string[] | Null) {\n const { result: locksIds } = useLiquidityLockIds(tokenIds);\n\n return useMemo(() => {\n if (!locksIds) return undefined;\n return locksIds.find((e) => e.alias[0] === \"Sneedlocked\")?.ledger_id.toString();\n }, [locksIds]);\n}\n\nexport interface UseIsSneedOwnerProps {\n owner: string | Null;\n sneedLedger: string | Null;\n}\n\nexport function useIsSneedOwner({ owner, sneedLedger }: UseIsSneedOwnerProps) {\n return useMemo(() => {\n if (isNullArgs(owner) || isNullArgs(sneedLedger)) return false;\n\n if (isValidPrincipal(owner)) {\n return owner === sneedLedger;\n }\n\n return principalToAccount(sneedLedger) === owner;\n }, [sneedLedger, owner]);\n}\n","import { useCallback } from \"react\";\nimport { useStepManager, useUpdateCallStep, useCloseAllSteps } from \"store/steps/hooks\";\n\nexport type StepCallback = () => Promise;\n\nlet stepKey = 0;\n\nexport function newStepKey() {\n stepKey++;\n return stepKey.toString();\n}\n\nexport function useStepCalls() {\n const { open } = useStepManager();\n const updateCallStep = useUpdateCallStep();\n\n return useCallback(\n (_calls: StepCallback[] | undefined, key: string) => {\n let curr = 0;\n let err: number | undefined;\n let calls: StepCallback[] | undefined = _calls;\n\n const fn = async (step: number) => {\n if (!calls) calls = [];\n for (let i = step; i < calls.length; i++) {\n curr = i;\n updateCallStep(key, curr, err);\n const result = await calls[i]();\n if (result === false) {\n err = i;\n updateCallStep(key, curr, err);\n return false;\n }\n curr = i + 1;\n updateCallStep(key, curr, err);\n }\n\n return true;\n };\n\n const reset = () => {\n curr = 0;\n err = undefined;\n };\n\n const call = async () => {\n reset();\n\n open(key);\n\n return await fn(0);\n };\n\n const retry = async () => {\n return await fn(err ?? 0);\n };\n\n return { call, reset, retry, currentStep: curr, errorStep: err };\n },\n [open, updateCallStep],\n );\n}\n\nexport function useCloseStep() {\n const { close } = useStepManager();\n\n return useCallback(\n (key?: string) => {\n close(key);\n },\n [close],\n );\n}\n\nexport { useCloseAllSteps };\n","import { useCallback, useMemo, ReactNode } from \"react\";\nimport { openLoading, closeLoading } from \"store/loadingReducer\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { useSnackbar } from \"components/notistack\";\nimport { ResultStatus } from \"types/global\";\n\nexport enum MessageTypes {\n success = \"ok\",\n error = \"err\",\n warning = \"warning\",\n loading = \"loading\",\n}\n\nexport const TipTypes: { [key in MessageTypes]: \"success\" | \"error\" | \"warning\" | \"loading\" } = {\n [MessageTypes.success]: \"success\",\n [MessageTypes.error]: \"error\",\n [MessageTypes.warning]: \"warning\",\n [MessageTypes.loading]: \"loading\",\n};\n\nexport const TIP_ERROR = MessageTypes.error;\nexport const TIP_SUCCESS = MessageTypes.success;\nexport const TIP_LOADING = MessageTypes.loading;\n\nexport type TIP_KEY = string | undefined | number;\n\nexport type TIP_OPTIONS = { [key: string]: any; autoHideDuration?: number };\n\nexport function useTips(): [\n (message: ReactNode, type: MessageTypes | ResultStatus, options?: TIP_OPTIONS) => TIP_KEY,\n (key: string | undefined | number) => void,\n] {\n const dispatch = useAppDispatch();\n const { closeSnackbar, enqueueSnackbar } = useSnackbar();\n\n const open = useCallback(\n (message: ReactNode, type: MessageTypes | ResultStatus, options?: TIP_OPTIONS) => {\n return enqueueSnackbar(message, {\n variant: type in ResultStatus ? (type === ResultStatus.OK ? TipTypes.ok : TipTypes.err) : TipTypes[type],\n ...(type === MessageTypes.loading ? { persist: true } : {}),\n ...(options ?? {}),\n });\n },\n [dispatch],\n );\n\n const close = useCallback(\n (messageKey: TIP_KEY) => {\n closeSnackbar(messageKey);\n },\n [dispatch],\n );\n\n return useMemo(() => [open, close], [open, close]);\n}\n\nexport function useSuccessTip(): [(message: ReactNode, options?: TIP_OPTIONS) => TIP_KEY, (key: TIP_KEY) => void] {\n const [openCallback, closeCallback] = useTips();\n\n const open = useCallback(\n (message, options?: TIP_OPTIONS) => {\n return openCallback(message, TIP_SUCCESS, options);\n },\n [openCallback],\n );\n\n const close = useCallback(\n (key: TIP_KEY) => {\n closeCallback(key);\n },\n [closeCallback],\n );\n\n return useMemo(() => [open, close], [open, close]);\n}\n\nexport function useErrorTip(): [(message: ReactNode, options?: TIP_OPTIONS) => TIP_KEY, (key: TIP_KEY) => void] {\n const [openCallback, closeCallback] = useTips();\n\n const open = useCallback(\n (message: ReactNode, options?: TIP_OPTIONS) => {\n return openCallback(message, TIP_ERROR, options);\n },\n [openCallback],\n );\n\n const close = useCallback(\n (key: TIP_KEY) => {\n closeCallback(key);\n },\n [closeCallback],\n );\n\n return useMemo(() => [open, close], [open, close]);\n}\n\nexport function useLoadingTip(): [(message: string, options?: TIP_OPTIONS) => TIP_KEY, (key: TIP_KEY) => void] {\n const [openCallback, closeCallback] = useTips();\n\n const open = useCallback(\n (message: string, options?: TIP_OPTIONS) => {\n return openCallback(message, TIP_LOADING, { ...(options ?? {}) });\n },\n [openCallback],\n );\n\n const close = useCallback(\n (key: TIP_KEY) => {\n closeCallback(key);\n },\n [closeCallback],\n );\n\n return useMemo(() => [open, close], [open, close]);\n}\n\nexport function useFullscreenLoading(): [() => void, () => void, boolean] {\n const dispatch = useAppDispatch();\n const isOpen = useAppSelector((state) => state.loading.open);\n\n const open = useCallback(() => {\n dispatch(openLoading());\n }, [dispatch]);\n\n const close = useCallback(() => {\n dispatch(closeLoading());\n }, [dispatch]);\n\n return useMemo(() => [open, close, isOpen], [open, close, isOpen]);\n}\n","import { BigNumber, isNullArgs } from \"@icpswap/utils\";\nimport { Token, CurrencyAmount } from \"@icpswap/swap-sdk\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { useMemo } from \"react\";\nimport { WRAPPED_ICP } from \"constants/tokens\";\nimport { useInfoToken } from \"@icpswap/hooks\";\n\nexport function useICPPrice(): number | undefined {\n const icpTokenInfo = useInfoToken(ICP.address);\n\n return useMemo(() => {\n return icpTokenInfo?.priceUSD;\n }, [icpTokenInfo]);\n}\n\nexport function useUSDPrice(token: Token | undefined): string | number | undefined {\n const tokenId = useMemo(() => {\n if (isNullArgs(token)) return null;\n\n if (token.address === WRAPPED_ICP.address) return ICP.address;\n\n return token.address;\n }, [token]);\n\n const graphToken = useInfoToken(tokenId);\n\n return useMemo(() => {\n if (!tokenId) return undefined;\n\n return graphToken?.priceUSD;\n }, [tokenId, graphToken]);\n}\n\nexport function useUSDPriceById(tokenId: string | undefined): number | undefined {\n const graphToken = useInfoToken(tokenId);\n\n return useMemo(() => {\n if (!tokenId) return undefined;\n\n if (graphToken) {\n return graphToken.priceUSD;\n }\n\n return undefined;\n }, [tokenId, graphToken]);\n}\n\nexport function useUSDValue(currencyAmount: CurrencyAmount | undefined) {\n const price = useUSDPrice(currencyAmount?.currency);\n\n return useMemo(() => {\n if (!price || !currencyAmount) return null;\n try {\n return new BigNumber(price).multipliedBy(currencyAmount.toExact());\n } catch (error) {\n return null;\n }\n }, [currencyAmount, price]);\n}\n","import { useCallsData } from \"@icpswap/hooks\";\nimport { useCallback, useMemo } from \"react\";\nimport { useSupportedActiveChain } from \"hooks/web3/index\";\n\nimport { useInterfaceMulticall } from \"./useContract\";\n\n// gets the current timestamp from the blockchain\nexport function useCurrentBlockTimestamp() {\n const multicall = useInterfaceMulticall();\n const supportedActiveChain = useSupportedActiveChain();\n\n const { result } = useCallsData(\n useCallback(async () => {\n if (!multicall || !supportedActiveChain) return;\n\n const resultStr = await multicall.getCurrentBlockTimestamp();\n\n return resultStr;\n }, [multicall]),\n );\n\n return useMemo(() => result, [result]);\n}\n","import { useWeb3React } from \"@web3-react/core\";\nimport { DEFAULT_CHAIN_ID, SUPPORTED_CHAINS } from \"constants/web3\";\nimport { useMemo } from \"react\";\n\nexport function useActiveChain(): number | undefined {\n const { chainId } = useWeb3React();\n\n return chainId ?? DEFAULT_CHAIN_ID;\n}\n\nexport function useSupportedActiveChain() {\n const chainId = useActiveChain();\n\n return useMemo(() => {\n if (!chainId) return undefined;\n\n return SUPPORTED_CHAINS.includes(chainId);\n }, [chainId, SUPPORTED_CHAINS]);\n}\n","import { useWeb3React } from \"@web3-react/core\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { BigNumber } from \"@icpswap/utils\";\nimport Web3 from \"web3\";\n\nexport function useETHBalance(reload?: boolean) {\n const { account } = useWeb3React();\n const [balance, setBalance] = useState(undefined);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n if (account) {\n setLoading(true);\n const web3 = new Web3(Web3.givenProvider);\n const balance = await web3.eth.getBalance(account);\n setBalance(new BigNumber(balance.toString()));\n setLoading(false);\n }\n }\n\n call();\n }, [account, reload]);\n\n return useMemo(() => ({ result: balance, loading }), [balance, loading]);\n}\n","import { useCallback } from \"react\";\nimport { useSupportedActiveChain } from \"hooks/web3/index\";\nimport { useCallsData, Call } from \"@icpswap/hooks\";\n\nexport function useWeb3CallsData(fn: Call, reload?: number | string | boolean) {\n const supportedActiveChain = useSupportedActiveChain();\n\n return useCallsData(\n useCallback(async () => {\n return await fn();\n }, [supportedActiveChain, fn]),\n reload,\n );\n}\n","import { useWeb3React } from \"@web3-react/core\";\nimport { useCallback } from \"react\";\nimport { BigNumber } from \"@icpswap/utils\";\nimport { useCallsData } from \"@icpswap/hooks\";\n\nimport { useERC20Contract } from \"./useContract\";\n\nexport function useERC20Balance(contractAddress: string | undefined, reload?: number) {\n const { account } = useWeb3React();\n const contract = useERC20Contract(contractAddress);\n\n return useCallsData(\n useCallback(async () => {\n if (!contract || !account) return undefined;\n const result = await contract.balanceOf(account);\n return new BigNumber(result.toString());\n }, [contract, account]),\n reload,\n );\n}\n","import useSwr from \"swr\";\nimport useSWRImmutable from \"swr/immutable\";\nimport Web3 from \"web3\";\n\nexport function useFetchBlockNumber(): number | undefined {\n const { data } = useSwr(\n \"ethBlockNumber\",\n async () => {\n const web3 = new Web3(Web3.givenProvider);\n const blockNumber = await web3.eth.getBlockNumber();\n return Number(blockNumber);\n },\n {\n refreshInterval: 3000,\n },\n );\n\n return data;\n}\n\nexport function useBlockNumber() {\n const { data } = useSWRImmutable(\"ethBlockNumber\");\n return data;\n}\n\nexport function useFetchFinalizedBlock(): number | undefined {\n const { data } = useSwr(\n \"ethFinalizedBlockNumber\",\n async () => {\n const web3 = new Web3(Web3.givenProvider);\n const block = await web3.eth.getBlock(\"finalized\");\n return Number(Number(block.number));\n },\n {\n refreshInterval: 3000,\n },\n );\n\n return data;\n}\n\nexport function useFinalizedBlockNumber() {\n const { data } = useSWRImmutable(\"ethFinalizedBlockNumber\");\n return data;\n}\n","import { ChainId, SUPPORTED_CHAINS, SupportedChainsType } from \"./chains\";\n\ntype AddressMap = { [chainId: number]: string };\n\ntype ChainAddresses = {\n v3CoreFactoryAddress: string;\n multicallAddress: string;\n quoterAddress: string;\n v3MigratorAddress?: string;\n nonfungiblePositionManagerAddress?: string;\n tickLensAddress?: string;\n swapRouter02Address?: string;\n v1MixedRouteQuoterAddress?: string;\n};\n\nconst DEFAULT_NETWORKS = [ChainId.MAINNET, ChainId.GOERLI, ChainId.SEPOLIA];\n\nfunction constructSameAddressMap(address: string, additionalNetworks: ChainId[] = []): AddressMap {\n return DEFAULT_NETWORKS.concat(additionalNetworks).reduce((memo, chainId) => {\n memo[chainId] = address;\n return memo;\n }, {});\n}\n\nexport const UNI_ADDRESSES: AddressMap = constructSameAddressMap(\"0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984\", [\n ChainId.OPTIMISM,\n ChainId.ARBITRUM_ONE,\n ChainId.POLYGON,\n ChainId.POLYGON_MUMBAI,\n ChainId.SEPOLIA,\n]);\n\nexport const UNISWAP_NFT_AIRDROP_CLAIM_ADDRESS = \"0x8B799381ac40b838BBA4131ffB26197C432AFe78\";\n\n/**\n * @deprecated use V2_FACTORY_ADDRESSES instead\n */\nexport const V2_FACTORY_ADDRESS = \"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\";\nexport const V2_FACTORY_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\",\n [ChainId.GOERLI]: \"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\",\n [ChainId.SEPOLIA]: \"0xB7f907f7A9eBC822a80BD25E224be42Ce0A698A0\",\n [ChainId.OPTIMISM]: \"0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf\",\n [ChainId.ARBITRUM_ONE]: \"0xf1D7CC64Fb4452F05c498126312eBE29f30Fbcf9\",\n [ChainId.AVALANCHE]: \"0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C\",\n [ChainId.BASE]: \"0x8909dc15e40173ff4699343b6eb8132c65e18ec6\",\n [ChainId.BNB]: \"0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6\",\n [ChainId.POLYGON]: \"0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C\",\n [ChainId.CELO]: \"0x79a530c8e2fA8748B7B40dd3629C0520c2cCf03f\",\n [ChainId.BLAST]: \"0x5C346464d33F90bABaf70dB6388507CC889C1070\",\n};\n/**\n * @deprecated use V2_ROUTER_ADDRESSES instead\n */\nexport const V2_ROUTER_ADDRESS = \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\";\nexport const V2_ROUTER_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\",\n [ChainId.GOERLI]: \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\",\n [ChainId.ARBITRUM_ONE]: \"0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24\",\n [ChainId.OPTIMISM]: \"0x4a7b5da61326a6379179b40d00f57e5bbdc962c2\",\n [ChainId.BASE]: \"0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24\",\n [ChainId.AVALANCHE]: \"0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24\",\n [ChainId.BNB]: \"0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24\",\n [ChainId.POLYGON]: \"0xedf6066a2b290c185783862c7f4776a2c8077ad1\",\n [ChainId.BLAST]: \"0xBB66Eb1c5e875933D44DAe661dbD80e5D9B03035\",\n};\n\n// Networks that share most of the same addresses i.e. Mainnet, Goerli, Optimism, Arbitrum, Polygon\nconst DEFAULT_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\n multicallAddress: \"0x1F98415757620B543A52E61c46B32eB19261F984\",\n quoterAddress: \"0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6\",\n v3MigratorAddress: \"0xA5644E29708357803b5A882D272c41cC0dF92B34\",\n nonfungiblePositionManagerAddress: \"0xC36442b4a4522E871399CD717aBDD847Ab11FE88\",\n};\nconst MAINNET_ADDRESSES: ChainAddresses = {\n ...DEFAULT_ADDRESSES,\n v1MixedRouteQuoterAddress: \"0x84E44095eeBfEC7793Cd7d5b57B7e401D7f1cA2E\",\n};\nconst GOERLI_ADDRESSES: ChainAddresses = {\n ...DEFAULT_ADDRESSES,\n v1MixedRouteQuoterAddress: \"0xBa60b6e6fF25488308789E6e0A65D838be34194e\",\n};\n\nconst OPTIMISM_ADDRESSES: ChainAddresses = DEFAULT_ADDRESSES;\nconst ARBITRUM_ONE_ADDRESSES: ChainAddresses = {\n ...DEFAULT_ADDRESSES,\n multicallAddress: \"0xadF885960B47eA2CD9B55E6DAc6B42b7Cb2806dB\",\n tickLensAddress: \"0xbfd8137f7d1516D3ea5cA83523914859ec47F573\",\n};\nconst POLYGON_ADDRESSES: ChainAddresses = DEFAULT_ADDRESSES;\n\n// celo v3 addresses\nconst CELO_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0xAfE208a311B21f13EF87E33A90049fC17A7acDEc\",\n multicallAddress: \"0x633987602DE5C4F337e3DbF265303A1080324204\",\n quoterAddress: \"0x82825d0554fA07f7FC52Ab63c961F330fdEFa8E8\",\n v3MigratorAddress: \"0x3cFd4d48EDfDCC53D3f173F596f621064614C582\",\n nonfungiblePositionManagerAddress: \"0x3d79EdAaBC0EaB6F08ED885C05Fc0B014290D95A\",\n tickLensAddress: \"0x5f115D9113F88e0a0Db1b5033D90D4a9690AcD3D\",\n};\n\n// BNB v3 addresses\nconst BNB_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7\",\n multicallAddress: \"0x963Df249eD09c358A4819E39d9Cd5736c3087184\",\n quoterAddress: \"0x78D78E420Da98ad378D7799bE8f4AF69033EB077\",\n v3MigratorAddress: \"0x32681814957e0C13117ddc0c2aba232b5c9e760f\",\n nonfungiblePositionManagerAddress: \"0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613\",\n tickLensAddress: \"0xD9270014D396281579760619CCf4c3af0501A47C\",\n swapRouter02Address: \"0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2\",\n};\n\n// optimism goerli addresses\nconst OPTIMISM_GOERLI_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0xB656dA17129e7EB733A557f4EBc57B76CFbB5d10\",\n multicallAddress: \"0x07F2D8a2a02251B62af965f22fC4744A5f96BCCd\",\n quoterAddress: \"0x9569CbA925c8ca2248772A9A4976A516743A246F\",\n v3MigratorAddress: \"0xf6c55fBe84B1C8c3283533c53F51bC32F5C7Aba8\",\n nonfungiblePositionManagerAddress: \"0x39Ca85Af2F383190cBf7d7c41ED9202D27426EF6\",\n tickLensAddress: \"0xe6140Bd164b63E8BfCfc40D5dF952f83e171758e\",\n};\n\n// optimism sepolia addresses\nconst OPTIMISM_SEPOLIA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x8CE191193D15ea94e11d327b4c7ad8bbE520f6aF\",\n multicallAddress: \"0x80e4e06841bb76AA9735E0448cB8d003C0EF009a\",\n quoterAddress: \"0x0FBEa6cf957d95ee9313490050F6A0DA68039404\",\n v3MigratorAddress: \"0xE7EcbAAaA54D007A00dbb6c1d2f150066D69dA07\",\n nonfungiblePositionManagerAddress: \"0xdA75cEf1C93078e8b736FCA5D5a30adb97C8957d\",\n tickLensAddress: \"0xCb7f54747F58F8944973cea5b8f4ac2209BadDC5\",\n swapRouter02Address: \"0x94cC0AaC535CCDB3C01d6787D6413C739ae12bc4\",\n};\n\n// arbitrum goerli v3 addresses\nconst ARBITRUM_GOERLI_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x4893376342d5D7b3e31d4184c08b265e5aB2A3f6\",\n multicallAddress: \"0x8260CB40247290317a4c062F3542622367F206Ee\",\n quoterAddress: \"0x1dd92b83591781D0C6d98d07391eea4b9a6008FA\",\n v3MigratorAddress: \"0xA815919D2584Ac3F76ea9CB62E6Fd40a43BCe0C3\",\n nonfungiblePositionManagerAddress: \"0x622e4726a167799826d1E1D150b076A7725f5D81\",\n tickLensAddress: \"0xb52429333da969a0C79a60930a4Bf0020E5D1DE8\",\n};\n\n// arbitrum sepolia v3 addresses\nconst ARBITRUM_SEPOLIA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x248AB79Bbb9bC29bB72f7Cd42F17e054Fc40188e\",\n multicallAddress: \"0x2B718b475e385eD29F56775a66aAB1F5cC6B2A0A\",\n quoterAddress: \"0x2779a0CC1c3e0E44D2542EC3e79e3864Ae93Ef0B\",\n v3MigratorAddress: \"0x398f43ef2c67B941147157DA1c5a868E906E043D\",\n nonfungiblePositionManagerAddress: \"0x6b2937Bde17889EDCf8fbD8dE31C3C2a70Bc4d65\",\n tickLensAddress: \"0x0fd18587734e5C2dcE2dccDcC7DD1EC89ba557d9\",\n swapRouter02Address: \"0x101F443B4d1b059569D643917553c771E1b9663E\",\n};\n\n// sepolia v3 addresses\nconst SEPOLIA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x0227628f3F023bb0B980b67D528571c95c6DaC1c\",\n multicallAddress: \"0xD7F33bCdb21b359c8ee6F0251d30E94832baAd07\",\n quoterAddress: \"0xEd1f6473345F45b75F8179591dd5bA1888cf2FB3\",\n v3MigratorAddress: \"0x729004182cF005CEC8Bd85df140094b6aCbe8b15\",\n nonfungiblePositionManagerAddress: \"0x1238536071E1c677A632429e3655c799b22cDA52\",\n tickLensAddress: \"0xd7f33bcdb21b359c8ee6f0251d30e94832baad07\",\n swapRouter02Address: \"0x3bFA4769FB09eefC5a80d6E87c3B9C650f7Ae48E\",\n};\n\n// Avalanche v3 addresses\nconst AVALANCHE_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x740b1c1de25031C31FF4fC9A62f554A55cdC1baD\",\n multicallAddress: \"0x0139141Cd4Ee88dF3Cdb65881D411bAE271Ef0C2\",\n quoterAddress: \"0xbe0F5544EC67e9B3b2D979aaA43f18Fd87E6257F\",\n v3MigratorAddress: \"0x44f5f1f5E452ea8d29C890E8F6e893fC0f1f0f97\",\n nonfungiblePositionManagerAddress: \"0x655C406EBFa14EE2006250925e54ec43AD184f8B\",\n tickLensAddress: \"0xEB9fFC8bf81b4fFd11fb6A63a6B0f098c6e21950\",\n swapRouter02Address: \"0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE\",\n};\n\nconst BASE_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x33128a8fC17869897dcE68Ed026d694621f6FDfD\",\n multicallAddress: \"0x091e99cb1C49331a94dD62755D168E941AbD0693\",\n quoterAddress: \"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a\",\n v3MigratorAddress: \"0x23cF10b1ee3AdfCA73B0eF17C07F7577e7ACd2d7\",\n nonfungiblePositionManagerAddress: \"0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1\",\n tickLensAddress: \"0x0CdeE061c75D43c82520eD998C23ac2991c9ac6d\",\n swapRouter02Address: \"0x2626664c2603336E57B271c5C0b26F421741e481\",\n};\n\n// Base Goerli v3 addresses\nconst BASE_GOERLI_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x9323c1d6D800ed51Bd7C6B216cfBec678B7d0BC2\",\n multicallAddress: \"0xB206027a9E0E13F05eBEFa5D2402Bab3eA716439\",\n quoterAddress: \"0xedf539058e28E5937dAef3f69cEd0b25fbE66Ae9\",\n v3MigratorAddress: \"0x3efe5d02a04b7351D671Db7008ec6eBA9AD9e3aE\",\n nonfungiblePositionManagerAddress: \"0x3c61369ef0D1D2AFa70d8feC2F31C5D6Ce134F30\",\n tickLensAddress: \"0x1acB873Ee909D0c98adB18e4474943249F931b92\",\n swapRouter02Address: \"0x8357227D4eDc78991Db6FDB9bD6ADE250536dE1d\",\n};\n\nconst ZORA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x7145F8aeef1f6510E92164038E1B6F8cB2c42Cbb\",\n multicallAddress: \"0xA51c76bEE6746cB487a7e9312E43e2b8f4A37C15\",\n quoterAddress: \"0x11867e1b3348F3ce4FcC170BC5af3d23E07E64Df\",\n v3MigratorAddress: \"0x048352d8dCF13686982C799da63fA6426a9D0b60\",\n nonfungiblePositionManagerAddress: \"0xbC91e8DfA3fF18De43853372A3d7dfe585137D78\",\n tickLensAddress: \"0x209AAda09D74Ad3B8D0E92910Eaf85D2357e3044\",\n swapRouter02Address: \"0x7De04c96BE5159c3b5CeffC82aa176dc81281557\",\n};\n\nconst ZORA_SEPOLIA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x4324A677D74764f46f33ED447964252441aA8Db6\",\n multicallAddress: \"0xA1E7e3A69671C4494EC59Dbd442de930a93F911A\",\n quoterAddress: \"0xC195976fEF0985886E37036E2DF62bF371E12Df0\",\n v3MigratorAddress: \"0x65ef259b31bf1d977c37e9434658694267674897\",\n nonfungiblePositionManagerAddress: \"0xB8458EaAe43292e3c1F7994EFd016bd653d23c20\",\n tickLensAddress: \"0x23C0F71877a1Fc4e20A78018f9831365c85f3064\",\n};\n\nconst ROOTSTOCK_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0xaF37EC98A00FD63689CF3060BF3B6784E00caD82\",\n multicallAddress: \"0x996a9858cDfa45Ad68E47c9A30a7201E29c6a386\",\n quoterAddress: \"0xb51727c996C68E60F598A923a5006853cd2fEB31\",\n v3MigratorAddress: \"0x16678977CA4ec3DAD5efc7b15780295FE5f56162\",\n nonfungiblePositionManagerAddress: \"0x9d9386c042F194B460Ec424a1e57ACDE25f5C4b1\",\n tickLensAddress: \"0x55B9dF5bF68ADe972191a91980459f48ecA16afC\",\n swapRouter02Address: \"0x0B14ff67f0014046b4b99057Aec4509640b3947A\",\n};\n\nconst BLAST_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x792edAdE80af5fC680d96a2eD80A44247D2Cf6Fd\",\n multicallAddress: \"0xdC7f370de7631cE9e2c2e1DCDA6B3B5744Cf4705\",\n quoterAddress: \"0x6Cdcd65e03c1CEc3730AeeCd45bc140D57A25C77\",\n v3MigratorAddress: \"0x15CA7043CD84C5D21Ae76Ba0A1A967d42c40ecE0\",\n nonfungiblePositionManagerAddress: \"0xB218e4f7cF0533d4696fDfC419A0023D33345F28\",\n tickLensAddress: \"0x2E95185bCdD928a3e984B7e2D6560Ab1b17d7274\",\n swapRouter02Address: \"0x549FEB8c9bd4c12Ad2AB27022dA12492aC452B66\",\n};\n\nexport const CHAIN_TO_ADDRESSES_MAP: Record = {\n [ChainId.MAINNET]: MAINNET_ADDRESSES,\n [ChainId.OPTIMISM]: OPTIMISM_ADDRESSES,\n [ChainId.ARBITRUM_ONE]: ARBITRUM_ONE_ADDRESSES,\n [ChainId.POLYGON]: POLYGON_ADDRESSES,\n [ChainId.POLYGON_MUMBAI]: POLYGON_ADDRESSES,\n [ChainId.GOERLI]: GOERLI_ADDRESSES,\n [ChainId.CELO]: CELO_ADDRESSES,\n [ChainId.CELO_ALFAJORES]: CELO_ADDRESSES,\n [ChainId.BNB]: BNB_ADDRESSES,\n [ChainId.OPTIMISM_GOERLI]: OPTIMISM_GOERLI_ADDRESSES,\n [ChainId.OPTIMISM_SEPOLIA]: OPTIMISM_SEPOLIA_ADDRESSES,\n [ChainId.ARBITRUM_GOERLI]: ARBITRUM_GOERLI_ADDRESSES,\n [ChainId.ARBITRUM_SEPOLIA]: ARBITRUM_SEPOLIA_ADDRESSES,\n [ChainId.SEPOLIA]: SEPOLIA_ADDRESSES,\n [ChainId.AVALANCHE]: AVALANCHE_ADDRESSES,\n [ChainId.BASE]: BASE_ADDRESSES,\n [ChainId.BASE_GOERLI]: BASE_GOERLI_ADDRESSES,\n [ChainId.ZORA]: ZORA_ADDRESSES,\n [ChainId.ZORA_SEPOLIA]: ZORA_SEPOLIA_ADDRESSES,\n [ChainId.ROOTSTOCK]: ROOTSTOCK_ADDRESSES,\n [ChainId.BLAST]: BLAST_ADDRESSES,\n};\n\n/* V3 Contract Addresses */\nexport const V3_CORE_FACTORY_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n memo[chainId] = CHAIN_TO_ADDRESSES_MAP[chainId].v3CoreFactoryAddress;\n return memo;\n }, {}),\n};\n\nexport const V3_MIGRATOR_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n const v3MigratorAddress = CHAIN_TO_ADDRESSES_MAP[chainId].v3MigratorAddress;\n if (v3MigratorAddress) {\n memo[chainId] = v3MigratorAddress;\n }\n return memo;\n }, {}),\n};\n\nexport const MULTICALL_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n memo[chainId] = CHAIN_TO_ADDRESSES_MAP[chainId].multicallAddress;\n return memo;\n }, {}),\n};\n\n/**\n * The oldest V0 governance address\n */\nexport const GOVERNANCE_ALPHA_V0_ADDRESSES: AddressMap = constructSameAddressMap(\n \"0x5e4be8Bc9637f0EAA1A755019e06A68ce081D58F\",\n);\n/**\n * The older V1 governance address\n */\nexport const GOVERNANCE_ALPHA_V1_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0xC4e172459f1E7939D522503B81AFAaC1014CE6F6\",\n};\n/**\n * The latest governor bravo that is currently admin of timelock\n */\nexport const GOVERNANCE_BRAVO_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0x408ED6354d4973f66138C91495F2f2FCbd8724C3\",\n};\n\nexport const TIMELOCK_ADDRESSES: AddressMap = constructSameAddressMap(\"0x1a9C8182C09F50C8318d769245beA52c32BE35BC\");\n\nexport const MERKLE_DISTRIBUTOR_ADDRESS: AddressMap = {\n [ChainId.MAINNET]: \"0x090D4613473dEE047c3f2706764f49E0821D256e\",\n};\n\nexport const ARGENT_WALLET_DETECTOR_ADDRESS: AddressMap = {\n [ChainId.MAINNET]: \"0xeca4B0bDBf7c55E9b7925919d03CbF8Dc82537E8\",\n};\n\nexport const QUOTER_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n memo[chainId] = CHAIN_TO_ADDRESSES_MAP[chainId].quoterAddress;\n return memo;\n }, {}),\n};\n\nexport const NONFUNGIBLE_POSITION_MANAGER_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n const nonfungiblePositionManagerAddress = CHAIN_TO_ADDRESSES_MAP[chainId].nonfungiblePositionManagerAddress;\n if (nonfungiblePositionManagerAddress) {\n memo[chainId] = nonfungiblePositionManagerAddress;\n }\n return memo;\n }, {}),\n};\n\nexport const ENS_REGISTRAR_ADDRESSES: AddressMap = {\n ...constructSameAddressMap(\"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\"),\n};\n\nexport const SOCKS_CONTROLLER_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0x65770b5283117639760beA3F867b69b3697a91dd\",\n};\n\nexport const TICK_LENS_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n const tickLensAddress = CHAIN_TO_ADDRESSES_MAP[chainId].tickLensAddress;\n if (tickLensAddress) {\n memo[chainId] = tickLensAddress;\n }\n return memo;\n }, {}),\n};\n\nexport const MIXED_ROUTE_QUOTER_V1_ADDRESSES: AddressMap = SUPPORTED_CHAINS.reduce((memo, chainId) => {\n const v1MixedRouteQuoterAddress = CHAIN_TO_ADDRESSES_MAP[chainId].v1MixedRouteQuoterAddress;\n if (v1MixedRouteQuoterAddress) {\n memo[chainId] = v1MixedRouteQuoterAddress;\n }\n return memo;\n}, {});\n\nexport const SWAP_ROUTER_02_ADDRESSES = (chainId: number) => {\n if (SUPPORTED_CHAINS.includes(chainId)) {\n const id = chainId as SupportedChainsType;\n return CHAIN_TO_ADDRESSES_MAP[id].swapRouter02Address ?? \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\";\n }\n return \"\";\n};\n","import { Web3Provider } from \"@ethersproject/providers\";\nimport type { Client, Transport, Chain } from \"viem\";\nimport { useMemo } from \"react\";\nimport { useClient } from \"wagmi\";\nimport { mainnet } from \"wagmi/chains\";\n\nconst providers = new WeakMap();\n\nexport function clientToWeb3js(client?: Client) {\n if (!client) return undefined;\n\n const { transport } = client;\n\n const provider = new Web3Provider(transport, mainnet.id);\n providers.set(client, provider);\n return provider;\n}\n\n/** Hook to convert a connected viem Client to an ethers.js Provider. */\nexport function useEthersWeb3Provider({ chainId = 1 }: { chainId?: number } = {}) {\n const client = useClient({ chainId });\n\n return useMemo(() => clientToWeb3js(client), [chainId, client]);\n}\n","import { Contract } from \"@ethersproject/contracts\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { chain, SUPPORTED_CHAINS } from \"constants/web3\";\nimport { useMemo } from \"react\";\nimport { getContract } from \"utils/web3/index\";\nimport { MULTICALL_ADDRESSES } from \"@icpswap/constants\";\nimport { Null } from \"@icpswap/types\";\n\nimport type { UniswapInterfaceMulticall, ERC20, EthHelper } from \"abis/types\";\nimport UniswapInterfaceMulticallJson from \"abis/UniswapInterfaceMulticall.json\";\nimport EthHelperABI from \"abis/EthHelper.json\";\nimport ERC20ABI from \"abis/ERC20.json\";\n\nimport { useEthersWeb3Provider } from \"./useEthersProvider\";\n\nconst { abi: MulticallABI } = UniswapInterfaceMulticallJson;\n\n// returns null on errors\nexport function useContract(\n addressOrAddressMap: string | { [chainId: number]: string } | Null,\n ABI: any,\n withSignerIfPossible = true,\n): T | null {\n const { provider, account } = useWeb3React();\n const ethersProvider = useEthersWeb3Provider();\n\n return useMemo(() => {\n if (!addressOrAddressMap || !ABI) return null;\n let address: string | undefined;\n if (typeof addressOrAddressMap === \"string\") address = addressOrAddressMap;\n else address = addressOrAddressMap[chain];\n if (!address) return null;\n\n try {\n return getContract(\n address,\n ABI,\n provider && provider?.network?.chainId && SUPPORTED_CHAINS.includes(provider?.network?.chainId)\n ? provider\n : ethersProvider,\n withSignerIfPossible && account ? account : undefined,\n );\n } catch (error) {\n console.error(\"Failed to get contract\", error);\n return null;\n }\n }, [addressOrAddressMap, ABI, provider, withSignerIfPossible, account]) as T;\n}\n\nexport function useEthMinterHelperContract(address: string | Null, withSignerIfPossible?: boolean) {\n return useContract(address, EthHelperABI, withSignerIfPossible);\n}\n\nexport function useERC20Contract(contract: string | undefined, withSignerIfPossible?: boolean) {\n return useContract(contract, ERC20ABI, withSignerIfPossible);\n}\n\nexport function useInterfaceMulticall() {\n const MULTICALL_ADDRESSE = MULTICALL_ADDRESSES[chain];\n\n return useContract(MULTICALL_ADDRESSE, MulticallABI, false);\n}\n","import { useCallsData } from \"@icpswap/hooks\";\nimport { ERC20Token } from \"@icpswap/swap-sdk\";\nimport { Null } from \"@icpswap/types\";\nimport { useERC20Contract } from \"hooks/web3/useContract\";\nimport { useCallback, useMemo } from \"react\";\n\nexport interface UseTokenAllowanceArgs {\n tokenAllowance?: string;\n isSyncing: boolean;\n}\n\nexport function useERC20TokenAllowance(\n token?: ERC20Token | Null,\n owner?: string | Null,\n spender?: string | Null,\n reload?: number | boolean,\n): UseTokenAllowanceArgs {\n const contract = useERC20Contract(token?.address, false);\n\n // If there is no allowance yet, re-check next observed block.\n // This guarantees that the tokenAllowance is marked isSyncing upon approval and updated upon being synced.\n // const [blocksPerFetch, setBlocksPerFetch] = useState<1>();\n const { result, loading } = useCallsData(\n useCallback(async () => {\n if (!owner || !spender) return undefined;\n const allowance = await contract?.allowance(owner, spender);\n return allowance?.toString();\n }, [owner, spender, contract]),\n reload,\n );\n\n const rawAmount = result?.toString(); // convert to a string before using in a hook, to avoid spurious rerenders\n const allowance = useMemo(() => (token && rawAmount ? rawAmount : undefined), [token, rawAmount]);\n\n return useMemo(() => ({ tokenAllowance: allowance, isSyncing: loading }), [allowance, loading]);\n}\n","/* eslint-disable no-else-return */\nimport { MaxUint256 } from \"@ethersproject/constants\";\nimport type { TransactionResponse } from \"@ethersproject/providers\";\nimport { ERC20Token } from \"@icpswap/swap-sdk\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { useERC20Contract } from \"hooks/web3/useContract\";\nimport { useCallback, useMemo } from \"react\";\nimport { calculateGasMargin } from \"utils/web3/calculateGasMargin\";\nimport { useERC20TokenAllowance } from \"hooks/web3/useERC20Allowance\";\nimport BigNumber from \"bignumber.js\";\nimport { Null } from \"@icpswap/types\";\n\nexport enum ApprovalState {\n UNKNOWN = \"UNKNOWN\",\n NOT_APPROVED = \"NOT_APPROVED\",\n PENDING = \"PENDING\",\n APPROVED = \"APPROVED\",\n}\n\nfunction useApprovalStateForSpender(\n amountToApprove: string | Null,\n token: ERC20Token | Null,\n spender: string | Null,\n useIsPendingApproval: (token?: ERC20Token | Null, spender?: string | Null) => boolean,\n): ApprovalState {\n const { account } = useWeb3React();\n\n const pendingApproval = useIsPendingApproval(token, spender);\n const { tokenAllowance } = useERC20TokenAllowance(token, account ?? undefined, spender, pendingApproval);\n\n return useMemo(() => {\n if (!amountToApprove || !spender) return ApprovalState.UNKNOWN;\n\n // we might not have enough data to know whether or not we need to approve\n if (!tokenAllowance) return ApprovalState.UNKNOWN;\n\n // amountToApprove will be defined if tokenAllowance is\n return new BigNumber(tokenAllowance).isLessThan(amountToApprove)\n ? pendingApproval\n ? ApprovalState.PENDING\n : ApprovalState.NOT_APPROVED\n : ApprovalState.APPROVED;\n }, [amountToApprove, pendingApproval, spender, tokenAllowance]);\n}\n\nexport function useApproval(\n amountToApprove: string | Null,\n token: ERC20Token | Null,\n spender: string | Null,\n useIsPendingApproval: (token?: ERC20Token | Null, spender?: string | Null) => boolean,\n): [\n ApprovalState,\n () => Promise<\n | { response: TransactionResponse; tokenAddress: string; spenderAddress: string; amount: string }\n | undefined\n | {\n error: string;\n }\n >,\n] {\n const { chainId } = useWeb3React();\n\n // check the current approval status\n const approvalState = useApprovalStateForSpender(amountToApprove, token, spender, useIsPendingApproval);\n\n const tokenContract = useERC20Contract(token?.address);\n\n const approve = useCallback(async () => {\n function logFailure(error: Error | string) {\n console.warn(`${token?.symbol || \"Token\"} approval failed:`, error);\n return undefined;\n }\n\n // Bail early if there is an issue.\n if (approvalState !== ApprovalState.NOT_APPROVED) {\n return logFailure(\"approve was called unnecessarily\");\n } else if (!chainId) {\n return logFailure(\"no chainId\");\n } else if (!token) {\n return logFailure(\"no token\");\n } else if (!tokenContract) {\n return logFailure(\"tokenContract is null\");\n } else if (!amountToApprove) {\n return logFailure(\"missing amount to approve\");\n } else if (!spender) {\n return logFailure(\"no spender\");\n }\n\n let useExact = false;\n const estimatedGas = await tokenContract.estimateGas.approve(spender, MaxUint256).catch(() => {\n // general fallback for tokens which restrict approval amounts\n useExact = true;\n return tokenContract.estimateGas.approve(spender, amountToApprove);\n });\n\n return tokenContract\n .approve(spender, useExact ? amountToApprove : MaxUint256, {\n gasLimit: calculateGasMargin(estimatedGas),\n })\n .then((response) => {\n return {\n response,\n tokenAddress: token.address,\n spenderAddress: spender,\n amount: amountToApprove,\n };\n })\n .catch((error: Error) => {\n logFailure(error);\n\n return {\n error: String(error),\n };\n });\n }, [approvalState, token, tokenContract, amountToApprove, spender, chainId]);\n\n return [approvalState, approve];\n}\n","import { ERC20Token } from \"@icpswap/swap-sdk\";\nimport { useCallback, useMemo } from \"react\";\nimport { useERC20Contract, useSupportedActiveChain, useWeb3CallsData, useActiveChain } from \"hooks/web3/index\";\n\nexport function useTokenName(tokenAddress: string | undefined) {\n const contract = useERC20Contract(tokenAddress, false);\n\n return useWeb3CallsData(\n useCallback(async () => {\n if (!tokenAddress || !contract) return undefined;\n return await contract.name();\n }, [tokenAddress, contract]),\n );\n}\n\nexport function useTokenSymbol(tokenAddress: string | undefined) {\n const contract = useERC20Contract(tokenAddress, false);\n\n return useWeb3CallsData(\n useCallback(async () => {\n if (!tokenAddress || !contract) return undefined;\n return await contract.symbol();\n }, [tokenAddress, contract]),\n );\n}\n\nexport function useTokenDecimals(tokenAddress: string | undefined) {\n const contract = useERC20Contract(tokenAddress, false);\n\n return useWeb3CallsData(\n useCallback(async () => {\n if (!tokenAddress || !contract) return undefined;\n return await contract.decimals();\n }, [tokenAddress, contract]),\n );\n}\n\nexport function useTokenLogo(tokenAddress: string | undefined) {\n return useWeb3CallsData(\n useCallback(async () => {\n if (!tokenAddress) return undefined;\n return `https://raw.githubusercontent.com/Uniswap/assets/master/blockchains/ethereum/assets/${tokenAddress}/logo.png`;\n }, [tokenAddress]),\n );\n}\n\n/**\n * Returns a Token from the tokenAddress.\n * Returns null if token is loading or null was passed.\n * Returns undefined if tokenAddress is invalid or token does not exist.\n */\nexport function useTokenFromActiveNetwork(tokenAddress: string | undefined): ERC20Token | undefined {\n const chainId = useActiveChain();\n const supportedActiveChain = useSupportedActiveChain();\n\n // TODO (WEB-1709): reduce this to one RPC call instead of 5\n // TODO: Fix redux-multicall so that these values do not reload.\n const { result: name } = useTokenName(tokenAddress);\n const { result: symbol } = useTokenSymbol(tokenAddress);\n const { result: decimals } = useTokenDecimals(tokenAddress);\n const { result: logo } = useTokenLogo(tokenAddress);\n\n return useMemo(() => {\n // If the token is on another chain, we cannot fetch it on-chain, and it is invalid.\n if (typeof tokenAddress !== \"string\" || !tokenAddress) return undefined;\n\n if ((!decimals && decimals !== 0) || !symbol || !name) {\n return undefined;\n }\n\n return new ERC20Token({ address: tokenAddress, decimals, name, symbol, logo });\n }, [tokenAddress, chainId, name, symbol, decimals, logo, supportedActiveChain]);\n}\n","export class MissingI18nInterpolationError extends Error {}\n","/* eslint-disable global-require */\n/* eslint-disable @typescript-eslint/no-var-requires */\nimport \"i18next\";\n\nconst en = require(\"../source/en-US.json\") as Record;\n\nconst resources = {\n translation: en,\n} as const;\n\ndeclare module \"i18next\" {\n interface CustomTypeOptions {\n resources: typeof resources;\n }\n}\n","import i18n from \"i18next\";\nimport { initReactI18next } from \"react-i18next\";\n\nimport enUS from \"./locales/source/en-US.json\";\n\nimport { MissingI18nInterpolationError } from \"./shared\";\n\nimport \"./locales/@types/i18next\";\n\nconst resources = {\n \"en-US\": { translation: enUS },\n};\n\nconst defaultNS = \"translation\";\n\ni18n\n .use(initReactI18next)\n .init({\n defaultNS,\n lng: \"en-US\",\n fallbackLng: \"en-US\",\n resources,\n interpolation: {\n escapeValue: false, // react already safes from xss\n },\n react: {\n transSupportBasicHtmlNodes: false, // disabling since this breaks for mobile\n },\n missingInterpolationHandler: (text) => {\n console.error(new MissingI18nInterpolationError(`Missing i18n interpolation value: ${text}`), {\n tags: {\n file: \"i18n.ts\",\n function: \"init\",\n },\n });\n return \"\"; // Using empty string for missing interpolation\n },\n })\n .catch(() => undefined);\n\ni18n.on(\"missingKey\", (_lngs, _ns, key, _res) => {\n console.error(new Error(`Missing i18n string key ${key} for language ${i18n.language}`), {\n tags: {\n file: \"i18n.ts\",\n function: \"onMissingKey\",\n },\n });\n});\n","/* eslint-disable global-require */\n\nimport i18n from \"i18next\";\n\n// note: not using isInterface here for tree shaking\nif (!process.env.REACT_APP_IS_INTERFACE) {\n require(\"./i18n-setup\");\n}\n\nexport { changeLanguage } from \"./changeLanguage\";\n\nexport default i18n;\n","import i18n from \"./index\";\n\nexport type Locals = {\n [key: string]: string;\n};\n\nexport const TokenLocales: Locals = {\n insufficient_cycles_balance: i18n.t`Insufficient cycles balance`,\n invalid_value: i18n.t`Invalid value`,\n has_been_initialized: i18n.t`Has been initialized`,\n no_sufficient_balance: i18n.t`Insufficient balance`,\n unsupported_operator: i18n.t(\"service.token.unsupported.operator\"),\n no_balance: i18n.t`Insufficient balance`,\n no_enough_balance: i18n.t`Insufficient balance`,\n permission_deined: i18n.t`Permission denied`,\n not_mint_token_list: i18n.t`You are not in the whitelist`,\n token_exists: i18n.t`Token exists`,\n invaild_token_symbol: i18n.t`Invalid token symbol`,\n insufficient_ics_balance: i18n.t(\"common.error.insufficient.balance.symbol\", { symbol: \"ics\" }),\n mint_token_error: i18n.t`Mint token error`,\n InsufficientBalance: i18n.t`Insufficient balance`,\n handling_fee_error: i18n.t`Insufficient balance`,\n};\n\nexport const SwapLocales: Locals = {\n \"mint liquidity failed\": i18n.t`Failed to mint liquidity`,\n \"collect failed\": i18n.t`Failed to Collect`,\n \"burn failed\": i18n.t`Failed to burn`,\n \"create pool task is busy, please try again later\": i18n.t`Create pool task is busy, please try again later`,\n \"token amount should be more than triple the transfer fee\": i18n.t`Token amount should be more than triple the transfer fee`,\n \"position can not be burned if not cleared\": i18n.t`Position can not be burned if not cleared`,\n \"high price impact\": i18n.t(\"swap.high.impact\"),\n};\n\nexport const NFTLocals: Locals = {\n NFT_claim_paused: i18n.t`The claim function is not open now. Stay tuned`,\n NFT_claim_email_code_error: i18n.t`Failed to claim. Please check your email or airdrop redemption code`,\n NFT_was_claimed: i18n.t(\"service.nft.claimed\"),\n NFT_claim_exceeded: i18n.t(\"service.nft.reached.claiming\"),\n NFT_token_not_exist: i18n.t`The claiming NFT tokenId does not exist`,\n \"Insufficient ICP balance\": i18n.t`Insufficient WICP balance`,\n \"exceeded max supply\": i18n.t`Exceed the limit of supply`,\n permission_denied: i18n.t`Permission denied`,\n \"Canister not found\": i18n.t`Can'i18n.t not find this canister`,\n \"Check collection name or creator\": i18n.t`Invalid collection name or creator`,\n \"NFTCanisterController insufficient cycles balance\": i18n.t`Insufficient cycles balance`,\n \"Exceeded max supply\": i18n.t`Exceeded max supply`,\n \"Must use amount of 1\": i18n.t`Must use amount of 1`,\n \"Without authorization\": i18n.t`Without authorization`,\n \"Invalid owner\": i18n.t(\"service.nft.invalid.owner\"),\n \"Invalid token\": i18n.t`Invalid token`,\n can_not_find_token: i18n.t`Can'i18n.t not find this token`,\n \"Order not found\": i18n.t`Order not found`,\n \"Trading stoped\": i18n.t`Trading was stopped`,\n \"Request error\": i18n.t`Request error`,\n \"NFT royalties are too high\": i18n.t`NFT royalties are too high`,\n \"Please complete the authorization operation\": i18n.t`Please complete the authorization operation`,\n \"Order is locked\": i18n.t`Order is locked`,\n \"Trade faild\": i18n.t`Failed to Trade`,\n \"Operation failed\": i18n.t`Operation failed`,\n \"Tx hash is not exist\": i18n.t`Tx hash is not exist`,\n \"Tx fee settle error\": i18n.t`Tx fee settle error`,\n \"Royalties fee settle error\": i18n.t`Royalties fee settle error`,\n \"Transfer wicp to seller error\": i18n.t(\"service.nft.transfer.seller\"),\n \"FullMath illegal result\": i18n.t`FullMath illegal result`,\n \"Buyer and seller are the same\": i18n.t`Buyer and seller are the same`,\n \"Operation failed e2\": i18n.t`Operation failed e2`,\n \"Operation failed e1\": i18n.t`Operation failed e1`,\n \"NFT transfer for the market failed\": i18n.t`Failed to transfer NFT for the market`,\n \"Order does not exist\": i18n.t`Order does not exist`,\n};\n\nexport const StakingLocals: Locals = {\n \"ward amount must be positive\": i18n.t`Reward amount must be positive`,\n \"The start time must be now or in the future\": i18n.t`The start time must be now or in the future`,\n \"The start time must be recent\": i18n.t(\"service.stake.start.time\"),\n \"The start time must be earlier than the end time\": i18n.t`The start time must be earlier than the end time`,\n \"The incentive duration is too long\": i18n.t`The incentive duration is too long`,\n \"An error occurred during the reward token transfer\": i18n.t`An error occurred during the reward token transfer`,\n \"The creator does not have permission to use this feature\": i18n.t`The creator does not have permission to use this feature`,\n \"You can'i18n.t end the incentive pool because there are still staking users\": i18n.t`You can'i18n.t end the incentive pool because there are still staking users`,\n \"The incentive pool cannot be terminated before the end time\": i18n.t`The incentive pool cannot be terminated before the end time`,\n \"You have not available refund\": i18n.t`You have not available refund`,\n \"The incentive pool cannot be terminated because there are staked NFTs in the incentive pool\": i18n.t`The incentive pool cannot be terminated because there are staked NFTs in the incentive pool`,\n \"The position(LP) NFT you staked is incorrect and does not match the current incentive pool\": i18n.t`The position(LP) NFT you staked is incorrect and does not match the current incentive pool`,\n \"Incentive is closure\": i18n.t`Incentive pool is closure`,\n \"The incentive pool has not started\": i18n.t`The incentive pool has not started`,\n \"Cannot endincentive while depositsMap are staked\": i18n.t`Cannot endincentive while epositsMap are staked`,\n \"The incentive pool doesn'i18n.t exist\": i18n.t`The incentive pool doesn'i18n.t exist`,\n \"You may not stake the same NFT more than once\": i18n.t`You may not stake the same NFT more than once`,\n \"NFT you staked is not you\": i18n.t`NFT you staked is not you`,\n \"You cannot withdraw to staker the Position(LP) NFT\": i18n.t`You cannot withdraw to staker the Position(LP) NFT`,\n \"Only position(LP) nft owners can withdraw them before the end of the incentive pool\": i18n.t`Only position(LP) nft owners can withdraw them before the end of the incentive pool`,\n \"You withdrawed a position(LP) NFT of no liquidity\": i18n.t`You withdrew a position(LP) NFT of no liquidity`,\n \"Error in transferring NFT, please change your account and try again\": i18n.t(\"service.nft.transfer\"),\n \"Error in withdrawing, please change your account and try again\": i18n.t`Error in withdrawing, please change your account and try again`,\n \"The position(LP) NFT has not staked\": i18n.t`The position(LP) NFT has not staked`,\n \"Created successfully\": i18n.t`Created successfully`,\n \"End the incentive pool successfully\": i18n.t`Ended the incentive pool successfully`,\n \"Staked successfully\": i18n.t`Staked successfully`,\n \"Deposited Successfully\": i18n.t`Deposited Successfully`,\n \"Withdrew Successfully\": i18n.t(\"common.withdraw.success\"),\n \"Harvest successfully\": i18n.t`Harvested successfully`,\n \"Harvest Failurefully\": i18n.t`Failed to harvest`,\n \"StartTime must be now or in the future\": i18n.t(\"service.stake.start_time\"),\n \"StartTime too far intoFuture\": i18n.t`StartTime too far intoFuture`,\n \"StartTime must be before end time\": i18n.t`StartTime must be before end time`,\n \"Incentive duration is too long\": i18n.t`Incentive duration is too long`,\n \"A minimum of 1000 Tokens are required to create a pool\": i18n.t`A minimum of 1000 Tokens are required to create a pool`,\n \"Create Storage canister Failurefully\": i18n.t(\"service.stake.create.storage.canister\"),\n \"Create SwapStaker Canister Failurefully\": i18n.t`Failed to create SwapStaker canister`,\n \"Adapter metadata query error\": i18n.t`Adapter metadata query error`,\n \"Create SingleSmartChefStaker Successfully\": i18n.t`Created SingleSmartChefStaker successfully`,\n \"The amount of withdrawal is less than the staking token transfer fee\": i18n.t`The amount of withdrawal is less than the staking token transfer fee`,\n \"The amount of deposit is less than the staking token transfer fee\": i18n.t(\"service.stake.less.than.fee\"),\n \"The withdrawal task is busy, and please try again later\": i18n.t`The withdrawal task is busy, and please try again later`,\n \"The amount of withdrawal can’t be 0\": i18n.t`The amount of withdrawal can’t be 0`,\n \"The amount of deposit can’t be 0\": i18n.t`The amount of deposit can’t be 0`,\n \"The deposit task is busy, and please try again later\": i18n.t(\"service.stake.deposit.busy\"),\n \"The harvest task is busy, and please try again later\": i18n.t`The harvest task is busy, and please try again later`,\n};\n\nexport const WICPLocales: Locals = {\n Unauthorized: i18n.t`Unauthorized`,\n error_to_address: i18n.t`Invalid To Address`,\n amount_too_small: i18n.t`Requested amount is too small`,\n used_block_height: i18n.t(\"service.wrap.used.block\"),\n block_error: i18n.t(\"wrap.error.invalid.block\"),\n insufficient_funds: i18n.t`Insufficient funds`,\n InsufficientBalance: i18n.t`Insufficient balance`,\n unexpected_error: \"Unexpected error\",\n};\n\nexport const VoteMessages: Locals = {\n \"Proposal has no voting rights allocated\": i18n.t(\"service.vote.not.voting\"),\n};\n\nexport const XTCMessages: Locals = {\n InsufficientBalance: i18n.t`Insufficient balance`,\n InvalidTokenContract: i18n.t`Invalid token contract`,\n NotSufficientLiquidity: i18n.t`Insufficient liquidity`,\n};\n\nexport const ClaimMessages: Locals = {\n \"Your claim quota wasn't found\": i18n.t`Sorry, this address is not eligible to claim`,\n};\n\n// This is a map of message and it's locale id\nexport const MessageMaps: Locals = {\n ...NFTLocals,\n ...TokenLocales,\n ...WICPLocales,\n ...StakingLocals,\n ...SwapLocales,\n ...ClaimMessages,\n ...XTCMessages,\n ...VoteMessages,\n};\n\nexport const getLocaleMessage = (message: string): string => {\n return MessageMaps[message] ?? message;\n};\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-console */\n\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://cra.link/PWA.\",\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (response.status === 404 || (contentType != null && contentType.indexOf(\"javascript\") === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\"No internet connection found. App is running in offline mode.\");\n });\n}\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://cra.link/PWA\",\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import { useEffect } from \"react\";\nimport { RouteComponentProps } from \"react-router-dom\";\nimport ReactGA from \"react-ga\";\nimport { REACT_GA_TRACKING_ID } from \"constants/index\";\nimport { isMobile } from \"react-device-detect\";\n\nexport default function GoogleAnalytics({ location: { pathname, search } }: RouteComponentProps): null {\n useEffect(() => {\n ReactGA.pageview(`${pathname}${search}`);\n }, [pathname, search]);\n return null;\n}\n\nexport function initGoogleAnalytics() {\n if (typeof REACT_GA_TRACKING_ID === \"string\") {\n ReactGA.initialize(REACT_GA_TRACKING_ID);\n\n ReactGA.set({\n anonymizeIp: true,\n customBrowserType: !isMobile ? \"desktop\" : \"web3\" in window ? \"mobileWeb3\" : \"mobileRegular\",\n });\n } else {\n ReactGA.initialize(\"test\", { testMode: true, debug: true });\n }\n}\n","import { useState } from \"react\";\nimport { Typography, Box, Checkbox, Button, makeStyles, useTheme, Theme } from \"components/Mui\";\nimport { Flex } from \"@icpswap/ui\";\nimport { TextButton, Modal } from \"components/index\";\nimport storage from \"redux-persist/lib/storage\";\nimport { Trans, useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n content: {\n background: theme.palette.background.level3,\n border: `1px solid ${theme.palette.background.level4}`,\n borderRadius: \"12px\",\n padding: \"14px 16px\",\n marginTop: \"16px\",\n overflow: \"auto\",\n maxHeight: \"280px\",\n },\n button: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"40px\",\n padding: \"0 20px\",\n background: \"#FFFFFF\",\n boxShadow: \"0px 4px 4px rgba(0, 0, 0, 0.15)\",\n borderRadius: \"8px\",\n cursor: \"pointer\",\n },\n };\n});\n\nexport const RISK_STORAGE_NAME = \"ICPSwap_Risk\";\n\nexport async function getRiskStorage() {\n const storageRisk = await storage.getItem(RISK_STORAGE_NAME);\n const isRead = !storageRisk ? \"\" : JSON.parse(storageRisk);\n return isRead;\n}\n\nexport async function setRiskStorage(isRead: boolean) {\n await storage.setItem(RISK_STORAGE_NAME, JSON.stringify(isRead));\n}\n\ninterface RiskStatementModalProps {\n open: boolean;\n onClose: () => void;\n onRead: () => void;\n}\n\nexport default function RiskStatementModal({ open, onClose, onRead }: RiskStatementModalProps) {\n const { t } = useTranslation();\n const classes = useStyles();\n\n const [isRead, setIsRead] = useState(false);\n\n const theme = useTheme() as Theme;\n\n const handleRead = () => {\n setRiskStorage(true);\n onClose();\n onRead();\n };\n\n return (\n \n \n {t(\"risk.description0\")}\n \n \n \n {t(\"risk.description1\")}\n \n \n {t(\"risk.description2\")}\n \n \n {t(\"risk.description3\")}\n \n \n \n }}\n i18nKey=\"risk.description4\"\n />\n \n \n \n \n https://twitter.com/icpswap,\n }}\n i18nKey=\"risk.description5\"\n />\n \n \n \n \n setIsRead(!isRead)}\n >\n {\n setIsRead(checked);\n }}\n />\n \n {t(\"common.token.risk.agree\")}\n \n \n \n \n \n \n \n \n {t(\"risk.statements\")}\n \n \n \n );\n}\n","import { useState, useEffect } from \"react\";\nimport { Grid, Typography, Box, useTheme, useMediaQuery, makeStyles, Theme } from \"components/Mui\";\nimport { RISK_WARNING_INDEX } from \"constants/zIndex\";\nimport { useTranslation } from \"react-i18next\";\n\nimport RiskStatementModal, { getRiskStorage } from \"./Modal\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n container: {\n padding: \"15px 20px\",\n background: \"linear-gradient(89.44deg, #5569DB -0.31%, #8572FF 91.14%)\",\n [theme.breakpoints.down(\"md\")]: {\n padding: \"5px 10px\",\n },\n },\n button: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"40px\",\n padding: \"0 20px\",\n background: \"#FFFFFF\",\n boxShadow: \"0px 4px 4px rgba(0, 0, 0, 0.15)\",\n borderRadius: \"8px\",\n cursor: \"pointer\",\n [theme.breakpoints.down(\"md\")]: {\n height: \"30px\",\n padding: \"0 10px\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n marginTop: \"8px\",\n },\n },\n };\n});\n\nexport default function RiskStatement() {\n const { t } = useTranslation();\n const classes = useStyles();\n const theme = useTheme();\n\n const [riskStatementShow, setRickStatementShow] = useState(false);\n const [isRead, setIsRead] = useState(true);\n\n const matchDownSM = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n useEffect(() => {\n (async () => {\n const isRead = await getRiskStorage();\n if (isRead === \"true\" || isRead === true) {\n setIsRead(true);\n } else {\n setIsRead(false);\n }\n })();\n }, []);\n\n const handleRead = () => {\n setRickStatementShow(true);\n };\n\n return !isRead ? (\n <>\n \n \n \n \n {t(\"risk.description0\")}\n \n \n \n \n {t(\"risk.read.close\")}\n \n \n \n \n\n {riskStatementShow ? (\n setRickStatementShow(false)}\n onRead={() => setIsRead(true)}\n />\n ) : null}\n \n ) : null;\n}\n","export const RISK_WARNING_INDEX = 3;\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9, _path10, _path11, _path12, _path13, _path14, _path15, _path16, _path17, _path18, _path19, _path20, _path21, _path22, _path23, _path24, _path25, _path26, _path27, _path28, _path29, _path30, _path31, _path32, _path33, _path34, _path35, _path36, _path37, _path38, _path39, _path40, _path41, _path42, _path43, _path44, _path45, _path46, _path47, _path48, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgBoundaryError(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 163,\n height: 170,\n viewBox: \"0 0 163 170\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M64.0161 167.918C58.438 167.918 48.5903 153.77 45.3755 146.109C43.7466 142.23 43.606 139.793 44.9341 138.445C48.2075 135.113 63.8169 127.57 68.6997 125.254C67.7739 122.457 65.5317 115.418 62.977 105.414L62.5083 103.586L73.9067 102.879L74.3286 103.926C74.5903 104.582 80.7817 120.098 82.4771 130.938C82.7036 132.383 82.0942 134.195 72.313 140.457C68.9536 142.605 65.5396 144.609 63.7427 145.648C65.7075 149.719 70.5708 161.039 66.7544 166.484C66.106 167.406 65.1372 167.918 64.02 167.918H64.0161Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72.879 104.508C72.879 104.508 79.2462 120.391 80.9337 131.18C81.3673 133.949 61.6798 145.027 61.6798 145.027C61.6798 145.027 69.4884 159.859 65.4727 165.59C65.1055 166.117 64.6094 166.355 64.0157 166.355C58.1602 166.355 42.7969 142.848 46.0469 139.539C49.6251 135.895 70.6251 126.07 70.6251 126.07C70.6251 126.07 67.8555 118.191 64.4884 105.027L72.8751 104.508M74.9337 101.25L72.6798 101.391L64.293 101.91L60.5235 102.145L61.4571 105.805C63.711 114.629 65.6876 121.062 66.7774 124.437C60.5665 127.406 47.0235 134.086 43.8126 137.355C41.418 139.793 42.7344 143.867 43.9298 146.723C45.7071 150.957 49.0313 156.387 52.6055 160.895C59.4219 169.488 62.8751 169.488 64.0079 169.488C65.6485 169.488 67.0743 168.742 68.0235 167.391C70.3165 164.121 70.3243 159.148 68.043 152.195C67.3008 149.926 66.4376 147.848 65.7423 146.297C67.6485 145.184 70.3907 143.547 73.1446 141.781C76.0626 139.914 78.3868 138.293 80.0509 136.961C82.6837 134.852 84.3673 132.98 84.0118 130.707C82.2891 119.691 76.0352 104.016 75.7696 103.355L74.9298 101.262L74.9337 101.25Z\",\n fill: \"black\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M65.8716 164.902C65.9146 164.812 65.9537 164.723 65.9927 164.633C66.0123 164.59 66.0318 164.551 66.0474 164.512C66.0748 164.445 66.1021 164.375 66.1256 164.309C66.1763 164.172 66.2193 164.031 66.2623 163.891C66.2818 163.824 66.3013 163.762 66.3209 163.695C66.3717 163.508 66.4146 163.313 66.4498 163.117C66.4498 163.098 66.4576 163.078 66.4615 163.059C66.5006 162.84 66.5318 162.613 66.5552 162.387C66.5631 162.316 66.567 162.25 66.5709 162.18C66.5787 162.066 66.5865 161.953 66.5943 161.84C66.5943 161.785 66.6021 161.734 66.606 161.684C66.606 161.602 66.6099 161.52 66.6138 161.437C66.6138 161.332 66.6138 161.227 66.6138 161.121C66.6138 161.059 66.6138 161 66.6138 160.941C66.6138 160.863 66.6138 160.781 66.6099 160.703C66.6021 160.496 66.5943 160.285 66.5787 160.074C66.5787 160.035 66.5787 159.996 66.5709 159.957C66.5513 159.703 66.524 159.449 66.4966 159.191C66.4888 159.121 66.4771 159.051 66.4693 158.977C66.4459 158.789 66.4185 158.598 66.3873 158.406C66.3756 158.32 66.3599 158.23 66.3443 158.145C66.3131 157.961 66.2818 157.777 66.2467 157.594C66.231 157.508 66.2154 157.422 66.1959 157.336C66.1724 157.211 66.1451 157.086 66.1177 156.965C66.0982 156.871 66.0787 156.781 66.0592 156.687C66.0474 156.641 66.0396 156.594 66.0279 156.547C65.9693 156.281 65.9029 156.016 65.8365 155.75C65.8209 155.687 65.8013 155.621 65.7857 155.559C65.7349 155.355 65.6802 155.156 65.6216 154.957C65.5982 154.871 65.5748 154.785 65.5474 154.703C65.5318 154.648 65.5162 154.598 65.5006 154.543C65.4615 154.414 65.4263 154.281 65.3873 154.152C65.3638 154.07 65.3365 153.988 65.3131 153.902C65.2506 153.699 65.1842 153.492 65.1177 153.293C65.1021 153.242 65.0826 153.187 65.067 153.137C64.981 152.879 64.8951 152.625 64.8091 152.375C64.7935 152.332 64.7779 152.285 64.7623 152.242C64.7427 152.187 64.7232 152.133 64.7037 152.074C64.6529 151.926 64.5982 151.777 64.5474 151.633C64.5201 151.559 64.4927 151.488 64.4654 151.414C64.4498 151.371 64.4341 151.328 64.4185 151.285C64.3677 151.152 64.3209 151.02 64.2701 150.887C64.2427 150.82 64.2193 150.754 64.192 150.688C64.1177 150.496 64.0435 150.309 63.9732 150.125C63.9576 150.086 63.942 150.043 63.9263 150.004C63.8482 149.809 63.7701 149.621 63.6959 149.434C63.6802 149.398 63.6685 149.363 63.6529 149.328C63.6451 149.312 63.6412 149.297 63.6334 149.281C63.5904 149.18 63.5513 149.086 63.5123 148.988C63.4732 148.891 63.4302 148.793 63.3912 148.699C63.3717 148.652 63.3482 148.602 63.3287 148.555C63.2818 148.441 63.2349 148.336 63.1881 148.227C63.1685 148.184 63.149 148.137 63.1295 148.094C63.1099 148.051 63.0904 148.008 63.0748 147.965C63.0279 147.855 62.981 147.754 62.9342 147.652C62.9107 147.598 62.8834 147.539 62.8599 147.484C62.8521 147.465 62.8404 147.445 62.8326 147.422C62.2779 146.195 61.8521 145.359 61.7271 145.113C61.6998 145.062 61.6841 145.031 61.6841 145.031C61.6841 145.031 64.7427 143.688 68.4185 141.73C66.981 138.902 64.649 133.891 62.6998 129.922C56.3482 133.086 48.1646 137.391 46.0513 139.543C45.9888 139.609 45.9341 139.684 45.8834 139.766C45.8677 139.789 45.856 139.82 45.8404 139.844C45.8091 139.902 45.7779 139.965 45.7545 140.031C45.7427 140.063 45.731 140.098 45.7193 140.133C45.6959 140.203 45.6802 140.277 45.6646 140.355C45.6568 140.391 45.649 140.422 45.6451 140.457C45.6256 140.57 45.6138 140.691 45.6099 140.816C45.606 140.953 45.6099 141.102 45.6177 141.25C45.6412 141.641 45.7115 142.082 45.8248 142.559C45.9381 143.047 46.0982 143.578 46.2974 144.141C46.2974 144.141 46.2974 144.141 46.2974 144.145C46.3912 144.414 46.4966 144.695 46.6099 144.98C46.6099 144.98 46.6099 144.988 46.6138 144.992C46.7271 145.273 46.8443 145.563 46.9732 145.855C46.9732 145.859 46.9732 145.863 46.9771 145.867C47.0982 146.145 47.2271 146.43 47.3599 146.715C47.3834 146.766 47.4068 146.816 47.4341 146.871C47.567 147.152 47.7037 147.441 47.8482 147.73C47.8482 147.738 47.856 147.742 47.856 147.75C47.856 147.75 47.856 147.75 47.856 147.754C47.9693 147.984 48.0904 148.215 48.2115 148.449C48.2427 148.512 48.2779 148.578 48.3131 148.641C48.4029 148.816 48.4966 148.992 48.5943 149.168C48.6334 149.242 48.6724 149.316 48.7154 149.387C48.8091 149.562 48.9068 149.734 49.0045 149.91C49.0435 149.98 49.0826 150.047 49.1177 150.117C49.2349 150.328 49.356 150.539 49.481 150.75C49.5006 150.781 49.5201 150.816 49.5357 150.848C49.6802 151.098 49.8287 151.348 49.981 151.598C50.0045 151.637 50.0279 151.676 50.0513 151.715C50.1763 151.922 50.3013 152.129 50.4302 152.336C50.4732 152.406 50.5162 152.477 50.5591 152.547C50.6724 152.727 50.7857 152.906 50.899 153.086C50.9459 153.16 50.9927 153.234 51.0435 153.309C51.1646 153.496 51.2857 153.68 51.4068 153.867C51.4459 153.93 51.4849 153.988 51.5279 154.051C51.856 154.547 52.1881 155.039 52.5279 155.527C52.5709 155.586 52.6099 155.645 52.6529 155.703C52.7818 155.887 52.9107 156.07 53.0396 156.25C53.0904 156.324 53.1451 156.395 53.1959 156.469C53.317 156.641 53.442 156.809 53.567 156.977C53.6177 157.047 53.6724 157.117 53.7232 157.187C53.8638 157.375 54.0045 157.566 54.1451 157.75C54.1802 157.793 54.2115 157.84 54.2466 157.883C54.4224 158.117 54.6021 158.348 54.7818 158.578C54.8052 158.605 54.8287 158.637 54.8482 158.664C55.0006 158.859 55.1529 159.051 55.3052 159.242C55.356 159.309 55.4107 159.371 55.4615 159.438C55.5865 159.594 55.7115 159.746 55.8365 159.895C55.8951 159.965 55.9498 160.031 56.0084 160.102C56.1334 160.254 56.2584 160.398 56.3873 160.547C56.4381 160.609 56.4927 160.668 56.5435 160.73C56.7076 160.918 56.8717 161.105 57.0318 161.289C57.0435 161.301 57.0552 161.316 57.067 161.328C57.2427 161.527 57.4224 161.719 57.5982 161.91C57.6412 161.957 57.6881 162.004 57.731 162.051C57.8599 162.188 57.9888 162.324 58.1177 162.457C58.1763 162.516 58.2349 162.574 58.2896 162.637C58.4068 162.754 58.524 162.871 58.6373 162.988C58.6959 163.047 58.7545 163.102 58.8091 163.16C58.9341 163.281 59.0552 163.398 59.1802 163.512C59.2271 163.555 59.2701 163.598 59.317 163.641C59.4849 163.797 59.6529 163.945 59.817 164.09C59.8326 164.105 59.8482 164.117 59.8638 164.129C60.0123 164.258 60.1568 164.379 60.3013 164.496C60.3521 164.539 60.4029 164.578 60.4537 164.617C60.5631 164.703 60.6724 164.789 60.7818 164.871C60.8365 164.914 60.8912 164.953 60.9498 164.996C61.0552 165.074 61.1568 165.148 61.2584 165.219C61.3091 165.254 61.3638 165.293 61.4146 165.324C61.5357 165.406 61.6529 165.48 61.7701 165.551C61.8013 165.57 61.8326 165.59 61.8599 165.609C62.0045 165.695 62.149 165.777 62.2896 165.848C62.3248 165.867 62.3599 165.883 62.3951 165.898C62.5006 165.949 62.6021 166 62.7037 166.043C62.7506 166.062 62.7974 166.082 62.8443 166.098C62.9341 166.133 63.0201 166.164 63.106 166.191C63.1529 166.207 63.1998 166.223 63.2466 166.234C63.3326 166.258 63.4185 166.277 63.5045 166.297C63.5435 166.305 63.5826 166.312 63.6216 166.32C63.7427 166.34 63.8599 166.352 63.9732 166.355C64.0904 166.355 64.1998 166.348 64.3091 166.332C64.3443 166.328 64.3756 166.316 64.4068 166.312C64.481 166.297 64.5552 166.277 64.6256 166.254C64.6607 166.242 64.6959 166.227 64.731 166.211C64.8013 166.18 64.8638 166.145 64.9302 166.105C64.9576 166.086 64.9888 166.07 65.0162 166.051C65.106 165.988 65.192 165.918 65.2701 165.832C65.3404 165.758 65.4068 165.676 65.4693 165.59C65.5826 165.426 65.6881 165.25 65.7818 165.074C65.8131 165.02 65.8365 164.961 65.8677 164.902H65.8716Z\",\n fill: \"url(#paint0_linear_52028_12641)\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M61.3633 129.797L68.5078 142.527\",\n stroke: \"black\",\n strokeWidth: 8,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M100.848 167.918C99.7311 167.918 98.7624 167.41 98.1139 166.484C94.2975 161.039 99.1608 149.715 101.126 145.648C99.3288 144.609 95.9147 142.609 92.5553 140.457C82.7741 134.195 82.1647 132.383 82.3913 130.938C84.0866 120.098 90.2741 104.578 90.5397 103.926L90.9616 102.879L102.36 103.586L101.891 105.414C99.3366 115.414 97.0944 122.457 96.1686 125.254C101.051 127.57 116.661 135.113 119.934 138.445C121.262 139.797 121.118 142.234 119.489 146.121C116.274 153.777 106.426 167.922 100.856 167.922L100.848 167.918Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M91.9847 104.508L100.371 105.027C97.0082 118.191 94.2386 126.07 94.2386 126.07C94.2386 126.07 115.239 135.895 118.817 139.539C122.067 142.848 106.703 166.355 100.848 166.355C100.254 166.355 99.7621 166.113 99.391 165.59C95.3753 159.859 103.184 145.027 103.184 145.027C103.184 145.027 83.5004 133.953 83.93 131.18C85.6175 120.391 91.9847 104.508 91.9847 104.508ZM89.9261 101.25L89.0863 103.344C88.8207 104.004 82.5668 119.684 80.8441 130.695C80.4886 132.973 82.1722 134.844 84.805 136.949C86.4691 138.281 88.7933 139.902 91.7113 141.77C94.4652 143.531 97.2074 145.172 99.1136 146.285C98.4183 147.832 97.555 149.914 96.8128 152.184C94.5355 159.137 94.5394 164.109 96.8324 167.379C97.7816 168.73 99.2074 169.477 100.848 169.477C101.981 169.477 105.434 169.477 112.25 160.883C115.825 156.375 119.149 150.945 120.926 146.711C122.121 143.859 123.438 139.781 121.043 137.344C117.832 134.074 104.289 127.395 98.0785 124.426C99.1683 121.051 101.145 114.621 103.399 105.793L104.332 102.133L100.563 101.898L92.1761 101.379L89.9222 101.238L89.9261 101.25Z\",\n fill: \"black\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M98.9922 164.902C98.9492 164.812 98.9102 164.723 98.8711 164.633C98.8516 164.59 98.832 164.551 98.8164 164.512C98.7891 164.445 98.7617 164.375 98.7383 164.309C98.6875 164.172 98.6445 164.031 98.6016 163.891C98.582 163.824 98.5625 163.762 98.543 163.695C98.4922 163.508 98.4492 163.313 98.4141 163.117C98.4141 163.098 98.4063 163.078 98.4023 163.059C98.3633 162.84 98.332 162.613 98.3086 162.387C98.3008 162.316 98.2969 162.25 98.293 162.18C98.2852 162.066 98.2773 161.953 98.2695 161.84C98.2695 161.785 98.2617 161.734 98.2578 161.684C98.2578 161.602 98.2539 161.52 98.25 161.437C98.25 161.332 98.25 161.227 98.25 161.121C98.25 161.059 98.25 161 98.25 160.941C98.25 160.863 98.25 160.781 98.2539 160.703C98.2617 160.496 98.2695 160.285 98.2852 160.074C98.2852 160.035 98.2852 159.996 98.293 159.957C98.3125 159.703 98.3398 159.449 98.3672 159.191C98.375 159.121 98.3867 159.051 98.3945 158.977C98.418 158.789 98.4453 158.598 98.4766 158.406C98.4883 158.32 98.5039 158.23 98.5195 158.145C98.5508 157.961 98.582 157.777 98.6172 157.594C98.6328 157.508 98.6484 157.422 98.668 157.336C98.6914 157.211 98.7188 157.086 98.7461 156.965C98.7656 156.871 98.7852 156.781 98.8047 156.687C98.8164 156.641 98.8242 156.594 98.8359 156.547C98.8945 156.281 98.9609 156.016 99.0273 155.75C99.043 155.687 99.0625 155.621 99.0781 155.559C99.1289 155.355 99.1836 155.156 99.2422 154.957C99.2656 154.871 99.2891 154.785 99.3164 154.703C99.332 154.648 99.3477 154.598 99.3633 154.543C99.4023 154.414 99.4375 154.281 99.4766 154.152C99.5 154.07 99.5273 153.988 99.5508 153.902C99.6133 153.699 99.6797 153.492 99.7461 153.293C99.7617 153.242 99.7813 153.187 99.7969 153.137C99.8828 152.879 99.9688 152.625 100.055 152.375C100.07 152.332 100.086 152.285 100.102 152.242C100.121 152.187 100.141 152.133 100.16 152.074C100.211 151.926 100.266 151.777 100.316 151.633C100.344 151.559 100.371 151.488 100.398 151.414C100.414 151.371 100.43 151.328 100.445 151.285C100.496 151.152 100.543 151.02 100.594 150.887C100.621 150.82 100.645 150.754 100.672 150.688C100.746 150.496 100.82 150.309 100.891 150.125C100.906 150.086 100.922 150.043 100.938 150.004C101.016 149.809 101.094 149.621 101.168 149.434C101.184 149.398 101.195 149.363 101.211 149.328C101.219 149.312 101.223 149.297 101.23 149.281C101.273 149.18 101.313 149.086 101.352 148.988C101.391 148.891 101.434 148.793 101.473 148.699C101.492 148.652 101.516 148.602 101.535 148.555C101.582 148.441 101.629 148.336 101.676 148.227C101.695 148.184 101.715 148.137 101.734 148.094C101.754 148.051 101.773 148.008 101.789 147.965C101.836 147.855 101.883 147.754 101.93 147.652C101.953 147.598 101.98 147.539 102.004 147.484C102.012 147.465 102.023 147.445 102.031 147.422C102.586 146.195 103.012 145.359 103.137 145.113C103.164 145.062 103.18 145.031 103.18 145.031C103.18 145.031 100.121 143.688 96.4453 141.73C97.8828 138.902 100.215 133.891 102.164 129.922C108.516 133.086 116.699 137.391 118.813 139.543C118.875 139.609 118.93 139.684 118.98 139.766C118.996 139.789 119.008 139.82 119.023 139.844C119.055 139.902 119.086 139.965 119.109 140.031C119.121 140.063 119.133 140.098 119.145 140.133C119.168 140.203 119.184 140.277 119.199 140.355C119.207 140.391 119.215 140.422 119.219 140.457C119.238 140.57 119.25 140.691 119.254 140.816C119.258 140.953 119.254 141.102 119.246 141.25C119.223 141.641 119.152 142.082 119.039 142.559C118.926 143.047 118.766 143.578 118.566 144.141C118.566 144.141 118.566 144.141 118.566 144.145C118.473 144.414 118.367 144.695 118.254 144.98C118.254 144.98 118.254 144.988 118.25 144.992C118.137 145.273 118.02 145.563 117.891 145.855C117.891 145.859 117.891 145.863 117.887 145.867C117.766 146.145 117.637 146.43 117.504 146.715C117.48 146.766 117.457 146.816 117.43 146.871C117.297 147.152 117.16 147.441 117.016 147.73C117.016 147.738 117.008 147.742 117.008 147.75C117.008 147.75 117.008 147.75 117.008 147.754C116.895 147.984 116.773 148.215 116.652 148.449C116.621 148.512 116.586 148.578 116.551 148.641C116.461 148.816 116.367 148.992 116.27 149.168C116.23 149.242 116.191 149.316 116.148 149.387C116.055 149.562 115.957 149.734 115.859 149.91C115.82 149.98 115.781 150.047 115.746 150.117C115.629 150.328 115.508 150.539 115.383 150.75C115.363 150.781 115.344 150.816 115.328 150.848C115.184 151.098 115.035 151.348 114.883 151.598C114.859 151.637 114.836 151.676 114.813 151.715C114.688 151.922 114.563 152.129 114.434 152.336C114.391 152.406 114.348 152.477 114.305 152.547C114.191 152.727 114.078 152.906 113.965 153.086C113.918 153.16 113.871 153.234 113.82 153.309C113.699 153.496 113.578 153.68 113.457 153.867C113.418 153.93 113.379 153.988 113.336 154.051C113.008 154.547 112.676 155.039 112.336 155.527C112.293 155.586 112.254 155.645 112.211 155.703C112.082 155.887 111.953 156.07 111.824 156.25C111.773 156.324 111.719 156.395 111.668 156.469C111.547 156.641 111.422 156.809 111.297 156.977C111.246 157.047 111.191 157.117 111.141 157.187C111 157.375 110.859 157.566 110.719 157.75C110.684 157.793 110.652 157.84 110.617 157.883C110.441 158.117 110.262 158.348 110.082 158.578C110.059 158.605 110.035 158.637 110.016 158.664C109.863 158.859 109.711 159.051 109.559 159.242C109.508 159.309 109.453 159.371 109.402 159.438C109.277 159.594 109.152 159.746 109.027 159.895C108.969 159.965 108.914 160.031 108.855 160.102C108.73 160.254 108.605 160.398 108.477 160.547C108.426 160.609 108.371 160.668 108.32 160.73C108.156 160.918 107.992 161.105 107.832 161.289C107.82 161.301 107.809 161.316 107.797 161.328C107.621 161.527 107.441 161.719 107.266 161.91C107.223 161.957 107.176 162.004 107.133 162.051C107.004 162.188 106.875 162.324 106.746 162.457C106.688 162.516 106.629 162.574 106.574 162.637C106.457 162.754 106.34 162.871 106.227 162.988C106.168 163.047 106.109 163.102 106.055 163.16C105.93 163.281 105.809 163.398 105.684 163.512C105.637 163.555 105.594 163.598 105.547 163.641C105.379 163.797 105.211 163.945 105.047 164.09C105.031 164.105 105.016 164.117 105 164.129C104.852 164.258 104.707 164.379 104.563 164.496C104.512 164.539 104.461 164.578 104.41 164.617C104.301 164.703 104.191 164.789 104.082 164.871C104.027 164.914 103.973 164.953 103.914 164.996C103.809 165.074 103.707 165.148 103.605 165.219C103.555 165.254 103.5 165.293 103.449 165.324C103.328 165.406 103.211 165.48 103.094 165.551C103.063 165.57 103.031 165.59 103.004 165.609C102.859 165.695 102.715 165.777 102.574 165.848C102.539 165.867 102.504 165.883 102.469 165.898C102.363 165.949 102.262 166 102.16 166.043C102.113 166.062 102.066 166.082 102.02 166.098C101.93 166.133 101.844 166.164 101.758 166.191C101.711 166.207 101.664 166.223 101.617 166.234C101.531 166.258 101.445 166.277 101.359 166.297C101.32 166.305 101.281 166.312 101.242 166.32C101.121 166.34 101.004 166.352 100.891 166.355C100.773 166.355 100.664 166.348 100.555 166.332C100.52 166.328 100.488 166.316 100.457 166.312C100.383 166.297 100.309 166.277 100.238 166.254C100.203 166.242 100.168 166.227 100.133 166.211C100.063 166.18 100 166.145 99.9336 166.105C99.9063 166.086 99.875 166.07 99.8477 166.051C99.7578 165.988 99.6719 165.918 99.5938 165.832C99.5234 165.758 99.457 165.676 99.3945 165.59C99.2813 165.426 99.1758 165.25 99.082 165.074C99.0508 165.02 99.0274 164.961 98.9961 164.902H98.9922Z\",\n fill: \"url(#paint1_linear_52028_12641)\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M103.504 129.797L96.3594 142.527\",\n stroke: \"black\",\n strokeWidth: 8,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M118.059 116.445C111.926 116.445 94.2383 116.285 78.6289 116.145C66 116.031 55.0937 115.934 52.039 115.934C40.8086 115.934 29.7851 111.316 21.8007 103.27C13.8828 95.2891 9.48043 84.7383 9.41012 73.5625C9.3359 62.2969 13.6562 51.7695 21.5742 43.9102C29.332 36.2148 39.6757 31.9766 50.707 31.9766C61.7383 31.9766 72.8476 36.4609 80.9297 44.6055C81.6406 45.3242 82.332 46.0703 82.9922 46.8359C87.6289 42.5234 92.8711 39.1289 98.9765 36.4844C103.906 34.1641 110.09 32.8867 116.391 32.8867C128.262 32.8867 139.125 37.2422 146.973 45.1563C154.914 53.1602 159.312 63.7461 159.359 74.9648C159.406 86.1914 155.086 96.6836 147.199 104.512C139.441 112.211 129.094 116.449 118.062 116.449L118.059 116.445Z\",\n fill: \"white\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.707 33.5352C61.6952 33.5352 72.0312 37.8555 79.8163 45.7031C80.8945 46.7891 81.9101 47.9336 82.8593 49.125C87.6562 44.3828 93.1523 40.7031 99.6171 37.9063C104.348 35.6758 110.297 34.4492 116.391 34.4492C127.844 34.4492 138.309 38.6406 145.863 46.2578C161.68 62.1992 161.785 87.8359 146.098 103.398C138.633 110.805 128.676 114.883 118.062 114.883C107.078 114.883 58.9687 114.367 52.0429 114.367C41.2265 114.367 30.6093 109.918 22.914 102.164C15.2851 94.4766 11.0468 84.3125 10.9765 73.5469C10.9062 62.707 15.0624 52.5742 22.6796 45.0156C30.1406 37.6133 40.0976 33.5352 50.7148 33.5352M50.7148 30.4102C39.2695 30.4102 28.5312 34.8086 20.4804 42.7969C12.2616 50.9531 7.77727 61.8789 7.85149 73.5664C7.92962 85.1523 12.4882 96.0899 20.6952 104.363C28.9726 112.707 40.3984 117.488 52.0429 117.488C55.0976 117.488 66.0116 117.586 78.6523 117.703C94.2499 117.844 111.93 118.004 118.066 118.004C129.512 118.004 140.254 113.605 148.305 105.613C165.219 88.8359 165.121 61.2188 148.09 44.0508C139.945 35.8398 128.691 31.3203 116.398 31.3203C109.879 31.3203 103.469 32.6445 98.3398 35.0547C92.5937 37.5469 87.582 40.6914 83.1171 44.6172C82.7656 44.2383 82.4062 43.8633 82.0468 43.5C73.6718 35.0586 62.5429 30.4062 50.7187 30.4062L50.7148 30.4102Z\",\n fill: \"black\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M139.188 52.8793C128.27 41.8754 111.723 42.5238 103.5 46.473C90.3986 52.0941 84.7228 60.8402 79.7189 68.5472L79.3557 69.1097C74.6994 76.2777 70.301 83.0472 61.5471 88.2894C60.426 89.0824 59.1955 89.7347 57.8869 90.2308C51.4338 92.6918 44.0666 91.0629 39.1252 86.0785C32.2814 79.1801 32.2072 68.1215 38.9572 61.4261C45.7111 54.7269 56.7697 54.8871 63.6135 61.7855C65.4572 63.6449 66.8361 65.8168 67.7189 68.2465L68.4885 70.3675L77.5197 57.8129L77.0666 57.1293C75.926 55.4144 74.6057 53.8011 73.1447 52.3285C60.9768 40.0629 41.3088 39.7777 29.301 51.6918C17.2932 63.6058 17.4221 83.2738 29.59 95.5394C39.6916 105.719 55.2228 107.895 67.2893 100.864C77.3049 95.9261 82.9963 87.9457 88.8869 78.7855L89.5432 77.766C95.2971 68.805 99.8439 61.7269 111.418 57.9886C117.719 55.8129 124.879 57.5199 129.66 62.3363C136.5 69.2308 136.574 80.2855 129.824 86.9847C123.074 93.68 112.016 93.5199 105.176 86.6254C103.481 84.9144 102.164 82.9261 101.266 80.7035L100.457 78.7074L91.5627 91.0707L92.0392 91.7621C93.1017 93.2933 94.3127 94.7504 95.6408 96.0902C107.805 108.352 127.473 108.633 139.481 96.7191C151.488 84.8051 151.36 65.141 139.195 52.8793H139.188Z\",\n fill: \"url(#paint2_linear_52028_12641)\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M88.25 42.6328C88.25 42.6328 83.3242 46.3086 81.2188 49.5352L88.25 42.6328Z\",\n fill: \"white\"\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M88.25 42.6328C88.25 42.6328 83.3242 46.3086 81.2188 49.5352\",\n stroke: \"black\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M33.8653 26.6393C38.8661 23.6832 44.5747 22.1094 50.5823 22.1094C56.5883 22.1094 62.3631 23.6823 67.4416 26.6334C68.1877 27.067 68.441 28.0233 68.0075 28.7694C67.5739 29.5155 66.6176 29.7689 65.8714 29.3353C61.2702 26.6615 56.0372 25.2344 50.5823 25.2344C45.1289 25.2344 39.9703 26.6606 35.4555 29.3294C34.7127 29.7686 33.7545 29.5223 33.3153 28.7795C32.8762 28.0366 33.1224 27.0784 33.8653 26.6393Z\",\n fill: \"black\"\n })), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M101.315 26.6393C106.315 23.6832 112.024 22.1094 118.032 22.1094C124.038 22.1094 129.812 23.6823 134.891 26.6334C135.637 27.067 135.89 28.0233 135.457 28.7694C135.023 29.5155 134.067 29.7689 133.321 29.3353C128.719 26.6615 123.486 25.2344 118.032 25.2344C112.578 25.2344 107.42 26.6606 102.905 29.3294C102.162 29.7686 101.204 29.5223 100.765 28.7795C100.325 28.0366 100.572 27.0784 101.315 26.6393Z\",\n fill: \"black\"\n })), _path16 || (_path16 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.5977 84.6172C57.4225 84.6172 62.1445 79.8952 62.1445 74.0703C62.1445 68.2454 57.4225 63.5234 51.5977 63.5234C45.7728 63.5234 41.0508 68.2454 41.0508 74.0703C41.0508 79.8952 45.7728 84.6172 51.5977 84.6172Z\",\n fill: \"white\"\n })), _path17 || (_path17 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M51.5977 65.0859C56.5586 65.0859 60.582 69.1094 60.582 74.0703C60.582 79.0312 56.5586 83.0547 51.5977 83.0547C46.6367 83.0547 42.6133 79.0312 42.6133 74.0703C42.6133 69.1094 46.6367 65.0859 51.5977 65.0859ZM51.5977 61.9609C44.9219 61.9609 39.4883 67.3945 39.4883 74.0703C39.4883 80.7461 44.9219 86.1797 51.5977 86.1797C58.2734 86.1797 63.707 80.7461 63.707 74.0703C63.707 67.3945 58.2734 61.9609 51.5977 61.9609Z\",\n fill: \"black\"\n })), _path18 || (_path18 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.168 84.6172C122.993 84.6172 127.715 79.8952 127.715 74.0703C127.715 68.2454 122.993 63.5234 117.168 63.5234C111.343 63.5234 106.621 68.2454 106.621 74.0703C106.621 79.8952 111.343 84.6172 117.168 84.6172Z\",\n fill: \"white\"\n })), _path19 || (_path19 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M117.168 65.0859C122.129 65.0859 126.152 69.1094 126.152 74.0703C126.152 79.0312 122.129 83.0547 117.168 83.0547C112.207 83.0547 108.184 79.0312 108.184 74.0703C108.184 69.1094 112.207 65.0859 117.168 65.0859ZM117.168 61.9609C110.492 61.9609 105.059 67.3945 105.059 74.0703C105.059 80.7461 110.492 86.1797 117.168 86.1797C123.844 86.1797 129.277 80.7461 129.277 74.0703C129.277 67.3945 123.844 61.9609 117.168 61.9609Z\",\n fill: \"black\"\n })), _path20 || (_path20 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M127.332 28.6758C126.945 28.6758 126.563 28.625 126.188 28.5234L123.547 27.8086C121.332 27.207 119.953 24.9727 120.406 22.7227L123.922 5.35547C124.332 3.32422 126.133 1.85156 128.203 1.85156C128.641 1.85156 129.074 1.91797 129.496 2.04688L135.121 3.78906C136.281 4.14844 137.246 4.98438 137.774 6.07812C138.297 7.17188 138.34 8.44922 137.891 9.57812L131.391 25.918C130.727 27.5898 129.133 28.6719 127.332 28.6719V28.6758Z\",\n fill: \"#F7D35B\"\n })), _path21 || (_path21 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128.207 3.41797C128.481 3.41797 128.762 3.45703 129.039 3.54297L134.664 5.28516C136.227 5.76953 137.047 7.48437 136.442 9.00391L129.942 25.3438C129.508 26.4336 128.457 27.1133 127.332 27.1133C127.09 27.1133 126.84 27.082 126.598 27.0156L123.957 26.3008C122.528 25.9141 121.649 24.4844 121.942 23.0352L125.457 5.67188C125.731 4.32812 126.911 3.42187 128.207 3.42187M128.207 0.296874C125.399 0.296874 122.953 2.29687 122.395 5.05469L118.879 22.418C118.262 25.4727 120.133 28.5039 123.141 29.3203L125.782 30.0352C126.289 30.1719 126.813 30.2422 127.336 30.2422C129.782 30.2422 131.942 28.7734 132.848 26.5039L139.348 10.1641C139.957 8.63281 139.899 6.89844 139.188 5.41016C138.477 3.92187 137.164 2.78906 135.59 2.30078L129.965 0.558594C129.395 0.382813 128.805 0.292969 128.207 0.292969V0.296874Z\",\n fill: \"black\"\n })), _path22 || (_path22 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M123.59 40.5937C123.344 40.5937 123.097 40.5625 122.855 40.5039L119 39.5234C117.41 39.1211 116.449 37.5 116.851 35.9102L117.586 33.0117C117.922 31.6914 119.105 30.7695 120.465 30.7695C120.711 30.7695 120.957 30.8008 121.199 30.8594L125.054 31.8398C126.644 32.2422 127.605 33.8633 127.203 35.4531L126.469 38.3516C126.133 39.6719 124.949 40.5937 123.59 40.5937Z\",\n fill: \"#F7D35B\"\n })), _path23 || (_path23 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M120.465 32.332C120.578 32.332 120.696 32.3477 120.813 32.375L124.668 33.3555C125.422 33.5469 125.879 34.3125 125.688 35.0703L124.953 37.9687C124.793 38.6055 124.219 39.0312 123.59 39.0312C123.477 39.0312 123.36 39.0156 123.242 38.9883L119.387 38.0078C118.633 37.8164 118.176 37.0508 118.367 36.2969L119.102 33.3984C119.266 32.7617 119.836 32.3359 120.465 32.3359M120.465 29.2109C118.391 29.2109 116.582 30.6172 116.071 32.6289L115.336 35.5273C115.039 36.6992 115.215 37.9219 115.832 38.9609C116.453 40 117.438 40.7383 118.613 41.0391L122.469 42.0195C122.836 42.1133 123.211 42.1602 123.586 42.1602C125.66 42.1602 127.469 40.7539 127.981 38.7422L128.715 35.8437C129.328 33.4219 127.86 30.9492 125.438 30.332L121.582 29.3516C121.215 29.2578 120.84 29.2109 120.465 29.2109Z\",\n fill: \"black\"\n })), _path24 || (_path24 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M144.699 33.3828C144.113 33.3828 143.531 33.2344 143.012 32.957L140.602 31.6641C138.949 30.7773 138.262 28.7461 139.039 27.0391L145.254 13.3945C145.832 12.125 147.109 11.3047 148.508 11.3047C149.137 11.3047 149.758 11.4727 150.305 11.793L154.973 14.5117C155.832 15.0117 156.445 15.8555 156.66 16.8242C156.875 17.793 156.676 18.8164 156.109 19.6328L147.637 31.8477C146.969 32.8086 145.871 33.3828 144.703 33.3828H144.699Z\",\n fill: \"#F7D35B\"\n })), _path25 || (_path25 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M148.504 12.8672C148.847 12.8672 149.195 12.9531 149.512 13.1406L154.179 15.8633C155.191 16.4531 155.484 17.7812 154.82 18.7422L146.347 30.957C145.961 31.5156 145.336 31.8203 144.695 31.8203C144.375 31.8203 144.047 31.7422 143.746 31.582L141.336 30.2891C140.402 29.7891 140.019 28.6523 140.457 27.6875L146.672 14.043C147.012 13.2969 147.742 12.8672 148.5 12.8672M148.5 9.74219C146.492 9.74219 144.656 10.9219 143.828 12.75L137.613 26.3945C136.496 28.8477 137.48 31.7695 139.855 33.043L142.265 34.3359C143.008 34.7344 143.847 34.9453 144.691 34.9453C146.375 34.9453 147.953 34.1211 148.91 32.7383L157.383 20.5234C158.195 19.3516 158.484 17.8789 158.176 16.4883C157.867 15.0938 156.984 13.8828 155.75 13.1641L151.082 10.4414C150.297 9.98438 149.406 9.74219 148.5 9.74219Z\",\n fill: \"black\"\n })), _path26 || (_path26 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M138.534 44.0781C138.147 44.0781 137.765 43.9844 137.421 43.8086L134.05 42.0664C132.858 41.4492 132.39 39.9805 133.003 38.7891L134.374 36.1328C134.792 35.3203 135.62 34.8164 136.538 34.8164C136.925 34.8164 137.308 34.9102 137.651 35.0859L141.022 36.8281C142.214 37.4453 142.683 38.9141 142.069 40.1055L140.698 42.7617C140.28 43.5742 139.452 44.0781 138.534 44.0781Z\",\n fill: \"#F7D35B\"\n })), _path27 || (_path27 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M136.535 36.3789C136.667 36.3789 136.804 36.4102 136.933 36.4766L140.304 38.2148C140.73 38.4336 140.898 38.9609 140.679 39.3867L139.308 42.043C139.152 42.3437 138.851 42.5156 138.535 42.5156C138.402 42.5156 138.265 42.4844 138.136 42.418L134.765 40.6797C134.339 40.4609 134.171 39.9336 134.39 39.5078L135.761 36.8516C135.917 36.5508 136.218 36.3789 136.535 36.3789ZM136.535 33.2539C135.035 33.2539 133.671 34.082 132.984 35.418L131.613 38.0742C130.601 40.0312 131.374 42.4453 133.332 43.457L136.703 45.1953C137.265 45.4883 137.902 45.6406 138.535 45.6406C140.035 45.6406 141.398 44.8125 142.085 43.4766L143.457 40.8203C144.464 38.8633 143.695 36.4492 141.738 35.4375L138.367 33.6992C137.804 33.4102 137.171 33.2539 136.535 33.2539Z\",\n fill: \"black\"\n })), _path28 || (_path28 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M83.4451 120.613C78.0232 120.613 72.9295 120.457 69.1053 120.168C62.6756 119.688 61.3865 119.055 60.9373 117.828C59.574 114.121 66.5623 100.621 69.117 96.1875C73.4217 88.7109 74.9412 88.4453 75.6717 88.3164L75.7381 88.3047C78.2771 87.8633 80.8709 87.6367 83.449 87.6367C86.0271 87.6367 88.6209 87.8633 91.1599 88.3047L91.2264 88.3164C91.9568 88.4453 93.4764 88.7109 97.781 96.1836C100.336 100.621 107.324 114.121 105.961 117.828C105.508 119.059 104.222 119.688 97.7928 120.168C93.9646 120.453 88.8709 120.613 83.4529 120.613H83.4451Z\",\n fill: \"black\"\n })), _path29 || (_path29 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M83.4452 89.1953C85.9373 89.1953 88.4256 89.4101 90.8866 89.8398C90.91 89.8398 90.9295 89.8476 90.953 89.8516C93.992 90.3867 105.801 113.727 104.492 117.289C104.062 118.465 93.7537 119.051 83.4491 119.051C73.1444 119.051 62.8358 118.465 62.4061 117.289C61.0975 113.73 72.9061 90.3867 75.9452 89.8516C75.9686 89.8516 75.9881 89.8437 76.0116 89.8398C78.4725 89.4101 80.9608 89.1953 83.453 89.1953M83.453 86.0703C80.785 86.0703 78.1014 86.3047 75.4725 86.7617H75.4413L75.4022 86.7734C73.9998 87.0195 72.7733 87.9883 71.1678 90.1133C70.1639 91.4453 69.0194 93.2227 67.7655 95.3984C65.5545 99.2383 63.2655 103.883 61.6483 107.812C58.8397 114.637 58.9413 116.914 59.4725 118.359C60.3319 120.703 62.9842 121.27 68.992 121.719C72.8592 122.008 77.992 122.168 83.4491 122.168C88.9061 122.168 94.0428 122.008 97.9061 121.719C103.914 121.27 106.562 120.703 107.426 118.359C107.957 116.914 108.058 114.637 105.25 107.812C103.633 103.879 101.344 99.2383 99.1327 95.3984C94.8241 87.918 92.9959 87.0352 91.492 86.7695L91.4569 86.7617H91.4334C88.8006 86.2969 86.117 86.0664 83.4491 86.0664L83.453 86.0703Z\",\n fill: \"black\"\n })), _path30 || (_path30 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M65.5703 106.59C63.3828 111.48 61.8906 115.895 62.3984 117.289C63.2617 119.637 103.621 119.637 104.484 117.289C104.996 115.898 103.504 111.484 101.312 106.59C95.957 103.82 89.8828 102.258 83.4374 102.258C76.9921 102.258 70.9179 103.824 65.5624 106.59H65.5703Z\",\n fill: \"#E66E67\"\n })), _path31 || (_path31 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M32.2151 126.43C28.8361 126.43 24.7307 123.969 21.5002 120.012C19.4065 117.441 17.9611 114.566 17.4338 111.914C16.8361 108.914 17.4611 106.484 19.1877 105.074C20.1096 104.32 21.3049 103.926 22.6369 103.926C26.0158 103.926 30.1213 106.387 33.3518 110.344C35.4455 112.914 36.8908 115.789 37.4182 118.441C38.0158 121.441 37.3908 123.871 35.6643 125.281C34.7424 126.035 33.5471 126.43 32.2151 126.43Z\",\n fill: \"white\"\n })), _path32 || (_path32 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.6368 105.488C25.4258 105.488 29.1563 107.676 32.1407 111.332C36.1446 116.242 37.2813 121.945 34.6758 124.07C34.0118 124.613 33.168 124.867 32.2149 124.867C29.4258 124.867 25.6954 122.68 22.711 119.023C18.7071 114.113 17.5704 108.41 20.1758 106.285C20.8399 105.742 21.6836 105.488 22.6368 105.488ZM22.6368 102.363C20.9375 102.363 19.4024 102.883 18.1993 103.863C14.129 107.18 15.0274 114.547 20.2891 120.996C23.8086 125.309 28.379 127.992 32.2149 127.992C33.9141 127.992 35.4493 127.473 36.6524 126.492C40.7227 123.176 39.8243 115.809 34.5625 109.359C31.043 105.047 26.4727 102.363 22.6368 102.363Z\",\n fill: \"black\"\n })), _path33 || (_path33 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M40.9848 122.066C35.5863 122.066 30.8246 119.902 27.5746 115.973C23.0746 110.535 22.2895 103.246 25.473 96.4805C27.6527 91.8476 31.141 88.7383 34.1527 88.7383C34.559 88.7383 34.9535 88.793 35.3285 88.9062C38.5277 89.8594 40.1371 92.3008 39.852 95.7812C39.8441 95.875 39.8715 95.957 39.9301 96.0195C39.977 96.0703 40.0395 96.1016 40.0941 96.1016C40.1215 96.1016 40.1488 96.0977 40.1762 96.082C41.7426 95.4687 43.3012 95.1562 44.8012 95.1562C47.3559 95.1562 51.0668 96.0977 54.2465 100.59C57.4965 105.176 58.1215 109.953 56.0082 114.039C53.5277 118.84 47.4887 122.062 40.9809 122.062L40.9848 122.066Z\",\n fill: \"white\"\n })), _path34 || (_path34 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.1527 90.2969C34.4066 90.2969 34.6488 90.332 34.8832 90.3984C37.8832 91.293 38.4613 93.5859 38.2933 95.6523C38.2035 96.7656 39.0746 97.6641 40.0941 97.6641C40.3089 97.6641 40.5277 97.625 40.7464 97.5391C41.9222 97.0781 43.3128 96.7227 44.805 96.7227C47.4418 96.7227 50.3871 97.8438 52.9769 101.496C60.5003 112.113 50.9964 120.504 40.9886 120.504C36.5355 120.504 31.9808 118.844 28.7816 114.977C20.0472 104.418 28.973 90.3008 34.1566 90.3008M34.1566 87.1758C30.4964 87.1758 26.5316 90.5703 24.0628 95.8203C20.6175 103.148 21.4808 111.055 26.3753 116.969C29.93 121.262 35.1175 123.629 40.9886 123.629C48.0628 123.629 54.6605 120.062 57.4027 114.758C58.7894 112.074 60.391 106.547 55.5277 99.6875C51.9574 94.6523 47.7269 93.5977 44.805 93.5977C43.6839 93.5977 42.5433 93.75 41.3949 94.0469C41.055 90.8008 39.0472 88.3789 35.7738 87.4062C35.2542 87.2539 34.7113 87.1758 34.1527 87.1758H34.1566Z\",\n fill: \"black\"\n })), _path35 || (_path35 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M136.551 126.43C135.215 126.43 134.023 126.031 133.102 125.281C129.777 122.57 130.793 116.012 135.414 110.348C138.645 106.387 142.75 103.93 146.129 103.93C147.465 103.93 148.656 104.328 149.578 105.078C152.902 107.789 151.887 114.348 147.266 120.012C144.035 123.973 139.93 126.43 136.551 126.43Z\",\n fill: \"white\"\n })), _path36 || (_path36 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M146.129 105.488C147.082 105.488 147.926 105.746 148.59 106.285C151.195 108.41 150.059 114.109 146.055 119.023C143.07 122.68 139.34 124.867 136.551 124.867C135.598 124.867 134.754 124.609 134.09 124.07C131.484 121.945 132.621 116.246 136.625 111.332C139.609 107.676 143.34 105.488 146.129 105.488ZM146.129 102.363C142.293 102.363 137.723 105.043 134.203 109.359C131.949 112.121 130.391 115.238 129.812 118.137C129.105 121.68 129.945 124.723 132.113 126.492C133.316 127.473 134.851 127.992 136.551 127.992C140.387 127.992 144.957 125.312 148.476 120.996C150.73 118.234 152.289 115.117 152.867 112.219C153.574 108.676 152.734 105.633 150.566 103.863C149.363 102.883 147.828 102.363 146.129 102.363Z\",\n fill: \"black\"\n })), _path37 || (_path37 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M127.782 122.066C121.274 122.066 115.235 118.84 112.754 114.039C110.641 109.949 111.266 105.176 114.516 100.59C117.7 96.1016 121.41 95.1563 123.961 95.1563C125.465 95.1563 127.02 95.4687 128.586 96.082C128.617 96.0937 128.645 96.1016 128.668 96.1016C128.723 96.1016 128.785 96.0703 128.832 96.0195C128.891 95.957 128.918 95.875 128.91 95.7813C128.625 92.2969 130.231 89.8555 133.434 88.9023C133.809 88.793 134.203 88.7344 134.61 88.7344C137.621 88.7344 141.11 91.8477 143.289 96.4766C146.473 103.242 145.688 110.531 141.188 115.969C137.938 119.898 133.176 122.063 127.782 122.063V122.066Z\",\n fill: \"white\"\n })), _path38 || (_path38 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M134.613 90.2969C139.797 90.2969 148.723 104.418 139.988 114.973C136.789 118.84 132.238 120.5 127.781 120.5C117.774 120.5 108.266 112.105 115.793 101.492C118.383 97.8398 121.328 96.7188 123.965 96.7188C125.457 96.7188 126.848 97.0781 128.024 97.5352C128.242 97.6211 128.461 97.6602 128.676 97.6602C129.692 97.6602 130.567 96.7656 130.477 95.6484C130.309 93.582 130.887 91.2891 133.887 90.3945C134.121 90.3242 134.363 90.293 134.617 90.293M134.617 87.168C134.063 87.168 133.516 87.2461 132.996 87.4023C129.727 88.375 127.715 90.7969 127.375 94.043C126.227 93.7422 125.086 93.5938 123.965 93.5938C121.043 93.5938 116.813 94.6523 113.242 99.6836C108.379 106.547 109.981 112.07 111.367 114.754C114.11 120.059 120.707 123.625 127.781 123.625C133.652 123.625 138.844 121.258 142.395 116.965C147.289 111.047 148.152 103.141 144.703 95.8125C142.235 90.5625 138.274 87.1719 134.61 87.1719L134.617 87.168Z\",\n fill: \"black\"\n })), _path39 || (_path39 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13.1244 74.7188C13.1244 74.7188 4.29236 81.6484 9.31579 85.2852C13.3822 88.2305 17.4564 80.957 17.4564 80.957\",\n fill: \"white\"\n })), _path40 || (_path40 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.1244 74.7188C13.1244 74.7188 4.29235 81.6484 9.31579 85.2852C13.3822 88.2305 17.4564 80.957 17.4564 80.957\",\n stroke: \"black\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path41 || (_path41 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M155.422 76.2773C155.422 76.2773 164.254 83.207 159.23 86.8438C155.164 89.7891 151.09 82.5156 151.09 82.5156\",\n fill: \"white\"\n })), _path42 || (_path42 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M155.422 76.2773C155.422 76.2773 164.254 83.207 159.23 86.8438C155.164 89.7891 151.09 82.5156 151.09 82.5156\",\n stroke: \"black\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path43 || (_path43 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M152.871 58.1523C152.871 58.1523 161.43 61.5977 158.297 65.6211C155.762 68.8789 150.883 64.0664 150.883 64.0664\",\n fill: \"white\"\n })), _path44 || (_path44 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M152.871 58.1523C152.871 58.1523 161.43 61.5977 158.297 65.6211C155.762 68.8789 150.883 64.0664 150.883 64.0664\",\n stroke: \"black\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path45 || (_path45 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6.52694 105.453C5.60897 105.453 4.68319 105.07 3.6949 104.285C2.76522 103.543 2.28084 102.543 2.30037 101.391C2.35506 97.918 7.33553 94.0273 8.33553 93.2813C8.60897 93.0742 8.93709 92.9727 9.26913 92.9727C9.49569 92.9727 9.72616 93.0234 9.93709 93.1211C10.4605 93.3672 10.8043 93.8828 10.8316 94.4609C10.8902 95.7148 11.066 102.09 8.82381 104.438C8.191 105.102 7.39803 105.453 6.53084 105.453H6.52694Z\",\n fill: \"white\"\n })), _path46 || (_path46 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.26932 94.5312C9.26932 94.5312 9.70291 103.891 6.53104 103.891C6.01151 103.891 5.39822 103.641 4.67166 103.062C1.36697 100.43 9.27322 94.5352 9.27322 94.5352M9.27322 91.4102C8.61307 91.4102 7.95291 91.6211 7.40604 92.0312C7.34354 92.0781 5.85916 93.1875 4.36697 94.6992C1.96072 97.1289 0.777132 99.3125 0.741975 101.367C0.714632 102.996 1.42166 104.469 2.72635 105.508C3.98416 106.508 5.26541 107.02 6.53494 107.02C7.80447 107.02 9.03885 106.488 9.96072 105.52C11.2888 104.125 12.0389 101.883 12.3123 98.457C12.4842 96.3242 12.4021 94.4727 12.3982 94.3945C12.3435 93.2383 11.656 92.207 10.6131 91.7148C10.1873 91.5156 9.73026 91.4141 9.27713 91.4141L9.27322 91.4102Z\",\n fill: \"black\"\n })), _path47 || (_path47 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M66.0386 44.3242C66.0386 44.3242 61.1871 50.7305 64.9996 52.6367C70.1949 55.2344 71.2339 47.6992 71.2339 47.6992\",\n fill: \"white\"\n })), _path48 || (_path48 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M66.0386 44.3242C66.0386 44.3242 61.1871 50.7305 64.9996 52.6367C70.1949 55.2344 71.2339 47.6992 71.2339 47.6992\",\n stroke: \"black\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_52028_12641\",\n x1: 45.606,\n y1: 148.137,\n x2: 68.4146,\n y2: 148.137,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#596AD2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8075F5\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint1_linear_52028_12641\",\n x1: 119.262,\n y1: 148.137,\n x2: 96.4492,\n y2: 148.137,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#596AD2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8075F5\"\n })), /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint2_linear_52028_12641\",\n x1: 20.3752,\n y1: 74.2074,\n x2: 148.395,\n y2: 74.2074,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#596AD2\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8075F5\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgBoundaryError);\nexport default __webpack_public_path__ + \"static/media/boundary-error.b95a3569070bafd00c22ebe01eca2862.svg\";\nexport { ForwardRef as ReactComponent };","import { ReactNode } from \"react\";\nimport { Box, Typography } from \"./Mui\";\nimport { Flex } from \"./Grid/Flex\";\n\nfunction CloseIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport interface GlobalTipsProps {\n onClose?: () => void;\n children?: ReactNode;\n}\n\nexport function GlobalTips({ children, onClose }: GlobalTipsProps) {\n return (\n \n \n {children}\n \n\n {onClose ? (\n \n \n \n ) : null}\n \n );\n}\n","import { Box } from \"components/Mui\";\n\nexport default function Background() {\n return (\n \n );\n}\n","import { Grid, Box, Typography } from \"components/Mui\";\nimport { useTranslation } from \"react-i18next\";\nimport { useHistory } from \"react-router-dom\";\n\nfunction CloseIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default function V3Event({ onClick }: { onClick: () => void }) {\n const { t } = useTranslation();\n const history = useHistory();\n\n const handleToTwitter = () => {\n history.push(\"/swap\");\n };\n\n return (\n \n \n \n {t(\"swap.v3.launched\")}\n \n \n\n \n \n \n \n );\n}\n","var _path, _path2, _path3, _path4, _path5, _path6, _mask, _g, _circle, _path7, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLogoDark(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 125,\n height: 32,\n viewBox: \"0 0 125 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47 21.8866H49.3981V9.07214H47V21.8866Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M62.964 20.2756C61.6461 21.5753 59.9435 22.1794 58.0943 22.1794C53.3346 22.1794 51.3209 18.9026 51.3028 15.571C51.2846 12.221 53.4628 8.81567 58.0943 8.81567C59.8336 8.81567 61.4814 9.47469 62.7995 10.7745L61.1882 12.3306C60.3463 11.5071 59.2115 11.1225 58.0943 11.1225C55.0007 11.1225 53.6643 13.4291 53.6829 15.571C53.7009 17.6946 54.9276 19.9098 58.0943 19.9098C59.2115 19.9098 60.4743 19.4521 61.3166 18.61L62.964 20.2756Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M66.5545 15.9001H70.1792C73.2728 15.9001 73.2547 11.3599 70.1792 11.3599H66.5545V15.9001ZM70.1792 18.1154H66.5544V21.8864H64.1379V9.07195C66.1518 9.07195 68.1655 9.05371 70.1792 9.05371C76.44 9.05371 76.4582 18.1154 70.1792 18.1154Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M84.4238 12.166C83.9848 11.4335 82.7762 10.738 81.3852 10.738C79.591 10.738 78.7306 11.4884 78.7306 12.4406C78.7306 13.5572 80.0485 13.8686 81.5866 14.0517C84.2593 14.3812 86.7487 15.0765 86.7487 18.1336C86.7487 20.9896 84.2223 22.2162 81.3665 22.2162C78.7489 22.2162 76.735 21.4109 75.7834 19.0676L77.7967 18.024C78.3643 19.4334 79.8472 20.0561 81.4033 20.0561C82.9227 20.0561 84.3507 19.5251 84.3507 18.1336C84.3507 16.9257 83.0875 16.4312 81.3852 16.2481C78.7669 15.9372 76.3506 15.2415 76.3506 12.3673C76.3506 9.73094 78.9502 8.65119 81.3116 8.63263C83.3071 8.63263 85.3758 9.20027 86.3463 11.177L84.4238 12.166Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M96.5635 12.8432L98.5405 19.6347L100.609 12.8432H103.081L99.9315 21.9235H97.3321L96.3986 19.2508L95.5933 16.23L94.7874 19.2508L93.8539 21.9235H91.2544L88.0872 12.8432H90.5773L92.6455 19.6347L94.6048 12.8432H96.5635Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M107.861 20.088C106.452 20.088 105.305 18.9409 105.305 17.531C105.305 16.1214 106.452 14.9743 107.861 14.9743C109.271 14.9743 110.418 16.1214 110.418 17.531C110.418 18.9409 109.271 20.088 107.861 20.088ZM110.441 13.5087C109.669 13.0124 108.779 12.7506 107.861 12.7506C105.225 12.7506 103.081 14.8954 103.081 17.5311C103.081 20.1672 105.225 22.3118 107.861 22.3118C108.779 22.3118 109.669 22.05 110.441 21.5537V22.1273H112.642V12.9166H110.441V13.5087Z\",\n fill: \"white\"\n })), _mask || (_mask = /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0\",\n \"mask-type\": \"alpha\",\n maskUnits: \"userSpaceOnUse\",\n x: 114,\n y: 12,\n width: 11,\n height: 14\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M114.133 12.7412H124.113V25.7503H114.133V12.7412Z\",\n fill: \"white\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M119.332 20.0784C117.922 20.0784 116.775 18.9315 116.775 17.5216C116.775 16.1118 117.922 14.9649 119.332 14.9649C120.742 14.9649 121.889 16.1118 121.889 17.5216C121.889 18.9315 120.742 20.0784 119.332 20.0784ZM119.332 12.7412C118.244 12.7412 117.183 13.1176 116.334 13.8033V12.9621H114.133V25.7503H116.334V21.2402C117.183 21.926 118.244 22.3024 119.332 22.3024C121.968 22.3024 124.113 20.1576 124.113 17.5217C124.113 14.886 121.968 12.7412 119.332 12.7412Z\",\n fill: \"white\"\n }))), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 16,\n cy: 16,\n r: 16,\n fill: \"url(#paint0_linear)\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.9707 7.20001C17.4803 7.20001 15.6815 9.19209 15.2017 10.5987C14.3601 12.7633 14.7154 14.426 15.0285 15.8923L15.0512 15.9991C15.3419 17.3628 15.6163 18.6508 15.2234 20.2673C15.1869 20.4886 15.1221 20.7063 15.0307 20.9143C14.5812 21.9452 13.5617 22.6109 12.4338 22.6109C10.8728 22.6109 9.60277 21.3485 9.60277 19.7964C9.60277 18.2437 10.8728 16.9805 12.4338 16.9805C12.8542 16.9805 13.2582 17.0706 13.6355 17.2478L13.9643 17.4025L13.5546 14.9127L13.4253 14.8867C13.101 14.8218 12.7673 14.7892 12.4338 14.7892C9.65803 14.7892 7.3999 17.0353 7.3999 19.7964C7.3999 22.5576 9.65803 24.8036 12.4338 24.8036C14.7381 24.8036 16.7435 23.2539 17.3075 21.0474C17.8778 19.3192 17.6112 17.7424 17.2333 16.0072L17.1911 15.8141C16.8203 14.1169 16.5273 12.7763 17.4106 11.0062C17.8756 10.026 18.8803 9.39237 19.9707 9.39237C21.531 9.39237 22.8007 10.6548 22.8007 12.2068C22.8007 13.7588 21.531 15.0217 19.9707 15.0217C19.5838 15.0217 19.2081 14.9453 18.8528 14.794L18.5334 14.6584L18.9368 17.1101L19.0695 17.1343C19.3643 17.1873 19.6676 17.2145 19.9707 17.2145C22.7458 17.2145 25.0035 14.9679 25.0035 12.2068C25.0035 9.44603 22.7458 7.20001 19.9707 7.20001Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: -0.264463,\n y1: 15.1351,\n x2: 29.2813,\n y2: 14.8475,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#5569DB\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8572FF\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoDark);\nexport default __webpack_public_path__ + \"static/media/logo-dark.7b8c12091e650c40c5e9f561c57473ba.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _mask, _g, _circle, _path7, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLogoWhite(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 119,\n height: 32,\n viewBox: \"0 0 119 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M41 21.8866H43.3981V9.07214H41V21.8866Z\",\n fill: \"#212121\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M56.964 20.2756C55.6461 21.5753 53.9435 22.1794 52.0943 22.1794C47.3346 22.1794 45.3209 18.9026 45.3028 15.571C45.2846 12.221 47.4628 8.81567 52.0943 8.81567C53.8336 8.81567 55.4814 9.47469 56.7995 10.7745L55.1882 12.3306C54.3463 11.5071 53.2115 11.1225 52.0943 11.1225C49.0007 11.1225 47.6643 13.4291 47.6829 15.571C47.7009 17.6946 48.9276 19.9098 52.0943 19.9098C53.2115 19.9098 54.4743 19.4521 55.3166 18.61L56.964 20.2756Z\",\n fill: \"#212121\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M60.5545 15.9001H64.1792C67.2728 15.9001 67.2547 11.3599 64.1792 11.3599H60.5545V15.9001ZM64.1792 18.1154H60.5544V21.8864H58.1379V9.07195C60.1518 9.07195 62.1655 9.05371 64.1792 9.05371C70.44 9.05371 70.4582 18.1154 64.1792 18.1154Z\",\n fill: \"#212121\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M78.4238 12.1659C77.9848 11.4335 76.7762 10.738 75.3852 10.738C73.591 10.738 72.7306 11.4884 72.7306 12.4406C72.7306 13.5571 74.0485 13.8685 75.5866 14.0516C78.2593 14.3811 80.7487 15.0765 80.7487 18.1336C80.7487 20.9895 78.2223 22.2162 75.3665 22.2162C72.7489 22.2162 70.735 21.4109 69.7834 19.0675L71.7967 18.0239C72.3643 19.4334 73.8472 20.056 75.4033 20.056C76.9227 20.056 78.3507 19.5251 78.3507 18.1336C78.3507 16.9256 77.0875 16.4311 75.3852 16.2481C72.7669 15.9371 70.3506 15.2415 70.3506 12.3673C70.3506 9.73087 72.9502 8.65113 75.3116 8.63257C77.3071 8.63257 79.3758 9.20021 80.3463 11.1769L78.4238 12.1659Z\",\n fill: \"#212121\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M90.5635 12.8431L92.5405 19.6346L94.6091 12.8431H97.0806L93.9315 21.9234H91.3321L90.3986 19.2507L89.5933 16.2299L88.7874 19.2507L87.8539 21.9234H85.2544L82.0872 12.8431H84.5773L86.6455 19.6346L88.6048 12.8431H90.5635Z\",\n fill: \"#212121\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M101.861 20.0878C100.452 20.0878 99.3046 18.9407 99.3046 17.5308C99.3046 16.1213 100.452 14.9742 101.861 14.9742C103.271 14.9742 104.418 16.1213 104.418 17.5308C104.418 18.9407 103.271 20.0878 101.861 20.0878ZM104.441 13.5086C103.669 13.0123 102.779 12.7505 101.861 12.7505C99.2252 12.7505 97.0806 14.8953 97.0806 17.531C97.0806 20.1671 99.2252 22.3117 101.861 22.3117C102.779 22.3117 103.669 22.0498 104.441 21.5536V22.1271H106.642V12.9164H104.441V13.5086Z\",\n fill: \"#212121\"\n })), _mask || (_mask = /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0\",\n \"mask-type\": \"alpha\",\n maskUnits: \"userSpaceOnUse\",\n x: 108,\n y: 12,\n width: 11,\n height: 14\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M108.133 12.7411H118.113V25.7502H108.133V12.7411Z\",\n fill: \"white\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.332 20.0783C111.922 20.0783 110.775 18.9313 110.775 17.5214C110.775 16.1117 111.922 14.9648 113.332 14.9648C114.742 14.9648 115.889 16.1117 115.889 17.5214C115.889 18.9313 114.742 20.0783 113.332 20.0783ZM113.332 12.7411C112.244 12.7411 111.183 13.1175 110.334 13.8032V12.9619H108.133V25.7502H110.334V21.2401C111.183 21.9259 112.244 22.3023 113.332 22.3023C115.968 22.3023 118.113 20.1575 118.113 17.5216C118.113 14.8859 115.968 12.7411 113.332 12.7411Z\",\n fill: \"#212121\"\n }))), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 16,\n cy: 16,\n r: 16,\n fill: \"url(#paint0_linear)\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.9707 7.19995C17.4803 7.19995 15.6815 9.19203 15.2017 10.5987C14.3601 12.7632 14.7154 14.4259 15.0285 15.8922L15.0512 15.999C15.3419 17.3627 15.6163 18.6507 15.2234 20.2673C15.1869 20.4886 15.1221 20.7062 15.0307 20.9142C14.5812 21.9451 13.5617 22.6108 12.4338 22.6108C10.8728 22.6108 9.60277 21.3484 9.60277 19.7964C9.60277 18.2436 10.8728 16.9804 12.4338 16.9804C12.8542 16.9804 13.2582 17.0705 13.6355 17.2477L13.9643 17.4024L13.5546 14.9126L13.4253 14.8867C13.101 14.8218 12.7673 14.7891 12.4338 14.7891C9.65803 14.7891 7.3999 17.0353 7.3999 19.7964C7.3999 22.5576 9.65803 24.8036 12.4338 24.8036C14.7381 24.8036 16.7435 23.2538 17.3075 21.0474C17.8778 19.3192 17.6112 17.7424 17.2333 16.0071L17.1911 15.814C16.8203 14.1169 16.5273 12.7763 17.4106 11.0062C17.8756 10.0259 18.8803 9.39231 19.9707 9.39231C21.531 9.39231 22.8007 10.6547 22.8007 12.2068C22.8007 13.7587 21.531 15.0217 19.9707 15.0217C19.5838 15.0217 19.2081 14.9453 18.8528 14.794L18.5334 14.6583L18.9368 17.1101L19.0695 17.1342C19.3643 17.1872 19.6676 17.2144 19.9707 17.2144C22.7458 17.2144 25.0035 14.9679 25.0035 12.2068C25.0035 9.44597 22.7458 7.19995 19.9707 7.19995Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: -0.264463,\n y1: 15.1351,\n x2: 29.2813,\n y2: 14.8475,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#5569DB\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8572FF\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoWhite);\nexport default __webpack_public_path__ + \"static/media/logo-white.3e0cd9be6a0e52b49b72c67e9486d930.svg\";\nexport { ForwardRef as ReactComponent };","import { useTheme } from \"components/Mui\";\n\nimport logoDark from \"../assets/images/logo-dark.svg\";\nimport logo from \"../assets/images/logo-white.svg\";\n\nexport default function Logo() {\n const theme = useTheme();\n\n return \"\";\n}\n","import { Link } from \"react-router-dom\";\nimport { ButtonBase } from \"components/Mui\";\nimport Logo from \"components/Logo\";\n\nexport default function LogoSection() {\n return (\n \n \n \n );\n}\n","import { useRef } from \"react\";\nimport { Box, Typography } from \"components/Mui\";\nimport Copy, { CopyRef } from \"components/Copy\";\nimport { Image } from \"components/index\";\nimport { mockALinkAndOpen, shorten } from \"@icpswap/utils\";\nimport { Flex } from \"@icpswap/ui\";\n\nexport interface AddressSectionProps {\n label: string;\n link: string | undefined;\n address: string | undefined;\n}\n\nexport function AddressSection({ label, link, address }: AddressSectionProps) {\n const copyRef = useRef(null);\n\n const handleCopy = () => {\n if (copyRef) {\n copyRef?.current?.copy();\n }\n };\n\n const handleToExplorer = () => {\n if (!link) return;\n mockALinkAndOpen(link, \"explorers_address\");\n };\n\n return (\n \n \n {label}\n \n\n \n {address ? shorten(address) : \"--\"}\n \n\n \n\n \n \n );\n}\n","import { explorerLink, principalToAccount } from \"@icpswap/utils\";\nimport { useAccountPrincipalString } from \"store/auth/hooks\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { AddressSection } from \"./Address\";\n\nexport function AccountSection() {\n const { t } = useTranslation();\n const principal = useAccountPrincipalString();\n\n return (\n \n );\n}\n","import { explorerLink } from \"@icpswap/utils\";\nimport { useAccountPrincipalString } from \"store/auth/hooks\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { AddressSection } from \"./Address\";\n\nexport default function ProfileSection() {\n const { t } = useTranslation();\n const principal = useAccountPrincipalString();\n\n return (\n \n );\n}\n","import { makeStyles, Theme, Button, Grid, Typography, Dialog, DialogTitle, DialogContent } from \"components/Mui\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n titleContainer: {\n position: \"relative\",\n },\n title: {\n fontSize: theme.fontSize.lg,\n fontWeight: 700,\n },\n detailItem: {\n marginBottom: \"24px\",\n },\n value: {\n textAlign: \"right\",\n wordBreak: \"break-all\",\n },\n closeButton: {\n position: \"absolute\",\n right: 0,\n top: \"50%\",\n transform: \"translate(0, -50%)\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.palette.secondary.main,\n },\n },\n}));\n\nexport default function LogoutConfirmModal({\n open,\n onCancel,\n onConfirm,\n}: {\n open: boolean;\n onCancel: () => void;\n onConfirm: () => void;\n}) {\n const { t } = useTranslation();\n const classes = useStyles();\n\n return (\n \n \n \n \n {t(\"common.logout\")}\n \n \n \n \n \n \n {t(\"logout.description\")}\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { useState, ReactNode } from \"react\";\nimport { Box } from \"components/Mui\";\nimport { useConnectManager } from \"store/auth/hooks\";\n\nimport LogoutConfirmModal from \"./Confirm\";\n\nexport default function LogOutSection({ children, onLogout }: { children: ReactNode; onLogout?: () => void }) {\n const [logoutConfirmOpen, setLogoutConfirmOpen] = useState(false);\n const { disconnect } = useConnectManager();\n\n const onLogoutConfirm = async () => {\n await disconnect();\n setLogoutConfirmOpen(false);\n if (onLogout) onLogout();\n };\n\n return (\n <>\n setLogoutConfirmOpen(true)}>{children}\n setLogoutConfirmOpen(false)}\n />\n \n );\n}\n","import { Typography } from \"components/Mui\";\nimport { formatDollarAmount, formatIcpAmount, parseTokenAmount } from \"@icpswap/utils\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { Flex } from \"@icpswap/ui\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { useInfoToken } from \"@icpswap/hooks\";\nimport { useTokenBalance } from \"hooks/token/useTokenBalance\";\n\nexport function BalanceAndValue() {\n const principal = useAccountPrincipal();\n\n const infoToken = useInfoToken(ICP.address);\n const { result: tokenBalance } = useTokenBalance(ICP.address, principal);\n\n return (\n \n \n {tokenBalance && infoToken\n ? formatDollarAmount(parseTokenAmount(tokenBalance, ICP.decimals).multipliedBy(infoToken.priceUSD).toString())\n : \"--\"}\n \n\n \n {tokenBalance ? formatIcpAmount(parseTokenAmount(tokenBalance, ICP.decimals).toString()) : \"--\"} ICP\n \n \n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n useTheme,\n Popper,\n Box,\n Typography,\n useMediaQuery,\n Button,\n ClickAwayListener,\n Paper,\n Fade,\n} from \"components/Mui\";\nimport { shorten } from \"@icpswap/utils\";\nimport { useAccountPrincipal, useConnectorStateConnected, useConnectManager, useConnector } from \"store/auth/hooks\";\nimport { Flex } from \"@icpswap/ui\";\nimport { ConnectorImage, Image } from \"components/Image/index\";\nimport { ChevronDown } from \"react-feather\";\nimport { useHistory } from \"react-router-dom\";\nimport { Connector } from \"constants/wallet\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { AccountSection } from \"./Account\";\nimport Principal from \"./Principal\";\nimport LogOutSection from \"../LogOutSection\";\nimport { BalanceAndValue } from \"./BalanceAndValue\";\n\nexport default function ProfileSection() {\n const { t } = useTranslation();\n const theme = useTheme();\n const matchDownMD = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const [open, setOpen] = useState(false);\n\n const anchorRef = useRef(null);\n const prevOpen = useRef(open);\n const principal = useAccountPrincipal();\n const isConnected = useConnectorStateConnected();\n const history = useHistory();\n const connector = useConnector();\n\n const { showConnector, disconnect } = useConnectManager();\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n const handleClose = (event: MouseEvent | TouchEvent) => {\n if (anchorRef.current && anchorRef.current.contains(event.target as Node)) return;\n setOpen(false);\n };\n\n const handleConnectWallet = async () => {\n await disconnect();\n showConnector(true);\n };\n\n useEffect(() => {\n if (anchorRef.current && prevOpen.current === true && open === false) {\n anchorRef.current.focus();\n }\n prevOpen.current = open;\n }, [open]);\n\n const handleToWallet = useCallback(() => {\n history.push(\"/wallet\");\n }, [history]);\n\n return (\n \n {isConnected ? (\n \n ) : null}\n\n \n {isConnected ? (\n \n \n \n {principal ? shorten(principal.toString()) : \"\"}\n \n \n \n ) : (\n \n )}\n \n\n \n {({ TransitionProps }) => (\n \n \n \n \n \n \n setOpen(false)}>\n \n \n \n\n \n\n \n \n {t(\"wallet.copy.descriptions\")}\n \n\n \n \n \n\n \n \n \n \n\n {connector === Connector.IC ? (\n \n \n {t(\"wallet.internet.identity.descriptions\")}\n \n \n ) : null}\n \n \n \n \n \n )}\n \n \n );\n}\n","\n/** This is auto generated by scripts/pre-deploy.js */\n\nexport const version: string = \"4.16.14\";\n","import TwitterIcon from \"./icons/Twitter\";\nimport TelegramIcon from \"./icons/Telegram\";\nimport DiscordIcon from \"./icons/Discord\";\nimport WebsiteIcon from \"./icons/Website\";\nimport MediumIcon from \"./icons/Medium\";\nimport GithubIcon from \"./icons/Github\";\nimport GitbookIcon from \"./icons/Gitbook\";\nimport DSCVRIcon from \"./icons/DSCVR\";\nimport SimpleModeIcon from \"./icons/SimpleMode\";\nimport ProModeIcon from \"./icons/ProMode\";\nimport LimitIcon from \"./icons/Limit\";\n\nimport { version } from \"../../../.version\";\n\nexport type Route = {\n name: string;\n path?: string;\n link?: string;\n subMenus?: SubMenu[];\n key: string | string[];\n icon?: () => JSX.Element;\n disabled?: boolean;\n};\n\nexport type SubMenu = Route;\n\nexport const MAX_NUMBER = 5;\n\nexport const MOBILE_MAX_NUMBER = 7;\n\nexport const routes: Route[] = [\n {\n key: \"swap\",\n name: `Swap`,\n path: \"/swap\",\n subMenus: [\n { key: \"simple-mode\", name: `Simple mode`, path: \"/swap\", icon: SimpleModeIcon },\n { key: \"pro-mode\", name: `Pro mode`, path: \"/swap/pro\", icon: ProModeIcon },\n { key: \"limit-order\", name: `Limit order`, path: \"/swap/limit\", icon: LimitIcon },\n ],\n },\n {\n key: \"liquidity\",\n name: `Liquidity`,\n path: \"/liquidity\",\n },\n {\n key: [\"farm\", \"stake\"],\n name: `Earn`,\n subMenus: [\n { key: \"farm\", name: `Farm`, path: \"/farm\" },\n { key: \"staking-token\", name: `Staking Pool V2`, path: \"/stake\" },\n ],\n },\n {\n key: \"ck-bridge\",\n name: `ck-Bridge`,\n path: `/ck-bridge`,\n },\n {\n key: \"info\",\n name: `Info`,\n path: \"/info-overview\",\n },\n {\n key: \"marketplace\",\n name: `NFT`,\n path: \"/marketplace/collections\",\n },\n {\n key: \"/token-claim\",\n name: `Claim`,\n path: \"/token-claim\",\n },\n {\n key: \"sns\",\n name: `SNS(Beta)`,\n path: `/sns/neurons`,\n },\n {\n key: \"voting\",\n name: `Voting`,\n path: `/voting`,\n },\n {\n key: \"followUS\",\n name: `Follow US`,\n subMenus: [\n { key: \"followUS_twitter\", name: `Twitter`, link: \"https://twitter.com/ICPSwap\", icon: TwitterIcon },\n { key: \"followUS_Telegram\", name: `Telegram`, link: \"https://t.me/ICPSwap_Official\", icon: TelegramIcon },\n {\n key: \"followUS_DSCVR\",\n name: `DSCVR`,\n link: \"https://h5aet-waaaa-aaaab-qaamq-cai.raw.ic0.app/p/icpswap\",\n icon: DSCVRIcon,\n },\n { key: \"followUS_Medium\", name: `Medium`, link: \"https://icpswap.medium.com/\", icon: MediumIcon },\n { key: \"followUS_Gitbook\", name: `Gitbook`, link: \"https://iloveics.gitbook.io/icpswap/\", icon: GitbookIcon },\n { key: \"followUS_Github\", name: `Github`, link: \"https://github.com/ICPSwap-Labs\", icon: GithubIcon },\n { key: \"followUS_Discord\", name: `Discord`, link: \"https://discord.gg/UFDTQkBfEB\", icon: DiscordIcon },\n { key: \"followUS_Website\", name: `Website`, link: \"http://icpswap.com/\", icon: WebsiteIcon },\n ],\n },\n // {\n // key: \"feedback\",\n // name: \"Feedback\",\n // link: \"https://forms.gle/E1WAEfemwDBnLmY66\",\n // },\n {\n key: \"wrap\",\n name: \"WICP\",\n path: \"/swap/v2/wrap\",\n },\n {\n key: \"version\",\n name: `Version ${version}`,\n path: \"\",\n disabled: true,\n },\n];\n\nexport function routeKey(key: string | string[]) {\n return typeof key === \"string\" ? key : key.join(\",\");\n}\n","export default function SimpleModeIcon() {\n return (\n \n \n \n );\n}\n","export default function ProModeIcon() {\n return (\n \n \n \n );\n}\n","export default function LimitIcon() {\n return (\n \n \n \n \n \n \n );\n}\n","export default function TwitterIcon() {\n return (\n \n \n \n );\n}\n","export default function TelegramIcon() {\n return (\n \n \n \n );\n}\n","export default function DSCVSRIcon() {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","export default function MediumIcon() {\n return (\n \n \n \n );\n}\n","export default function GithubIcon() {\n return (\n \n \n \n \n );\n}\n","export default function GithubIcon() {\n return (\n \n \n \n );\n}\n","export default function DiscordIcon() {\n return (\n \n \n \n \n );\n}\n","export default function WebsiteIcon() {\n return (\n \n \n \n \n );\n}\n","import { useLocation } from \"react-router-dom\";\nimport { Link } from \"components/index\";\nimport { MenuWrapper, MenuItem } from \"@icpswap/ui\";\n\nimport { Route, routeKey } from \"./config\";\n\nexport interface SubMenuPopperProps {\n route: Route;\n subMenuKey: string | null;\n onClickAway: () => void;\n anchor: any;\n onMenuClick: (route: Route) => void;\n placement?:\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"right-start\"\n | \"right-end\"\n | \"left-start\"\n | \"left-end\";\n menuWidth?: string;\n}\n\nexport function SubMenuPopper({\n route,\n subMenuKey,\n onClickAway,\n anchor,\n onMenuClick,\n placement,\n menuWidth,\n}: SubMenuPopperProps) {\n const location = useLocation();\n const pathName = location.pathname;\n\n const isActive = (route: Route) => {\n return pathName === route?.path;\n };\n\n return route.subMenus && route.subMenus.length ? (\n \n {(route.subMenus ?? []).map((subRoute) => {\n const Icon = subRoute.icon;\n\n return (\n \n : null}\n value={subRoute}\n onMenuClick={onMenuClick}\n />\n \n );\n })}\n \n ) : null;\n}\n","import { useState } from \"react\";\nimport { Link } from \"components/index\";\nimport { MenuWrapper, MenuItem } from \"@icpswap/ui\";\n\nimport { Route, routeKey } from \"./config\";\nimport { SubMenuPopper } from \"./SubMenuPopper\";\n\nexport interface ExceedRoutesPopperProps {\n routes: Route[];\n anchor: any;\n open: boolean;\n onMenuClick: (route: Route) => void;\n onClickAway: () => void;\n}\n\nexport function ExceedRoutesPopper({ open, routes, anchor, onMenuClick, onClickAway }: ExceedRoutesPopperProps) {\n const [subMenuOpenKey, setSubMenuOpenKey] = useState(null);\n const [subMenuTarget, setSubMenuTarget] = useState(undefined);\n\n const handleSubMenuMouseEnter = (route: Route, target: any) => {\n if (route.subMenus && route.subMenus.length) {\n setSubMenuOpenKey(routeKey(route.key));\n setSubMenuTarget(target);\n }\n };\n\n const handleSubMenuMouseLeave = () => {\n setSubMenuOpenKey(null);\n };\n\n const handleSubMenuClose = () => {\n setSubMenuOpenKey(null);\n };\n\n const handleMenuClick = (route: Route) => {\n if (!route.subMenus) {\n handleSubMenuClose();\n onMenuClick(route);\n }\n };\n\n return (\n \n {routes.map((route, index) => (\n \n handleMenuClick(route)}\n onMouseEnter={({ target }) => handleSubMenuMouseEnter(route, target)}\n onMouseLeave={handleSubMenuMouseLeave}\n disabled={route.disabled === true}\n >\n \n \n \n ))}\n \n );\n}\n","import { useRef, useState } from \"react\";\nimport { makeStyles, Box, Grid, Theme } from \"components/Mui\";\nimport { Flex } from \"@icpswap/ui\";\n\nimport { Route, MAX_NUMBER } from \"./config\";\nimport { ExceedRoutesPopper } from \"./ExceedRoutesPopper\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n navItem: {\n height: \"40px\",\n cursor: \"pointer\",\n padding: \"0 16px\",\n \"&:hover\": {\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n \"&.active\": {\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n [theme.breakpoints.down(\"md\")]: {\n height: \"36px\",\n padding: \"0 12px\",\n },\n },\n more: {\n padding: \"0 17px\",\n cursor: \"pointer\",\n \"&:hover\": {\n \"& .dot\": {\n background: \"#fff\",\n },\n },\n },\n dot: {\n width: \"5px\",\n height: \"5px\",\n background: theme.colors.darkTextSecondary,\n borderRadius: \"50%\",\n marginRight: \"6px\",\n \"&:last-child\": {\n marginRight: \"0px\",\n },\n },\n };\n});\n\nexport interface ExceedRoutesProps {\n routes: Route[];\n onMenuClick?: (route: Route) => void;\n}\n\nexport function ExceedRoutes({ routes, onMenuClick }: ExceedRoutesProps) {\n const classes = useStyles();\n const ref = useRef(null);\n\n const [open, setOpen] = useState(false);\n\n const handleMouseEnter = () => {\n setOpen(true);\n };\n\n const handleMouseLeave = () => {\n setOpen(false);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleMenuClick = (route: Route) => {\n setOpen(false);\n if (onMenuClick) onMenuClick(route);\n };\n\n return (\n \n \n \n \n \n \n\n index > MAX_NUMBER || index === MAX_NUMBER)}\n />\n \n );\n}\n","import { useState } from \"react\";\nimport { Box, Grid, Typography, useMediaQuery, useTheme } from \"components/Mui\";\nimport { useLocation } from \"react-router-dom\";\nimport { ChevronDown } from \"react-feather\";\nimport { Link } from \"components/index\";\n\nimport { Route, MAX_NUMBER, routeKey } from \"./config\";\nimport { SubMenuPopper } from \"./SubMenuPopper\";\n\nexport interface RoutesProps {\n routes: Route[];\n onMenuClick?: (route: Route) => void;\n}\n\nexport function Routes({ routes, onMenuClick }: RoutesProps) {\n const location = useLocation();\n const pathName = location.pathname;\n const theme = useTheme();\n\n const matchDownMD = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const [subMenuOpenKey, setSubMenuOpenKey] = useState(null);\n const [subMenuTarget, setSubMenuTarget] = useState(undefined);\n\n const handleMenuMouseEnter = (route: Route, target: any) => {\n if (route.subMenus && route.subMenus.length) {\n setSubMenuOpenKey(routeKey(route.key));\n setSubMenuTarget(target);\n }\n };\n\n const handleMenuMouseLeave = () => {\n setSubMenuOpenKey(null);\n };\n\n const handleSubMenuClose = () => {\n setSubMenuOpenKey(null);\n };\n\n function isActive(route: Route) {\n const mainRoute = pathName.split(\"/\")[1];\n\n if (typeof route.key === \"string\") {\n return !!route.path && (route.key === mainRoute || (route.key === \"info\" ? mainRoute.includes(\"info\") : false));\n }\n\n return route.key.includes(mainRoute);\n }\n\n const handleRouteClick = (route: Route) => {\n if (!route.subMenus) {\n handleSubMenuClose();\n if (onMenuClick) onMenuClick(route);\n }\n };\n\n return (\n <>\n {routes.map((route, index) =>\n index >= MAX_NUMBER ? null : (\n \n handleRouteClick(route)}\n className={`${isActive(route) ? \"active\" : \"\"}`}\n sx={{\n height: \"40px\",\n cursor: \"pointer\",\n padding: \"0 16px\",\n \"&:hover\": {\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n \"&.active\": {\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n [theme.breakpoints.down(\"md\")]: {\n height: \"36px\",\n padding: \"0 12px\",\n },\n }}\n >\n handleMenuMouseEnter(route, target)}\n onMouseLeave={handleMenuMouseLeave}\n >\n \n {route.name}\n {route.subMenus ? : null}\n \n\n \n \n \n \n ),\n )}\n \n );\n}\n","import { Box } from \"components/Mui\";\n\nimport { routes, MAX_NUMBER } from \"./config\";\nimport { ExceedRoutes } from \"./ExceedRoutes\";\nimport { Routes } from \"./Routes\";\n\nexport default function NavBar() {\n return (\n \n \n {routes.length > MAX_NUMBER ? : null}\n \n );\n}\n","var _circle, _path, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLogo1(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 16,\n cy: 16,\n r: 16,\n fill: \"url(#paint0_linear_39278_19113)\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20.1773 7.03906C17.6017 7.03906 15.7412 9.09941 15.245 10.5543C14.3745 12.793 14.742 14.5127 15.0658 16.0292L15.0893 16.1397C15.39 17.5501 15.6737 18.8822 15.2674 20.5542C15.2296 20.7831 15.1626 21.0082 15.0681 21.2233C14.6031 22.2895 13.5487 22.9781 12.3822 22.9781C10.7677 22.9781 9.45414 21.6724 9.45414 20.0671C9.45414 18.4612 10.7677 17.1547 12.3822 17.1547C12.817 17.1547 13.2349 17.2479 13.625 17.4311L13.9651 17.5912L13.5414 15.0161L13.4077 14.9892C13.0722 14.9221 12.7272 14.8883 12.3822 14.8883C9.51129 14.8883 7.17578 17.2114 7.17578 20.0671C7.17578 22.923 9.51129 25.246 12.3822 25.246C14.7655 25.246 16.8396 23.6431 17.4229 21.361C18.0127 19.5736 17.737 17.9428 17.3462 16.148L17.3025 15.9483C16.919 14.193 16.616 12.8065 17.5296 10.9757C18.0104 9.96187 19.0496 9.30655 20.1773 9.30655C21.7912 9.30655 23.1043 10.6122 23.1043 12.2175C23.1043 13.8226 21.7912 15.1288 20.1773 15.1288C19.7773 15.1288 19.3886 15.0498 19.0211 14.8933L18.6908 14.753L19.108 17.2888L19.2452 17.3138C19.5502 17.3686 19.8639 17.3967 20.1773 17.3967C23.0476 17.3967 25.3827 15.0732 25.3827 12.2175C25.3827 9.36205 23.0476 7.03906 20.1773 7.03906Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_39278_19113\",\n x1: -0.264463,\n y1: 15.1351,\n x2: 29.2813,\n y2: 14.8475,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#5569DB\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8572FF\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo1);\nexport default __webpack_public_path__ + \"static/media/logo1.2fb6a8dc89f75f8ba16877a187602346.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgArrowDown(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_39281_19125)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5303 9.53033C18.8232 9.23744 18.8232 8.76256 18.5303 8.46967C18.2374 8.17678 17.7626 8.17678 17.4697 8.46967L18.5303 9.53033ZM12 15L11.4697 15.5303C11.7626 15.8232 12.2374 15.8232 12.5303 15.5303L12 15ZM6.53033 8.46967C6.23744 8.17678 5.76256 8.17678 5.46967 8.46967C5.17678 8.76256 5.17678 9.23744 5.46967 9.53033L6.53033 8.46967ZM17.4697 8.46967L11.4697 14.4697L12.5303 15.5303L18.5303 9.53033L17.4697 8.46967ZM12.5303 14.4697L6.53033 8.46967L5.46967 9.53033L11.4697 15.5303L12.5303 14.4697Z\",\n fill: \"#8492C4\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_39281_19125\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 24,\n height: 24,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDown);\nexport default __webpack_public_path__ + \"static/media/arrow-down.225a9b51561a669be37be87e6b27199c.svg\";\nexport { ForwardRef as ReactComponent };","import { useState } from \"react\";\nimport { Box, Typography, Collapse } from \"components/Mui\";\nimport { ReactComponent as ArrowDownIcon } from \"assets/images/arrow-down.svg\";\nimport { useLocation } from \"react-router-dom\";\n\nimport { Route, routeKey } from \"../config\";\n\nexport interface RoutesProps {\n routes: Route[];\n onRouteClick: (route: Route) => void;\n}\n\nexport function Routes({ routes, onRouteClick }: RoutesProps) {\n const location = useLocation();\n const pathName = location.pathname;\n const [collapseKey, setCollapseKey] = useState(undefined);\n\n const handleRouteClick = (route: Route) => {\n if (route.subMenus) {\n if (collapseKey === routeKey(route.key)) {\n setCollapseKey(undefined);\n } else {\n setCollapseKey(routeKey(route.key));\n }\n\n return;\n }\n\n onRouteClick(route);\n };\n\n const isActive = (route: Route) => {\n return pathName === route?.path;\n };\n\n return (\n <>\n {routes.map((route, index) => {\n return (\n handleRouteClick(route)}\n sx={{\n padding: \"24px 16px\",\n borderBottom: \"1px solid #29314F\",\n \"&:last-type-of\": {\n borderBottom: \"none\",\n },\n }}\n >\n \n \n {route.name}\n \n\n {route.subMenus ? : null}\n \n\n \n {route.subMenus && route.subMenus.length ? (\n \n {(route.subMenus ?? []).map((subRoute) => {\n const Icon = subRoute.icon;\n\n return (\n handleRouteClick(subRoute)}\n sx={{\n color: isActive(subRoute) ? \"text.primary\" : \"text.secondary\",\n }}\n >\n \n {Icon ? : null}\n \n {subRoute.name}\n \n \n \n );\n })}\n \n ) : null}\n \n \n );\n })}\n \n );\n}\n","import { useMemo, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { mockALinkAndOpen } from \"@icpswap/utils\";\nimport { XCircle } from \"react-feather\";\nimport { ReactComponent as Logo } from \"assets/images/logo1.svg\";\nimport { Box, Collapse } from \"components/Mui\";\nimport { ReactComponent as ArrowDownIcon } from \"assets/images/arrow-down.svg\";\n\nimport { Routes } from \"./Routes\";\nimport { routes, Route, MOBILE_MAX_NUMBER, routeKey } from \"../config\";\n\nexport interface MobileNavbarProps {\n onClose?: () => void;\n}\n\nexport default function MobileNavbar({ onClose }: MobileNavbarProps) {\n const history = useHistory();\n const [collapseKey, setCollapseKey] = useState(undefined);\n const [exceedOpen, setExceedOpen] = useState(false);\n\n const handleRouteClick = (route: Route) => {\n if (route.subMenus) {\n if (collapseKey === routeKey(route.key)) {\n setCollapseKey(undefined);\n } else {\n setCollapseKey(routeKey(route.key));\n }\n\n return;\n }\n\n if (!route.path && !route.link) return;\n\n if (route.link) {\n mockALinkAndOpen(route.link ?? \"\", \"nav-bar-menu\");\n } else {\n history.push(route.path ?? \"\");\n }\n\n if (onClose) onClose();\n };\n\n const noExceedRoutes = useMemo(() => {\n return routes.filter((route, index) => index < MOBILE_MAX_NUMBER);\n }, [routes, MOBILE_MAX_NUMBER]);\n\n const exceedRoutes = useMemo(() => {\n return routes.filter((route, index) => index >= MOBILE_MAX_NUMBER);\n }, [routes, MOBILE_MAX_NUMBER]);\n\n return (\n <>\n \n \n \n \n\n {/* \n \n */}\n\n \n \n\n {exceedRoutes.length > 0 ? (\n <>\n setExceedOpen(!exceedOpen)}\n >\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n ) : null}\n \n \n );\n}\n","import { useState } from \"react\";\nimport { Box, useMediaQuery, Drawer } from \"components/Mui\";\nimport { Flex } from \"@icpswap/ui\";\nimport DensityMediumIcon from \"@mui/icons-material/DensityMedium\";\n\nimport LogoSection from \"../../LogoSection\";\nimport ProfileSection from \"./ProfileSection\";\nimport Navbar from \"../Navbar\";\nimport MobileNavbar from \"../Navbar/mobile/Navbar\";\n\nexport default function Header() {\n const [drawerOpen, setDrawerOpen] = useState(false);\n\n const matchDownMD = useMediaQuery(\"(max-width:960px)\");\n\n const handleToggleDrawer = () => {\n setDrawerOpen(true);\n };\n\n return (\n <>\n \n \n {matchDownMD ? (\n \n ) : (\n <>\n \n \n \n \n \n )}\n \n\n \n \n \n\n setDrawerOpen(false)}\n sx={{\n width: \"100%\",\n \"& .MuiPaper-root\": {\n width: \"100%\",\n },\n }}\n >\n setDrawerOpen(false)} />\n \n \n \n );\n}\n","import { Grid, Box, Typography } from \"components/Mui\";\n\nfunction CloseIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport interface GlobalTipsProps {\n onClose: () => void;\n}\n\nexport function SnsTips({ onClose }: GlobalTipsProps) {\n return (\n \n \n \n The SNS function is deployed based on the NNS frontend and is currently in public testing.\n \n \n\n \n \n \n \n );\n}\n","import { useTheme, Box } from \"components/Mui\";\nimport { Flex } from \"@icpswap/ui\";\nimport { BigNumber } from \"@icpswap/utils\";\n\nconst levels = [0, 1, 2, 3, 4];\n\ninterface NetworkStateIconProps {\n level: number;\n height?: string;\n}\n\nexport function NetworkStateIcon({ level, height = \"11px\" }: NetworkStateIconProps) {\n const theme = useTheme();\n\n return (\n \n {levels.map((element, index) => (\n = 3\n ? \"#54C081\"\n : level <= 1\n ? \"#D3625B\"\n : \"#F7B231\"\n : theme.palette.background.level4,\n borderRadius: \"30px\",\n }}\n />\n ))}\n \n );\n}\n","import { useTheme, Box, Typography, BoxProps } from \"components/Mui\";\nimport { Flex, Link } from \"@icpswap/ui\";\nimport { useSubnetBlockRate, useNodeMachinesOfSubnet } from \"@icpswap/hooks\";\nimport { useMemo } from \"react\";\nimport { BigNumber, isNullArgs } from \"@icpswap/utils\";\nimport { ArrowUpRight } from \"react-feather\";\nimport { ICPSwapSubnet, ICPSwapStableBlockRate } from \"constants/index\";\nimport { NetworkStateIcon } from \"components/NetworkStateIcon\";\nimport { useTranslation } from \"react-i18next\";\n\nexport interface SubnetStateProps {\n fullWidth?: boolean;\n wrapperSx?: BoxProps[\"sx\"];\n}\n\nexport function SubnetState({ fullWidth, wrapperSx }: SubnetStateProps) {\n const { t } = useTranslation();\n const theme = useTheme();\n\n const { result: nodeMachines } = useNodeMachinesOfSubnet({ subnet: ICPSwapSubnet });\n const { result: subnet } = useSubnetBlockRate({ subnet: ICPSwapSubnet });\n\n const totalNodeMachines = useMemo(() => {\n if (isNullArgs(nodeMachines)) return null;\n return nodeMachines.nodes.length;\n }, [nodeMachines]);\n\n const blockRateLevel = useMemo(() => {\n if (isNullArgs(subnet)) return null;\n const val = subnet.block_rate[0];\n const block_rate = val ? val[1] : null;\n if (!block_rate) return null;\n\n const rate = new BigNumber(block_rate).dividedBy(ICPSwapStableBlockRate);\n\n return rate.isGreaterThan(0.8)\n ? 4\n : rate.isGreaterThan(0.6)\n ? 3\n : rate.isGreaterThan(0.4)\n ? 2\n : rate.isGreaterThan(0.2)\n ? 1\n : 0;\n }, [subnet]);\n\n return (\n \n \n \n \n \n \n {t(\"subnet.state\", { subnet: ICPSwapSubnet.slice(0, 5) })}\n \n\n {blockRateLevel ? : null}\n \n\n \n {t(\"subnet.node.machines\")}\n \n \n \n {totalNodeMachines ?? \"--\"}\n \n \n \n \n \n \n \n \n \n );\n}\n","import { useCallback } from \"react\";\nimport { Null } from \"@icpswap/types\";\nimport { isNullArgs } from \"@icpswap/utils\";\n\nimport { useCallsData } from \"../useCallData\";\n\ninterface NodeMachineResult {\n total_nodes: Array<[number, string]>;\n up_nodes: Array<[number, string]>;\n}\n\nexport function useNodeMachines() {\n return useCallsData(\n useCallback(async () => {\n const fetch_result = await fetch(\"https://ic-api.internetcomputer.org/api/v3/metrics/ic-nodes-count\").catch(\n () => undefined,\n );\n if (!fetch_result) return undefined;\n return (await fetch_result.json()) as NodeMachineResult;\n }, []),\n );\n}\n\nexport interface NodeMachinesOfSubnet {\n alertname: string;\n dc_id: string;\n dc_name: string;\n ip_address: string;\n node_id: string;\n node_operator_id: string;\n node_provider_id: string;\n node_provider_name: string;\n node_type: string;\n owner: string;\n region: string;\n status: string;\n subnet_id: string;\n}\n\nexport interface NodeMachinesOfSubnetResult {\n nodes: NodeMachineResult[];\n}\n\ninterface UserNodeMachinesOfSubnetProps {\n subnet: string | Null;\n}\n\nexport function useNodeMachinesOfSubnet({ subnet }: UserNodeMachinesOfSubnetProps) {\n return useCallsData(\n useCallback(async () => {\n if (isNullArgs(subnet)) return undefined;\n const fetch_result = await fetch(`https://ic-api.internetcomputer.org/api/v3/nodes?subnet=${subnet}`).catch(\n () => undefined,\n );\n if (!fetch_result) return undefined;\n return (await fetch_result.json()) as NodeMachinesOfSubnetResult;\n }, [subnet]),\n );\n}\n","import { useCallback } from \"react\";\nimport { Null } from \"@icpswap/types\";\nimport { isNullArgs } from \"@icpswap/utils\";\n\nimport { useCallsData } from \"../useCallData\";\n\ninterface SubnetRateResult {\n block_rate: Array<[number, string]>;\n}\n\ninterface UseSubtetBlockRateProps {\n subnet: string | Null;\n}\n\nexport function useSubnetBlockRate({ subnet }: UseSubtetBlockRateProps) {\n return useCallsData(\n useCallback(async () => {\n if (isNullArgs(subnet)) return null;\n\n const fetch_result = await fetch(\n `https://ic-api.internetcomputer.org/api/v3/metrics/block-rate?subnet=${subnet}`,\n ).catch(() => undefined);\n\n if (!fetch_result) return undefined;\n\n return (await fetch_result.json()) as SubnetRateResult;\n }, [subnet]),\n );\n}\n","import React, { useState, useMemo } from \"react\";\nimport { makeStyles, Box, Theme } from \"components/Mui\";\nimport { Flex, GlobalTips } from \"@icpswap/ui\";\nimport { useLocation } from \"react-router-dom\";\nimport Background from \"components/Background\";\n\nimport V3Event from \"./V3Event\";\nimport Header from \"./Header\";\nimport { SnsTips } from \"./SnsTips\";\nimport { SubnetState } from \"./SubnetState\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n content: {\n background: \"transparent\",\n width: \"100%\",\n flexGrow: 1,\n padding: \"0 16px\",\n borderRadius: \"8px\",\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n \"&.pro-padding\": {\n padding: \"0 12px\",\n },\n \"&.info\": {\n padding: 0,\n },\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n [theme.breakpoints.down(\"md\")]: {\n padding: \"0 16px\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n padding: \"0 12px\",\n backgroundColor: \"transparent\",\n },\n },\n mainContent: {\n position: \"relative\",\n minHeight: \"calc(100vh - 64px)\",\n // For network state\n paddingBottom: `${90 + 53}px`,\n \"&.pro\": {\n background: theme.palette.background.level1,\n },\n },\n };\n});\n\nexport function MainLayout({ children }: { children: React.ReactNode }) {\n const classes = useStyles();\n const location = useLocation();\n\n const [show, setShow] = useState(true);\n const [globalTipShow, setGlobalTipShow] = useState(false);\n const [snsTipShow, setSnsTipShow] = useState(true);\n\n const isSwapPro = useMemo(() => {\n return location.pathname === \"/swap/pro\";\n }, [location]);\n\n return (\n <>\n \n
\n \n\n \n {show && location.pathname.includes(\"/swap/v2\") ? setShow(false)} /> : null}\n {globalTipShow ? setGlobalTipShow(false)} /> : null}\n {snsTipShow && location.pathname.includes(\"sns\") ? setSnsTipShow(false)} /> : null}\n\n \n {children}\n \n\n \n \n\n \n \n );\n}\n","import React from \"react\";\nimport { MainLayout } from \"./MainLayout\";\nimport { InfoLayout } from \"../info/InfoLayout\";\n\nexport interface LayoutProps {\n children: React.ReactNode;\n info: boolean;\n}\n\nexport function Layout({ info, children }: LayoutProps) {\n return {info ? {children} : children};\n}\n","import React, { useEffect } from \"react\";\nimport * as Sentry from \"@sentry/react\";\nimport { Box, Typography, useTheme } from \"components/Mui\";\nimport { ReactComponent as BoundaryErrorImage } from \"assets/images/boundary-error.svg\";\nimport { Layout } from \"components/Layout/index\";\nimport copy from \"copy-to-clipboard\";\nimport { Flex } from \"@icpswap/ui\";\nimport i18n from \"i18n/index\";\n\ninterface FallbackProps {\n error: Error;\n eventId: string | number | null;\n}\n\nfunction Fallback({ error, eventId }: FallbackProps) {\n const theme = useTheme();\n\n const handleCopyError = () => {\n copy(`${error?.toString() ?? \"\"}_${eventId}`);\n };\n\n useEffect(() => {\n if (error) {\n const errorString = error.toString();\n if (/Loading chunk *.{1,} failed./.test(errorString) || /Unexpected token '<'/.test(errorString)) {\n window.location.reload();\n }\n }\n }, [error]);\n\n return (\n \n \n \n \n \n {i18n.t(\"error.boundary.oops\")}\n \n\n \n\n \n \n \n {error.toString()}\n \n\n \n {eventId}\n \n \n \n \n {i18n.t(\"common.copy\")}\n \n \n \n \n \n \n \n );\n}\n\nexport interface ErrorBoundaryProps {\n children: React.ReactNode;\n}\n\nexport default function ErrorBoundary({ children }: ErrorBoundaryProps) {\n return (\n // @ts-ignore\n }>\n {children}\n \n );\n}\n","import { useState, useEffect } from \"react\";\nimport { Box, Typography, useTheme, makeStyles } from \"components/Mui\";\nimport { useErrorTip } from \"hooks/useTips\";\nimport { Connector, IdentityKitConnector } from \"constants/index\";\nimport { useConnectManager } from \"store/auth/hooks\";\nimport { Flex } from \"@icpswap/ui\";\nimport { isSafari } from \"utils/index\";\nimport { WalletConnector } from \"utils/connector\";\nimport { useTranslation } from \"react-i18next\";\n\nconst useStyles = makeStyles(() => {\n return {\n loadingWrapper: {\n width: \"40px\",\n height: \"40px\",\n overflow: \"hidden\",\n \"&.loading\": {\n animation: `$loading 1000ms`,\n animationIterationCount: \"infinite\",\n },\n },\n \"@keyframes loading\": {\n \"0%\": {\n transform: \"rotate(0deg)\",\n },\n \"100%\": {\n transform: \"rotate(360deg)\",\n },\n },\n };\n});\n\nexport interface ConnectorProps {\n label: string;\n value: Connector;\n logo: string;\n disabled?: boolean;\n}\n\nexport function ConnectorComponent({ label, value, logo, disabled }: ConnectorProps) {\n const { t } = useTranslation();\n const theme = useTheme();\n const classes = useStyles();\n const [openErrorTip] = useErrorTip();\n const { showConnector, connect } = useConnectManager();\n\n const [loading, setLoading] = useState(false);\n const [initialedConnector, setInitialedConnector] = useState(null);\n\n // Only safari need init connector first for fix pop-up was\n // blocked when there has a asynchronous call before connecting the wallet\n useEffect(() => {\n async function call() {\n // Filter connector like NFID\n if (!IdentityKitConnector.includes(value)) {\n const initialedConnector = new WalletConnector();\n await initialedConnector.init(value);\n setInitialedConnector(initialedConnector);\n }\n }\n\n if (isSafari()) {\n call();\n }\n }, []);\n\n const handleConnect = async () => {\n if (disabled) return;\n\n try {\n if (loading || !value) return;\n\n if ((!window.ic || !window.ic?.infinityWallet) && value === Connector.INFINITY) {\n openErrorTip(t`Please install the Bitfinity wallet extension!`);\n return;\n }\n\n if ((!window.ic || !window.ic?.plug) && value === Connector.PLUG) {\n openErrorTip(t`Please install the plug wallet extension!`);\n return;\n }\n\n setLoading(true);\n\n const connectSuccessful = await connect(value, initialedConnector);\n\n if (!connectSuccessful) {\n openErrorTip(t`An unknown error occurred. Please try connect again.`);\n }\n\n showConnector(false);\n setLoading(false);\n } catch (error: any) {\n console.error(error);\n setLoading(false);\n\n openErrorTip(`Failed to connect to ${label}: ${error}`);\n }\n };\n\n return (\n \n \n \n {label}\n \n \n\n \n \"\"\n \n \n );\n}\n","import { Box, makeStyles, Theme, Typography } from \"components/Mui\";\nimport Modal from \"components/modal\";\nimport { Flex, TextButton } from \"components/index\";\nimport { ConnectorConfigs } from \"constants/wallet\";\nimport { useConnectManager } from \"store/auth/hooks\";\nimport { useTranslation, Trans } from \"react-i18next\";\n\nimport { ConnectorComponent } from \"./connector\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n wrapper: {\n position: \"relative\",\n borderRadius: \"12px\",\n maxWidth: \"100%\",\n },\n walletBox: {\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"16px 16px\",\n [theme.breakpoints.down(\"md\")]: {\n gridTemplateColumns: \"1fr \",\n gap: \"16px 0\",\n },\n },\n walletWrapper: {\n cursor: \"pointer\",\n padding: \"12px 16px\",\n background: \"rgba(255, 255, 255, 0.08)\",\n borderRadius: \"8px\",\n [theme.breakpoints.down(\"md\")]: {\n padding: \"8px 14px\",\n },\n },\n walletComingSoon: {\n height: \"80px\",\n background: \"rgba(17, 25, 54, 0.4)\",\n border: \"1px solid #29314F\",\n borderRadius: \"8px\",\n [theme.breakpoints.down(\"md\")]: {\n height: \"64px\",\n },\n },\n };\n});\n\nexport default function WalletConnector() {\n const { t } = useTranslation();\n const classes = useStyles();\n\n const { open, showConnector } = useConnectManager();\n\n return (\n showConnector(false)} title={t(\"auth.connect.a.wallet\")}>\n \n \n \n \n ),\n highlight1: (\n \n ),\n }}\n i18nKey=\"wallet.authentication.agree\"\n />\n \n\n \n \n {ConnectorConfigs.map((wallet) => (\n \n ))}\n \n \n \n \n \n );\n}\n","import { getPaginationAllData, getClaimEvents } from \"@icpswap/hooks\";\n\nexport async function getAllClaimEvents() {\n const call = async (offset: number, limit: number) => {\n return await getClaimEvents(offset, limit);\n };\n\n return getPaginationAllData(call, 1000);\n}\n","import { useEffect, useState, useMemo } from \"react\";\nimport { XTC, TOKEN_STANDARD, CAT, MOD, BoomDAO } from \"constants/tokens\";\nimport { ckSepoliaUSDC, ckSepoliaETH, ICP, WRAPPED_ICP } from \"@icpswap/tokens\";\nimport { getSwapPools } from \"@icpswap/hooks\";\nimport type { SwapPoolData } from \"@icpswap/types\";\nimport { registerTokens } from \"@icpswap/token-adapter\";\nimport { network, NETWORK } from \"constants/server\";\nimport { useUpdateTokenStandard, useTokenStandards } from \"store/token/cache/hooks\";\nimport { useGlobalTokenList } from \"store/global/hooks\";\nimport { usePoolCanisterIdManager, useUpdateAllSwapPools } from \"store/swap/hooks\";\nimport { getAllTokenPools } from \"hooks/staking-token/index\";\nimport { getAllClaimEvents } from \"hooks/token-claim\";\nimport { updateCanisters } from \"store/allCanisters\";\nimport { updateTokens } from \"store/allTokens\";\n\nexport const Tokens = [XTC, CAT, MOD, BoomDAO, ckSepoliaUSDC, ckSepoliaETH];\n\nexport interface UseInitialTokenStandardArgs {\n fetchGlobalTokensLoading: boolean;\n}\n\nexport function useInitialTokenStandard({ fetchGlobalTokensLoading }: UseInitialTokenStandardArgs) {\n const [tokensLoading, setTokensLoading] = useState(true);\n const [updated, setUpdated] = useState(false);\n\n const [AllPools, setAllPools] = useState(undefined);\n\n const updateTokenStandard = useUpdateTokenStandard();\n const updateAllSwapPools = useUpdateAllSwapPools();\n const globalTokenList = useGlobalTokenList();\n const [, updatePoolCanisterId] = usePoolCanisterIdManager();\n\n useEffect(() => {\n if (network === NETWORK.IC) {\n Promise.all([\n getSwapPools(),\n getAllTokenPools().catch(() => undefined),\n getAllClaimEvents().catch(() => undefined),\n ]).then(([allSwapPools, allTokenPools, allClaimEvents]) => {\n const allTokenStandards: { canisterId: string; standard: TOKEN_STANDARD }[] = [];\n\n allTokenPools?.forEach((pool) => {\n allTokenStandards.push({\n canisterId: pool.stakingToken.address,\n standard: pool.stakingToken.standard as TOKEN_STANDARD,\n });\n\n allTokenStandards.push({\n canisterId: pool.rewardToken.address,\n standard: pool.rewardToken.standard as TOKEN_STANDARD,\n });\n });\n\n allClaimEvents?.forEach((event) => {\n allTokenStandards.push({\n canisterId: event.tokenCid,\n standard: event.tokenStandard as TOKEN_STANDARD,\n });\n });\n\n allSwapPools?.forEach((pool) => {\n allTokenStandards.push({\n canisterId: pool.token0.address,\n standard: pool.token0.standard as TOKEN_STANDARD,\n });\n\n allTokenStandards.push({\n canisterId: pool.token1.address,\n standard: pool.token1.standard as TOKEN_STANDARD,\n });\n\n setAllPools(allSwapPools);\n\n updatePoolCanisterId({ key: pool.key, id: pool.canisterId.toString() });\n });\n\n registerTokens(allTokenStandards);\n updateTokenStandard(allTokenStandards);\n updateAllSwapPools(allSwapPools);\n\n const allCanisterIds = [\n ...(allSwapPools?.map((ele) => [ele.canisterId.toString(), ele.token0.address, ele.token1.address]) ?? []),\n ...(allTokenPools?.map((ele) => [\n ele.canisterId.toString(),\n ele.rewardToken.address,\n ele.stakingToken.address,\n ]) ?? []),\n ].reduce((prev, curr) => {\n return prev.concat(curr);\n }, [] as string[]);\n\n updateCanisters(allCanisterIds);\n updateTokens(allTokenStandards.map((e) => e.canisterId));\n\n setUpdated(true);\n });\n } else {\n setUpdated(true);\n }\n }, []);\n\n useEffect(() => {\n if (globalTokenList && globalTokenList.length > 0) {\n const allTokenStandards = globalTokenList.map((token) => {\n return {\n canisterId: token.canisterId,\n standard: token.standard as TOKEN_STANDARD,\n };\n });\n\n updateTokenStandard(allTokenStandards);\n\n setTokensLoading(false);\n\n const tokenIds = globalTokenList.map((ele) => ele.canisterId);\n\n updateCanisters(tokenIds);\n updateTokens(tokenIds);\n } else if (!fetchGlobalTokensLoading) {\n setTokensLoading(false);\n }\n }, [globalTokenList, fetchGlobalTokensLoading]);\n\n useEffect(() => {\n if (network === NETWORK.IC) {\n Tokens.forEach((token) => {\n updateTokenStandard([\n {\n canisterId: token.address,\n standard: token.standard as TOKEN_STANDARD,\n },\n ]);\n });\n\n const tokenIds = Tokens.map((ele) => ele.address);\n updateCanisters(tokenIds);\n updateTokens(tokenIds);\n }\n\n registerTokens([\n { canisterId: WRAPPED_ICP.address, standard: WRAPPED_ICP.standard as TOKEN_STANDARD },\n { canisterId: ICP.address, standard: ICP.standard as TOKEN_STANDARD },\n ]);\n }, []);\n\n // All token's standards, includes the local cached tokens\n const tokenStandards = useTokenStandards();\n useEffect(() => {\n if (tokenStandards) {\n const allStandards = Object.keys(tokenStandards).map((key) => ({\n canisterId: key,\n standard: tokenStandards[key],\n }));\n\n registerTokens(allStandards);\n }\n }, [tokenStandards]);\n\n return useMemo(() => {\n return {\n loading: fetchGlobalTokensLoading || tokensLoading || !updated,\n AllPools,\n };\n }, [tokensLoading, fetchGlobalTokensLoading, updated, AllPools]);\n}\n","import { CircularProgress } from \"components/Mui\";\n\nexport default function GreenCircleLoading() {\n return ;\n}\n","export function Arrow() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport function SuccessIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport function ErrorIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { useState, useEffect } from \"react\";\nimport { Box, Typography, useTheme } from \"components/Mui\";\nimport { Modal } from \"components/index\";\nimport GreenCircleLoading from \"components/Loading/GreenCircle\";\nimport { StepContents, StepDetailsProps } from \"types/step\";\nimport { Flex } from \"@icpswap/ui\";\nimport { isElement } from \"react-is\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { Arrow, SuccessIcon, ErrorIcon } from \"./icons\";\n\ninterface ActionIconProps {\n activeStep: number;\n ele: StepContents;\n errorStep: number | undefined;\n showErrorHint: boolean;\n}\n\nfunction ActionIcon({ ele, activeStep, showErrorHint }: ActionIconProps) {\n const theme = useTheme();\n\n return (\n \n \n {showErrorHint ? (\n \n \n \n ) : activeStep < ele.step ? (\n \n ) : activeStep === ele.step ? (\n \n ) : ele.step < activeStep ? (\n \n \n \n ) : null}\n \n \n );\n}\n\nexport default function _StepDetails({\n title,\n onClose,\n open,\n content,\n activeStep,\n errorStep,\n description,\n}: StepDetailsProps) {\n const { t } = useTranslation();\n const [openedSteps, setOpenedSteps] = useState([]);\n\n const theme = useTheme();\n\n const isStepOpened = (step: number) => {\n return !!openedSteps.includes(step) || step === activeStep;\n };\n\n const handleStepClick = (step: number) => {\n const index = openedSteps.indexOf(step);\n\n if (index === -1) {\n setOpenedSteps([...openedSteps, step]);\n } else {\n const newOpenedSteps = [...openedSteps];\n newOpenedSteps.splice(index, 1);\n setOpenedSteps([...newOpenedSteps]);\n }\n };\n\n useEffect(() => {\n if (activeStep === content.length) {\n if (onClose) onClose();\n }\n }, [content, activeStep]);\n\n const showErrorHint = (ele: StepContents) => {\n return errorStep === ele.step || !!ele.skipError;\n };\n\n return (\n \n {description ? {description} : null}\n\n \n\n \n {content.map((ele, index) => {\n return (\n \n \n \n {\n if (ele.children) handleStepClick(ele.step);\n }}\n >\n \n \n {ele.step + 1}.\n \n {isElement(ele.title) ? (\n ele.title\n ) : (\n \n {ele.title}\n \n )}\n \n\n {ele.children ? (\n \n \n \n ) : null}\n \n\n {isStepOpened(ele.step) && !!ele.children ? (\n \n 0 ? \"0px\" : \"12px\",\n borderBottomRightRadius:\n errorStep === ele.step && ele.errorActions && ele.errorActions.length > 0 ? \"0px\" : \"12px\",\n }}\n >\n {ele.children.map((ele1, index) => (\n \n \n {ele1.label}\n \n \n {ele1.value}\n \n \n ))}\n {ele.skipError ? (\n \n {t(\"common.error\")}\n \n {ele.skipError}\n \n \n ) : null}\n {!!ele.errorMessage && errorStep === ele.step ? (\n \n {t(\"common.error\")}\n \n {ele.errorMessage}\n \n \n ) : null}\n \n\n {errorStep === ele.step && ele.errorActions && ele.errorActions.length > 0 ? (\n \n {ele.errorActions.map((action, index) => (\n \n \n {action}\n \n \n ))}\n \n ) : null}\n \n ) : null}\n \n \n );\n })}\n \n \n );\n}\n","import StepDetails from \"components/Steps/Details\";\nimport { useOpenedSteps, useStepDetails } from \"store/steps/hooks\";\n\nfunction StepItem({ step }: { step: string }) {\n const { activeStep, errorStep, content, onClose, title, description } = useStepDetails(step);\n\n return (\n \n );\n}\n\nexport default function GlobalSteps() {\n const openedSteps = useOpenedSteps();\n\n return (\n <>\n {openedSteps.map((step) => (\n \n ))}\n \n );\n}\n","import { useErrorTip } from \"hooks/useTips\";\nimport { actor, ActorError } from \"@icpswap/actor\";\nimport { useEffect } from \"react\";\n\nconst INTERVAL = 30; // 30 seconds\n\nconst timeOfMessages: { [message: string]: number } = {};\n\nfunction isNewMessage(message: string) {\n const last_time = timeOfMessages[message];\n\n const now = new Date().getTime();\n\n if (!last_time) {\n timeOfMessages[message] = now;\n return true;\n }\n\n if (now - last_time > INTERVAL * 1000) {\n timeOfMessages[message] = now;\n return true;\n }\n\n return false;\n}\n\nexport function isWithoutCyclesError(message: string) {\n return (\n message.includes(\"Please top up the canister with cycles and try again\") ||\n message.includes(\"is out of cycles\") ||\n message.includes(\"could not perform remote call\")\n );\n}\n\nexport function isOutOfTimeRange(message: string) {\n return message.includes(\"Specified ingress_expiry not within expected range: Minimum allowed expiry\");\n}\n\nexport function useHandleActorError() {\n const [open] = useErrorTip();\n\n useEffect(() => {\n actor.onError((error: ActorError) => {\n if (isOutOfTimeRange(error.message)) {\n if (isNewMessage(\"Specified ingress_expiry not within expected range\")) {\n open(`Specified ingress_expiry not within expected range. Please reset your time on your device.`);\n }\n }\n });\n }, []);\n}\n","import { useHandleActorError } from \"hooks/useActorError\";\nimport { useActorSubmit } from \"hooks/useActorSubmit\";\nimport React from \"react\";\n\nexport default function Actor({ children }: { children: React.ReactNode }) {\n useHandleActorError();\n useActorSubmit();\n\n return <>{children};\n}\n","import { actor, BeforeSubmitArgs, Connector } from \"@icpswap/actor\";\nimport { useEffect } from \"react\";\nimport store from \"store/index\";\nimport i18n from \"i18n/index\";\n\nasync function isCurrentAccount() {\n // const { principal } = store.getState().auth;\n\n // TODO\n // if (window.ic && window.ic.plug && !!principal) {\n // const plugPrincipal = await window.ic.plug.getPrincipal();\n // return plugPrincipal.toString() === principal;\n // }\n\n return true;\n}\n\nexport function useActorSubmit() {\n useEffect(() => {\n actor.onSubmit(async (args: BeforeSubmitArgs) => {\n if (!!args.identity && store.getState().auth.walletType === Connector.PLUG) {\n if (!(await isCurrentAccount())) {\n return {\n success: false,\n message: i18n.t`There was an error when tried to interact with Plug. Please reconnect the plug.`,\n };\n }\n }\n\n return { success: true, message: \"\" };\n });\n }, []);\n}\n","/* eslint-disable lines-between-class-members */\n/* eslint-disable no-param-reassign */\n\nfunction wait(ms: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction waitRandom(min: number, max: number): Promise {\n return wait(min + Math.round(Math.random() * Math.max(0, max - min)));\n}\n\n/** Thrown if the function is canceled before resolving. */\nexport class CanceledError extends Error {\n name = \"CanceledError\";\n message = \"Retryable was canceled\";\n}\n\n/** May be thrown to force a retry. */\nexport class RetryableError extends Error {\n name = \"RetryableError\";\n}\n\nexport interface RetryOptions {\n n: number;\n minWait: number;\n maxWait: number;\n}\n\n/**\n * Retries a function until its returned promise successfully resolves, up to n times.\n * @param fn function to retry\n * @param n how many times to retry\n * @param minWait min wait between retries in ms\n * @param maxWait max wait between retries in ms\n */\nexport function retry(\n fn: () => Promise,\n { n, minWait, maxWait }: RetryOptions,\n): { promise: Promise; cancel: () => void } {\n let completed = false;\n let rejectCancelled: (error: Error) => void;\n // eslint-disable-next-line no-async-promise-executor\n const promise = new Promise(async (resolve, reject) => {\n rejectCancelled = reject;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let result: T;\n try {\n result = await fn();\n if (!completed) {\n resolve(result);\n completed = true;\n }\n break;\n } catch (error) {\n if (completed) {\n break;\n }\n if (n <= 0 || !(error instanceof RetryableError)) {\n reject(error);\n completed = true;\n break;\n }\n n--;\n }\n await waitRandom(minWait, maxWait);\n }\n });\n return {\n promise,\n cancel: () => {\n if (completed) return;\n completed = true;\n rejectCancelled(new CanceledError());\n },\n };\n}\n","import { TransactionReceipt } from \"@ethersproject/abstract-provider\";\nimport { ChainId } from \"@icpswap/constants\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { useBlockNumber, useCurrentBlockTimestamp } from \"hooks/web3/index\";\n// import { useFastForwardBlockNumber } from \"lib/hooks/useBlockNumber\";\nimport ms from \"ms\";\nimport { useCallback, useEffect } from \"react\";\nimport { useTransactionRemover } from \"store/transactions/hooks\";\nimport { TransactionDetails } from \"store/transactions/types\";\n\nimport { CanceledError, retry, RetryableError, RetryOptions } from \"./retry\";\n\ninterface Transaction {\n addedTime: number;\n receipt?: unknown;\n lastCheckedBlockNumber?: number;\n}\n\nexport function shouldCheck(lastBlockNumber: number, tx: Transaction): boolean {\n if (tx.receipt) return false;\n if (!tx.lastCheckedBlockNumber) return true;\n const blocksSinceCheck = lastBlockNumber - tx.lastCheckedBlockNumber;\n if (blocksSinceCheck < 1) return false;\n const minutesPending = (new Date().getTime() - tx.addedTime) / ms(`1m`);\n\n if (minutesPending > 60) {\n // every 10 blocks if pending longer than an hour\n return blocksSinceCheck > 9;\n }\n\n if (minutesPending > 5) {\n // every 3 blocks if pending longer than 5 minutes\n return blocksSinceCheck > 2;\n }\n\n return true;\n}\n\nconst RETRY_OPTIONS_BY_CHAIN_ID: { [chainId: number]: RetryOptions } = {\n [ChainId.ARBITRUM_ONE]: { n: 10, minWait: 250, maxWait: 1000 },\n [ChainId.ARBITRUM_GOERLI]: { n: 10, minWait: 250, maxWait: 1000 },\n [ChainId.OPTIMISM]: { n: 10, minWait: 250, maxWait: 1000 },\n [ChainId.OPTIMISM_GOERLI]: { n: 10, minWait: 250, maxWait: 1000 },\n [ChainId.BASE]: { n: 10, minWait: 250, maxWait: 1000 },\n};\nconst DEFAULT_RETRY_OPTIONS: RetryOptions = { n: 1, minWait: 0, maxWait: 0 };\n\ninterface UpdaterProps {\n pendingTransactions: { [hash: string]: TransactionDetails };\n onCheck: (tx: { chainId: number; hash: string; blockNumber: number }) => void;\n onReceipt: (tx: { chainId: number; hash: string; receipt: TransactionReceipt }) => void;\n}\n\nexport default function Updater({ pendingTransactions, onCheck, onReceipt }: UpdaterProps): null {\n const { account, chainId, provider } = useWeb3React();\n\n const lastBlockNumber = useBlockNumber();\n // const fastForwardBlockNumber = useFastForwardBlockNumber();\n const removeTransaction = useTransactionRemover();\n const blockTimestamp = useCurrentBlockTimestamp();\n\n const getReceipt = useCallback(\n (hash: string) => {\n if (!provider || !chainId) throw new Error(\"No provider or chainId\");\n const retryOptions = RETRY_OPTIONS_BY_CHAIN_ID[chainId] ?? DEFAULT_RETRY_OPTIONS;\n return retry(\n () =>\n provider.getTransactionReceipt(hash).then(async (receipt) => {\n if (receipt === null) {\n if (account) {\n const tx = pendingTransactions[hash];\n // Remove transactions past their deadline or - if there is no deadline - older than 6 hours.\n if (tx.deadline) {\n // Deadlines are expressed as seconds since epoch, as they are used on-chain.\n if (blockTimestamp && tx.deadline < blockTimestamp.toNumber()) {\n removeTransaction(hash);\n }\n } else if (tx.addedTime + ms(`6h`) < Date.now()) {\n removeTransaction(hash);\n }\n }\n throw new RetryableError();\n }\n return receipt;\n }),\n retryOptions,\n );\n },\n [account, blockTimestamp, chainId, pendingTransactions, provider, removeTransaction],\n );\n\n useEffect(() => {\n if (!chainId || !provider || !lastBlockNumber) return;\n\n const cancels = Object.keys(pendingTransactions)\n .filter((hash) => shouldCheck(lastBlockNumber, pendingTransactions[hash]))\n .map((hash) => {\n const { promise, cancel } = getReceipt(hash);\n promise\n .then((receipt) => {\n // fastForwardBlockNumber(receipt.blockNumber);\n onReceipt({ chainId, hash, receipt });\n })\n .catch((error) => {\n if (error instanceof CanceledError) return;\n onCheck({ chainId, hash, blockNumber: lastBlockNumber });\n });\n return cancel;\n });\n\n return () => {\n cancels.forEach((cancel) => cancel());\n };\n }, [chainId, provider, lastBlockNumber, getReceipt, onReceipt, onCheck, pendingTransactions]);\n\n return null;\n}\n","/* eslint-disable no-param-reassign */\nimport { TransactionReceipt } from \"@ethersproject/abstract-provider\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport LibUpdater from \"hooks/transactions/updater\";\nimport { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\n\nimport { isPendingTx } from \"./hooks\";\nimport { checkedTransaction, finalizeTransaction } from \"./reducer\";\nimport { SerializableTransactionReceipt, TransactionDetails } from \"./types\";\n\nexport function toSerializableReceipt(receipt: TransactionReceipt): SerializableTransactionReceipt {\n return {\n blockHash: receipt.blockHash,\n blockNumber: receipt.blockNumber,\n contractAddress: receipt.contractAddress,\n from: receipt.from,\n status: receipt.status,\n to: receipt.to,\n transactionHash: receipt.transactionHash,\n transactionIndex: receipt.transactionIndex,\n };\n}\n\nexport default function Updater() {\n // const analyticsContext = useTrace();\n const { chainId } = useWeb3React();\n\n // const addPopup = useAddPopup();\n\n // speed up popup dismissal time if on L2\n // const isL2 = Boolean(chainId && L2_CHAIN_IDS.includes(chainId));\n const transactions = useAppSelector((state) => state.transactions);\n const pendingTransactions = useMemo(() => {\n if (!chainId || !transactions[chainId]) return {};\n return Object.values(transactions[chainId]).reduce(\n (acc, tx) => {\n if (isPendingTx(tx)) acc[tx.hash] = tx;\n return acc;\n },\n {} as Record,\n );\n }, [chainId, transactions]);\n\n const dispatch = useAppDispatch();\n const onCheck = useCallback(\n ({ chainId, hash, blockNumber }: { chainId: number; hash: string; blockNumber: number }) =>\n dispatch(checkedTransaction({ chainId, hash, blockNumber })),\n [dispatch],\n );\n const onReceipt = useCallback(\n ({ chainId, hash, receipt }: { chainId: number; hash: string; receipt: TransactionReceipt }) => {\n dispatch(\n finalizeTransaction({\n chainId,\n hash,\n receipt: toSerializableReceipt(receipt),\n }),\n );\n\n // if (pendingTransactions[hash] && pendingTransactions[hash].info?.type === TransactionType.SWAP) {\n // logSwapSuccess(hash, chainId, analyticsContext);\n // }\n\n // addPopup(\n // {\n // type: PopupType.Transaction,\n // hash,\n // },\n // hash,\n // isL2 ? L2_TXN_DISMISS_MS : DEFAULT_TXN_DISMISS_MS,\n // );\n },\n // [addPopup, analyticsContext, dispatch, isL2, pendingTransactions],\n [dispatch, pendingTransactions],\n );\n\n return ;\n}\n","// @ts-nocheck\nimport { http, createConfig } from \"wagmi\";\nimport { mainnet, sepolia } from \"wagmi/chains\";\n\nexport const wagmiConfig = createConfig({\n chains: [mainnet, sepolia],\n transports: {\n [mainnet.id]: http(),\n [sepolia.id]: http(),\n },\n});\n","import React, { useEffect, useState } from \"react\";\n\nexport interface DisableIframeProps {\n children: React.ReactNode;\n}\n\nexport function DisableIframe({ children }: DisableIframeProps) {\n const [sameOrigin, setSameOrigin] = useState(true);\n\n useEffect(() => {\n if (top?.location !== self.location) {\n setSameOrigin(false);\n }\n }, [setSameOrigin]);\n\n return sameOrigin ? <>{children} :
Not support iframe now
;\n}\n","// import { useFetchInfoAllTokens } from \"hooks/info/useInfoTokens\";\nimport { useFetchInfoAllTokens } from \"@icpswap/hooks\";\nimport { useFetchBridgeTokens } from \"store/global/hooks\";\n\nexport function GlobalFetch() {\n useFetchInfoAllTokens();\n useFetchBridgeTokens();\n\n return null;\n}\n","import { Connector } from \"@web3-react/types\";\nimport { ConnectionType, injectedConnection } from \"./index\";\n\nconst CONNECTIONS = [injectedConnection];\n\nexport function getConnection(c: Connector | ConnectionType) {\n if (c instanceof Connector) {\n const connection = CONNECTIONS.find((connection) => connection.connector === c);\n if (!connection) {\n throw Error(\"unsupported connector\");\n }\n return connection;\n } \n return injectedConnection;\n \n}\n","import { Web3ReactHooks } from \"@web3-react/core\";\nimport { Connector } from \"@web3-react/types\";\nimport { ConnectionType } from \"utils/web3/connection\";\nimport { getConnection } from \"utils/web3/connection/utils\";\nimport { useMemo } from \"react\";\n\nexport const BACKFILLABLE_WALLETS = [\n ConnectionType.COINBASE_WALLET,\n ConnectionType.WALLET_CONNECT,\n ConnectionType.INJECTED,\n];\n\nconst SELECTABLE_WALLETS = [...BACKFILLABLE_WALLETS];\n\nexport default function useConnectors() {\n return useMemo(() => {\n const orderedConnectionTypes: ConnectionType[] = [];\n\n orderedConnectionTypes.push(...SELECTABLE_WALLETS);\n\n // Add network connection last as it should be the fallback.\n orderedConnectionTypes.push(ConnectionType.NETWORK);\n\n // Convert to web3-react's representation of connectors.\n const web3Connectors: [Connector, Web3ReactHooks][] = orderedConnectionTypes\n .map(getConnection)\n .map(({ connector, hooks }) => [connector, hooks]);\n return web3Connectors;\n }, []);\n}\n","import { Web3ReactProvider } from \"@web3-react/core\";\nimport useConnectors from \"hooks/web3/useConnectors\";\nimport useEagerlyConnect from \"hooks/web3/useEagerlyConnect\";\nimport { ReactNode } from \"react\";\n\nexport default function Web3Provider({ children }: { children: ReactNode }) {\n useEagerlyConnect();\n\n const connectors = useConnectors();\n\n return {children};\n}\n","import { metamask } from \"utils/web3/connection\";\nimport { useEffect } from \"react\";\nimport { isMobile } from \"react-device-detect\";\n\nexport default function useEagerlyConnect() {\n useEffect(() => {\n metamask.connectEagerly()?.catch(() => {\n console.error(\"Failed to connect eagerly to metamask\");\n });\n\n if (isMobile) {\n metamask.activate()?.catch(() => {\n console.error(\"Failed to connect eagerly to metamask\");\n });\n }\n }, []);\n}\n","import { useEffect, ReactNode } from \"react\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\n\nexport interface NavigationScrollProps extends RouteComponentProps {\n children: ReactNode;\n}\n\nexport default withRouter(({ children, location: { pathname } }: NavigationScrollProps) => {\n useEffect(() => {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: \"smooth\",\n });\n }, [pathname]);\n\n return children || (null as any);\n});\n","export const lightColors = {};\n\nexport const darkColors = {};\n\nexport default {\n paper: \"#ffffff\",\n\n // primary\n primaryLight: \"#e3f2fd\",\n primary200: \"#ffffff\",\n primaryMain: \"#8672FF\",\n primaryDark: \"#8672FF\",\n primary800: \"#1565c0\",\n\n // secondary\n secondaryLight: \"#ffffff\",\n secondary200: \"#b39ddb\",\n secondaryMain: \"#5669dc\",\n secondary800: \"#4527a0\",\n\n secondary: \"#5669dc\",\n\n // success\n successLight: \"#b9f6ca\",\n success200: \"#69f0ae\",\n successMain: \"#00e676\",\n successDark: \"#54c081\",\n\n // error\n errorLight: \"#ef9a9a\",\n errorMain: \"#f44336\",\n\n // orange\n orangeLight: \"#fbe9e7\",\n orangeMain: \"#ffab91\",\n orangeDark: \"#d84315\",\n\n // warning\n warningLight: \"#F2994A\",\n warningMain: \"#ffe57f\",\n warningDark: \"#ffc107\",\n\n danger: \"#D3625B\",\n\n warning: \"#B79C4A\",\n\n // grey\n grey50: \"#fafafa\",\n grey100: \"#f5f5f5\",\n grey200: \"#eeeeee\",\n grey300: \"#e0e0e0\",\n grey500: \"#9e9e9e\",\n grey600: \"#757575\",\n grey700: \"#616161\",\n grey900: \"#212121\",\n\n // -----------------------|| DARK THEME VARIANTS ||-----------------------//\n\n // paper & background\n darkPaper: \"#1a223f\",\n darkBackground: \"#1a223f\",\n\n // dark 800 & 900\n darkLevel1: \"#111936\",\n darkLevel2: \"#1a223f\",\n darkLevel3: \"#212946\",\n darkLevel4: \"#29314f\",\n darkLevel5: \"#273051\",\n\n // text variants\n darkTextPrimary: \"#ffffff\",\n darkTextSecondary: \"#8492c4\",\n darkTextTertiary: \"#4F5A84\",\n darkTextFourth: \"#29314F\",\n darkTextFifth: \"#212946\",\n\n disable: \"#4F5A84\",\n\n lightPrimaryMain: \"#8672FF\",\n\n lightTextTitle: \"#212121\",\n lightTextPrimary: \"#212121\",\n lightTextSecondary: \"#757575\",\n lightTextTertiary: \"#9E9E9E\",\n lightTextFourth: \"#F5F5F5\",\n lightTextFifth: \"#FAFAFA\",\n\n lightLevel2: \"#EFEFFF\",\n lightLevel4: \"#FAFAFA\",\n lightLevel5: \"#FAFAFA\",\n\n lightGray200: \"#f5f5f5\",\n lightGray50: \"#fafafa\",\n\n lightGray200BorderColor: \"#EFEFFF\",\n\n // primary dark\n darkPrimaryLight: \"#e3f2fd\",\n darkPrimaryMain: \"#8672FF\",\n darkPrimaryDark: \"#5669dc\",\n darkPrimary200: \"#000001\",\n darkPrimary800: \"#1565c0\",\n dark400: \"#4F5A84\",\n\n // secondary dark\n darkSecondaryLight: \"#212946\",\n darkSecondaryMain: \"#5669dc\",\n darkSecondaryDark: \"#5669dc\",\n darkSecondary200: \"#b39ddb\",\n darkSecondary800: \"#6200ea\",\n\n defaultGradientStart: \"#5569db\",\n defaultGradientEnd: \"#8572ff\",\n border0: \"#4F5A84\",\n border1: \"#353C5D\",\n\n apr: \"#54C081\",\n success: \"#54C081\",\n \"text.success\": \"#54C081\",\n color0: \"#313A5A\",\n};\n","import { isDarkTheme } from \"utils/index\";\nimport { createTheme, keyframes } from \"components/Mui\";\n\nimport colors from \"./colors\";\n\nconst MuiTheme = createTheme({});\n\nexport function componentStyleOverrides(theme: { [key: string]: any }) {\n const isDark = isDarkTheme(theme);\n\n const globalButtonBackground = isDark ? theme.defaultGradient : theme.colors.lightPrimaryMain;\n\n const menuHoverBackground = isDark ? theme.menuSelectedBack : theme.colors.lightLevel2;\n\n const CircularProgressKeyframes0 = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n `;\n\n const CircularProgressKeyframes1 = keyframes`\n 0% {\n stroke-dasharray: 1px,200px;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 100px,200px;\n stroke-dashoffset: -15px;\n }\n 100% {\n stroke-dasharray: 100px,200px;\n stroke-dashoffset: -125px;\n }\n `;\n\n return {\n MuiTypography: {\n styleOverrides: {\n root: {\n lineHeight: 1,\n \"&.fontSize14\": {\n fontSize: \"14px\",\n \"@media(max-width: 640px)\": {\n fontSize: \"12px\",\n },\n },\n \"&.fontSize12\": {\n fontSize: \"12px\",\n \"@media(max-width: 640px)\": {\n fontSize: \"12px\",\n },\n },\n },\n },\n },\n MuiButton: {\n styleOverrides: {\n root: {\n fontWeight: 500,\n borderRadius: \"12px\",\n textTransform: \"none\",\n \"&.MuiButton-outlinedPrimary\": {\n color: isDark ? theme.colors.secondaryMain : theme.colors.lightPrimaryMain,\n borderColor: isDark ? theme.colors.secondaryMain : theme.colors.lightPrimaryMain,\n \"&:hover\": {\n background: \"rgba(86, 105, 220, 0.1)\",\n },\n \"&.secondary\": {\n border: `1px solid ${colors.darkLevel4}`,\n color: \"#ffffff\",\n },\n },\n \"&.MuiButton-contained.Mui-disabled\": {\n ...(isDark\n ? {\n background: \"#4F5A84\",\n }\n : { color: \"#9E9E9E\", background: \"#E0E0E0\" }),\n },\n \"&.MuiButton-contained\": {\n \"&.secondary\": {\n background: colors.darkLevel4,\n boxShadow: \"none\",\n \"&.Mui-disabled\": {\n color: colors.darkTextTertiary,\n },\n },\n },\n \"&.MuiButton-outlined\": {\n \"&.Mui-disabled\": {\n color: \"#4F5A84\",\n border: \"1px solid #4F5A84\",\n },\n },\n },\n containedPrimary: {\n background: globalButtonBackground,\n },\n containedSecondary: {\n background: isDark ? theme.colors.darkLevel4 : \"#EFEFFF\",\n color: isDark ? \"#ffffff\" : theme.colors.primaryMain,\n border: \"1px solid #5569DB\",\n boxShadow: \"none\",\n },\n },\n },\n MuiPaper: {\n defaultProps: {\n elevation: 0,\n },\n styleOverrides: {\n root: {\n backgroundImage: \"none\",\n backgroundColor: isDark ? theme.colors.darkLevel1 : theme.colors.paper,\n\n // Date pick button\n \"&.MuiPaper-elevation.MuiPaper-rounded.MuiPaper-elevation8\": {\n \"& .MuiButtonBase-root.MuiIconButton-root.MuiIconButton-sizeMedium\": {\n \"&:hover\": {\n backgroundColor: theme.colors.primaryMain,\n },\n \"& .MuiTypography-caption\": {\n color: \"#fff\",\n },\n },\n },\n },\n rounded: {\n borderRadius: `${theme.borderRadius}px`,\n },\n },\n },\n MuiCardHeader: {\n styleOverrides: {\n root: {\n color: theme.colors.textDark,\n padding: \"24px\",\n },\n title: {\n fontSize: \"1.125rem\",\n },\n },\n },\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding: \"24px\",\n\n \"&:last-child\": {\n [MuiTheme.breakpoints.down(\"sm\")]: {\n paddingBottom: \"12px\",\n },\n },\n [MuiTheme.breakpoints.down(\"sm\")]: {\n padding: \"12px\",\n },\n },\n },\n },\n MuiCardActions: {\n styleOverrides: {\n root: {\n padding: \"24px\",\n },\n },\n },\n MuiAlert: {\n styleOverrides: {\n root: {\n alignItems: \"center\",\n },\n outlined: {\n border: \"1px dashed\",\n },\n },\n },\n MuiButtonBase: {\n styleOverrides: {\n root: {\n \"&.radius-12\": {\n borderRadius: \"12px\",\n },\n \"&.MuiListItem-root\": {\n color: theme.textSecondary,\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n backgroundColor: theme.menuBackground,\n \"&.Mui-selected\": {\n color: theme.textPrimary,\n backgroundColor: menuHoverBackground,\n \"&:hover\": {\n backgroundColor: menuHoverBackground,\n },\n \"& .MuiListItemIcon-root\": {\n color: theme.textPrimary,\n },\n },\n \"&:hover\": {\n backgroundColor: menuHoverBackground,\n color: theme.textPrimary,\n \"& .MuiListItemIcon-root\": {\n color: theme.textPrimary,\n },\n },\n },\n\n // sidebar menu\n \"&.MuiListItem-root&.sidebar\": {\n color: theme.textPrimary,\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n marginBottom: \"5px\",\n paddingLeft: \"0px\",\n \"&:last-child\": {\n marginBottom: 0,\n },\n \"& .MuiSvgIcon-root\": {\n color: \"#8492C4\",\n },\n \"&.Mui-selected, &:hover\": {\n color: theme.menuSelected,\n background: globalButtonBackground,\n \"& .MuiListItemIcon-root\": {\n color: theme.menuSelected,\n },\n \"& .MuiSvgIcon-root\": {\n color: theme.menuSelected,\n },\n },\n },\n \"&.MuiListItem-root&.sub\": {\n color: theme.textPrimary,\n paddingTop: \"7px\",\n paddingBottom: \"7px\",\n paddingLeft: \"0px\",\n background: \"transparent\",\n \"& .MuiSvgIcon-root\": {\n color: \"#8492C4\",\n },\n \"&.Mui-selected, &:hover\": {\n color: theme.menuSelected,\n background: \"transparent\",\n \"& .MuiListItemIcon-root\": {\n color: theme.menuSelected,\n },\n \"& .MuiSvgIcon-root\": {\n color: theme.colors.darkSecondaryMain,\n },\n },\n },\n },\n },\n },\n MuiListItemIcon: {\n styleOverrides: {\n root: {\n color: theme.textPrimary,\n minWidth: \"36px\",\n },\n },\n },\n MuiListItemText: {\n styleOverrides: {\n primary: {\n color: theme.textDark,\n },\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: {\n \"& .MuiInputBase-input\": {\n fontSize: \"16px\",\n },\n },\n input: {\n color: theme.textDark,\n \"&::placeholder\": {\n color: theme.textSecondary,\n fontSize: \"0.875rem\",\n fontWeight: 400,\n },\n },\n },\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n background: isDark ? theme.colors.darkBackground : theme.colors.grey50,\n borderRadius: `${theme.borderRadius}px`,\n \"& fieldset\": {\n borderColor: theme.colors.darkTextSecondary,\n },\n \"&:hover $notchedOutline\": {\n borderColor: theme.colors.primaryLight,\n },\n \"&.MuiInputBase-multiline\": {\n padding: 1,\n },\n },\n input: {\n fontWeight: 500,\n background: isDark ? theme.colors.darkBackground : theme.colors.grey50,\n padding: \"15.5px 14px\",\n borderRadius: `${theme.borderRadius}px`,\n \"&.MuiInputBase-inputSizeSmall\": {\n padding: \"10px 14px\",\n \"&.MuiInputBase-inputAdornedStart\": {\n paddingLeft: 0,\n },\n },\n },\n inputAdornedStart: {\n paddingLeft: 4,\n },\n notchedOutline: {\n borderColor: theme.colors.secondary,\n borderRadius: `${theme.borderRadius}px`,\n },\n },\n },\n MuiSlider: {\n styleOverrides: {\n root: {\n \"&.Mui-disabled\": {\n color: isDark ? theme.colors.textPrimary + 50 : theme.colors.grey300,\n },\n },\n mark: {\n backgroundColor: theme.paper,\n width: \"4px\",\n },\n valueLabel: {\n color: theme.colors.primaryMain,\n },\n },\n },\n MuiAutocomplete: {\n styleOverrides: {\n root: {\n \"& .MuiAutocomplete-tag\": {\n background: isDark ? theme.colors.textPrimary + 20 : theme.colors.secondaryLight,\n borderRadius: 4,\n color: theme.textDark,\n \".MuiChip-deleteIcon\": {\n color: isDark ? theme.colors.textPrimary + 80 : theme.colors.secondary200,\n },\n },\n },\n popper: {\n borderRadius: `${theme.borderRadius}px`,\n boxShadow:\n \"0px 8px 10px -5px rgb(0 0 0 / 20%), 0px 16px 24px 2px rgb(0 0 0 / 14%), 0px 6px 30px 5px rgb(0 0 0 / 12%)\",\n },\n },\n },\n MuiDivider: {\n styleOverrides: {\n root: {\n borderColor: theme.divider,\n opacity: isDark ? 0.2 : 1,\n },\n },\n },\n MuiSelect: {\n styleOverrides: {\n select: {\n \"&:focus\": {\n backgroundColor: \"transparent\",\n },\n },\n },\n },\n MuiCheckbox: {\n styleOverrides: {\n select: {\n fontSize: \"28px\",\n },\n root: {\n padding: 0,\n },\n },\n },\n MuiAvatar: {\n styleOverrides: {\n root: {\n color: isDark ? theme.colors.darkLevel1 : theme.colors.primaryDark,\n background: isDark ? theme.textPrimary : theme.colors.primary200,\n },\n },\n },\n MuiChip: {\n styleOverrides: {\n root: {\n \"&.MuiChip-deletable .MuiChip-deleteIcon\": {\n color: \"inherit\",\n },\n },\n },\n },\n MuiTimelineContent: {\n styleOverrides: {\n root: {\n color: theme.textDark,\n fontSize: \"16px\",\n },\n },\n },\n MuiTreeItem: {\n styleOverrides: {\n label: {\n marginTop: 14,\n marginBottom: 14,\n },\n },\n },\n MuiTimelineDot: {\n styleOverrides: {\n root: {\n boxShadow: \"none\",\n },\n },\n },\n MuiInternalDateTimePickerTabs: {\n styleOverrides: {\n tabs: {\n backgroundColor: isDark ? theme.colors.darkPaper : theme.colors.primaryLight,\n \"& .MuiTabs-flexContainer\": {\n borderColor: isDark ? theme.colors.textPrimary + 20 : theme.colors.primary200,\n },\n \"& .MuiTab-root\": {\n color: isDark ? theme.colors.textSecondary : theme.colors.grey900,\n },\n \"& .MuiTabs-indicator\": {\n backgroundColor: theme.colors.primaryDark,\n },\n \"& .Mui-selected\": {\n color: theme.colors.primaryDark,\n },\n },\n },\n },\n MuiTabs: {\n styleOverrides: {\n flexContainer: {\n borderBottom: \"1px solid\",\n borderColor: isDark ? theme.colors.textPrimary + 20 : theme.colors.grey200,\n },\n },\n },\n MuiDialog: {\n styleOverrides: {\n paper: {\n padding: \"12px 0 12px 0\",\n backgroundColor: isDark ? theme.colors.darkLevel3 : theme.colors.primary200,\n },\n },\n },\n MuiTable: {\n styleOverrides: {\n root: {\n \"& td\": {\n whiteSpace: \"nowrap\",\n },\n \"& td:first-of-type, & th:first-of-type\": {\n paddingLeft: \"0px\",\n },\n },\n },\n },\n MuiTableCell: {\n styleOverrides: {\n root: {\n borderColor: isDark ? \"rgba(189, 200, 240, 0.082)\" : theme.colors.grey200,\n \"&.MuiTableCell-head\": {\n fontSize: theme.fontSize.xs,\n color: theme.textTertiary,\n },\n },\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n background: \"#ffffff\",\n borderRadius: \"8px\",\n padding: \"12px 16px\",\n maxWidth: \"300px\",\n color: \"#111936\",\n fontSize: \"12px\",\n lineHeight: \"18px\",\n fontWeight: 400,\n \"& .MuiTooltip-arrow\": {\n color: \"#ffffff\",\n },\n },\n },\n },\n MuiPagination: {\n styleOverrides: {\n root: {\n \".MuiPaginationItem-previousNext\": {\n borderRadius: \"50%\",\n },\n \".MuiPaginationItem-root\": {\n \"&.Mui-selected\": {\n backgroundColor: theme.colors.secondaryMain,\n },\n },\n \".MuiButtonBase-root\": {\n minWidth: \"22px\",\n height: \"22px\",\n },\n },\n nav: {\n backgroundColor: theme.colors.primaryMain,\n },\n },\n },\n MuiTableContainer: {\n styleOverrides: {\n root: {\n position: \"relative\",\n \"&.with-loading\": {\n minHeight: \"210px\",\n },\n },\n },\n },\n MuiStepper: {\n styleOverrides: {\n root: {\n \"& .MuiStepLabel-label\": {\n color: isDark ? theme.textSecondary : theme.textPrimary,\n \"&.Mui-active\": {\n color: theme.textPrimary,\n },\n },\n \"& .MuiStepIcon-root\": {\n color: isDark ? theme.colors.darkLevel4 : \"#BDBDBD\",\n \"&.Mui-active\": {\n color: isDark ? theme.colors.darkSecondaryMain : theme.colors.lightPrimaryMain,\n },\n \"&.MuiStepIcon-completed\": {\n color: isDark ? theme.colors.darkSecondaryMain : \"#00C853\",\n },\n },\n \"& .MuiStepConnector-line\": {\n borderColor: isDark ? theme.colors.darkLevel4 : \"#E0E0E0\",\n },\n },\n },\n },\n MuiBreadcrumbs: {\n styleOverrides: {\n root: {\n \"& a\": {\n \"&:hover\": {\n textDecoration: `underline solid ${theme.textSecondary}!important`,\n },\n \"& .MuiTypography-root\": {\n color: theme.textSecondary,\n },\n },\n \"& .MuiTypography-root\": {\n color: theme.textPrimary,\n },\n },\n },\n },\n MuiSwitch: {\n styleOverrides: {\n root: {\n width: \"36px\",\n borderRadius: \"12px\",\n },\n },\n },\n MuiGrid: {\n styleOverrides: {\n root: {\n \"& .lightGray200\": {\n ...(theme.customization.mode !== \"dark\" ? { backgroundColor: theme.colors.lightGray200 } : {}),\n },\n \"& .lightGray50\": {\n ...(theme.customization.mode !== \"dark\" ? { backgroundColor: theme.colors.lightGray50 } : {}),\n },\n },\n },\n },\n MuiPopover: {\n styleOverrides: {\n root: {\n \"&.custom-select\": {\n \"& .MuiPaper-root\": {\n background: theme.colors.darkLevel3,\n border: \"1px solid #49588E\",\n borderRadius: \"8px\",\n \"& .MuiList-root\": {\n padding: 0,\n },\n \"& .MuiMenuItem-root\": {\n background: theme.colors.darkLevel3,\n paddingTop: \"13px\",\n paddingBottom: \"13px\",\n color: theme.textPrimary,\n \"&.disabled\": {\n background: theme.colors.darkLevel4,\n opacity: 0.3,\n cursor: \"not-allowed\",\n \"&:hover\": {\n background: theme.colors.darkLevel4,\n opacity: 0.3,\n },\n \"&.active\": {\n background: theme.colors.darkLevel4,\n opacity: 0.3,\n },\n },\n \"&.active\": {\n background: \"#313D67\",\n },\n \"&:hover\": {\n background: \"#313D67\",\n },\n },\n },\n },\n },\n },\n },\n MuiList: {\n styleOverrides: {\n root: {\n \"&.customize-menu-list\": {\n padding: 0,\n background: theme.colors.darkLevel3,\n border: \"1px solid #49588E\",\n borderRadius: \"8px\",\n width: \"146px\",\n overflow: \"hidden\",\n \"& .MuiMenuItem-root.MuiButtonBase-root\": {\n background: theme.colors.darkLevel3,\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n margin: \"5px 0\",\n \"&.active\": {\n background: \"#313D67\",\n },\n \"&:hover\": {\n background: \"#313D67\",\n },\n },\n \"&.style1\": {\n background: theme.colors.darkLevel1,\n border: `1px solid ${theme.colors.darkLevel3}`,\n \"& .MuiMenuItem-root.MuiButtonBase-root\": {\n background: theme.colors.darkLevel1,\n \"&.active\": {\n background: theme.colors.darkLevel3,\n \"& .customize-label\": {\n color: \"#fff\",\n },\n },\n \"& .customize-label.active\": {\n color: \"#fff\",\n },\n \"&:hover\": {\n background: theme.colors.darkLevel3,\n \"& .customize-label\": {\n color: \"#fff\",\n },\n },\n },\n },\n },\n \"&.customize-menu-list-light\": {\n padding: 0,\n background: \"#ffffff\",\n border: \"1px solid #EFEFFF\",\n borderRadius: \"12px\",\n width: \"146px\",\n overflow: \"hidden\",\n \"& .MuiMenuItem-root.MuiButtonBase-root\": {\n background: \"#ffffff\",\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n \"&:first-of-type\": {\n borderRadius: \"12px 12px 0 0\",\n },\n \"&:last-child\": {\n borderRadius: \"0 0 12px 12px\",\n },\n \"&.active\": {\n background: \"#F5F5FF\",\n },\n \"&:hover\": {\n background: \"#F5F5FF\",\n },\n },\n },\n },\n },\n },\n MuiCircularProgress: {\n styleOverrides: {\n root: {\n animation: `${CircularProgressKeyframes0} 0.8s linear infinite`,\n \"& .MuiCircularProgress-circle\": {\n animation: `${CircularProgressKeyframes1} 0.8s ease-in-out infinite`,\n },\n },\n },\n },\n };\n}\n","import { isDarkTheme } from \"utils\";\n\nexport function themePalette(theme: { [key: string]: any }) {\n const isDark = isDarkTheme(theme);\n\n return {\n mode: theme.customization.mode,\n common: {\n black: theme.colors.darkPaper,\n },\n primary: {\n light: isDark ? theme.colors.darkPrimaryLight : theme.colors.primaryLight,\n main: isDark ? theme.colors.darkPrimaryMain : theme.colors.lightPrimaryMain,\n dark: isDark ? theme.colors.darkPrimaryDark : theme.colors.primaryDark,\n 200: isDark ? theme.colors.darkPrimary200 : theme.colors.primary200,\n 800: isDark ? theme.colors.darkPrimary800 : theme.colors.primary800,\n 400: isDark ? theme.colors.dark400 : theme.colors.primary800,\n },\n secondary: {\n light: isDark ? theme.colors.darkSecondaryLight : theme.colors.secondaryLight,\n main: isDark ? theme.colors.darkSecondaryMain : theme.colors.secondaryMain,\n dark: isDark ? theme.colors.darkSecondaryLight : theme.colors.secondaryMain,\n 200: isDark ? theme.colors.darkSecondary200 : theme.colors.secondary200,\n 800: isDark ? theme.colors.darkSecondary800 : theme.colors.secondary800,\n },\n error: {\n light: theme.colors.errorLight,\n main: theme.colors.errorMain,\n },\n orange: {\n light: theme.colors.orangeLight,\n main: theme.colors.orangeMain,\n dark: theme.colors.orangeDark,\n },\n warning: {\n light: theme.colors.warningLight,\n main: theme.colors.warningMain,\n dark: theme.colors.warningDark,\n },\n success: {\n light: theme.colors.successLight,\n 200: theme.colors.success200,\n main: theme.colors.successMain,\n dark: theme.colors.successDark,\n },\n grey: {\n 50: theme.colors.grey50,\n 100: theme.colors.grey100,\n 500: theme.darkTextSecondary,\n 600: theme.heading,\n 700: theme.colors.darkTextPrimary,\n 900: theme.textDark,\n },\n dark: {\n light: theme.colors.darkTextPrimary,\n main: theme.colors.darkLevel1,\n dark: theme.colors.darkLevel2,\n level3: theme.colors.darkLevel3,\n level4: theme.colors.darkLevel4,\n },\n text: {\n primary: theme.textPrimary,\n secondary: theme.textSecondary,\n tertiary: theme.textTertiary,\n dark: theme.textDark,\n light: theme.textLight,\n danger: theme.colors.danger,\n orangeWarning: theme.colors.warning,\n level1: isDark ? theme.colors.darkLevel1 : theme.colors.primaryLight,\n 400: isDark ? theme.colors.dark400 : theme.colors.primary800,\n theme_primary: theme.colors.darkPrimaryMain,\n theme_secondary: theme.colors.darkSecondaryMain,\n \"theme-primary\": theme.colors.darkPrimaryMain,\n \"theme-secondary\": theme.colors.darkSecondaryMain,\n apr: theme.colors.apr,\n success: theme.colors[\"text.success\"],\n default: theme.colors.darkTextSecondary,\n tooltip: theme.colors.darkLevel1,\n },\n textSize: {\n tooltip: \"12px\",\n },\n background: {\n paper: theme.paper,\n default: theme.backgroundDefault,\n level1: isDark ? theme.colors.darkLevel1 : theme.colors.primaryLight,\n level2: isDark ? theme.colors.darkLevel2 : theme.colors.lightLevel2,\n level3: isDark ? theme.colors.darkLevel3 : theme.colors.paper,\n level4: isDark ? theme.colors.darkLevel4 : theme.colors.lightLevel4,\n level5: isDark ? theme.colors.darkLevel5 : theme.colors.lightLevel5,\n success: theme.colors.success,\n },\n border: {\n normal: isDark ? `1px solid ${theme.colors.color0}` : `1px solid ${theme.colors.lightGray200BorderColor}`,\n border0: \"1px solid #4F5A84\",\n gray200: isDark ? \"1px solid #29314F\" : `1px solid ${theme.colors.lightGray200BorderColor}`,\n 1: \"#38446C\",\n 2: \"rgba(75, 87, 130, 0.68)\",\n 3: \"#4F5A84\",\n level1: theme.colors.darkLevel1,\n level2: theme.colors.darkLevel2,\n level3: theme.colors.darkLevel3,\n level4: theme.colors.darkLevel4,\n },\n avatar: {\n gray200BgColor: isDark ? { bgcolor: \"#384368\" } : { bgcolor: \"transparent\" },\n },\n loading: {\n background: isDark ? theme.colors.darkLevel3 : theme.colors.paper,\n },\n };\n}\n","export function themeTypography(theme: { [key: string]: any }) {\n return {\n fontFamily: theme.customization.fontFamily,\n h6: {\n fontWeight: 500,\n color: theme.textSecondary,\n fontSize: \"0.75rem\",\n },\n h5: {\n fontSize: \"0.875rem\",\n color: theme.textSecondary,\n fontWeight: 500,\n },\n h4: {\n fontSize: \"1rem\",\n color: theme.textSecondary,\n fontWeight: 600,\n },\n h3: {\n fontSize: \"1.25rem\",\n color: theme.textSecondary,\n fontWeight: 600,\n },\n h2: {\n fontSize: \"1.5rem\",\n color: theme.textSecondary,\n fontWeight: 700,\n },\n h1: {\n fontSize: \"2.125rem\",\n color: theme.textSecondary,\n fontWeight: 700,\n },\n subtitle1: {\n fontSize: \"0.875rem\",\n fontWeight: 500,\n color: theme.customization.mode === \"dark\" ? theme.heading : theme.textDark,\n },\n subtitle2: {\n fontSize: \"0.75rem\",\n fontWeight: 400,\n color: theme.textSecondary,\n },\n caption: {\n fontSize: \"0.75rem\",\n color: theme.textSecondary,\n fontWeight: 400,\n },\n body1: {\n fontSize: \"0.875rem\",\n fontWeight: 400,\n lineHeight: \"1.334em\",\n color: theme.textSecondary,\n },\n body2: {\n letterSpacing: \"0em\",\n fontWeight: 400,\n lineHeight: \"1.5em\",\n color: theme.textSecondary,\n fontSize: \"16px\",\n },\n customInput: {\n marginTop: 8,\n marginBottom: 8,\n \"& > label\": {\n top: \"23px\",\n left: 0,\n color: theme.grey500,\n '&[data-shrink=\"false\"]': {\n top: \"5px\",\n },\n },\n \"& > div > input\": {\n padding: \"30.5px 14px 11.5px !important\",\n },\n \"& legend\": {\n display: \"none\",\n },\n \"& fieldset\": {\n top: 0,\n },\n },\n menuCaption: {\n fontSize: \"0.875rem\",\n color: theme.heading,\n padding: \"11px 0 11px 19px\",\n textTransform: \"capitalize\",\n fontWeight: \"400\",\n },\n subMenuCaption: {\n fontSize: \"0.6875rem\",\n fontWeight: 500,\n color: theme.textSecondary,\n textTransform: \"capitalize\",\n },\n commonAvatar: {\n cursor: \"pointer\",\n borderRadius: \"8px\",\n },\n smallAvatar: {\n width: \"22px\",\n height: \"22px\",\n fontSize: \"1rem\",\n },\n mediumAvatar: {\n width: \"34px\",\n height: \"34px\",\n fontSize: \"1.2rem\",\n },\n largeAvatar: {\n width: \"44px\",\n height: \"44px\",\n fontSize: \"1.5rem\",\n },\n };\n}\n","import { createTheme } from \"components/Mui\";\nimport { DynamicObject } from \"types/index\";\n\nimport { componentStyleOverrides } from \"./compStyleOverride\";\nimport { themePalette } from \"./palette\";\nimport { themeTypography } from \"./typography\";\nimport colors from \"./colors\";\n\nconst fontSize = {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.25rem\",\n};\n\nconst Radius = 12;\n\nexport interface ThemeOption {\n [key: string]: any;\n}\n\nexport function theme(customization: DynamicObject) {\n const themeOption: ThemeOption = {\n colors,\n fontSize,\n heading: \"\",\n paper: \"\",\n backgroundDefault: \"\",\n background: \"\",\n textPrimary: \"\",\n darkTextSecondary: \"\",\n textDark: \"\",\n textLight: \"\",\n menuSelected: \"\",\n menuSelectedBack: \"\",\n divider: \"\",\n customization,\n defaultGradient: `linear-gradient(89.44deg, ${colors.defaultGradientStart} -0.31%, ${colors.defaultGradientEnd} 91.14%)`,\n borderRadius: 12,\n };\n\n switch (customization.mode) {\n case \"dark\":\n themeOption.paper = colors.darkLevel2;\n themeOption.backgroundDefault = colors.darkPaper;\n themeOption.background = colors.darkBackground;\n themeOption.textPrimary = colors.darkTextPrimary;\n themeOption.textSecondary = colors.darkTextSecondary;\n themeOption.textTertiary = colors.darkTextTertiary;\n themeOption.textDark = colors.darkTextPrimary;\n themeOption.textLight = colors.lightTextPrimary;\n themeOption.menuBackground = colors.darkLevel1;\n themeOption.menuSelected = colors.darkSecondaryMain;\n themeOption.menuSelectedBack = colors.darkSecondaryMain + 15;\n themeOption.menuSelected = colors.paper;\n themeOption.divider = colors.darkTextPrimary;\n themeOption.heading = colors.darkTextSecondary;\n break;\n case \"light\":\n default:\n themeOption.paper = colors.paper;\n themeOption.backgroundDefault = colors.paper;\n themeOption.background = colors.primaryLight;\n themeOption.textPrimary = colors.lightTextPrimary;\n themeOption.textSecondary = colors.lightTextSecondary;\n themeOption.textTertiary = colors.lightTextTertiary;\n themeOption.textDark = colors.grey900;\n themeOption.menuBackground = colors.paper;\n themeOption.menuSelected = colors.lightTextPrimary;\n themeOption.menuSelectedBack = colors.secondaryLight;\n themeOption.menuSelected = colors.paper;\n themeOption.divider = colors.grey200;\n themeOption.heading = colors.grey900;\n break;\n }\n\n return createTheme({\n direction: customization.rtlLayout ? \"rtl\" : \"ltr\",\n palette: themePalette(themeOption),\n mixins: {\n overflowEllipsis: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n overflowEllipsis2: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n \"-webkit-box-orient\": \"vertical\",\n \"-webkit-line-clamp\": 2,\n },\n },\n typography: themeTypography(themeOption),\n components: componentStyleOverrides(themeOption),\n themeOption,\n colors,\n fontSize,\n customization,\n radius: Radius,\n });\n}\n","import { Grid, Box, Typography } from \"components/Mui\";\nimport { ReactComponent as BoundaryErrorImage } from \"assets/images/boundary-error.svg\";\nimport { useTranslation } from \"react-i18next\";\n\nexport default function PageNotFound() {\n const { t } = useTranslation();\n\n return (\n \n \n \n \n \n {t(\"common.page.not.found\")}\n \n \n \n \n );\n}\n","import { lazy } from \"react\";\nimport Loadable from \"components/Loading/Loadable\";\n\nimport { infoRoutes } from \"./info.config\";\n\nconst Wallet = Loadable(lazy(() => import(\"../views/wallet/index\")));\n\nconst Farms = Loadable(lazy(() => import(\"../views/staking-farm/index\")));\nconst Farm = Loadable(lazy(() => import(\"../views/staking-farm/farm\")));\nconst CreateFarm = Loadable(lazy(() => import(\"../views/staking-farm/create\")));\n\nconst Staking = Loadable(lazy(() => import(\"../views/staking-token\")));\nconst StakingDetails = Loadable(lazy(() => import(\"../views/staking-token/details\")));\nconst StakingTokenCreate = Loadable(lazy(() => import(\"../views/staking-token/create\")));\n\nconst Swap = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/index\")));\nconst SwapLimit = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/limit\")));\nconst SwapTransaction = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/transaction\")));\nconst SwapPro = Loadable(lazy(() => import(\"../views/swap-pro\")));\nconst Liquidity = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/index\")));\nconst AddLiquidity = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/AddLiquidity\")));\nconst IncreaseLiquidity = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/IncreaseLiquidity\")));\nconst DecreaseLiquidity = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/DecreaseLiquidity\")));\nconst SwapReclaim = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/reclaim/Reclaim\")));\nconst SwapFindMisTransferToken = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/MisTransferTokens\")));\nconst SwapRevokeApprove = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/RevokeApprove\")));\nconst PCMReclaim = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/PCMReclaim\")));\nconst Position = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/Position\")));\n\nconst NFTView = Loadable(lazy(() => import(\"../views/nft/View\")));\nconst WalletNFTView = Loadable(lazy(() => import(\"../views/nft/WalletNFTView\")));\nconst NFTMint = Loadable(lazy(() => import(\"../views/nft/Mint\")));\nconst NFTCanisterList = Loadable(lazy(() => import(\"../views/nft/CanisterList\")));\nconst NFTCanisterCreate = Loadable(lazy(() => import(\"../views/nft/CanisterCreate\")));\nconst NFTCanisterDetails = Loadable(lazy(() => import(\"../views/nft/CanisterDetails\")));\n\n// const NFTMarket = Loadable(lazy(() => import(\"../views/nft\")));\nconst NFTCollectMarket = Loadable(lazy(() => import(\"../views/nft/Collection\")));\nconst NFTMarketCollections = Loadable(lazy(() => import(\"../views/nft/MarketplaceCollections\")));\n\nconst Voting = Loadable(lazy(() => import(\"../views/voting/index\")));\nconst VotingProject = Loadable(lazy(() => import(\"../views/voting/project\")));\nconst VotingProposal = Loadable(lazy(() => import(\"../views/voting/proposal\")));\nconst VotingCreateProposal = Loadable(lazy(() => import(\"../views/voting/create\")));\nconst VoteCreateProject = Loadable(lazy(() => import(\"../views/voting/create-project\")));\n\nconst TokenClaimIndex = Loadable(lazy(() => import(\"../views/token-claim/index\")));\nconst TokenClaimTransactions = Loadable(lazy(() => import(\"../views/token-claim/transactions\")));\nconst CreateTokenClaim = Loadable(lazy(() => import(\"../views/token-claim/create\")));\n\nconst Wrap = Loadable(lazy(() => import(\"../views/swap-v2/wrap/index\")));\n\nconst SNSLaunches = Loadable(lazy(() => import(\"../views/sns/Launchpad/Launches\")));\nconst SNSLaunch = Loadable(lazy(() => import(\"../views/sns/Launchpad/Launch\")));\nconst SnsNeurons = Loadable(lazy(() => import(\"../views/sns/Neurons/index\")));\nconst SnsVotes = Loadable(lazy(() => import(\"../views/sns/Voting/index\")));\nconst SnsVoting = Loadable(lazy(() => import(\"../views/sns/Voting/Voting\")));\n\nconst CkBridge = Loadable(lazy(() => import(\"../views/ck-bridge\")));\n\nexport const routeConfigs: { [path: string]: (props: any) => JSX.Element | any } = {\n \"/wallet\": Wallet,\n\n \"/wallet/nft/view/:canisterId/:tokenId\": WalletNFTView,\n \"/wallet/nft/canister/details/:id\": NFTCanisterDetails,\n\n \"/stake\": Staking,\n \"/stake/details/:id\": StakingDetails,\n \"/stake/create\": StakingTokenCreate,\n \"/farm\": Farms,\n \"/farm/details/:id\": Farm,\n \"/farm/create\": CreateFarm,\n\n \"/swap\": Swap,\n \"/swap/limit\": SwapLimit,\n \"/swap/transaction\": SwapTransaction,\n \"/liquidity\": Liquidity,\n \"/liquidity/add/:currencyIdA?/:currencyIdB?/:feeAmount?\": AddLiquidity,\n \"/liquidity/decrease/:positionId/:pool\": DecreaseLiquidity,\n \"/liquidity/increase/:positionId/:pool\": IncreaseLiquidity,\n \"/liquidity/position/:positionId/:pool\": Position,\n\n \"/swap/withdraw\": SwapReclaim,\n \"/swap/find-mis-transferred-token\": SwapFindMisTransferToken,\n \"/swap/revoke-approve\": SwapRevokeApprove,\n \"/swap/pcm/reclaim\": PCMReclaim,\n \"/swap/pro\": SwapPro,\n\n \"/swap/v2/wrap\": Wrap,\n\n // \"/marketplace/NFT\": NFTMarket,\n \"/marketplace/NFT/:canisterId\": NFTCollectMarket,\n \"/marketplace/NFT/view/:canisterId/:tokenId\": NFTView,\n \"/marketplace/collections\": NFTMarketCollections,\n\n \"/voting\": Voting,\n \"/voting/:canisterId\": VotingProject,\n \"/voting/project/create\": VoteCreateProject,\n\n \"/voting/proposal/details/:canisterId/:id\": VotingProposal,\n \"/voting/proposal/create/:id\": VotingCreateProposal,\n\n \"/token-claim\": TokenClaimIndex,\n \"/token-claim/transactions/:id\": TokenClaimTransactions,\n \"/token-claim/create\": CreateTokenClaim,\n\n \"/info-tools/nft/canister/create\": NFTCanisterCreate,\n \"/info-tools/nft/mint\": NFTMint,\n \"/info-tools/nft/canister/list\": NFTCanisterList,\n\n \"/sns/neurons\": SnsNeurons,\n \"/sns/voting\": SnsVotes,\n \"/sns/voting/:governance_id/:proposal_id\": SnsVoting,\n \"/sns/launches\": SNSLaunches,\n \"/sns/launch/:root_id\": SNSLaunch,\n\n \"/ck-bridge\": CkBridge,\n\n ...infoRoutes,\n};\n","import { Route, Switch, useLocation } from \"react-router-dom\";\nimport { Layout } from \"components/Layout/index\";\nimport PageNotFound from \"components/404\";\nimport { Maintenance } from \"components/Maintenance\";\n\nimport { routeConfigs } from \"./config\";\n\nconst maintenancePages: string[] = [];\n\nexport default function MainRoutes() {\n const location = useLocation();\n\n const allPath = Object.keys(routeConfigs);\n\n return (\n \n \n \n {allPath.map((pathName) => {\n const component = maintenancePages.includes(pathName) ? Maintenance : routeConfigs[pathName];\n return ;\n })}\n\n \n \n \n \n );\n}\n","import { Switch, Route, Redirect } from \"react-router-dom\";\nimport AuthRoutes from \"./Auth\";\n\nexport default function Routes() {\n return (\n \n \n \n \n \n \n );\n}\n","import { useCallback, useState } from \"react\";\nimport { useAppSelector } from \"store/hooks\";\nimport { CssBaseline, StyledEngineProvider, ThemeProvider } from \"components/Mui\";\nimport { useFetchXDR2USD, useFetchGlobalTokenList } from \"store/global/hooks\";\nimport { useFetchSnsAllTokensInfo } from \"store/sns/hooks\";\nimport { Route } from \"react-router-dom\";\nimport GoogleAnalytics, { initGoogleAnalytics } from \"components/GoogleAnalytics\";\nimport { useConnectManager } from \"store/auth/hooks\";\nimport { usePlugExternalDisconnect } from \"hooks/auth/usePlug\";\nimport RiskStatement from \"components/RiskStatement\";\nimport { SnackbarProvider } from \"components/notistack\";\nimport ErrorBoundary from \"components/ErrorBoundary\";\nimport WalletConnector from \"components/authentication/ConnectorModal\";\nimport { useInitialTokenStandard } from \"hooks/useInitialTokenStandard\";\nimport GlobalSteps from \"components/Steps/index\";\nimport ActorInitial from \"components/Actor\";\nimport { GlobalContext } from \"hooks/useGlobalContext\";\nimport TransactionsUpdater from \"store/transactions/updater\";\nimport { WagmiProvider } from \"wagmi\";\nimport { wagmiConfig } from \"constants/wagmi\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { DisableIframe } from \"components/DisableIframe\";\nimport { PublicTokenOverview, Null } from \"@icpswap/types\";\nimport { LinearLoader } from \"@icpswap/ui\";\n\nimport { GlobalFetch } from \"./GlobalFetch\";\nimport Web3Provider from \"./components/Web3Injector\";\nimport { useFetchICPPrices, useFetchAllSwapTokens } from \"./store/global/hooks\";\nimport { FullscreenLoading } from \"./components/index\";\nimport NavigationScroll from \"./components/NavigationScroll\";\nimport { theme } from \"./theme\";\nimport Routes from \"./routes\";\n\nimport \"utils/dayjs\";\n\ninitGoogleAnalytics();\n\nexport default function App() {\n const customization = useAppSelector((state) => state.customization);\n\n const [refreshTriggers, setRefreshTriggers] = useState<{ [key: string]: number }>({});\n const [infoAllTokens, setInfoAllTokens] = useState(null);\n\n useFetchXDR2USD();\n useFetchICPPrices();\n useFetchAllSwapTokens();\n usePlugExternalDisconnect();\n useFetchSnsAllTokensInfo();\n\n const { open: connectorModalOpen, isConnected } = useConnectManager();\n\n const { loading: fetchGlobalTokensLoading } = useFetchGlobalTokenList();\n const { loading: isInitialStandardLoading, AllPools } = useInitialTokenStandard({ fetchGlobalTokensLoading });\n\n const queryClient = new QueryClient();\n\n const handleRefreshTriggers = useCallback(\n (key: string) => {\n setRefreshTriggers((prevState) => ({ ...prevState, [key]: (prevState[key] ?? 0) + 1 }));\n },\n [setRefreshTriggers],\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {isInitialStandardLoading ? (\n \n ) : (\n \n \n \n )}\n \n \n \n {isConnected ? : null}\n {connectorModalOpen ? : null}\n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { useEffect } from \"react\";\nimport { useCleanLogState, getConnector } from \"store/auth/hooks\";\nimport { Connector } from \"constants/wallet\";\n\nexport function usePlugExternalDisconnect() {\n const cleanLogState = useCleanLogState();\n\n useEffect(() => {\n if (window.ic && window.ic.plug) {\n if (window.ic.plug.onExternalDisconnect) {\n window.ic.plug.onExternalDisconnect(() => {\n const connector = getConnector();\n\n if (connector && connector === Connector.PLUG) {\n // Do not use useUserLogout, logout will exec window.ic.plug.onExternalDisconnect, and case a Loop execution\n cleanLogState();\n }\n });\n }\n\n if (window.ic.plug.onLockStateChange)\n window.ic.plug.onLockStateChange((isLocked) => {\n const connector = getConnector();\n if (connector && connector === Connector.PLUG) {\n if (isLocked) {\n cleanLogState();\n }\n }\n });\n }\n }, []);\n}\n","import { IdentityKitProvider } from \"@nfid/identitykit/react\";\nimport { NFIDW, IdentityKitAuthType } from \"@nfid/identitykit\";\nimport \"@nfid/identitykit/react/styles.css\";\n\nimport { I18nextProvider } from \"react-i18next\";\nimport i18n from \"i18n/index\";\n\nimport App from \"./App\";\nimport { MAX_IDENTITY_KIT_TIME_LIVE } from \"./constants\";\n\nexport function AppWithProvider() {\n return (\n \n \n \n \n \n );\n}\n","import dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\nimport weekOfYear from \"dayjs/plugin/weekOfYear\";\n\n// format dayjs with the libraries that we need\ndayjs.extend(utc);\ndayjs.extend(weekOfYear);\n","export function isDevelopmentEnv(): boolean {\n return process.env.NODE_ENV === \"development\";\n}\n\nexport function isTestEnv(): boolean {\n return process.env.NODE_ENV === \"test\";\n}\n\nexport function isStagingEnv(): boolean {\n // This is set in vercel builds and deploys from releases/staging.\n return Boolean(process.env.REACT_APP_STAGING);\n}\n\nexport function isProductionEnv(): boolean {\n return process.env.NODE_ENV === \"production\" && !isStagingEnv();\n}\n\nexport function isLocalhost({ hostname }: { hostname: string }): boolean {\n return hostname === \"localhost\";\n}\n\nexport function isSentryEnabled(): boolean {\n // disable in develop\n if (isDevelopmentEnv()) return false;\n\n return process.env.REACT_APP_SENTRY_ENABLED === \"true\";\n}\n\nexport function getEnvName(): \"production\" | \"staging\" | \"development\" {\n if (isStagingEnv()) return \"staging\";\n if (isProductionEnv()) return \"production\";\n\n return \"development\";\n}\n","import * as Sentry from \"@sentry/react\";\nimport { ClientOptions, ErrorEvent } from \"@sentry/types\";\nimport { isSentryEnabled, getEnvName } from \"utils/env\";\nimport { BrowserTracing } from \"@sentry/browser\";\n\nimport { version } from \"./.version\";\n\nexport function shouldRejectError(error: ErrorEvent) {\n // User reject plug connect\n if (error.message?.includes(\"The agent creation was rejected\")) return true;\n\n // Plug disconnect error\n if (error.message?.includes(\"Attempting to use a disconnected port object\")) return true;\n\n if (\"stack\" in error && typeof error.stack === \"string\") {\n // Errors coming from a browser extension can be ignored. These errors are usually caused by extensions injecting\n // scripts into the page, which we cannot control.\n if (error.stack.match(/-extension:\\/\\//i)) return true;\n }\n\n // Network error\n if (error.message?.match(/Failed to fetch/)) return true;\n\n // Failed to load some static files\n if (error.message?.match(/Load failed/)) return true;\n\n // These are caused by user navigation away from the page before a request has finished.\n if (error instanceof DOMException && error?.name === \"AbortError\") return true;\n\n return false;\n}\n\n/**\n * Filters known (ignorable) errors out before sending them to Sentry. Also, adds tags to the event.\n * Intended as a {@link ClientOptions.beforeSend} callback. Returning null filters the error from Sentry.\n */\nexport const beforeSend: Required[\"beforeSend\"] = (event: ErrorEvent) => {\n if (shouldRejectError(event)) {\n return null;\n }\n\n return { ...event, extra: { version } };\n};\n\nSentry.init({\n dsn: process.env.REACT_APP_SENTRY_DSN,\n environment: getEnvName(),\n enabled: isSentryEnabled(),\n tracesSampleRate: Number(process.env.REACT_APP_SENTRY_TRACES_SAMPLE_RATE ?? 0),\n beforeSend,\n integrations: [\n new BrowserTracing({\n startTransactionOnLocationChange: false,\n startTransactionOnPageLoad: true,\n }),\n ],\n});\n","import { createRoot } from \"react-dom/client\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport { Provider } from \"react-redux\";\nimport { PersistGate } from \"redux-persist/lib/integration/react\";\nimport \"@nfid/identitykit/react/styles.css\";\n\nimport * as serviceWorker from \"./serviceWorker\";\nimport store, { persistor } from \"./store/index\";\nimport { AppWithProvider } from \"./Provider\";\nimport \"./tracing\";\nimport \"./assets/css/global.css\";\n\nwindow.onerror = (msg, url, row, col, error) => {\n const _error = error ? error.toString() : \"\";\n console.error(msg, url, row, col, error, \"msg, row, col, error\");\n // update users not reload error debug\n if (/Loading chunk *.{1,} failed./.test(_error) || /Unexpected token '<'/.test(_error)) {\n window.location.reload();\n }\n};\n\n// @ts-ignore\n// Fix astrox me wallet's bug\nwindow.process = {};\n\nconst root = document.getElementById(\"root\") as HTMLElement;\n\ncreateRoot(root).render(\n // @ts-ignore TODO:FIX\n \n \n \n \n \n \n ,\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","import { lazy } from \"react\";\nimport Loadable from \"components/Loading/Loadable\";\n\nconst Overview = Loadable(lazy(() => import(\"../views/info/overview\")));\nconst Swap = Loadable(lazy(() => import(\"../views/info/swap\")));\nconst SwapPools = Loadable(lazy(() => import(\"../views/info/swap/swap-pools\")));\nconst SwapPoolDetails = Loadable(lazy(() => import(\"../views/info/swap/swap-pools/details\")));\nconst SwapTokenDetails = Loadable(lazy(() => import(\"../views/info/swap/swap-tokens/details\")));\nconst Tokens = Loadable(lazy(() => import(\"../views/info/tokens\")));\nconst TokenDetails = Loadable(lazy(() => import(\"../views/info/tokens/Details\")));\nconst TokenHolders = Loadable(lazy(() => import(\"../views/info/tokens/Holders\")));\nconst Stake = Loadable(lazy(() => import(\"../views/info/stake\")));\nconst StakeDetails = Loadable(lazy(() => import(\"../views/info/stake/Details\")));\nconst Farm = Loadable(lazy(() => import(\"../views/info/farm\")));\nconst FarmDetails = Loadable(lazy(() => import(\"../views/info/farm/Details\")));\nconst Wrap = Loadable(lazy(() => import(\"../views/info/wrap\")));\nconst TokenClaim = Loadable(lazy(() => import(\"../views/info/token-claim\")));\nconst TokenClaimTransactions = Loadable(lazy(() => import(\"../views/info/token-claim/transactions\")));\nconst NFTs = Loadable(lazy(() => import(\"../views/info/nft/NFTs\")));\nconst NFTDetails = Loadable(lazy(() => import(\"../views/info/nft/Details\")));\nconst NFTInfo = Loadable(lazy(() => import(\"../views/info/nft/NFTInfo\")));\nconst MarketPlace = Loadable(lazy(() => import(\"../views/info/marketplace\")));\nconst Tools = Loadable(lazy(() => import(\"../views/info/tools\")));\nconst ToolsBurn = Loadable(lazy(() => import(\"../views/info/tools/burn\")));\nconst ToolsValuation = Loadable(lazy(() => import(\"../views/info/tools/valuation\")));\nconst ToolsSwapTransactions = Loadable(lazy(() => import(\"../views/info/tools/swap-transactions\")));\nconst ToolsPositions = Loadable(lazy(() => import(\"../views/info/tools/positions\")));\nconst ToolsUserBalances = Loadable(lazy(() => import(\"../views/info/tools/user-balances\")));\nconst ToolsLockedPositions = Loadable(lazy(() => import(\"../views/info/tools/locked-positions\")));\nconst ToolsPositionTransactions = Loadable(lazy(() => import(\"../views/info/tools/position-transactions\")));\n\nexport const infoRoutesConfigs = {\n INFO_OVERVIEW: \"/info-overview\",\n INFO_SWAP: \"/info-swap\",\n INFO_SWAP_POOLS: \"/info-swap/pools\",\n INFO_SWAP_POOL_DETAILS: \"/info-swap/pool/details\",\n INFO_SWAP_TOKEN_DETAILS: \"/info-swap/token/details/:id\",\n INFO_TOKENS: \"/info-tokens\",\n INFO_TOKENS_DETAILS: \"/info-tokens/details/:id\",\n INFO_TOKENS_HOLDERS: \"/info-tokens/holders/:id\",\n INFO_STAKE: \"/info-stake\",\n INFO_STAKE_DETAILS: \"/info-stake/details/:id\",\n INFO_FARM: \"/info-farm\",\n INFO_FARM_DETAILS: \"/info-farm/details/:id\",\n INFO_WRAP: \"/info-wrap\",\n INFO_CLAIM: \"/info-claim\",\n INFO_CLAIM_TRANSACTIONS: \"/info-claim/transactions/:id\",\n INFO_NFTS: \"/info-nfts\",\n INFO_NFTS_CANISTER: \"/info-nfts/canister/:id\",\n INFO_NFTS_INFO: \"/info-nfts/info/:canisterId/:id\",\n INFO_MARKETPLACE: \"/info-marketplace\",\n INFO_TOOLS: \"/info-tools\",\n INFO_TOOLS_BURN: \"/info-tools/burn\",\n INFO_TOOLS_VALUATION: \"/info-tools/valuation\",\n INFO_TOOLS_SWAP_TRANSACTIONS: \"/info-tools/swap-transactions\",\n INFO_TOOLS_POSITIONS: \"/info-tools/positions\",\n INFO_TOOLS_USER_BALANCES: \"/info-tools/user-balances\",\n INFO_TOOLS_LOCKED_POSITIONS: \"/info-tools/locked-positions\",\n INFO_TOOLS_POSITION_TRANSACTIONS: \"/info-tools/position-transactions\",\n};\n\nexport const infoRoutes: { [path: string]: (props: any) => JSX.Element | any } = {\n [infoRoutesConfigs.INFO_OVERVIEW]: Overview,\n [infoRoutesConfigs.INFO_SWAP]: Swap,\n [infoRoutesConfigs.INFO_SWAP_POOLS]: SwapPools,\n \"/info-swap/pool/details/:id\": SwapPoolDetails,\n \"/info-swap/token/details/:id\": SwapTokenDetails,\n [infoRoutesConfigs.INFO_TOKENS]: Tokens,\n \"/info-tokens/details/:id\": TokenDetails,\n \"/info-tokens/holders/:id\": TokenHolders,\n [infoRoutesConfigs.INFO_STAKE]: Stake,\n \"/info-stake/details/:id\": StakeDetails,\n [infoRoutesConfigs.INFO_FARM]: Farm,\n \"/info-farm/details/:id\": FarmDetails,\n [infoRoutesConfigs.INFO_WRAP]: Wrap,\n [infoRoutesConfigs.INFO_CLAIM]: TokenClaim,\n \"/info-claim/transactions/:id\": TokenClaimTransactions,\n [infoRoutesConfigs.INFO_NFTS]: NFTs,\n \"/info-nfts/canister/:id\": NFTDetails,\n \"/info-nfts/info/:canisterId/:id\": NFTInfo,\n [infoRoutesConfigs.INFO_MARKETPLACE]: MarketPlace,\n [infoRoutesConfigs.INFO_TOOLS]: Tools,\n [infoRoutesConfigs.INFO_TOOLS_BURN]: ToolsBurn,\n [infoRoutesConfigs.INFO_TOOLS_VALUATION]: ToolsValuation,\n [infoRoutesConfigs.INFO_TOOLS_SWAP_TRANSACTIONS]: ToolsSwapTransactions,\n [infoRoutesConfigs.INFO_TOOLS_POSITIONS]: ToolsPositions,\n [infoRoutesConfigs.INFO_TOOLS_USER_BALANCES]: ToolsUserBalances,\n [infoRoutesConfigs.INFO_TOOLS_LOCKED_POSITIONS]: ToolsLockedPositions,\n [infoRoutesConfigs.INFO_TOOLS_POSITION_TRANSACTIONS]: ToolsPositionTransactions,\n};\n","import storage from \"redux-persist/lib/storage\";\n\nconst KEY = \"ICPSwap-all-canisters\";\n\nexport async function getAllCanisters() {\n const allCanisters = await storage.getItem(KEY);\n return allCanisters?.split(\",\");\n}\n\nexport async function setAllCanisters(canisterIds: string[]) {\n const storageAllCanisters = await getAllCanisters();\n\n const allCanisters = [...(storageAllCanisters ?? []), ...canisterIds];\n\n await storage.setItem(KEY, [...new Set(allCanisters)].join(\",\"));\n}\n\nexport async function updateCanisters(canisterIds: string[]) {\n await setAllCanisters(canisterIds);\n}\n","import { isValidPrincipal } from \"@icpswap/utils\";\nimport storage from \"redux-persist/lib/storage\";\n\nconst KEY = \"ALL_TOKENS\";\n\nexport async function getAllTokens() {\n const allTokens = await storage.getItem(KEY);\n return allTokens?.split(\",\").filter((ele) => !!ele && isValidPrincipal(ele));\n}\n\nexport async function setAllTokens(canisterIds: string[]) {\n const storageAllTokens = await getAllTokens();\n\n const AllTokens = [...(storageAllTokens ?? []), ...canisterIds];\n\n await storage.setItem(KEY, [...new Set(AllTokens)].join(\",\"));\n}\n\nexport async function updateTokens(canisterIds: string[]) {\n await setAllTokens(canisterIds);\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { LoginState } from \"./states\";\n\nexport const login = createAction(\"auth/login\");\n\nexport const logout = createAction(\"auth/logout\");\n\nexport const updateConnected = createAction<{ isConnected: boolean }>(\"auth/updateConnected\");\n\nexport const updateWalletConnector = createAction(\"global/updateWalletConnector\");\n","import { Actor, ActorSubclass, HttpAgent, type Agent } from \"@dfinity/agent\";\nimport { ic_host } from \"@icpswap/constants\";\nimport { IDL } from \"@dfinity/candid\";\n\nexport type CreateActorArgs = {\n canisterId: string;\n interfaceFactory: IDL.InterfaceFactory;\n};\n\nexport class NF_IDConnector {\n public agent: Agent | null = null;\n\n constructor(agent: Agent) {\n this.agent = agent;\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n // Fetch root key for certificate validation during development\n // this.agent?.fetchRootKey().catch((err) => {\n // console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n // console.error(err);\n // });\n\n return Actor.createActor(interfaceFactory, {\n agent:\n this.agent ??\n (await HttpAgent.create({\n host: ic_host,\n })),\n canisterId,\n });\n }\n\n async disconnect() {\n return true;\n }\n}\n","import { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { principalToAccount, isPrincipal, isNullArgs } from \"@icpswap/utils\";\nimport { ic_host } from \"@icpswap/constants\";\nimport { Connector, IdentityKitConnector, IdentityKitId } from \"constants/index\";\nimport { Principal } from \"@dfinity/principal\";\nimport { connectManager, WalletConnector } from \"utils/connector\";\nimport { isMeWebview } from \"utils/connector/me\";\nimport { actor } from \"@icpswap/actor\";\nimport { useIsInitializing, useAuth, useAgent } from \"@nfid/identitykit/react\";\nimport { isSafari } from \"utils/index\";\n\nimport store from \"../index\";\nimport { login, logout, updateConnected, updateWalletConnector } from \"./actions\";\nimport { updateLockStatus as _updateLockStatus } from \"../session/actions\";\nimport { NF_IDConnector } from \"./NF_IDConnector\";\n\nexport function useIsUnLocked() {\n return useAppSelector((state) => state.session.isUnLocked);\n}\n\nexport function getConnector() {\n let connector = store.getState().auth.walletType;\n if (isMeWebview()) connector = Connector.ME;\n return connector;\n}\n\nexport function useConnector() {\n const connector = getConnector();\n return useMemo(() => connector, [connector]);\n}\n\nexport function useConnectorStateConnected() {\n const isConnected = useAppSelector((state) => state.auth.isConnected);\n const isUnLocked = useAppSelector((state) => state.session.isUnLocked);\n const walletType = useAppSelector((state) => state.auth.walletType);\n\n if (!walletType) return false;\n if (walletType === Connector.PLUG && !isUnLocked) return false;\n\n return isConnected;\n}\n\nexport function getStoreWalletUnlocked() {\n const { session } = store.getState();\n return session.isUnLocked;\n}\n\nexport interface UpdateAuthProps {\n walletType: Connector;\n principal?: string;\n connected?: boolean;\n}\n\nexport async function updateAuth({ principal, walletType, connected }: UpdateAuthProps) {\n store.dispatch(\n login({\n name: walletType,\n principal,\n walletType,\n }),\n );\n\n if (connected === false) return;\n\n store.dispatch(updateConnected({ isConnected: true }));\n store.dispatch(_updateLockStatus(false));\n}\n\nexport function updateLockStatus(locked: boolean) {\n store.dispatch(_updateLockStatus(locked));\n}\n\nexport function useCleanLogState() {\n const dispatch = useAppDispatch();\n\n return useCallback(async () => {\n dispatch(logout());\n updateLockStatus(true);\n dispatch(updateConnected({ isConnected: false }));\n }, [dispatch, updateLockStatus]);\n}\n\nexport function useDisconnect() {\n const dispatch = useAppDispatch();\n const walletType = useConnector();\n\n return useCallback(async () => {\n await dispatch(logout());\n if (walletType && window.icConnector) window.icConnector.disconnect();\n await updateLockStatus(true);\n dispatch(updateConnected({ isConnected: false }));\n }, [dispatch, updateLockStatus]);\n}\n\nexport function useAccountPrincipal(): Principal | undefined {\n const principal = useAppSelector((state) => state.auth.principal);\n const walletType = useAppSelector((state) => state.auth.walletType);\n const isUnLocked = useAppSelector((state) => state.session.isUnLocked);\n\n return useMemo(() => {\n if (!principal) return undefined;\n if (walletType === Connector.PLUG && !isUnLocked) return undefined;\n if (isPrincipal(principal)) return principal as Principal;\n return Principal.fromText(principal);\n }, [principal, walletType, isUnLocked]);\n}\n\nexport function useAccount() {\n const principal = useAccountPrincipal();\n\n return useMemo(() => {\n if (!principal) return undefined;\n return principalToAccount(principal.toString());\n }, [principal]);\n}\n\nexport function useAccountPrincipalString() {\n const principal = useAccountPrincipal();\n\n return useMemo(() => {\n return principal?.toString();\n }, [principal]);\n}\n\nasync function nonAsyncFunctionBeforeConnect(connected: boolean | undefined) {\n if (!connected) await connectManager.connect();\n}\n\nexport function useInitialConnect() {\n const dispatch = useAppDispatch();\n const isUnLocked = useIsUnLocked();\n const disconnect = useDisconnect();\n\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function call() {\n const connector = getConnector();\n\n if (!connector) {\n dispatch(updateConnected({ isConnected: false }));\n setLoading(false);\n return;\n }\n\n if (IdentityKitConnector.includes(connector)) {\n setLoading(false);\n return;\n }\n\n await connectManager.init(connector);\n const expired = await connectManager.connector?.expired();\n\n if (expired) {\n disconnect();\n setLoading(false);\n return;\n }\n\n const connected = await connectManager.isConnected();\n\n await nonAsyncFunctionBeforeConnect(connected);\n\n dispatch(updateConnected({ isConnected: true }));\n // Initial actor\n actor.setConnector(connector);\n setLoading(false);\n }\n\n call();\n }, [isUnLocked]);\n\n return useMemo(() => ({ loading }), [loading]);\n}\n\nexport function useIdentityKitInitialConnect() {\n const dispatch = useAppDispatch();\n\n const isInitializing = useIsInitializing();\n\n const { user } = useAuth();\n const agent = useAgent({ host: ic_host });\n const disconnect = useDisconnect();\n\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function call() {\n const connector = getConnector();\n\n if (!connector) {\n dispatch(updateConnected({ isConnected: false }));\n setLoading(false);\n return;\n }\n\n if (IdentityKitConnector.includes(connector)) {\n if (isInitializing === false && isNullArgs(user)) {\n await disconnect();\n setLoading(false);\n return;\n }\n\n if (user && user.principal) {\n updateAuth({ walletType: connector, principal: user.principal.toString() });\n dispatch(updateConnected({ isConnected: true }));\n // Initial actor\n actor.setConnector(connector);\n\n if (agent) {\n // @ts-ignore\n window.icConnector = new NF_IDConnector(agent);\n }\n }\n }\n\n setLoading(false);\n }\n\n call();\n }, [connectManager, isInitializing, user, agent]);\n\n return useMemo(\n () => ({\n loading,\n }),\n [loading],\n );\n}\n\nexport function useConnectManager() {\n const dispatch = useAppDispatch();\n const connectorStateConnected = useConnectorStateConnected();\n const authDisconnect = useDisconnect();\n const open = useAppSelector((state) => state.auth.walletConnectorOpen);\n const connector = useAppSelector((state) => state.auth.walletType);\n\n const { connect: identityKitConnect, disconnect: identityKitDisconnect } = useAuth();\n\n const showConnector = useCallback(\n (open: boolean) => {\n dispatch(updateWalletConnector(open));\n },\n [dispatch],\n );\n\n const connect = useCallback(async (connector: Connector, connectorOutside?: null | WalletConnector) => {\n if (IdentityKitConnector.includes(connector)) {\n await identityKitConnect(IdentityKitId[connector]);\n updateAuth({ walletType: connector, connected: false });\n return true;\n }\n\n // Fix pop-up window was blocked when there is a asynchronous call before connecting the wallet\n if (isSafari()) {\n if (connectorOutside) {\n return await connectorOutside.connect();\n }\n\n throw new Error(\"Some unknown error happened. Please refresh the page to reconnect.\");\n }\n\n await connectManager.init(connector);\n return await connectManager.connect();\n }, []);\n\n const disconnect = useCallback(async () => {\n if (connector) {\n if (IdentityKitConnector.includes(connector)) {\n await identityKitDisconnect();\n }\n }\n\n await authDisconnect();\n }, [connector]);\n\n const { loading } = useInitialConnect();\n useIdentityKitInitialConnect();\n\n return useMemo(\n () => ({\n open,\n connect,\n disconnect,\n showConnector,\n isConnected: connectorStateConnected,\n loading,\n }),\n [open, connect, disconnect, showConnector, connectorStateConnected, loading],\n );\n}\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const updateCallResult = createAction<{ callKey: string; result: any }>(\"auth/updateCallResult\");\n\nexport const updateCallIndex = createAction(\"auth/updateCallIndex\");\n\nexport const updateCallKeys = createAction<{ callKey: string; callIndex: number }>(\"auth/updateCallKeys\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const changeTheme = createAction(\"customization/changeTheme\");\nexport const updateLocal = createAction(\"customization/updateLocal\");\nexport const updateHideUnavailableClaim = createAction(\"customization/updateHideUnavailableClaim\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { ICPPriceInfo } from \"types/token\";\nimport { SupportedLocale } from \"constants/locales\";\nimport { TokenListMetadata } from \"types/token-list\";\nimport { type AllTokenOfSwapTokenInfo } from \"@icpswap/types\";\n\nexport const updateXDR2USD = createAction(\"global/updateXDR2USD\");\n\nexport const updateICPPriceList = createAction(\"global/updateICPPriceList\");\n\nexport const updateUserLocale = createAction(\"global/updateUserLocale\");\n\nexport const updateTokenList = createAction(\"global/updateTokenList\");\n\nexport const updateAllSwapTokens = createAction(\"global/updateAllSwapTokens\");\n\nexport const updateWalletConnector = createAction(\"global/updateWalletConnector\");\n\nexport const updateBridgeTokens = createAction(\"global/updateBridgeTokens\");\n","import { useCallback } from \"react\";\nimport { exchangeRate } from \"@icpswap/actor\";\nimport { useCallsData } from \"./useCallData\";\nimport { parseTokenAmount } from \"@icpswap/utils\";\n\nexport async function getExchangeRates() {\n return await (await exchangeRate()).get_exchange_rates();\n}\n\nexport function useExchangeRates() {\n return useCallsData(\n useCallback(async () => {\n return await getExchangeRates();\n }, [])\n );\n}\n\nexport async function getExchangeRate(pair: string) {\n return await (await exchangeRate()).get_exchange_rate(pair);\n}\n\nexport function useExchangeRate(pair: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n return await getExchangeRate(pair!);\n }, [pair]),\n !!pair\n );\n}\n\nexport async function getXDR2USD() {\n const result = await getExchangeRate(\"f_USD-f_XDR\");\n return parseTokenAmount(result.rate, result.decimals).toString();\n}\n\nexport function useXDR2USD() {\n return useCallsData(\n useCallback(async () => {\n return await getXDR2USD();\n }, [])\n );\n}\n","import { useCallback } from \"react\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { useCallsData } from \"./useCallData\";\n\ntype PriceResult = [number, number];\n\ntype ICPPriceResult = {\n icp_xdr_conversion_rates: PriceResult[];\n};\n\nexport async function get100ICPPriceInfo() {\n const now = new Date().getTime();\n const start = now - 10 * 24 * 60 * 60 * 1000;\n\n const fetch_result = await fetch(\n `https://ic-api.internetcomputer.org/api/v3/icp-xdr-conversion-rates?start=${parseInt(\n (start / 1000).toString(),\n 10,\n )}&end=${parseInt((now / 1000).toString(), 10)}&step=600`,\n ).catch(() => undefined);\n\n if (!fetch_result) return undefined;\n\n const result = (await fetch_result.json()) as { icp_xdr_conversion_rates: ICPPriceResult };\n\n return resultFormat(result.icp_xdr_conversion_rates).data;\n}\n\nexport function use100ICPPriceInfo() {\n return useCallsData(\n useCallback(async () => {\n return await get100ICPPriceInfo();\n }, []),\n );\n}\n","import { useEffect, useMemo, useState, useCallback } from \"react\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { parseTokenAmount, BigNumber } from \"@icpswap/utils\";\nimport { AppState } from \"store/index\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport {\n use100ICPPriceInfo,\n useXDR2USD,\n useTokensFromList,\n getLimitedInfinityCall,\n getAllTokensOfSwap,\n} from \"@icpswap/hooks\";\nimport { AllTokenOfSwapTokenInfo, TOKEN_STANDARD } from \"@icpswap/types\";\nimport { setStorageTokenInfo } from \"hooks/token/index\";\nimport { useAllBridgeTokens } from \"hooks/ck-bridge\";\n\nimport {\n updateXDR2USD,\n updateICPPriceList,\n updateTokenList,\n updateAllSwapTokens,\n updateWalletConnector,\n updateBridgeTokens,\n} from \"./actions\";\n\nexport function useGlobalTokenList() {\n return useAppSelector((state: AppState) => state.global.tokenList);\n}\n\nexport function useICPPriceList() {\n return useAppSelector((state: AppState) => state.global.ICPPriceList);\n}\n\nexport interface SwapToken {\n canisterId: string;\n symbol: string;\n name: string;\n decimals: number;\n}\n\nexport function useICPPrice() {\n const ICPPriceList = useICPPriceList();\n\n return useMemo(() => {\n if (ICPPriceList && ICPPriceList.length) {\n const price = ICPPriceList[ICPPriceList.length - 1].value;\n return price;\n }\n return undefined;\n }, [ICPPriceList]);\n}\n\nexport function useICPAmountUSDValue(amount: number | null | string | undefined | bigint) {\n const ICPPrice = useICPPrice();\n\n return useMemo(() => {\n if (!ICPPrice || !amount) return undefined;\n return new BigNumber(ICPPrice).multipliedBy(parseTokenAmount(amount, ICP.decimals));\n }, [ICPPrice, amount]);\n}\n\nexport function useICP2CyclesManager() {\n const ICPPriceList = useICPPriceList();\n\n return useMemo(() => {\n if (ICPPriceList && ICPPriceList.length) {\n return ICPPriceList[ICPPriceList.length - 1]?.xdr ?? 0;\n }\n return 0;\n }, [ICPPriceList]);\n}\n\nexport function useStateXDR2USD() {\n return useAppSelector((state: AppState) => state.global.xdr_usdt);\n}\n\nexport function useFetchXDR2USD() {\n const dispatch = useAppDispatch();\n\n const { result: xdr_usd } = useXDR2USD();\n\n useEffect(() => {\n async function call() {\n if (xdr_usd) {\n dispatch(updateXDR2USD(Number(xdr_usd)));\n }\n }\n\n call();\n }, [xdr_usd]);\n}\n\nexport function useFetchICPPrices() {\n const dispatch = useAppDispatch();\n const xdr_usdt = useStateXDR2USD();\n\n const { result: icpPrices } = use100ICPPriceInfo();\n\n useEffect(() => {\n if (!icpPrices || !xdr_usdt || icpPrices.length === 0) return;\n\n const priceList = icpPrices.map((ele) => ({\n value: new BigNumber(new BigNumber(ele[1]).dividedBy(10000).times(xdr_usdt).toFixed(4)).toNumber(),\n timestamp: ele[0].toString(),\n xdr: new BigNumber(ele[1]).dividedBy(10000).toString(),\n }));\n\n dispatch(updateICPPriceList(priceList));\n }, [xdr_usdt, icpPrices]);\n}\n\nexport function useFetchGlobalTokenList() {\n const dispatch = useAppDispatch();\n const { result: tokens, loading } = useTokensFromList();\n\n useEffect(() => {\n if (tokens && tokens.length > 0) {\n const allTokensFromList = [...tokens].sort((a, b) => {\n if (a && b) {\n if (a.rank < b.rank) return -1;\n if (a.rank === b.rank) return 0;\n if (a.rank > b.rank) return 1;\n }\n\n return 0;\n });\n\n dispatch(updateTokenList(allTokensFromList));\n }\n }, [tokens, dispatch]);\n\n return {\n loading,\n result: tokens,\n };\n}\n\nexport function useTokenIsInTokenList(tokenId: string | undefined) {\n const globalTokenList = useGlobalTokenList();\n\n return useMemo(() => {\n if (!tokenId || !globalTokenList || globalTokenList.length === 0) return false;\n const token = globalTokenList.find((e) => e.canisterId === tokenId);\n return Boolean(token);\n }, [globalTokenList, tokenId]);\n}\n\nexport function useStateSwapAllTokens() {\n return useAppSelector((state: AppState) => state.global.allSwapTokens);\n}\n\nexport function useFetchAllSwapTokens() {\n const dispatch = useAppDispatch();\n const allSwapTokens = useStateSwapAllTokens();\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n const fetch = async (offset: number, limit: number) => {\n const result = await getAllTokensOfSwap(offset, limit);\n return result?.content;\n };\n\n async function call() {\n if (allSwapTokens.length > 0 || loading) return;\n\n setLoading(true);\n const data = await getLimitedInfinityCall(fetch, 1000, 2);\n\n const swapTokens = data.map((e) => {\n return {\n ...e,\n standard:\n e.standard === \"ICRC-1\"\n ? TOKEN_STANDARD.ICRC1\n : e.standard === \"ICRC-2\"\n ? TOKEN_STANDARD.ICRC2\n : e.standard,\n };\n });\n\n dispatch(updateAllSwapTokens(swapTokens));\n\n swapTokens.forEach((token) => {\n setStorageTokenInfo({\n decimals: Number(token.decimals),\n name: token.name,\n symbol: token.symbol,\n canisterId: token.ledger_id.toString(),\n logo: token.logo[0] ?? \"\",\n totalSupply: \"0\",\n transFee: token.fee.toString(),\n standardType: token.standard as TOKEN_STANDARD,\n });\n });\n\n setLoading(false);\n }\n\n call();\n }, [allSwapTokens, dispatch]);\n\n return useMemo(() => ({ loading, result: allSwapTokens }), [loading, allSwapTokens]);\n}\n\nexport function useWalletConnectorManager(): [boolean, (open: boolean) => void] {\n const dispatch = useAppDispatch();\n const open = useAppSelector((state) => state.global.walletConnector);\n\n const manage = useCallback(\n (open: boolean) => {\n dispatch(updateWalletConnector(open));\n },\n [dispatch],\n );\n\n return [open, manage];\n}\n\nexport function useFetchBridgeTokens() {\n const dispatch = useAppDispatch();\n const allBridgeTokens = useAllBridgeTokens();\n\n useEffect(() => {\n if (allBridgeTokens && allBridgeTokens.length > 0) {\n dispatch(updateBridgeTokens(allBridgeTokens));\n }\n }, [allBridgeTokens]);\n}\n\nexport function useBridgeTokens() {\n return useAppSelector((state) => state.global.bridgeTokens);\n}\n","import { TypedUseSelectorHook, useDispatch, useSelector } from \"react-redux\";\nimport store, { AppState } from \"./index\";\n\nexport const useAppDispatch = () => useDispatch();\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\n\nexport * from \"./swap/hooks\";\nexport * from \"./swap/cache/hooks\";\n","export interface CustomizationState {\n fontFamily: string;\n mode: string;\n locale: string;\n rtlLayout: boolean;\n hideUnavailableClaim: boolean;\n}\n\nexport const initialState: CustomizationState = {\n fontFamily: `'Poppins','Roboto',sans-serif`,\n mode: \"dark\",\n locale: \"en\",\n rtlLayout: false,\n hideUnavailableClaim: true,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { changeTheme, updateLocal, updateHideUnavailableClaim } from \"./actions\";\nimport { initialState } from \"./states\";\n\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(changeTheme, (state, { payload }) => {\n state.mode = payload;\n })\n .addCase(updateLocal, (state, { payload }) => {\n state.locale = payload;\n })\n .addCase(updateHideUnavailableClaim, (state, { payload }) => {\n state.hideUnavailableClaim = payload;\n });\n});\n","import { StoredTxValue } from \"types/ckBTC\";\nimport { WalletSortType, SortBalanceEnum } from \"types/index\";\n\nexport interface WalletState {\n taggedTokens: string[];\n ckBTCAddresses: { [key: string]: string };\n retrieveState: { [key: string]: StoredTxValue[] };\n sort: WalletSortType;\n sortBalance: SortBalanceEnum;\n}\n\nexport const initialState: WalletState = {\n ckBTCAddresses: {},\n retrieveState: {},\n taggedTokens: [],\n sort: \"Default\",\n sortBalance: SortBalanceEnum.ALL,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport {\n updateTaggedTokens,\n deleteTaggedTokens,\n updateCK_BTCAddresses,\n updateRetrieveState,\n updateWalletSortType,\n updateSortBalance,\n} from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTaggedTokens, (state, { payload }) => {\n const newTaggedTokens = [...state.taggedTokens, ...payload];\n\n return {\n ...state,\n taggedTokens: newTaggedTokens,\n };\n })\n .addCase(deleteTaggedTokens, (state, { payload }) => {\n const newTaggedTokens = [...state.taggedTokens].filter((token) => !payload.includes(token));\n\n return {\n ...state,\n taggedTokens: newTaggedTokens,\n };\n })\n .addCase(updateCK_BTCAddresses, (state, { payload }) => {\n state.ckBTCAddresses = {\n ...state.ckBTCAddresses,\n [`${payload.principal}_${payload.type}`]: payload.address,\n };\n })\n .addCase(updateRetrieveState, (state, { payload }) => {\n const states = state.retrieveState[`${payload.principal}`]\n ? [...state.retrieveState[`${payload.principal}`]].filter(\n (state) => state.block_index !== String(payload.block_index),\n )\n : [];\n\n const old_state = (\n state.retrieveState[`${payload.principal}`] ? [...state.retrieveState[`${payload.principal}`]] : []\n ).filter((state) => state.block_index === String(payload.block_index))[0];\n\n states.unshift({\n state: payload.state,\n txid: payload.txid,\n block_index: String(payload.block_index),\n value: payload.value ? payload.value : old_state ? old_state.value : \"\",\n });\n\n const _states = states.sort((a, b) => {\n if (Number(a.block_index) > Number(b.block_index)) return -1;\n if (Number(a.block_index) < Number(b.block_index)) return 1;\n return 0;\n });\n\n state.retrieveState[`${payload.principal}`] = _states;\n })\n .addCase(updateWalletSortType, (state, { payload }) => {\n state.sort = payload;\n })\n .addCase(updateSortBalance, (state, { payload }) => {\n state.sortBalance = payload;\n });\n});\n","export const SUPPORTED_LOCALES = [\n // order as they appear in the language dropdown\n \"en-US\",\n \"zh-CN\",\n \"zh-TW\",\n \"vi-VN\",\n \"ja-JP\",\n \"ko-KR\",\n \"it-IT\",\n \"es-ES\",\n] as const;\n\nexport type SupportedLocale = (typeof SUPPORTED_LOCALES)[number];\n\nexport const DEFAULT_LOCALE: SupportedLocale = \"en-US\";\n\nexport const LOCALE_LABEL: { [locale in SupportedLocale]: string } = {\n \"en-US\": \"English\",\n \"ja-JP\": \"日本語\",\n \"ko-KR\": \"한국어\",\n \"vi-VN\": \"Tiếng Việt\",\n \"zh-CN\": \"简体中文\",\n \"zh-TW\": \"繁体中文\",\n \"it-IT\": \"Italiano\",\n \"es-ES\": \"Español\",\n // 'af-ZA': 'Afrikaans',\n // 'ar-SA': 'العربية',\n // 'ca-ES': 'Català',\n // 'cs-CZ': 'čeština',\n // 'da-DK': 'dansk',\n // 'de-DE': 'Deutsch',\n // 'el-GR': 'ελληνικά',\n // 'en-US': 'English',\n\n // 'fi-FI': 'Suomalainen',\n // 'fr-FR': 'français',\n // 'he-IL': 'עִברִית',\n // 'hu-HU': 'Magyar',\n // 'id-ID': 'bahasa Indonesia',\n // 'ko-KR': '한국어',\n // 'nl-NL': 'Nederlands',\n // 'no-NO': 'norsk',\n // 'pl-PL': 'Polskie',\n // 'pt-BR': 'português',\n // 'pt-PT': 'português',\n // 'ro-RO': 'Română',\n // 'ru-RU': 'русский',\n // 'sr-SP': 'Српски',\n // 'sv-SE': 'svenska',\n // 'tr-TR': 'Türkçe',\n // 'uk-UA': 'Український',\n};\n\nexport const getLocalLabel = (local: SupportedLocale) => {\n return LOCALE_LABEL[local];\n};\n","import { DEFAULT_LOCALE, SupportedLocale } from \"constants/locales\";\nimport { ICPPriceInfo } from \"types/token\";\nimport { TokenListMetadata } from \"types/token-list\";\nimport { type AllTokenOfSwapTokenInfo } from \"@icpswap/types\";\n\nexport interface GlobalState {\n xdr_usdt: number;\n ICPPriceList: ICPPriceInfo[];\n tokenList: TokenListMetadata[];\n hasBeenClaimTestToken: boolean;\n swapTokenList: [];\n userLocale: SupportedLocale;\n poolStandardUpdated: boolean;\n allSwapTokens: AllTokenOfSwapTokenInfo[];\n walletConnector: boolean;\n bridgeTokens: string[];\n}\n\nexport const initialState: GlobalState = {\n xdr_usdt: 1.33,\n ICPPriceList: [],\n tokenList: [],\n hasBeenClaimTestToken: false,\n swapTokenList: [],\n userLocale: DEFAULT_LOCALE,\n poolStandardUpdated: false,\n allSwapTokens: [],\n walletConnector: false,\n bridgeTokens: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport {\n updateXDR2USD,\n updateICPPriceList,\n updateUserLocale,\n updateTokenList,\n updateAllSwapTokens,\n updateWalletConnector,\n updateBridgeTokens,\n} from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateXDR2USD, (state, { payload }) => {\n state.xdr_usdt = payload;\n })\n .addCase(updateICPPriceList, (state, { payload }) => {\n state.ICPPriceList = payload;\n })\n .addCase(updateUserLocale, (state, { payload }) => {\n state.userLocale = payload;\n })\n .addCase(updateTokenList, (state, { payload }) => {\n state.tokenList = payload;\n })\n .addCase(updateAllSwapTokens, (state, { payload }) => {\n state.allSwapTokens = payload;\n })\n .addCase(updateWalletConnector, (state, { payload }) => {\n state.walletConnector = payload;\n })\n .addCase(updateBridgeTokens, (state, { payload }) => {\n state.bridgeTokens = payload;\n });\n});\n","import { SWAP_FIELD } from \"constants/index\";\nimport { DEFAULT_SWAP_INPUT_ID, DEFAULT_SWAP_OUTPUT_ID } from \"constants/swap\";\nimport { type SwapPoolData } from \"@icpswap/types\";\n\nexport interface SwapState {\n [SWAP_FIELD.INPUT]: string;\n [SWAP_FIELD.OUTPUT]: string;\n typedValue: string;\n independentField: SWAP_FIELD;\n poolCanisterIds: { [key: string]: string };\n swapOutAmount: { [key: string]: bigint | undefined };\n decreaseLiquidityAmount: { [key: string]: { amount0: bigint | undefined; amount1: bigint | undefined } };\n allSwapPools: SwapPoolData[];\n}\n\nexport const initialState: SwapState = {\n [SWAP_FIELD.INPUT]: DEFAULT_SWAP_INPUT_ID,\n [SWAP_FIELD.OUTPUT]: DEFAULT_SWAP_OUTPUT_ID,\n typedValue: \"\",\n independentField: SWAP_FIELD.INPUT,\n poolCanisterIds: {},\n swapOutAmount: {},\n decreaseLiquidityAmount: {},\n allSwapPools: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { SWAP_FIELD } from \"constants/swap\";\nimport {\n typeInput,\n clearSwapState,\n selectCurrency,\n switchCurrencies,\n updatePoolCanisterIds,\n updateSwapOutAmount,\n updateDecreaseLiquidityAmount,\n updateAllSwapPools,\n} from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(typeInput, (state, { payload }) => {\n const { field: independentField, typedValue } = payload;\n\n state.independentField = independentField;\n state.typedValue = typedValue;\n })\n .addCase(selectCurrency, (state, { payload }) => {\n const { field, currencyId } = payload;\n\n const otherField = field === SWAP_FIELD.INPUT ? SWAP_FIELD.OUTPUT : SWAP_FIELD.INPUT;\n if (currencyId === state[otherField]) {\n return {\n ...state,\n independentField: state.independentField === SWAP_FIELD.INPUT ? SWAP_FIELD.OUTPUT : SWAP_FIELD.INPUT,\n [field]: currencyId,\n [otherField]: state[field],\n };\n }\n\n // the normal case\n return {\n ...state,\n [field]: currencyId,\n };\n })\n .addCase(switchCurrencies, (state) => {\n return {\n ...state,\n typedValue: \"\",\n independentField: state.independentField === SWAP_FIELD.INPUT ? SWAP_FIELD.OUTPUT : SWAP_FIELD.INPUT,\n };\n })\n // Do not clear the input/output tokens\n .addCase(clearSwapState, (state) => {\n return {\n ...initialState,\n [SWAP_FIELD.INPUT]: state.INPUT,\n [SWAP_FIELD.OUTPUT]: state.OUTPUT,\n allSwapPools: state.allSwapPools,\n };\n })\n .addCase(updatePoolCanisterIds, (state, { payload }) => {\n state.poolCanisterIds[payload.key] = payload.id;\n })\n .addCase(updateSwapOutAmount, (state, { payload }) => {\n state.swapOutAmount[payload.key] = payload.value;\n })\n .addCase(updateDecreaseLiquidityAmount, (state, { payload }) => {\n state.decreaseLiquidityAmount[payload.key] = { amount0: payload.amount0, amount1: payload.amount1 };\n })\n .addCase(updateAllSwapPools, (state, { payload }) => {\n state.allSwapPools = payload;\n });\n});\n","import { FIELD } from \"constants/swap\";\n\nexport interface SwapLiquidityState {\n leftRangeValue: string | boolean;\n rightRangeValue: string | boolean;\n startPrice: string;\n independentField: FIELD; // The currency input currently\n typedValue: string;\n}\n\nexport const initialState: SwapLiquidityState = {\n leftRangeValue: \"\",\n rightRangeValue: \"\",\n startPrice: \"\",\n independentField: FIELD.CURRENCY_A,\n typedValue: \"\",\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport {\n updateFiled,\n updateFullRange,\n updateLeftRange,\n updateRightRange,\n updateStartPrice,\n resetMintState,\n} from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n\n .addCase(updateFiled, (state, { payload }) => {\n const { field, typedValue } = payload;\n\n if (field === state.independentField) {\n return {\n ...state,\n independentField: field,\n typedValue,\n };\n } \n return {\n ...state,\n independentField: field,\n typedValue,\n };\n \n })\n .addCase(updateFullRange, (state) => {\n state.leftRangeValue = true;\n state.rightRangeValue = true;\n })\n .addCase(updateLeftRange, (state, { payload }) => {\n state.leftRangeValue = payload;\n })\n .addCase(updateRightRange, (state, { payload }) => {\n state.rightRangeValue = payload;\n })\n .addCase(updateStartPrice, (state, { payload }) => {\n state.startPrice = payload;\n })\n .addCase(resetMintState, () => {\n return initialState;\n });\n});\n","import {\n DEFAULT_BURN_SLIPPAGE,\n DEFAULT_SWAP_SLIPPAGE,\n DEFAULT_MINT_SLIPPAGE,\n DEFAULT_TRANSACTIONS_DEADLINE,\n DEFAULT_MULTIPLE_APPROVE,\n} from \"constants/swap\";\n\nexport interface SwapCacheState {\n userExpertMode: boolean;\n userSingleHop: boolean;\n userSelectedToken: string[];\n userSlippage: { [key: string]: number };\n userTransactionsDeadline: number;\n taggedTokens: string[];\n showClosedPosition: boolean;\n userPositionPools: string[];\n multipleApprove: number;\n swapProAutoRefresh: boolean;\n keepTokenInPools: boolean;\n}\n\nexport const initialState: SwapCacheState = {\n userExpertMode: false,\n userSingleHop: false,\n userSelectedToken: [],\n userSlippage: {\n swap: DEFAULT_SWAP_SLIPPAGE,\n mint: DEFAULT_MINT_SLIPPAGE,\n burn: DEFAULT_BURN_SLIPPAGE,\n },\n userTransactionsDeadline: DEFAULT_TRANSACTIONS_DEADLINE,\n taggedTokens: [],\n showClosedPosition: true,\n userPositionPools: [],\n multipleApprove: DEFAULT_MULTIPLE_APPROVE,\n swapProAutoRefresh: true,\n keepTokenInPools: false,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport {\n updateUserExpertMode,\n updateUserSelectedToken,\n updateUserSingleHop,\n updateUserSlippage,\n updateUserTransactionsDeadline,\n updateTaggedTokens,\n removeTaggedTokens,\n updateShowClosedPosition,\n updateUserPositionPools,\n updateUserMultipleApprove,\n updateSwapProAutoRefresh,\n updateKeepTokenInPools,\n} from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateUserExpertMode, (state, { payload }) => {\n state.userExpertMode = payload;\n })\n .addCase(updateUserSelectedToken, (state, { payload }) => {\n state.userSelectedToken = payload;\n })\n .addCase(updateUserSingleHop, (state, { payload }) => {\n state.userSingleHop = payload;\n })\n .addCase(updateUserTransactionsDeadline, (state, { payload }) => {\n state.userTransactionsDeadline = payload;\n })\n .addCase(updateUserSlippage, (state, { payload }) => {\n const { type, value } = payload;\n state.userSlippage[type] = value;\n })\n .addCase(updateTaggedTokens, (state, { payload }) => {\n state.taggedTokens = [...state.taggedTokens, ...payload];\n })\n .addCase(removeTaggedTokens, (state, { payload }) => {\n state.taggedTokens = state.taggedTokens.filter((token) => payload.findIndex((_token) => _token === token) === -1);\n })\n .addCase(updateShowClosedPosition, (state, { payload }) => {\n state.showClosedPosition = payload;\n })\n .addCase(updateUserPositionPools, (state, { payload }) => {\n const { userPositionPools } = state;\n const allPoolIds = [...new Set([...userPositionPools, ...payload])];\n\n state.userPositionPools = allPoolIds;\n })\n .addCase(updateUserMultipleApprove, (state, { payload }) => {\n state.multipleApprove = payload;\n })\n .addCase(updateSwapProAutoRefresh, (state, { payload }) => {\n state.swapProAutoRefresh = payload;\n })\n .addCase(updateKeepTokenInPools, (state, { payload }) => {\n state.keepTokenInPools = payload;\n });\n});\n","import { BURN_FIELD } from \"constants/swap\";\n\nexport interface SwapBurnState {\n typedValue: string;\n independentField: BURN_FIELD;\n}\n\nexport const initialState: SwapBurnState = {\n independentField: BURN_FIELD.LIQUIDITY_PERCENT,\n typedValue: \"0\",\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateTypedInput, resetBurnState } from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTypedInput, (state, { payload }) => {\n const { typedValue, independentField } = payload;\n\n state.independentField = independentField;\n state.typedValue = typedValue;\n })\n .addCase(resetBurnState, () => {\n return initialState;\n });\n});\n","import { ImportedNFT } from \"types/nft\";\n\nexport interface NFTState {\n userSelectedCanisters: string[];\n importedNFTs: ImportedNFT[];\n}\n\nexport const initialState: NFTState = {\n userSelectedCanisters: [],\n importedNFTs: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateUserSelectedCanisters, deleteUserSelectedCanisters, importNFT, deleteNFT } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateUserSelectedCanisters, (state, { payload }) => {\n state.userSelectedCanisters = [...state.userSelectedCanisters, ...(payload ?? [])];\n })\n .addCase(deleteUserSelectedCanisters, (state, { payload }) => {\n const userSelectedCanisters = new Set(state.userSelectedCanisters);\n\n userSelectedCanisters.delete(payload);\n\n state.userSelectedCanisters = [...userSelectedCanisters];\n })\n .addCase(importNFT, (state, { payload }) => {\n state.importedNFTs = state.importedNFTs.concat(payload);\n })\n .addCase(deleteNFT, (state, { payload }) => {\n state.importedNFTs = state.importedNFTs.filter((e) => e.canisterId !== payload.canisterId);\n });\n});\n","import { Null } from \"@icpswap/types\";\nimport { Connector } from \"constants/wallet\";\n\nexport type LoginState = {\n name: string | Null;\n walletType: Null | Connector;\n principal: string | Null;\n};\n\nexport interface AuthState {\n name: string;\n principal: string;\n walletType: null | Connector;\n isConnected: boolean;\n password: string;\n walletConnectorOpen: boolean;\n}\n\nexport const initialState: AuthState = {\n name: \"\",\n principal: \"\",\n walletType: null,\n isConnected: false,\n password: \"\",\n walletConnectorOpen: false,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\n\nimport { login, logout, updateConnected, updateWalletConnector } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(login, (state, { payload }) => {\n return {\n ...state,\n ...payload,\n };\n })\n .addCase(logout, (state) => {\n return { ...initialState, walletConnectorOpen: state.walletConnectorOpen };\n })\n .addCase(updateConnected, (state, { payload }) => {\n state.isConnected = payload.isConnected;\n })\n .addCase(updateWalletConnector, (state, { payload }) => {\n state.walletConnectorOpen = payload;\n });\n});\n","export interface SessionState {\n isUnLocked: boolean;\n}\n\nexport const initialState: SessionState = {\n isUnLocked: false,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateLockStatus } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder.addCase(updateLockStatus, (state, { payload }) => {\n state.isUnLocked = !payload;\n });\n});\n","import { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\n\nexport interface TokenCacheState {\n standards: { [canisterId: string]: TOKEN_STANDARD };\n allTokenIds: string[];\n}\n\nexport const initialState: TokenCacheState = {\n standards: {},\n allTokenIds: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateTokenStandards, updateAllTokenIds } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTokenStandards, (state, { payload }) => {\n payload.forEach(({ canisterId, standard }) => {\n if (canisterId) {\n state.standards[canisterId] = standard;\n }\n });\n })\n .addCase(updateAllTokenIds, (state, { payload }) => {\n state.allTokenIds = [...new Set(state.allTokenIds.concat(payload))];\n });\n});\n","export interface CallState {\n callResults: {\n [callKey: string]: any;\n };\n callIndex: number;\n callKeys: {\n [callKey: string]: number;\n };\n}\n\nexport const initialState: CallState = {\n callResults: {},\n callIndex: 0,\n callKeys: {},\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateCallResult, updateCallIndex, updateCallKeys } from \"./actions\";\nimport { initialState } from \"./states\";\n\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateCallResult, (state, { payload }) => {\n state.callResults = {\n ...state.callResults,\n [payload.callKey]: payload.result,\n };\n })\n .addCase(updateCallIndex, (state) => {\n state.callIndex += 1;\n })\n .addCase(updateCallKeys, (state, { payload }) => {\n state.callKeys = {\n ...state.callKeys,\n [payload.callKey]: payload.callIndex,\n };\n });\n});\n","import { ReactNode } from \"react\";\nimport { type StepContents } from \"types/step\";\n\nexport interface StepDetailsProps {\n title: ReactNode;\n onClose?: () => void;\n content: StepContents[];\n activeStep: number;\n errorStep: number | undefined;\n description?: string;\n}\n\nexport interface StepsState {\n steps: { [key: string]: StepDetailsProps };\n opened: string[];\n key: number;\n data: { [key: string]: any };\n}\n\nexport const initialState: StepsState = {\n steps: {},\n opened: [],\n key: 0,\n data: {},\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { open, close, updateStepDetails, updateKey, closeAll, updateData } from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(open, (state, { payload }) => {\n if (payload) {\n state.opened = [payload];\n }\n })\n .addCase(close, (state, { payload }) => {\n if (payload && state.opened.includes(payload)) {\n state.opened = [];\n }\n })\n .addCase(closeAll, (state) => {\n state.opened = [];\n })\n .addCase(updateStepDetails, (state, { payload }) => {\n state.steps = {\n ...state.steps,\n [payload.key]: payload.value,\n };\n })\n .addCase(updateKey, (state) => {\n state.key += 1;\n })\n .addCase(updateData, (state, { payload }) => {\n state.data = {\n ...state.data,\n [payload.key]: payload.data,\n };\n });\n});\n","import type { SnsTokensInfo } from \"@icpswap/types\";\n\nexport interface SnsState {\n snsAllTokensInfo: SnsTokensInfo[];\n}\n\nexport const initialState: SnsState = {\n snsAllTokensInfo: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateSnsAllTokensInfo } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder.addCase(updateSnsAllTokensInfo, (state, { payload }) => {\n state.snsAllTokensInfo = payload;\n });\n});\n","import { Null } from \"@icpswap/types\";\n\nexport interface LimitOrderState {\n swapOutAmount: { [key: string]: bigint | undefined };\n placeOrderPositionId: bigint | Null;\n}\n\nexport const initialState: LimitOrderState = {\n swapOutAmount: {},\n placeOrderPositionId: null,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\n\nimport { updateSwapOutAmount, updatePlaceOrderPositionId } from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateSwapOutAmount, (state, { payload }) => {\n state.swapOutAmount[payload.key] = payload.value;\n })\n .addCase(updatePlaceOrderPositionId, (state, { payload }) => {\n state.placeOrderPositionId = payload;\n });\n});\n","import { TX } from \"types/web3\";\nimport { StoredWithdrawTxValue } from \"types/ckETH\";\n\nexport interface Web3State {\n tx: { [principal: string]: TX[] };\n withdrawTx: { [principal: string]: StoredWithdrawTxValue[] };\n erc20Transactions: { [principal_ledger: string]: TX[] };\n}\n\nexport const initialState: Web3State = {\n tx: {},\n withdrawTx: {},\n erc20Transactions: {},\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateTX, updateErc20TX, updateWithdrawTX } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTX, (state, { payload }) => {\n const allTx = state.tx[`${payload.principal}`] ? [payload.tx, ...state.tx[`${payload.principal}`]] : [payload.tx];\n state.tx[`${payload.principal}`] = allTx;\n })\n .addCase(updateWithdrawTX, (state, { payload }) => {\n const otherStates = state.withdrawTx[`${payload.principal}`]\n ? [...state.withdrawTx[`${payload.principal}`]].filter(\n (transaction) => transaction.block_index !== String(payload.tx.block_index),\n )\n : [];\n\n const old_state = (\n state.withdrawTx[`${payload.principal}`] ? [...state.withdrawTx[`${payload.principal}`]] : []\n ).filter((transaction) => transaction.block_index === String(payload.tx.block_index))[0];\n\n otherStates.unshift({\n state: payload.tx.state,\n hash: payload.tx.hash ?? old_state?.hash,\n block_index: String(payload.tx.block_index),\n value: payload.tx.value ? payload.tx.value : old_state ? old_state.value : \"\",\n });\n\n const newStates = otherStates.sort((a, b) => {\n if (Number(a.block_index) > Number(b.block_index)) return -1;\n if (Number(a.block_index) < Number(b.block_index)) return 1;\n return 0;\n });\n\n state.withdrawTx[`${payload.principal}`] = newStates;\n })\n .addCase(updateErc20TX, (state, { payload }) => {\n const key = `${payload.principal}_${payload.ledger_id}`;\n const allTx = state.erc20Transactions[key] ? [payload.tx, ...state.erc20Transactions[key]] : [payload.tx];\n state.erc20Transactions[key] = allTx;\n });\n});\n","import customizationReducer from \"./customization/reducer\";\nimport walletReducer from \"./wallet/reducer\";\nimport globalReducer from \"./global/reducer\";\nimport loadingReducer from \"./loadingReducer\";\nimport SwapReducer from \"./swap/reducer\";\nimport SwapLiquidityReducer from \"./swap/liquidity/reducer\";\nimport SwapCacheReducer from \"./swap/cache/reducer\";\nimport SwapBurn from \"./swap/burn/reducer\";\nimport NFTReducer from \"./nft/reducer\";\nimport AuthReducer from \"./auth/reducer\";\nimport sessionReducer from \"./session/reducer\";\nimport tokenCacheReducer from \"./token/cache/reducer\";\nimport callReducer from \"./call/reducer\";\nimport StepReducer from \"./steps/reducer\";\nimport SnsReducer from \"./sns/reducer\";\nimport TransactionsReducer from \"./transactions/reducer\";\nimport LimitOrderReducer from \"./swap/limit-order/reducer\";\n\nimport Web3 from \"./web3/reducer\";\n\nexport { sessionReducer };\n\nexport default {\n customization: customizationReducer,\n loading: loadingReducer,\n wallet: walletReducer,\n global: globalReducer,\n swap: SwapReducer,\n swapCache: SwapCacheReducer,\n swapLiquidity: SwapLiquidityReducer,\n swapBurn: SwapBurn,\n nft: NFTReducer,\n auth: AuthReducer,\n call: callReducer,\n step: StepReducer,\n tokenCache: tokenCacheReducer,\n transactions: TransactionsReducer,\n limitOrder: LimitOrderReducer,\n\n web3: Web3,\n sns: SnsReducer,\n};\n","import { configureStore } from \"@reduxjs/toolkit\";\nimport { AnyAction, combineReducers } from \"redux\";\nimport { persistStore, persistReducer } from \"redux-persist\";\nimport storage from \"redux-persist/lib/storage\";\nimport sessionStorage from \"redux-persist/lib/storage/session\";\nimport autoMergeLevel2 from \"redux-persist/lib/stateReconciler/autoMergeLevel2\";\nimport { PersistState } from \"redux-persist/es/types\";\nimport allReducer, { sessionReducer } from \"./reducer\";\n\nimport { AuthState } from \"./auth/states\";\nimport { SessionState } from \"./session/states\";\nimport { GlobalState } from \"./global/states\";\nimport { NFTTradeState } from \"./NFTTrade/states\";\nimport { LoadingState } from \"./loadingReducer\";\nimport { NFTState } from \"./nft/states\";\nimport { WalletState } from \"./wallet/states\";\nimport { CustomizationState } from \"./customization/states\";\nimport { SwapBurnState } from \"./swap/burn/state\";\nimport { SwapLiquidityState } from \"./swap/liquidity/state\";\nimport { SwapCacheState } from \"./swap/cache/state\";\nimport { SwapState } from \"./swap/state\";\nimport { TokenCacheState } from \"./token/cache/states\";\nimport { CallState } from \"./call/states\";\nimport { StepsState } from \"./steps/state\";\nimport { Web3State } from \"./web3/states\";\nimport { SnsState } from \"./sns/states\";\nimport { LimitOrderState } from \"./swap/limit-order/state\";\nimport { TransactionsState } from \"./transactions/reducer\";\n\ninterface PersistPartial {\n _persist: PersistState;\n}\nexport interface AllState {\n auth: AuthState;\n session: SessionState & PersistPartial;\n global: GlobalState;\n loading: LoadingState;\n cache: any;\n swap: SwapState;\n swapLiquidity: SwapLiquidityState;\n swapBurn: SwapBurnState;\n swapCache: SwapCacheState;\n tokenCache: TokenCacheState;\n customization: CustomizationState;\n wallet: WalletState;\n nft: NFTState;\n NFTTrade: NFTTradeState;\n call: CallState;\n step: StepsState;\n web3: Web3State;\n sns: SnsState;\n transactions: TransactionsState;\n limitOrder: LimitOrderState;\n}\n\nconst defaultStorageConfig = {\n storage,\n stateReconciler: autoMergeLevel2,\n version: 0,\n};\n\nconst rootPersistConfig = {\n key: \"root\",\n ...defaultStorageConfig,\n blacklist: [\n \"cache\",\n \"session\",\n \"global\",\n \"loading\",\n \"snackbar\",\n \"swap\",\n \"swapLiquidity\",\n \"swapBurn\",\n \"call\",\n \"step\",\n \"sns\",\n \"limitOrder\",\n ],\n migrate: (state: any) => {\n let newState = {};\n\n if (state?._persist?.version === -1) {\n newState = { ...(state ?? {}), auth: {} };\n } else {\n newState = { ...(state ?? {}) };\n }\n\n // 11/17/2023 Fix some incorrect token cache\n if (state?._persist?.version === 1) {\n newState = { ...(state ?? {}), tokenCache: {} };\n } else {\n newState = { ...(state ?? {}) };\n }\n\n // 12/06/2023 Fix ckETH cache\n if (state?._persist?.version === 2) {\n newState = { ...(state ?? {}), tokenCache: {} };\n } else {\n newState = { ...(state ?? {}) };\n }\n\n // Reset the multipleApprove to 1000\n if (state?._persist?.version === 3) {\n if (state) {\n newState = { ...state, swapCache: { ...(state.swapCache ?? {}), multipleApprove: 1000 } };\n }\n } else {\n newState = { ...(state ?? {}) };\n }\n\n return Promise.resolve(newState);\n },\n version: 4,\n};\n\nconst SessionPersistConfig = {\n key: \"session\",\n storage: sessionStorage,\n stateReconciler: autoMergeLevel2,\n version: 3,\n};\n\nconst rootReducer = combineReducers({\n ...allReducer,\n session: persistReducer(SessionPersistConfig, sessionReducer),\n});\n\n// @ts-ignore\nconst PersistReducer = persistReducer(rootPersistConfig, rootReducer);\n\nconst store = configureStore({\n reducer: PersistReducer,\n middleware: (getDefaultMiddleware) => getDefaultMiddleware({ thunk: true, serializableCheck: false }),\n});\n\nexport const persistor = persistStore(store);\n\nexport type AppState = ReturnType;\nexport type AppDispatch = typeof store.dispatch;\n\nexport default store;\n","import { createAction, createReducer } from \"@reduxjs/toolkit\";\n\nexport const openLoading = createAction(\"loading/open\");\nexport const closeLoading = createAction(\"loading/close\");\n\nexport interface LoadingState {\n open: boolean;\n}\n\nconst initialState: LoadingState = {\n open: false,\n};\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(openLoading, (state) => {\n state.open = true;\n })\n .addCase(closeLoading, (state) => {\n state.open = false;\n });\n});\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { NFT_STANDARDS } from \"@icpswap/constants\";\n\nexport const updateUserSelectedCanisters = createAction(\"NFT/updateUserSelectedCanisters\");\n\nexport const deleteUserSelectedCanisters = createAction(\"NFT/deleteUserSelectedCanisters\");\n\nexport const importNFT = createAction<{ canisterId: string; standard: NFT_STANDARDS }>(\"NFT/importNFT\");\n\nexport const deleteNFT = createAction<{ canisterId: string }>(\"NFT/deleteNFT\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const updateLockStatus = createAction(\"session/updateLockStatus\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport type { SnsTokensInfo } from \"@icpswap/types\";\n\nexport const updateSnsAllTokensInfo = createAction(\"global/updateSnsAllTokensInfo\");\n","import { useEffect, useMemo, useState } from \"react\";\nimport { AppState } from \"store/index\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { getSnsAllTokensInfo } from \"@icpswap/hooks\";\nimport { updateSnsAllTokensInfo } from \"./actions\";\n\nexport function useStateSnsAllTokensInfo() {\n return useAppSelector((state: AppState) => state.sns.snsAllTokensInfo);\n}\n\nexport function useFetchSnsAllTokensInfo() {\n const dispatch = useAppDispatch();\n const allTokensInfo = useStateSnsAllTokensInfo();\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n if (allTokensInfo.length > 0 || loading) return;\n\n setLoading(true);\n const data = await getSnsAllTokensInfo();\n dispatch(updateSnsAllTokensInfo(data));\n setLoading(false);\n }\n\n call();\n }, [dispatch]);\n\n return useMemo(() => ({ loading, result: allTokensInfo }), [loading, allTokensInfo]);\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { StepDetailsProps } from \"./state\";\n\nexport const updateStepDetails = createAction<{ key: string; value: StepDetailsProps }>(\"steps/updateStepDetails\");\n\nexport const open = createAction(\"steps/open\");\n\nexport const close = createAction(\"steps/close\");\n\nexport const updateKey = createAction(\"steps/updateKey\");\n\nexport const closeAll = createAction(\"steps/closeAll\");\n\nexport const updateData = createAction<{ key: string; data: any }>(\"steps/updateData\");\n","import { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport type { StepDetails } from \"types/step\";\n\nimport { open, close, updateStepDetails, updateKey, closeAll, updateData } from \"./actions\";\nimport store from \"../index\";\n\nexport function getStepDetails(key: string) {\n return store.getState().step.steps[key];\n}\n\nexport function useCurrKey() {\n return useAppSelector((state) => state.step.key);\n}\n\nexport function useUpdateKey() {\n const dispatch = useAppDispatch();\n\n return useCallback(() => {\n dispatch(updateKey());\n }, [dispatch]);\n}\n\nexport function useStepManager() {\n const dispatch = useAppDispatch();\n\n const openCall = useCallback(\n (key: string | undefined) => {\n dispatch(open(key));\n },\n [dispatch],\n );\n\n const closeCall = useCallback(\n (key: string | undefined) => {\n dispatch(close(key));\n },\n [dispatch],\n );\n\n return useMemo(\n () => ({\n open: openCall,\n close: closeCall,\n }),\n [openCall, closeCall],\n );\n}\n\nexport function useCloseAllSteps() {\n const dispatch = useAppDispatch();\n\n return useCallback(() => {\n dispatch(closeAll());\n }, [dispatch]);\n}\n\nexport function useStepContentManager() {\n const dispatch = useAppDispatch();\n const { close } = useStepManager();\n\n return useCallback(\n (key: string, step: StepDetails) => {\n const prevStep = getStepDetails(key) ?? {};\n\n dispatch(\n updateStepDetails({\n key,\n value: {\n ...step,\n activeStep: prevStep.activeStep ?? 0,\n errorStep: prevStep.errorStep,\n onClose: () => close(key),\n },\n }),\n );\n },\n [dispatch, close],\n );\n}\n\nexport function useUpdateCallStep() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (key: string, activeStep: number, errorStep: number | undefined) => {\n const prevStep = getStepDetails(key) ?? {};\n\n dispatch(updateStepDetails({ key, value: { ...prevStep, activeStep, errorStep } }));\n },\n [dispatch],\n );\n}\n\nexport function useOpenedSteps() {\n return useAppSelector((state) => state.step.opened);\n}\n\nexport function useStepDetails(key: string) {\n return useAppSelector((state) => state.step.steps[key]);\n}\n\nexport function useStepData(key: string) {\n return useAppSelector((state) => state.step.data[key]) as T;\n}\n\nexport function getStepData(key: string) {\n return store.getState().step.data[key] as T;\n}\n\nexport function useUpdateStepData() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (key: string, data: any) => {\n dispatch(updateData({ key, data }));\n },\n [dispatch],\n );\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { SWAP_FIELD } from \"constants/swap\";\nimport { type SwapPoolData } from \"@icpswap/types\";\n\nexport const selectCurrency = createAction<{ field: SWAP_FIELD; currencyId: string | undefined }>(\n \"swap/selectCurrency\",\n);\n\nexport const switchCurrencies = createAction(\"swap/switchCurrencies\");\n\nexport const typeInput = createAction<{ field: SWAP_FIELD; typedValue: string }>(\"swap/typeInput\");\n\nexport const clearSwapState = createAction(\"swap/clearSwapState\");\n\nexport type PoolCanisterRecord = { key: string; id: string };\n\nexport const updatePoolCanisterIds = createAction(\"swapCache/updatePoolCanisterIds\");\n\nexport const updateSwapOutAmount = createAction<{ key: string; value: bigint | undefined }>(\"swap/updateSwapOutAmount\");\n\nexport const updateDecreaseLiquidityAmount = createAction<{\n key: string;\n amount0: bigint | undefined;\n amount1: bigint | undefined;\n}>(\"swap/updateDecreaseLiquidityAmount\");\n\nexport const updateAllSwapPools = createAction(\"swap/updateAllSwapPools\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { BURN_FIELD } from \"constants/swap\";\n\nexport interface updateTypedInputPayload {\n independentField: BURN_FIELD;\n typedValue: string;\n}\n\nexport const updateTypedInput = createAction(\"swapBurn/updateTypedInput\");\n\nexport const resetBurnState = createAction(\"swapBurn/resetBurnState\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const updateUserExpertMode = createAction(\"swapCache/updateUserExpertMode\");\n\nexport const updateUserSingleHop = createAction(\"swapCache/updateUserSingleHop\");\n\nexport const updateUserSelectedToken = createAction(\"swapCache/updateUserSelectedToken\");\n\nexport const updateUserSlippage = createAction<{ type: string; value: number }>(\"swapCache/updateUserSlippage\");\n\nexport const updateUserTransactionsDeadline = createAction(\"swapCache/updateUserTransactionsDeadline\");\n\nexport const updateTaggedTokens = createAction(\"swapCache/updateTaggedToken\");\n\nexport const removeTaggedTokens = createAction(\"swapCache/removeTaggedTokens\");\n\nexport const updateShowClosedPosition = createAction(\"swapCache/updateShowClosedPosition\");\n\nexport const updateUserPositionPools = createAction(\"swapCache/updateUserPositionPools\");\n\nexport const updateUserMultipleApprove = createAction(\"swapCache/updateUserMultipleApprove\");\n\nexport const updateSwapProAutoRefresh = createAction(\"global/updateSwapProAutoRefresh\");\n\nexport const updateKeepTokenInPools = createAction(\"swapCache/updateKeepTokenInPools\");\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useUserPositionPools } from \"@icpswap/hooks\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { slippageToPercent, getDefaultSlippageTolerance } from \"constants/swap\";\nimport { useAccount } from \"store/auth/hooks\";\nimport { Percent } from \"@icpswap/swap-sdk\";\nimport {\n updateUserExpertMode,\n updateUserSingleHop,\n updateUserSelectedToken,\n updateUserTransactionsDeadline,\n updateUserSlippage,\n updateTaggedTokens,\n removeTaggedTokens,\n updateShowClosedPosition,\n updateUserPositionPools,\n updateUserMultipleApprove,\n updateSwapProAutoRefresh,\n updateKeepTokenInPools,\n} from \"./actions\";\n\nexport function useIsExpertMode() {\n return useAppSelector((state) => state.swapCache.userExpertMode);\n}\n\nexport function useIsSingleHop() {\n return useAppSelector((state) => state.swapCache.userSingleHop);\n}\n\nexport function useUserSlippage() {\n return useAppSelector((state) => state.swapCache.userSlippage);\n}\n\nexport function useUserTransactionsDeadline() {\n return useAppSelector((state) => state.swapCache.userTransactionsDeadline);\n}\n\nexport function useExpertModeManager(): [boolean, () => void] {\n const dispatch = useAppDispatch();\n const expertMode = useIsExpertMode();\n\n const toggleSetExpertMode = useCallback(() => {\n dispatch(updateUserExpertMode(!expertMode));\n }, [dispatch, expertMode]);\n\n return [expertMode, toggleSetExpertMode];\n}\n\nexport function useSingleHopManager(): [boolean, () => void] {\n const dispatch = useAppDispatch();\n const singleHop = useIsSingleHop();\n\n const toggleSetSingleHop = useCallback(() => {\n dispatch(updateUserSingleHop(!singleHop));\n }, [dispatch, singleHop]);\n\n return [singleHop, toggleSetSingleHop];\n}\n\nexport function useUserSelectedToken() {\n return useAppSelector((state) => state.swapCache.userSelectedToken);\n}\n\nexport function useMultipleApproveManager() {\n const dispatch = useAppDispatch();\n const multipleApprove = useAppSelector((state) => state.swapCache.multipleApprove);\n\n const updateMultipleApprove = useCallback(\n (multipleApprove: number) => {\n dispatch(updateUserMultipleApprove(multipleApprove));\n },\n [dispatch, multipleApprove],\n );\n\n return useMemo(() => ({ multipleApprove, updateMultipleApprove }), [updateMultipleApprove, multipleApprove]);\n}\n\nexport function useSelectedTokenManage(): [string[], (tokenIds: string[]) => void] {\n const dispatch = useAppDispatch();\n const userSelectedToken = useUserSelectedToken();\n\n const setUserSelectedToken = useCallback(\n (checkedToken: string[]) => {\n dispatch(updateUserSelectedToken(checkedToken));\n },\n [dispatch],\n );\n return [userSelectedToken, setUserSelectedToken];\n}\n\nexport function useSlippageManager(type: string): [number, (value: number) => void] {\n const dispatch = useAppDispatch();\n const userSlippage = useUserSlippage()[type];\n\n const setUserSlippage = useCallback(\n (value: number) => {\n dispatch(updateUserSlippage({ type, value }));\n },\n [dispatch],\n );\n\n return [userSlippage, setUserSlippage];\n}\n\nexport function useSlippageToleranceToPercent(type: string) {\n const [slippageTolerance] = useSlippageManager(type);\n\n return useMemo(() => {\n if (slippageTolerance || slippageTolerance === 0) {\n return slippageToPercent(slippageTolerance);\n }\n\n let percentSlippage: Percent | null = null;\n // input change will case error when value is 0.\n try {\n percentSlippage = slippageToPercent(getDefaultSlippageTolerance(type));\n } catch {\n percentSlippage = slippageToPercent(getDefaultSlippageTolerance(type));\n }\n\n return percentSlippage;\n }, [slippageTolerance, slippageToPercent]);\n}\n\nexport function useTransactionsDeadlineManager(): [number, (value: number) => void] {\n const dispatch = useAppDispatch();\n const transactionDeadline = useUserTransactionsDeadline();\n\n const setTransactionsDeadline = useCallback(\n (value: number) => {\n dispatch(updateUserTransactionsDeadline(value));\n },\n [dispatch],\n );\n\n return [transactionDeadline, setTransactionsDeadline];\n}\n\nexport function useTaggedTokenManager(): [string[], (tokens: string[]) => void, (tokens: string[]) => void] {\n const dispatch = useAppDispatch();\n\n const taggedTokens = useAppSelector((state) => state.swapCache.taggedTokens);\n\n const updateTaggedTokensCall = useCallback(\n (tokens: string[]) => {\n dispatch(updateTaggedTokens(tokens));\n },\n [dispatch],\n );\n\n const removeTaggedTokensCall = useCallback(\n (tokens: string[]) => {\n dispatch(removeTaggedTokens(tokens));\n },\n [dispatch],\n );\n\n return useMemo(\n () => [taggedTokens, updateTaggedTokensCall, removeTaggedTokensCall],\n [taggedTokens, updateTaggedTokensCall, removeTaggedTokensCall],\n );\n}\n\nexport function useClosedPositionManager(): [boolean, (bool: boolean) => void] {\n const showClosedPosition = useAppSelector((state) => state.swapCache.showClosedPosition);\n const dispatch = useAppDispatch();\n\n const update = useCallback(\n (bool: boolean) => {\n dispatch(updateShowClosedPosition(bool));\n },\n [dispatch],\n );\n\n return useMemo(() => [showClosedPosition, update], [showClosedPosition, update]);\n}\n\nexport function useStoreUserPositionPools() {\n return useAppSelector((state) => state.swapCache.userPositionPools);\n}\n\nexport function useUpdateUserPositionPools() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (poolIds: string[]) => {\n dispatch(updateUserPositionPools(poolIds));\n },\n [dispatch],\n );\n}\n\nexport function useInitialUserPositionPools() {\n const account = useAccount();\n const storeUserPositionPools = useStoreUserPositionPools();\n const updateStoreUserPositionPools = useUpdateUserPositionPools();\n\n const [initialLoading, setInitialLoading] = useState(true);\n\n const { result: positionPools, loading } = useUserPositionPools(account);\n\n useEffect(() => {\n if (positionPools) {\n const allPoolIds = [...new Set([...storeUserPositionPools, ...positionPools])];\n updateStoreUserPositionPools(allPoolIds);\n setInitialLoading(false);\n } else if (loading === false) {\n setInitialLoading(false);\n }\n }, [JSON.stringify(storeUserPositionPools), positionPools, updateStoreUserPositionPools, loading]);\n\n return {\n loading: initialLoading,\n };\n}\n\nexport function useSwapProAutoRefresh() {\n return useAppSelector((state) => state.swapCache.swapProAutoRefresh);\n}\n\nexport function useSwapProAutoRefreshManager(): [boolean, (autoRefresh: boolean) => void] {\n const dispatch = useAppDispatch();\n const swapProAutoRefresh = useSwapProAutoRefresh();\n\n const callback = useCallback(\n (autoRefresh: boolean) => {\n dispatch(updateSwapProAutoRefresh(autoRefresh));\n },\n [dispatch],\n );\n\n return useMemo(() => [swapProAutoRefresh, callback], [swapProAutoRefresh, callback]);\n}\n\nexport function useSwapKeepTokenInPools() {\n return useAppSelector((state) => state.swapCache.keepTokenInPools);\n}\n\nexport function useSwapKeepTokenInPoolsManager(): [boolean, (autoRefresh: boolean) => void] {\n const dispatch = useAppDispatch();\n const keepTokenInPools = useSwapKeepTokenInPools();\n\n const callback = useCallback(\n (keepTokenInPools: boolean) => {\n dispatch(updateKeepTokenInPools(keepTokenInPools));\n },\n [dispatch],\n );\n\n return useMemo(() => [keepTokenInPools, callback], [keepTokenInPools, callback]);\n}\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { SWAP_FIELD } from \"constants/swap\";\nimport { useToken } from \"hooks/useCurrency\";\nimport { tryParseAmount, inputNumberCheck, isUseTransfer } from \"utils/index\";\nimport { TradeState, useBestTrade } from \"hooks/swap/useTrade\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { useCurrencyBalance } from \"hooks/token/useTokenBalance\";\nimport { useSlippageToleranceToPercent } from \"store/swap/cache/hooks\";\nimport { getTokenInsufficient } from \"hooks/swap/index\";\nimport store from \"store/index\";\nimport {\n useParsedQueryString,\n useUserUnusedBalance,\n useTokenBalance,\n useDebouncedChangeHandler,\n useDebounce,\n} from \"@icpswap/hooks\";\nimport { isValidPrincipal, formatTokenAmount, isNullArgs } from \"@icpswap/utils\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\nimport { useAllowance } from \"hooks/token\";\nimport { useAllBalanceMaxSpend } from \"hooks/swap/useMaxAmountSpend\";\nimport { useTranslation } from \"react-i18next\";\nimport { type SwapPoolData } from \"@icpswap/types\";\n\nimport {\n selectCurrency,\n switchCurrencies,\n typeInput,\n clearSwapState,\n updatePoolCanisterIds,\n PoolCanisterRecord,\n updateSwapOutAmount,\n updateDecreaseLiquidityAmount,\n updateAllSwapPools,\n} from \"./actions\";\n\nexport function useSwapHandlers() {\n const dispatch = useAppDispatch();\n\n const onCurrencySelection = useCallback(\n (field: SWAP_FIELD, currencyId: string | undefined) => {\n dispatch(\n selectCurrency({\n field,\n currencyId,\n }),\n );\n },\n [dispatch],\n );\n\n const onSwitchTokens = useCallback(() => {\n dispatch(switchCurrencies());\n }, [dispatch]);\n\n const [, debouncedSwitchTokens] = useDebouncedChangeHandler(undefined, onSwitchTokens, 500);\n\n const onUserInput = useCallback(\n (field: SWAP_FIELD, typedValue: string) => {\n dispatch(typeInput({ field, typedValue }));\n },\n [dispatch],\n );\n\n return {\n onCurrencySelection,\n onSwitchTokens: debouncedSwitchTokens,\n onUserInput,\n };\n}\n\nexport function useSwapState() {\n return useAppSelector((state) => state.swap);\n}\n\nexport function useCleanSwapState() {\n const dispatch = useAppDispatch();\n\n return useCallback(() => dispatch(clearSwapState()), [dispatch]);\n}\n\nexport interface UseSwapInfoArgs {\n refresh?: number | boolean;\n}\n\nexport function useSwapInfo({ refresh }: UseSwapInfoArgs) {\n const { t } = useTranslation();\n const principal = useAccountPrincipal();\n const userSlippageTolerance = useSlippageToleranceToPercent(\"swap\");\n\n const sub = useMemo(() => {\n return principal ? SubAccount.fromPrincipal(principal).toUint8Array() : undefined;\n }, [principal]);\n\n const {\n independentField,\n typedValue,\n [SWAP_FIELD.INPUT]: inputCurrencyId,\n [SWAP_FIELD.OUTPUT]: outputCurrencyId,\n } = useSwapState();\n\n const [inputTokenState, inputToken] = useToken(inputCurrencyId);\n const [outputTokenState, outputToken] = useToken(outputCurrencyId);\n\n const isExactIn = independentField === SWAP_FIELD.INPUT;\n\n const { result: inputCurrencyBalance } = useCurrencyBalance(principal, inputToken, refresh);\n const { result: outputCurrencyBalance } = useCurrencyBalance(principal, outputToken, refresh);\n\n const currencyBalances = {\n [SWAP_FIELD.INPUT]: inputCurrencyBalance,\n [SWAP_FIELD.OUTPUT]: outputCurrencyBalance,\n };\n\n const parsedAmount = tryParseAmount(typedValue, (isExactIn ? inputToken : outputToken) ?? undefined);\n\n const otherCurrency = (isExactIn ? outputToken : inputToken) ?? undefined;\n\n const [debouncedTypedValue] = useDebounce(\n useMemo(() => [typedValue, otherCurrency], [typedValue, otherCurrency]),\n 600,\n );\n\n const Trade = useBestTrade(\n inputToken,\n outputToken,\n !typedValue || typedValue === \"0\" || debouncedTypedValue !== typedValue ? undefined : debouncedTypedValue,\n );\n\n const poolId = useMemo(() => Trade?.pool?.id, [Trade]);\n\n // DIP20 not support subaccount balance\n // So useTokenBalance is 0 by default if standard is DIP20\n const { result: __inputTokenSubBalance } = useTokenBalance({\n canisterId: inputToken?.address,\n address: poolId,\n sub,\n refresh,\n });\n const { result: __outputTokenSubBalance } = useTokenBalance({\n canisterId: outputToken?.address,\n address: poolId,\n sub,\n refresh,\n });\n\n const inputTokenSubBalance = useMemo(() => {\n if (!principal) return undefined;\n return __inputTokenSubBalance;\n }, [__inputTokenSubBalance, principal]);\n\n const outputTokenSubBalance = useMemo(() => {\n if (!principal) return undefined;\n return __outputTokenSubBalance;\n }, [__outputTokenSubBalance]);\n\n const { result: unusedBalance } = useUserUnusedBalance(poolId, principal, refresh);\n const { inputTokenUnusedBalance, outputTokenUnusedBalance } = useMemo(() => {\n if (!poolId || !unusedBalance || !inputToken) return {};\n\n const pool = Trade.routes[0].pools[0];\n\n return {\n inputTokenUnusedBalance:\n pool.token0.address === inputToken.address ? unusedBalance.balance0 : unusedBalance.balance1,\n outputTokenUnusedBalance:\n pool.token0.address === inputToken.address ? unusedBalance.balance1 : unusedBalance.balance0,\n };\n }, [Trade, inputToken, unusedBalance]);\n\n const allowanceTokenId = useMemo(() => {\n if (!inputToken) return undefined;\n\n return isUseTransfer(inputToken) ? undefined : inputToken.address;\n }, [inputToken]);\n\n const { result: allowance } = useAllowance({\n canisterId: allowanceTokenId,\n owner: principal?.toString(),\n spender: poolId,\n });\n\n const tokenInsufficient = getTokenInsufficient({\n token: inputToken,\n subAccountBalance: inputTokenSubBalance,\n balance: formatTokenAmount(inputCurrencyBalance?.toExact(), inputToken?.decimals),\n formatTokenAmount: formatTokenAmount(typedValue, inputToken?.decimals).toString(),\n unusedBalance: inputTokenUnusedBalance,\n allowance,\n });\n\n const maxInputAmount = useAllBalanceMaxSpend({\n token: inputToken,\n balance: formatTokenAmount(inputCurrencyBalance?.toExact(), inputToken?.decimals).toString(),\n poolId: Trade?.pool?.id,\n subBalance: inputTokenSubBalance,\n unusedBalance: inputTokenUnusedBalance,\n allowance,\n });\n\n const inputError = useMemo(() => {\n if (isNullArgs(inputToken) || isNullArgs(outputToken)) return t(\"common.select.a.token\");\n if (!parsedAmount) return t(\"common.enter.input.amount\");\n if (!typedValue || typedValue === \"0\") return t(\"common.error.amount.large.than.fee\");\n if (!inputTokenSubBalance || isNullArgs(inputTokenUnusedBalance)) return t`Swap`;\n if (inputNumberCheck(typedValue) === false) return t(\"common.error.exceeds.limit\");\n if (typeof Trade.available === \"boolean\" && !Trade.available) return t(\"swap.pool.not.available\");\n if (tokenInsufficient === \"INSUFFICIENT\") return `Insufficient ${inputToken?.symbol} balance`;\n\n return null;\n }, [typedValue, parsedAmount, inputTokenSubBalance, inputTokenUnusedBalance, Trade, tokenInsufficient]);\n\n return {\n inputError,\n parsedAmount,\n trade: Trade?.trade,\n state: Trade?.state ?? TradeState.INVALID,\n available: Trade?.available,\n routes: Trade?.routes,\n noLiquidity: Trade?.noLiquidity,\n currencyBalances,\n userSlippageTolerance,\n inputToken,\n outputToken,\n inputTokenState,\n outputTokenState,\n unusedBalance,\n inputTokenUnusedBalance,\n outputTokenUnusedBalance,\n inputTokenSubBalance,\n outputTokenSubBalance,\n inputTokenBalance: formatTokenAmount(inputCurrencyBalance?.toExact(), inputCurrencyBalance?.currency.decimals),\n outputTokenBalance: formatTokenAmount(outputCurrencyBalance?.toExact(), outputCurrencyBalance?.currency.decimals),\n maxInputAmount,\n pool: Trade.pool,\n };\n}\n\nexport function useLoadDefaultParams() {\n const dispatch = useAppDispatch();\n\n const { input, output } = useParsedQueryString() as { input: string | undefined; output: string | undefined };\n\n useEffect(() => {\n if (input !== undefined && isValidPrincipal(input)) {\n dispatch(\n selectCurrency({\n field: SWAP_FIELD.INPUT,\n currencyId: input,\n }),\n );\n }\n\n if (output !== undefined && isValidPrincipal(output)) {\n dispatch(\n selectCurrency({\n field: SWAP_FIELD.OUTPUT,\n currencyId: output,\n }),\n );\n }\n }, [input, output, dispatch]);\n}\n\nexport function usePoolCanisterIdManager(\n key?: string | undefined,\n): [string | undefined, (params: PoolCanisterRecord) => void] {\n const dispatch = useAppDispatch();\n\n const poolIds = useAppSelector((state) => state.swap.poolCanisterIds);\n const poolId = !key ? undefined : poolIds[key];\n\n const updatePoolCanisterId = useCallback(\n ({ key, id }: PoolCanisterRecord) => {\n dispatch(updatePoolCanisterIds({ key, id }));\n },\n [dispatch],\n );\n\n return useMemo(() => [poolId, updatePoolCanisterId], [poolId, updatePoolCanisterId]);\n}\n\nexport function useSwapOutAmount() {\n return useAppSelector((state) => state.swap.swapOutAmount);\n}\n\nexport function getSwapOutAmount(key: string) {\n return store.getState().swap.swapOutAmount[key];\n}\n\nexport function useUpdateSwapOutAmount() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (key: string, amount: bigint | undefined) => {\n dispatch(updateSwapOutAmount({ key, value: amount }));\n },\n [dispatch],\n );\n}\n\nexport function getDecreaseLiquidityAmount(key: string) {\n return store.getState().swap.decreaseLiquidityAmount[key];\n}\n\nexport function useUpdateDecreaseLiquidityAmount() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (key: string, amount0: bigint | undefined, amount1: bigint | undefined) => {\n dispatch(updateDecreaseLiquidityAmount({ key, amount0, amount1 }));\n },\n [dispatch],\n );\n}\n\nexport function useUpdateAllSwapPools() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (allSwapPools: SwapPoolData[]) => {\n dispatch(updateAllSwapPools(allSwapPools));\n },\n [dispatch],\n );\n}\n\nexport function useAllSwapPools() {\n return useAppSelector((state) => state.swap.allSwapPools);\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { Null } from \"@icpswap/types\";\n\nexport type PoolCanisterRecord = { key: string; id: string };\n\nexport const updateSwapOutAmount = createAction<{ key: string; value: bigint | undefined }>(\n \"limitOrder/updateSwapOutAmount\",\n);\n\nexport const updatePlaceOrderPositionId = createAction(\"limitOrder/updatePlaceOrderPositionId\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { FIELD } from \"constants/swap\";\n\nexport const updateFiled = createAction<{ field: FIELD; typedValue: string }>(\"swapLiquidity/updateFiled\");\n\nexport const updateLeftRange = createAction(\"swapLiquidity/updateLeftRange\");\n\nexport const updateRightRange = createAction(\"swapLiquidity/updateRightRange\");\n\nexport const updateStartPrice = createAction(\"swapLiquidity/updateStartPrice\");\n\nexport const updateFullRange = createAction(\"swapLiquidity/updateFullRange\");\n\nexport const resetMintState = createAction(\"swapLiquidity/resetMintState\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { TOKEN_STANDARD } from \"constants/tokens\";\n\nexport const updateTokenStandards =\n createAction<{ canisterId: string; standard: TOKEN_STANDARD }[]>(\"token/updateTokenStandard\");\n\nexport const updateAllTokenIds = createAction(\"token/updateAllTokenIds\");\n","import { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport store from \"store/index\";\nimport { TOKEN_STANDARD } from \"constants/tokens\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { registerTokens, tokenAdapter } from \"@icpswap/token-adapter\";\nimport { Null } from \"@icpswap/types\";\n\nimport { updateTokenStandards } from \"./actions\";\n\ninterface useUpdateTokenStandardProps {\n canisterId: string;\n standard: TOKEN_STANDARD;\n}\n\nexport function useUpdateTokenStandard() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (standards: useUpdateTokenStandardProps[]) => {\n const __standards = standards.map(({ standard, canisterId }) => {\n // Register icp as icrc2 token\n if (canisterId === ICP.address) {\n return { canisterId, standard: TOKEN_STANDARD.ICRC2 };\n // Register usdc as icrc2 token\n }\n\n if (\n canisterId === \"xevnm-gaaaa-aaaar-qafnq-cai\" ||\n canisterId === \"yfumr-cyaaa-aaaar-qaela-cai\" ||\n canisterId === \"vgqnj-miaaa-aaaal-qaapa-cai\"\n ) {\n return { canisterId, standard: TOKEN_STANDARD.ICRC2 };\n }\n\n if (canisterId === \"qfr6e-biaaa-aaaak-qafuq-cai\") {\n return { canisterId, standard: TOKEN_STANDARD.ICRC1 };\n }\n\n return { canisterId, standard };\n });\n\n dispatch(updateTokenStandards(__standards));\n registerTokens(__standards);\n },\n [dispatch],\n );\n}\n\nexport function useTokenStandard(canisterId: string | Null) {\n const standards = useAppSelector((state) => state.tokenCache.standards);\n\n return useMemo(() => {\n if (canisterId) {\n return standards[canisterId];\n }\n }, [canisterId, standards]);\n}\n\nexport function getTokenStandard(canisterId: string | undefined) {\n const {\n tokenCache: { standards },\n } = store.getState();\n\n if (canisterId) {\n return standards[canisterId];\n }\n}\n\nexport function useTokenStandards() {\n return useAppSelector((state) => state.tokenCache.standards);\n}\n\nexport function useAllTokenIds() {\n return useAppSelector((state) => state.tokenCache.allTokenIds);\n}\n\nexport function useTokenStandardIsRegistered(canisterId: string) {\n const standards = tokenAdapter.getAll();\n const canisterIds = [...standards.keys()];\n\n return useMemo(() => {\n if (canisterId === \"ICP\" || canisterId === \"aaaaa-aa\") return true;\n return canisterIds.includes(canisterId);\n }, [canisterId, canisterIds]);\n}\n","/* eslint-disable guard-for-in */\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport type { TransactionResponse } from \"@ethersproject/providers\";\nimport { ChainId } from \"@icpswap/constants\";\nimport { SUPPORTED_CHAINS } from \"constants/web3\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { ERC20Token } from \"@icpswap/swap-sdk\";\n\nimport { Null } from \"@icpswap/types\";\nimport { addTransaction, cancelTransaction, removeTransaction } from \"./reducer\";\nimport { TransactionDetails, TransactionInfo, TransactionType } from \"./types\";\n\n// helper that can take a ethers library transaction response and add it to the list of transactions\nexport function useTransactionAdder(): (\n response: TransactionResponse,\n info: TransactionInfo,\n deadline?: number,\n) => void {\n const { chainId, account } = useWeb3React();\n const dispatch = useAppDispatch();\n\n return useCallback(\n (response: TransactionResponse, info: TransactionInfo, deadline?: number) => {\n if (!account) return;\n if (!chainId) return;\n\n const { hash, nonce } = response;\n if (!hash) {\n throw Error(\"No transaction hash found.\");\n }\n dispatch(addTransaction({ hash, from: account, info, chainId, nonce, deadline }));\n },\n [account, chainId, dispatch],\n );\n}\n\nexport function useTransactionRemover() {\n const { chainId, account } = useWeb3React();\n const dispatch = useAppDispatch();\n\n return useCallback(\n (hash: string) => {\n if (!account) return;\n if (!chainId) return;\n\n dispatch(removeTransaction({ hash, chainId }));\n },\n [account, chainId, dispatch],\n );\n}\n\nexport function useTransactionCanceller() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (hash: string, chainId: number, cancelHash: string) => {\n dispatch(cancelTransaction({ hash, chainId, cancelHash }));\n },\n [dispatch],\n );\n}\n\nexport function useMultichainTransactions(): [TransactionDetails, ChainId][] {\n const state = useAppSelector((state) => state.transactions);\n return SUPPORTED_CHAINS.flatMap((chainId) =>\n state[chainId] ? Object.values(state[chainId]).map((tx): [TransactionDetails, ChainId] => [tx, chainId]) : [],\n );\n}\n\n// returns all the transactions for the current chain\nfunction useAllTransactions(): { [txHash: string]: TransactionDetails } {\n const { chainId } = useWeb3React();\n\n const state = useAppSelector((state) => state.transactions);\n\n return chainId ? state[chainId] ?? {} : {};\n}\n\nexport function useTransaction(transactionHash?: string): TransactionDetails | undefined {\n const allTransactions = useAllTransactions();\n\n if (!transactionHash) {\n return undefined;\n }\n\n return allTransactions[transactionHash];\n}\n\nexport function isPendingTx(tx: TransactionDetails): boolean {\n return !tx.receipt && !tx.cancelled;\n}\n\nexport function useIsTransactionPending(transactionHash?: string): boolean {\n const transactions = useAllTransactions();\n\n if (!transactionHash || !transactions[transactionHash]) return false;\n\n return isPendingTx(transactions[transactionHash]);\n}\n\nexport function useIsTransactionConfirmed(transactionHash?: string): boolean {\n const transactions = useAllTransactions();\n\n if (!transactionHash || !transactions[transactionHash]) return false;\n\n return Boolean(transactions[transactionHash].receipt);\n}\n\n/**\n * Returns whether a transaction happened in the last day (86400 seconds * 1000 milliseconds / second)\n * @param tx to check for recency\n */\nfunction isTransactionRecent(tx: TransactionDetails): boolean {\n return new Date().getTime() - tx.addedTime < 86_400_000;\n}\n\nfunction usePendingApprovalAmount(token: ERC20Token | Null, spender: string | Null): BigNumber | undefined {\n const allTransactions = useAllTransactions();\n return useMemo(() => {\n if (typeof token?.address !== \"string\" || typeof spender !== \"string\") {\n return undefined;\n }\n for (const txHash in allTransactions) {\n const tx = allTransactions[txHash];\n if (!tx || tx.receipt || tx.info.type !== TransactionType.APPROVAL) continue;\n if (tx.info.spender === spender && tx.info.tokenAddress === token.address && isTransactionRecent(tx)) {\n return BigNumber.from(tx.info.amount);\n }\n }\n return undefined;\n }, [allTransactions, spender, token?.address]);\n}\n\n// returns whether a token has a pending approval transaction\nexport function useHasPendingApproval(token?: ERC20Token | Null, spender?: string | Null): boolean {\n return usePendingApprovalAmount(token, spender)?.gt(0) ?? false;\n}\n\nexport function useHasPendingRevocation(token?: ERC20Token, spender?: string): boolean {\n return usePendingApprovalAmount(token, spender)?.eq(0) ?? false;\n}\n\nexport function usePendingTransactions(): TransactionDetails[] {\n const allTransactions = useAllTransactions();\n const { account } = useWeb3React();\n\n return useMemo(\n () => Object.values(allTransactions).filter((tx) => tx.from === account && isPendingTx(tx)),\n [account, allTransactions],\n );\n}\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from \"@reduxjs/toolkit\";\nimport { ChainId } from \"@icpswap/constants\";\n\nimport { SerializableTransactionReceipt, TransactionDetails, TransactionInfo } from \"./types\";\n\nexport interface TransactionsState {\n [chainId: number]: {\n [txHash: string]: TransactionDetails;\n };\n}\n\ninterface AddTransactionPayload {\n chainId: ChainId;\n from: string;\n hash: string;\n info: TransactionInfo;\n nonce?: number;\n deadline?: number;\n receipt?: SerializableTransactionReceipt;\n}\n\nexport const transactionsState: TransactionsState = {};\n\nconst transactionSlice = createSlice({\n name: \"transactions\",\n initialState: transactionsState,\n reducers: {\n addTransaction(\n transactions,\n { payload: { chainId, from, hash, info, nonce, deadline, receipt } }: { payload: AddTransactionPayload },\n ) {\n if (transactions[chainId]?.[hash]) {\n throw Error(\"Attempted to add existing transaction.\");\n }\n const txs = transactions[chainId] ?? {};\n txs[hash] = { hash, info, from, addedTime: Date.now(), nonce, deadline, receipt };\n transactions[chainId] = txs;\n },\n clearAllTransactions(transactions, { payload: { chainId } }) {\n if (!transactions[chainId]) return;\n transactions[chainId] = {};\n },\n removeTransaction(transactions, { payload: { chainId, hash } }) {\n if (transactions[chainId][hash]) {\n delete transactions[chainId][hash];\n }\n },\n checkedTransaction(transactions, { payload: { chainId, hash, blockNumber } }) {\n const tx = transactions[chainId]?.[hash];\n if (!tx) {\n return;\n }\n if (!tx.lastCheckedBlockNumber) {\n tx.lastCheckedBlockNumber = blockNumber;\n } else {\n tx.lastCheckedBlockNumber = Math.max(blockNumber, tx.lastCheckedBlockNumber);\n }\n },\n finalizeTransaction(transactions, { payload: { hash, chainId, receipt } }) {\n const tx = transactions[chainId]?.[hash];\n if (!tx) {\n return;\n }\n tx.receipt = receipt;\n tx.confirmedTime = Date.now();\n },\n cancelTransaction(transactions, { payload: { hash, chainId, cancelHash } }) {\n const tx = transactions[chainId]?.[hash];\n\n if (tx) {\n delete transactions[chainId]?.[hash];\n transactions[chainId][cancelHash] = {\n ...tx,\n hash: cancelHash,\n cancelled: true,\n };\n }\n },\n },\n});\n\nexport const {\n addTransaction,\n clearAllTransactions,\n checkedTransaction,\n finalizeTransaction,\n removeTransaction,\n cancelTransaction,\n} = transactionSlice.actions;\n\nexport default transactionSlice.reducer;\n","export interface SerializableTransactionReceipt {\n to: string;\n from: string;\n contractAddress: string;\n transactionIndex: number;\n blockHash: string;\n transactionHash: string;\n blockNumber: number;\n status?: number;\n}\n\n/**\n * Be careful adding to this enum, always assign a unique value (typescript will not prevent duplicate values).\n * These values is persisted in state and if you change the value it will cause errors\n */\nexport enum TransactionType {\n APPROVAL = 0,\n SWAP,\n DEPOSIT_LIQUIDITY_STAKING,\n WITHDRAW_LIQUIDITY_STAKING,\n CLAIM,\n VOTE,\n DELEGATE,\n WRAP,\n CREATE_V3_POOL,\n ADD_LIQUIDITY_V3_POOL,\n ADD_LIQUIDITY_V2_POOL,\n MIGRATE_LIQUIDITY_V3,\n COLLECT_FEES,\n REMOVE_LIQUIDITY_V3,\n SUBMIT_PROPOSAL,\n QUEUE,\n EXECUTE,\n BUY,\n SEND,\n RECEIVE,\n MINT,\n BURN,\n BORROW,\n REPAY,\n DEPLOY,\n CANCEL,\n LIMIT,\n}\n\ninterface BaseTransactionInfo {\n type: TransactionType;\n}\n\nexport interface QueueTransactionInfo extends BaseTransactionInfo {\n type: TransactionType.QUEUE;\n governorAddress: string;\n proposalId: number;\n}\n\nexport interface ExecuteTransactionInfo extends BaseTransactionInfo {\n type: TransactionType.EXECUTE;\n governorAddress: string;\n proposalId: number;\n}\n\nexport interface DelegateTransactionInfo extends BaseTransactionInfo {\n type: TransactionType.DELEGATE;\n delegatee: string;\n}\n\nexport interface ApproveTransactionInfo extends BaseTransactionInfo {\n type: TransactionType.APPROVAL;\n tokenAddress: string;\n spender: string;\n amount: string;\n}\n\ninterface DepositLiquidityStakingTransactionInfo {\n type: TransactionType.DEPOSIT_LIQUIDITY_STAKING;\n token0Address: string;\n token1Address: string;\n}\n\ninterface WithdrawLiquidityStakingTransactionInfo {\n type: TransactionType.WITHDRAW_LIQUIDITY_STAKING;\n token0Address: string;\n token1Address: string;\n}\n\nexport interface WrapTransactionInfo {\n type: TransactionType.WRAP;\n unwrapped: boolean;\n currencyAmountRaw: string;\n chainId?: number;\n}\n\nexport interface ClaimTransactionInfo {\n type: TransactionType.CLAIM;\n recipient: string;\n uniAmountRaw?: string;\n}\n\nexport interface CreateV3PoolTransactionInfo {\n type: TransactionType.CREATE_V3_POOL;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n}\n\nexport interface AddLiquidityV3PoolTransactionInfo {\n type: TransactionType.ADD_LIQUIDITY_V3_POOL;\n createPool: boolean;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n feeAmount: number;\n expectedAmountBaseRaw: string;\n expectedAmountQuoteRaw: string;\n}\n\nexport interface AddLiquidityV2PoolTransactionInfo {\n type: TransactionType.ADD_LIQUIDITY_V2_POOL;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n expectedAmountBaseRaw: string;\n expectedAmountQuoteRaw: string;\n}\n\nexport interface MigrateV2LiquidityToV3TransactionInfo {\n type: TransactionType.MIGRATE_LIQUIDITY_V3;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n isFork: boolean;\n}\n\nexport interface CollectFeesTransactionInfo {\n type: TransactionType.COLLECT_FEES;\n currencyId0: string;\n currencyId1: string;\n expectedCurrencyOwed0: string;\n expectedCurrencyOwed1: string;\n}\n\nexport interface RemoveLiquidityV3TransactionInfo {\n type: TransactionType.REMOVE_LIQUIDITY_V3;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n expectedAmountBaseRaw: string;\n expectedAmountQuoteRaw: string;\n}\n\ninterface SubmitProposalTransactionInfo {\n type: TransactionType.SUBMIT_PROPOSAL;\n}\n\nexport interface SendTransactionInfo {\n type: TransactionType.SEND;\n currencyId: string;\n amount: string;\n recipient: string;\n}\n\nexport type TransactionInfo =\n | ApproveTransactionInfo\n | ClaimTransactionInfo\n | QueueTransactionInfo\n | ExecuteTransactionInfo\n | DelegateTransactionInfo\n | DepositLiquidityStakingTransactionInfo\n | WithdrawLiquidityStakingTransactionInfo\n | WrapTransactionInfo\n | CreateV3PoolTransactionInfo\n | AddLiquidityV3PoolTransactionInfo\n | AddLiquidityV2PoolTransactionInfo\n | MigrateV2LiquidityToV3TransactionInfo\n | CollectFeesTransactionInfo\n | RemoveLiquidityV3TransactionInfo\n | SubmitProposalTransactionInfo\n | SendTransactionInfo;\n\nexport interface TransactionDetails {\n hash: string;\n receipt?: SerializableTransactionReceipt;\n lastCheckedBlockNumber?: number;\n addedTime: number;\n confirmedTime?: number;\n deadline?: number;\n from: string;\n info: TransactionInfo;\n nonce?: number;\n cancelled?: boolean;\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { BTCAddressType, TxState } from \"types/ckBTC\";\nimport { WalletSortType, SortBalanceEnum } from \"types/index\";\n\nexport const updateTaggedTokens = createAction(\"wallet/updateTaggedTokens\");\n\nexport const deleteTaggedTokens = createAction(\"wallet/deleteTaggedTokens\");\n\nexport const updateWalletSortType = createAction(\"wallet/updateWalletSortType\");\n\nexport const updateSortBalance = createAction(\"wallet/updateSortBalance\");\n\nexport const updateCK_BTCAddresses = createAction<{\n principal: string;\n address: string;\n type: BTCAddressType;\n}>(\"wallet/updateCK_BTCAddresses\");\n\nexport const updateRetrieveState = createAction<{\n principal: string;\n block_index: number;\n state: TxState;\n txid: string;\n value: string;\n}>(\"wallet/updateRetrieveState\");\n","import { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { RetrieveBtcStatus, TxState } from \"types/ckBTC\";\nimport { Principal } from \"@dfinity/principal\";\nimport { SortBalanceEnum, WalletSortType } from \"types/index\";\nimport {\n updateTaggedTokens,\n deleteTaggedTokens,\n updateCK_BTCAddresses,\n updateRetrieveState,\n updateWalletSortType,\n updateSortBalance,\n} from \"./actions\";\n\nexport function toHexString(byteArray: number[]) {\n return Array.from(byteArray, (byte) => {\n return `0${(byte & 0xff).toString(16)}`.slice(-2);\n }).join(\"\");\n}\n\nexport function useTaggedTokens() {\n return useAppSelector((state) => state.wallet.taggedTokens);\n}\n\nexport function useUpdateTaggedTokenCallback() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (tokens: string[]) => {\n dispatch(updateTaggedTokens(tokens));\n },\n [dispatch],\n );\n}\n\nexport function useDeleteTaggedTokenCallback() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (tokens: string[]) => {\n dispatch(deleteTaggedTokens(tokens));\n },\n [dispatch],\n );\n}\n\nexport function useTaggedTokenManager() {\n const taggedTokens = useTaggedTokens();\n\n const updateTaggedTokens = useUpdateTaggedTokenCallback();\n const deleteTaggedTokens = useDeleteTaggedTokenCallback();\n\n return useMemo(\n () => ({ taggedTokens, updateTaggedTokens, deleteTaggedTokens }),\n [taggedTokens, updateTaggedTokens, deleteTaggedTokens],\n );\n}\n\nexport function useUserBTCDepositAddress(principal: string | undefined) {\n return useAppSelector((state) => state.wallet.ckBTCAddresses)[`${principal}_deposit`];\n}\n\nexport function useUserBTCWithdrawAddress(principal: string | undefined) {\n const address = useAppSelector((state) => state.wallet.ckBTCAddresses)[`${principal}_withdraw`];\n if (!address) return undefined;\n const { owner, subaccount } = JSON.parse(address) as { owner: string; subaccount: number[] | undefined };\n\n return {\n owner,\n subaccount: subaccount && subaccount.length > 0 ? [Uint8Array.from(subaccount)] : [],\n };\n}\n\nexport function useUpdateUserBTCDepositAddress() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (principal: string, address: string) => {\n dispatch(updateCK_BTCAddresses({ principal, address, type: \"deposit\" }));\n },\n [dispatch],\n );\n}\n\nexport function useUpdateUserBTCWithdrawAddress() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (principal: string, owner: Principal, subaccount: Uint8Array[] | []) => {\n const address = JSON.stringify({ owner: owner.toString(), subaccount: [...(subaccount[0] ?? [])] });\n dispatch(updateCK_BTCAddresses({ principal, address, type: \"withdraw\" }));\n },\n [dispatch],\n );\n}\n\nexport function useUpdateUserTx() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (principal: string, block_index: bigint, status: undefined | RetrieveBtcStatus, value: string | undefined) => {\n const txid = status ? Object.values(status)[0]?.txid : undefined;\n const txIdString = txid ? toHexString([...txid].reverse()) : \"\";\n\n dispatch(\n updateRetrieveState({\n principal,\n block_index: Number(block_index),\n txid: txIdString,\n state: (status ? Object.keys(status)[0] : \"\") as TxState,\n value: value ?? \"\",\n }),\n );\n },\n [dispatch],\n );\n}\n\nexport function useUserTxs(principal: string | undefined) {\n const states = useAppSelector((state) => state.wallet.retrieveState);\n\n return useMemo(() => {\n if (principal && states) {\n return states[principal];\n }\n\n return undefined;\n }, [principal, states]);\n}\n\nexport function useWalletSortType() {\n return useAppSelector((state) => state.wallet.sort);\n}\n\nexport function useWalletSortManager() {\n const sortType = useWalletSortType();\n const dispatch = useAppDispatch();\n\n const update = useCallback(\n (val: WalletSortType) => {\n dispatch(updateWalletSortType(val));\n },\n [dispatch],\n );\n\n return useMemo(() => ({ sort: sortType, updateWalletSortType: update }), [update, sortType]);\n}\n\nexport function useSortBalanceValue() {\n return useAppSelector((state) => state.wallet.sortBalance);\n}\n\nexport function useSortBalanceManager() {\n const sortBalance = useSortBalanceValue();\n const dispatch = useAppDispatch();\n\n const update = useCallback(\n (val: SortBalanceEnum) => {\n dispatch(updateSortBalance(val));\n },\n [dispatch],\n );\n\n return useMemo(() => ({ sortBalance, updateSortBalance: update }), [update, sortBalance]);\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { TX } from \"types/web3\";\nimport { StoredWithdrawTxValue } from \"types/ckETH\";\n\nexport const updateTX = createAction<{ principal: string; tx: TX }>(\"web3/updateTX\");\n\nexport const updateErc20TX = createAction<{ principal: string; ledger_id: string; tx: TX }>(\"web3/updateErc20TX\");\n\nexport const updateWithdrawTX = createAction<{ principal: string; tx: StoredWithdrawTxValue }>(\"web3/updateWithdrawTX\");\n","import type { Ed25519KeyIdentity, Secp256k1KeyIdentity } from \"@dfinity/identity\";\nimport { ActorIdentity } from \"@icpswap/types\";\n\nexport enum ResultStatus {\n ERROR = \"err\",\n OK = \"ok\",\n}\n\nexport type StatusResult = {\n readonly status: ResultStatus;\n readonly data: T | string;\n};\n\nexport type CallResult = {\n readonly result: ApiResult;\n readonly loading: boolean;\n};\n\nexport type ApiResult = undefined | T;\n\nexport type PaginationResult = {\n totalElements: number;\n offset: number;\n limit: number;\n content: T[];\n};\n\nexport type DynamicObject = {\n [key: string]: any;\n};\n\nexport type ICPIdentity = Ed25519KeyIdentity | Secp256k1KeyIdentity;\n\nexport type Identity = ActorIdentity;\n\nexport type Override = Omit & S;\n\nexport type WalletSortType = \"Default\" | \"High\" | \"Low\";\n\nexport enum SortBalanceEnum {\n ZERO = \"ZERO\",\n ONE = \"ONE\",\n TEN = \"TEN\",\n ALL = \"ALL\",\n}\n","import { Override, StakingPoolControllerPoolInfo, StakingPoolUserInfo } from \"@icpswap/types\";\n\nexport type UnusedBalance = Override<\n StakingPoolControllerPoolInfo,\n { poolId: string; balance: bigint; rewardTokenId: string }\n>;\n\nexport enum STATE {\n LIVE = \"LIVE\",\n UPCOMING = \"UNSTART\",\n FINISHED = \"FINISHED\",\n}\n\nexport enum FilterState {\n \"ALL\" = \"ALL\",\n \"NOT_STARTED\" = \"NOT_STARTED\",\n \"LIVE\" = \"LIVE\",\n \"FINISHED\" = \"FINISHED\",\n \"CLOSED\" = \"CLOSED\",\n \"YOUR\" = \"YOUR\",\n}\n\nexport type UserPendingRewards = Override<\n StakingPoolUserInfo,\n { poolId: string; rewardAmount: bigint; stakingAmount: bigint; rewardTokenId: string; stakeTokenId: string }\n>;\n","import { FarmInfoWithId, Override, UserPositionInfo, UserPositionInfoWithId } from \"@icpswap/types\";\n\nexport type PositionDetail = {\n pool: string;\n token0: string;\n token1: string;\n fee: string;\n tickUpper: bigint;\n tokensOwed0: bigint;\n tokensOwed1: bigint;\n feeGrowthInside1LastX128: bigint;\n liquidity: bigint;\n feeGrowthInside0LastX128: bigint;\n tickLower: bigint;\n positionId: string;\n};\n\nexport type UserPosition = Override<\n UserPositionInfo,\n { index: number; id: string; token0: string; token1: string; fee: string }\n>;\n\nexport type UserPositionForFarm = Override<\n UserPositionInfo,\n { index: number; id: string; token0: string; token1: string; fee: string; farm: FarmInfoWithId }\n>;\n\nexport enum PositionFilterState {\n Default = \"Default\",\n All = \"All\",\n InRanges = \"In ranges\",\n OutOfRanges = \"Out of ranges\",\n Closed = \"Closed\",\n}\n\nexport enum PositionSort {\n Default = \"Default\",\n PositionValue = \"Position value\",\n FeesValue = \"Uncollected fees\",\n}\n\nexport type PositionKey = string;\n\nexport type PositionDetails = Override;\n\nexport enum PoolState {\n LOADING = \"LOADING\",\n NOT_EXISTS = \"NOT_EXISTS\",\n EXISTS = \"EXISTS\",\n INVALID = \"INVALID\",\n NOT_CHECK = \"NOT_CHECK\",\n}\n","import { getAllCanisters } from \"store/allCanisters\";\nimport { ALL_CANISTER_IDS } from \"./canister\";\nimport { LEDGER_CANISTER_ID } from \"./icp\";\nimport { ckBTC_MINTER_ID } from \"./ckBTC\";\n\nexport const DelegationIds = [...ALL_CANISTER_IDS, LEDGER_CANISTER_ID, ckBTC_MINTER_ID];\n\nexport const MAX_DELEGATION_TARGETS = 999;\n\nexport async function getDelegationIds() {\n const canisterIds = [...ALL_CANISTER_IDS, LEDGER_CANISTER_ID, ckBTC_MINTER_ID];\n const stateCanisterIds = await getAllCanisters();\n const delegationIds = [...new Set(canisterIds.concat(stateCanisterIds ?? []))];\n return delegationIds.length > MAX_DELEGATION_TARGETS ? delegationIds.slice(0, MAX_DELEGATION_TARGETS) : delegationIds;\n}\n","import { AuthClient } from \"@dfinity/auth-client\";\nimport { Actor, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport type { Identity } from \"@dfinity/agent\";\nimport { ConnectorAbstract, CreateActorArgs, Connector, type WalletConnectorConfig } from \"./connectors\";\n\nconst iiExpireTime = 7 * 24 * 3600; // seconds\n\nexport class InternetIdentityConnector implements ConnectorAbstract {\n private config: {\n whitelist: Array;\n host: string;\n providerUrl: string;\n dev: boolean;\n };\n\n private identity?: Identity;\n\n private principal?: string;\n\n private client?: AuthClient;\n\n public type = Connector.IC;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"https://identity.ic0.app\",\n dev: false,\n };\n }\n\n async init() {\n this.client = await AuthClient.create({\n idleOptions: {\n disableDefaultIdleCallback: true,\n },\n });\n const isConnected = await this.isConnected();\n\n if (isConnected) {\n this.identity = this.client.getIdentity();\n this.principal = this.identity?.getPrincipal().toString();\n }\n\n return true;\n }\n\n async isConnected(): Promise {\n return !!(await this.client?.isAuthenticated());\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n const agent = await HttpAgent.create({\n ...this.config,\n identity: this.identity,\n });\n\n if (this.config.dev) {\n // Fetch root key for certificate validation during development\n agent.fetchRootKey().catch((err) => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent,\n canisterId,\n });\n }\n\n async connect() {\n await new Promise((resolve, reject) => {\n this.client?.login({\n identityProvider: this.config.providerUrl,\n onSuccess: () => resolve(true),\n onError: reject,\n maxTimeToLive: BigInt(iiExpireTime * 1000 * 1000 * 1000),\n });\n });\n window.localStorage.setItem(\"ii-expire-time\", (new Date().getTime() + iiExpireTime * 1000).toString());\n const identity = this.client?.getIdentity();\n const principal = identity?.getPrincipal().toString();\n this.identity = identity;\n this.principal = principal;\n return true;\n }\n\n async disconnect() {\n await this.client?.logout();\n }\n\n async expired() {\n const iiExpireTime = window.localStorage.getItem(\"ii-expire-time\");\n if (!iiExpireTime) return true;\n return new Date().getTime() >= Number(iiExpireTime);\n }\n}\n\nexport const InternetIdentity = {\n connector: InternetIdentityConnector,\n id: \"ii\",\n type: Connector.IC,\n};\n","// @ts-ignore\nimport { StoicIdentity } from \"ic-stoic-identity\";\nimport { Actor, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport { type CreateActorArgs, ConnectorAbstract, Connector, type WalletConnectorConfig } from \"./connectors\";\n\nexport class StoicConnector implements ConnectorAbstract {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private identity?: any;\n\n private principal?: string;\n\n public type = Connector.STOIC;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"https://www.stoicwallet.com\",\n dev: false,\n };\n }\n\n async init() {\n const identity = await StoicIdentity.load(this.config.providerUrl);\n\n if (identity) {\n this.identity = identity;\n this.principal = identity.getPrincipal().toText();\n }\n\n return true;\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n const agent = await HttpAgent.create({\n ...this.config,\n identity: this.identity,\n });\n\n // Fetch root key for certificate validation during development\n if (this.config.dev) {\n agent.fetchRootKey().catch((err) => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent,\n canisterId,\n });\n }\n\n async isConnected() {\n const identity = await StoicIdentity.load();\n return !!identity;\n }\n\n async connect() {\n this.identity = await StoicIdentity.connect();\n this.principal = this.identity.getPrincipal().toText();\n return true;\n }\n\n async disconnect() {\n await StoicIdentity.disconnect();\n }\n\n async expired() {\n return false;\n }\n}\n\nexport const StoicWallet = {\n connector: StoicConnector,\n id: \"stoic\",\n type: Connector.STOIC,\n};\n","import { ActorSubclass } from \"@dfinity/agent\";\nimport { getStoreWalletUnlocked } from \"store/auth/hooks\";\nimport { type CreateActorArgs, ConnectorAbstract, Connector, type WalletConnectorConfig } from \"./connectors\";\n\nconst MAX_PLUG_WHITELIST_NUMBER = 200;\n\nexport class PlugConnector implements ConnectorAbstract {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private principal?: string;\n\n public type = Connector.PLUG;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"\",\n dev: false,\n };\n }\n\n async init() {\n return true;\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n return await window.ic.plug.createActor({\n canisterId,\n interfaceFactory,\n });\n }\n\n async isConnected() {\n const isUnLocked = getStoreWalletUnlocked();\n\n if (typeof isUnLocked === \"boolean\" && !isUnLocked) {\n return false;\n }\n\n if (window.ic && window.ic.plug) {\n return await window.ic.plug.isConnected();\n }\n\n return false;\n }\n\n async connect() {\n // Fix tracing message if plug is uninstalled but still connect to\n if (!window.ic?.plug) {\n return false;\n }\n\n if (await this.isConnected()) {\n this.principal = window.ic.plug.principalId;\n } else {\n await window.ic.plug.requestConnect({\n whitelist:\n this.config.whitelist.length > MAX_PLUG_WHITELIST_NUMBER\n ? this.config.whitelist.slice(0, MAX_PLUG_WHITELIST_NUMBER)\n : this.config.whitelist,\n });\n this.principal = window.ic.plug.principalId;\n }\n\n return true;\n }\n\n async disconnect() {\n try {\n await window.ic.plug.disconnect();\n } catch (error) {\n console.error(error);\n }\n }\n\n async expired() {\n return false;\n }\n}\n","import { AuthClient } from \"@honopu/auth-client\";\nimport { Actor, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport type { Identity } from \"@dfinity/agent\";\nimport { type CreateActorArgs, ConnectorAbstract, Connector, WalletConnectorConfig } from \"./connectors\";\n\nconst EXPIRE_TIME = 7 * 24 * 3600; // seconds\n\nexport class ICPSwapConnector implements ConnectorAbstract {\n private config: {\n whitelist: Array;\n host: string;\n providerUrl: string;\n dev: boolean;\n };\n\n private identity?: Identity;\n\n private principal?: string;\n\n private client?: AuthClient;\n\n public type = Connector.ICPSwap;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"http://localhost:8088\",\n dev: false,\n };\n }\n\n async init() {\n this.client = await AuthClient.create({\n idleOptions: {\n disableDefaultIdleCallback: true,\n },\n keyType: \"Ed25519\",\n });\n const isConnected = await this.isConnected();\n\n if (isConnected) {\n this.identity = this.client.getIdentity();\n this.principal = this.identity?.getPrincipal().toString();\n }\n\n return true;\n }\n\n async isConnected(): Promise {\n return !!(await this.client?.isAuthenticated());\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n const agent = await HttpAgent.create({\n host: this.config.host,\n identity: this.identity,\n });\n\n if (this.config.dev) {\n // Fetch root key for certificate validation during development\n agent.fetchRootKey().catch((err) => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent,\n canisterId,\n });\n }\n\n async connect() {\n await new Promise((resolve, reject) => {\n this.client?.login({\n onSuccess: () => resolve(true),\n onError: reject,\n maxTimeToLive: BigInt(EXPIRE_TIME * 1000 * 1000 * 1000),\n });\n });\n\n const identity = this.client?.getIdentity();\n const principal = identity?.getPrincipal().toString();\n this.identity = identity;\n this.principal = principal;\n\n window.localStorage.setItem(\"ICPSwap-wallet-expire-time\", (new Date().getTime() + EXPIRE_TIME * 1000).toString());\n\n return true;\n }\n\n async disconnect() {\n await this.client?.logout();\n }\n\n async expired() {\n const iiExpireTime = window.localStorage.getItem(\"ICPSwap-wallet-expire-time\");\n if (!iiExpireTime) return true;\n return new Date().getTime() >= Number(iiExpireTime);\n }\n}\n\nexport const ICPSwapWallet = {\n connector: ICPSwapConnector,\n id: \"ICPSwap\",\n type: Connector.ICPSwap,\n};\n","import { ActorSubclass } from \"@dfinity/agent\";\nimport { getStoreWalletUnlocked } from \"store/auth/hooks\";\nimport { type CreateActorArgs, ConnectorAbstract, Connector, WalletConnectorConfig } from \"./connectors\";\n\nexport class InfinityConnector implements ConnectorAbstract {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private principal?: string;\n\n public type = Connector.INFINITY;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"\",\n dev: false,\n };\n }\n\n async init() {\n return true;\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n return await window.ic.infinityWallet.createActor({ canisterId, interfaceFactory });\n }\n\n async isConnected() {\n const isUnLocked = getStoreWalletUnlocked();\n\n if (typeof isUnLocked === \"boolean\" && !isUnLocked) {\n return false;\n }\n\n if (window.ic.infinityWallet) {\n return await window.ic.infinityWallet.isConnected();\n }\n\n return false;\n }\n\n async connect() {\n if (await this.isConnected()) {\n this.principal = (await window.ic.infinityWallet.getPrincipal()).toString();\n } else {\n // disconnect first\n await window.ic.infinityWallet.disconnect();\n await window.ic.infinityWallet.requestConnect({ whitelist: this.config.whitelist });\n\n this.principal = (await window.ic.infinityWallet.getPrincipal()).toString();\n }\n\n return true;\n }\n\n async disconnect() {\n await window.ic.infinityWallet.disconnect();\n }\n\n async expired() {\n return false;\n }\n}\n\nexport const InfinitySwapWallet = {\n connector: InfinityConnector,\n id: \"infinity\",\n type: Connector.INFINITY,\n};\n","import { type ActorSubclass, Actor, HttpAgent } from \"@dfinity/agent\";\nimport { Connector } from \"@icpswap/actor\";\nimport { MsqClient, MsqIdentity } from \"@fort-major/msq-client\";\nimport type { ConnectorAbstract, CreateActorArgs, WalletConnectorConfig } from \"./connectors\";\n\nconst EXPIRE_TIME = 7 * 24 * 3600; // seconds\nconst EXPIRE_TIME_STORAGE_NAME = \"metamask-expire-time\";\n// const REQUEST_LINK_DOMAIN = \"https://app.icpswap.com\";\n\nexport class MetamaskConnector implements ConnectorAbstract {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private identity?: any;\n\n private principal?: string;\n\n private client?: MsqClient;\n\n public type = Connector.Metamask;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n dev: false,\n providerUrl: \"\",\n };\n }\n\n async init() {\n return true;\n }\n\n async isConnected() {\n return this.client ? await this.client?.isAuthorized() : false;\n }\n\n async connect() {\n if (this.client && (await this.isConnected())) {\n // const requestLinkResult: boolean = await this.client.requestLink(REQUEST_LINK_DOMAIN);\n // if (!requestLinkResult) return false;\n\n const identity: MsqIdentity | null = await this.client.requestLogin();\n\n if (identity === null) {\n // the user has rejected to log in\n return false;\n }\n\n window.localStorage.setItem(EXPIRE_TIME_STORAGE_NAME, (new Date().getTime() + EXPIRE_TIME * 1000).toString());\n this.identity = identity;\n this.principal = identity?.getPrincipal().toString();\n } else {\n const result = await MsqClient.create();\n\n if (!(\"Ok\" in result)) return false;\n\n const client = result.Ok;\n // const requestLinkResult: boolean = await client.requestLink(REQUEST_LINK_DOMAIN);\n // if (!requestLinkResult) return false;\n\n const identity: MsqIdentity | null = await client.requestLogin();\n\n if (identity === null) {\n // the user has rejected to log in\n return false;\n }\n\n window.localStorage.setItem(EXPIRE_TIME_STORAGE_NAME, (new Date().getTime() + EXPIRE_TIME * 1000).toString());\n this.identity = identity;\n this.principal = identity.getPrincipal().toString();\n this.client = client;\n\n return true;\n }\n\n return true;\n }\n\n async disconnect() {\n await this.client?.requestLogout();\n }\n\n async createActor({ canisterId, interfaceFactory }: CreateActorArgs): Promise> {\n const httpAgent = await HttpAgent.create({ identity: this.identity, host: this.config.host });\n\n return Actor.createActor(interfaceFactory, {\n agent: httpAgent,\n canisterId,\n });\n }\n\n async expired() {\n const expireTime = window.localStorage.getItem(EXPIRE_TIME_STORAGE_NAME);\n if (!expireTime) return true;\n return new Date().getTime() >= Number(expireTime);\n }\n}\n","import { Actor, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport { Principal } from \"@dfinity/principal\";\nimport { PostMessageTransport } from \"@slide-computer/signer-web\";\nimport { SignerAgent } from \"@slide-computer/signer-agent\";\nimport { Signer } from \"@slide-computer/signer\";\n\nimport { type CreateActorArgs, ConnectorAbstract, Connector, WalletConnectorConfig } from \"./connectors\";\n\nexport class OisyConnector implements ConnectorAbstract {\n private config: {\n whitelist: Array;\n host: string;\n providerUrl: string;\n dev: boolean;\n };\n\n private signer: Signer | null = null;\n\n private agent: HttpAgent | SignerAgent | null = null;\n\n private principal?: string;\n\n private signerAgent?: SignerAgent;\n\n public type = Connector.Oisy;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"https://oisy.com/sign\",\n dev: false,\n };\n }\n\n async init() {\n return true;\n }\n\n async isConnected(): Promise {\n return !!this.signerAgent && !!this.agent;\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n if (!this.signerAgent) {\n throw new Error(\"No signer agent available. Please connect first.\");\n }\n\n try {\n return Actor.createActor(interfaceFactory, {\n agent: this.signerAgent,\n canisterId,\n });\n } catch (error) {\n console.error(\"[Oisy] Actor creation error:\", error);\n throw error;\n }\n }\n\n async connect() {\n const agent = HttpAgent.createSync({ host: this.config.providerUrl });\n this.signerAgent = SignerAgent.createSync({\n signer: new Signer({\n transport: new PostMessageTransport({\n url: this.config.providerUrl,\n windowOpenerFeatures: \"width=525,height=705\",\n establishTimeout: 45000,\n disconnectTimeout: 45000,\n detectNonClickEstablishment: false,\n }),\n }),\n account: Principal.anonymous(),\n agent,\n });\n\n const accounts = await this.signerAgent.signer.accounts();\n\n if (!accounts || accounts.length === 0) {\n this.disconnect();\n throw new Error(\"No accounts returned from Oisy\");\n }\n\n const principal = accounts[0].owner;\n if (principal.isAnonymous()) {\n throw new Error(\"Failed to authenticate with Oisy - got anonymous principal\");\n }\n\n this.signerAgent.replaceAccount(principal);\n this.principal = (await this.signerAgent.getPrincipal())?.toString();\n this.agent = agent;\n\n return true;\n }\n\n async disconnect() {\n if (this.signer) {\n try {\n this.signer.closeChannel();\n } catch (error) {\n console.error(\"[Oisy] Error cleaning up signer:\", error);\n }\n this.signer = null;\n }\n\n this.agent = null;\n }\n\n async expired() {\n return false;\n }\n}\n\nexport const OisyWallet = {\n connector: OisyConnector,\n type: Connector.Oisy,\n};\n","import { IDL } from \"@dfinity/candid\";\nimport { ActorSubclass } from \"@dfinity/agent\";\nimport { Connector } from \"constants/wallet\";\nimport { host } from \"constants/server\";\nimport { updateAuth } from \"store/auth/hooks\";\nimport { getDelegationIds } from \"constants/connector\";\nimport { nonNullArgs } from \"@icpswap/utils\";\n\nimport type { ConnectorAbstract } from \"./connectors\";\n\nimport { InternetIdentityConnector } from \"./internet-identity\";\nimport { StoicConnector } from \"./stoic\";\nimport { PlugConnector } from \"./plug\";\nimport { ICPSwapConnector } from \"./icpswap\";\nimport { InfinityConnector } from \"./infinity\";\nimport { isMeWebview, MeConnector } from \"./me\";\nimport { MetamaskConnector } from \"./metamask\";\nimport { OisyConnector } from \"./Oisy\";\n\nexport class WalletConnector {\n public connector: ConnectorAbstract | null = null;\n\n public connectorType: Connector = Connector.ICPSwap;\n\n // initial connect instance\n public async init(connectorType: Connector) {\n if (!this.connector || this.connector.type !== connectorType) {\n const connector = await WalletConnector.create(connectorType);\n this.connectorType = connectorType;\n await connector.init();\n this.connector = connector;\n window.icConnector = this.connector;\n }\n\n // For only Me wallet app\n if (isMeWebview()) {\n if (nonNullArgs(this.connector?.getPrincipal)) {\n updateAuth({ walletType: this.connectorType, principal: this.connector.getPrincipal });\n }\n }\n }\n\n public static async create(connector: Connector) {\n const config = {\n host,\n whitelist: await getDelegationIds(),\n };\n\n switch (connector) {\n case Connector.IC:\n return new InternetIdentityConnector(config);\n case Connector.STOIC:\n return new StoicConnector(config);\n case Connector.PLUG:\n return new PlugConnector(config);\n case Connector.ICPSwap:\n return new ICPSwapConnector(config);\n case Connector.INFINITY:\n return new InfinityConnector(config);\n case Connector.ME:\n return new MeConnector(config);\n case Connector.Metamask:\n return new MetamaskConnector(config);\n case Connector.Oisy:\n return new OisyConnector(config);\n default:\n throw new Error(`Connector error ${Connector}: Not support this connect for now`);\n }\n }\n\n public async connect() {\n if (!this.connector) return false;\n\n const connected = await this.connector.connect();\n\n window.icConnector = this.connector;\n\n if (nonNullArgs(window.icConnector.getPrincipal)) {\n updateAuth({ walletType: this.connectorType, principal: window.icConnector.getPrincipal });\n }\n\n return connected;\n }\n\n public async isConnected() {\n return await this.connector?.isConnected();\n }\n\n public async createActor(\n canisterId: string,\n interfaceFactory: IDL.InterfaceFactory,\n ): Promise | undefined> {\n return await this.connector?.createActor({ canisterId, interfaceFactory });\n }\n}\n\nexport const connectManager = new WalletConnector();\n","import type { ActorSubclass } from \"@dfinity/agent\";\nimport { AstroXWebViewHandler } from \"@astrox/sdk-webview\";\nimport { IC as AuthClient } from \"@astrox/sdk-web\";\nimport { Connector } from \"@icpswap/actor\";\nimport type { ConnectorAbstract, CreateActorArgs, WalletConnectorConfig } from \"./connectors\";\n\nconst MeExpireTime = 7 * 24 * 3600; // seconds\nconst MAX_DELEGATION_TARGETS = 900;\n\nexport function isMeWebview() {\n return !!window.astrox_webview;\n}\n\nconst astrox = new AstroXWebViewHandler();\n\nexport class MeConnector implements ConnectorAbstract {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private identity?: any;\n\n private principal?: string;\n\n private client?: AuthClient;\n\n public type = Connector.ME;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n dev: false,\n providerUrl: \"\",\n };\n }\n\n async init() {\n if (isMeWebview()) {\n await astrox.init();\n\n if (!this.isConnected()) {\n const boolean = await astrox.connect({\n delegationTargets: this.config.whitelist,\n host: this.config.host,\n customDomain: \"https://app.icpswap.com\",\n });\n\n this.principal = astrox.identity?.getPrincipal().toString();\n this.identity = astrox.identity;\n\n return boolean;\n }\n this.principal = astrox.identity?.getPrincipal().toString();\n this.identity = astrox.identity;\n } else {\n this.client = this.client\n ? this.client\n : await AuthClient.create({\n useFrame: document.body.clientWidth > 768 ? true : undefined,\n signerProviderUrl: \"https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/signer\",\n identityProvider: `https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/login#authorize`,\n walletProviderUrl: `https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/transaction`,\n host: this.config.host,\n });\n\n const isConnected = await this.isConnected();\n\n if (isConnected) {\n this.identity = this.client.identity;\n this.principal = this.identity?.getPrincipal().toString();\n }\n }\n\n return true;\n }\n\n async isConnected() {\n if (isMeWebview()) {\n return await astrox.isConnected();\n }\n return this.client ? await this.client?.isAuthenticated() : false;\n }\n\n async connect() {\n if (await this.isConnected()) {\n this.principal = this.identity?.getPrincipal().toString();\n } else {\n if (isMeWebview()) {\n const boolean = await astrox.connect({\n // Max delegation targets is 1000 in Me Wallet\n delegationTargets: this.config.whitelist,\n host: this.config.host,\n customDomain: \"https://app.icpswap.com\",\n });\n\n const { identity } = astrox;\n\n this.principal = identity?.getPrincipal().toString();\n\n return boolean;\n }\n const delegationTargets = this.config.whitelist;\n\n const client = await this.client?.connect({\n useFrame: !(window.innerWidth < 768),\n signerProviderUrl: \"https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/signer\",\n identityProvider: `https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/login#authorize`,\n walletProviderUrl: `https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/transaction`,\n delegationTargets:\n delegationTargets.length > MAX_DELEGATION_TARGETS\n ? delegationTargets.slice(0, MAX_DELEGATION_TARGETS)\n : delegationTargets,\n customDomain: \"https://app.icpswap.com\",\n maxTimeToLive: BigInt(MeExpireTime * 1000 * 1000 * 1000),\n });\n\n if (client) {\n window.localStorage.setItem(\"me-expire-time\", (new Date().getTime() + MeExpireTime * 1000).toString());\n this.identity = client.identity;\n this.principal = this.identity?.getPrincipal().toString();\n }\n\n return !!client;\n }\n\n return true;\n }\n\n async disconnect() {\n if (isMeWebview()) {\n await astrox.disconnect();\n } else {\n await this.client?.disconnect();\n }\n }\n\n async createActor({ canisterId, interfaceFactory }: CreateActorArgs): Promise> {\n if (isMeWebview()) {\n // @ts-ignore\n return await astrox.createActor(canisterId, interfaceFactory);\n }\n // @ts-ignore\n return await this.client?.createActor(interfaceFactory, canisterId);\n }\n\n async expired() {\n if (isMeWebview()) return false;\n const meExpireTime = window.localStorage.getItem(\"me-expire-time\");\n if (!meExpireTime) return true;\n return new Date().getTime() >= Number(meExpireTime);\n }\n}\n","import { Principal } from \"@dfinity/principal\";\nimport { encodePrincipalToEthAddress } from \"@dfinity/cketh\";\n\nexport const principalToBytes32 = (principal: string): string => {\n return encodePrincipalToEthAddress(Principal.fromText(principal));\n};\n","export const importTokenToNnsUrl = (tokenId: string): string => {\n return `https://nns.ic0.app/tokens/?import-ledger-id=${tokenId}`;\n};\n","/* eslint-disable no-extend-native */\n\nimport JSBI from \"jsbi\";\nimport BigNumber from \"bignumber.js\";\n\n// @ts-ignore hijack bigint\nBigInt.prototype.toJSON = function toJSON() {\n return this.toString();\n};\n\n// avoid scientific notation when use toString\nBigNumber.set({ EXPONENTIAL_AT: 10 ** 9 });\n\nBigNumber.config({\n ROUNDING_MODE: BigNumber.ROUND_DOWN,\n});\n\nexport const NO_GROUP_SEPARATOR_FORMATTER = {\n groupSeparator: \"\",\n};\n\nexport { JSBI };\n\nexport function isDarkTheme(theme: any): boolean {\n return theme.customization.mode === \"dark\";\n}\n\nexport function isICPSwapOfficial(account: string | undefined): boolean {\n return (\n account === \"b2b33b29fa0f9458ec7ba0025f6a53126043fad143dd17619d5f162f41e69869\" ||\n account === \"e695fda51d898ad6f46211d8f468f85dd1364819e52c7740e4b4db90918ea6bc\" ||\n account === \"fbe00b464da19fc7bf234cf05e376631ad896163558174c375f6e9be96d95e95\" ||\n account === \"1ce94412fa0ad3b93132c651105d86e17bb87bafc78e9010a9e24a47a98e5b03\" ||\n account === \"9b0812ed39fe6e63c442d7a81672c0c2568ce10011dffc0e50a635250ff6967f\"\n );\n}\n\nexport function stringToArrayBuffer(string: string): Uint8Array {\n return new TextEncoder().encode(string);\n}\n\nexport function arrayBufferToString(arrayBuffer: Uint8Array): string {\n return new TextDecoder(\"utf-8\").decode(arrayBuffer);\n}\n\nexport type CountingTime = {\n hour: string | number;\n min: string | number;\n sec: string | number;\n};\n\nexport function toDoubleNumber(string: number | string) {\n const newString = String(string);\n\n if (newString.length < 2) {\n return `0${newString}`;\n }\n\n return string;\n}\n\nexport function counter(time: string | number | Date): CountingTime {\n const now = new Date().getTime();\n const end = new Date(time).getTime();\n\n const diff = end - now;\n\n if (diff <= 0) {\n return {\n hour: \"00\",\n min: \"00\",\n sec: \"00\",\n };\n }\n\n const sec = parseInt(String((diff / 1000) % 60));\n const min = parseInt(String((diff / (60 * 1000)) % 60));\n const hour = parseInt(String(diff / (60 * 60 * 1000)));\n\n return {\n hour: toDoubleNumber(hour),\n min: toDoubleNumber(min),\n sec: toDoubleNumber(sec),\n };\n}\n\nexport function toFormat(value: string | number | BigNumber | undefined) {\n if (value === undefined) return \"\";\n return new BigNumber(value).toFormat();\n}\n\nexport function timeParser(time: any): Date {\n const date = new Date(time);\n const seconds = date.getSeconds();\n return new Date(date.getTime() - seconds * 1000);\n}\n\nexport function isSafari() {\n return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n}\n\nexport * from \"./type\";\nexport * from \"./nft\";\nexport * from \"./swap\";\nexport * from \"./token\";\n","import type { NFTTransferArgs, NFTTransferResult, NFTAllowanceArgs, NFTApproveArgs } from \"@icpswap/types\";\nimport { StatusResult } from \"@icpswap/types\";\nimport { Identity } from \"types/global\";\n\nexport interface TransferParameters {\n identity: Identity;\n params: NFTTransferArgs;\n canisterId: string;\n}\nexport abstract class BaseNFTAdapter {\n public readonly actor: any;\n\n constructor({ actor }: { actor: (canister: string, identity?: Identity) => any }) {\n this.actor = actor;\n }\n\n public abstract transfer(params: TransferParameters): Promise>;\n\n public abstract allowance(params: { canisterId: string; params: NFTAllowanceArgs }): Promise>;\n\n public abstract approve(params: {\n canisterId: string;\n identity: Identity;\n params: NFTApproveArgs;\n }): Promise>;\n}\n","import type { NFTTransferArgs, NFTTransferResult, NFTAllowanceArgs, NFTApproveArgs } from \"@icpswap/types\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { NFTCanister } from \"@icpswap/actor\";\nimport { Identity } from \"types/global\";\nimport { BaseNFTAdapter } from \"./BaseNFTAdapter\";\n\nexport class ICPSwapNFT extends BaseNFTAdapter {\n public async transfer({\n canisterId,\n params,\n identity,\n }: {\n canisterId: string;\n params: NFTTransferArgs;\n identity: Identity;\n }) {\n return resultFormat(await (await this.actor(canisterId, identity)).transfer(params));\n }\n\n public async allowance({ params, canisterId }: { canisterId: string; params: NFTAllowanceArgs }) {\n return resultFormat(await (await this.actor(canisterId)).allowance(params));\n }\n\n public async approve({\n params,\n canisterId,\n identity,\n }: {\n identity: Identity;\n canisterId: string;\n params: NFTApproveArgs;\n }) {\n return resultFormat(await (await this.actor(canisterId, identity)).approve(params));\n }\n}\n\nexport const ICPSwapAdapter = new ICPSwapNFT({\n actor: NFTCanister,\n});\n","import { type NFTTransferArgs, type NFTAllowanceArgs, type NFTApproveArgs, ResultStatus } from \"@icpswap/types\";\nimport { Identity } from \"types/global\";\nimport { BaseNFTAdapter } from \"./BaseNFTAdapter\";\nimport { ICPSwapAdapter } from \"./ICPSwapNFTAdapter\";\n\nexport class NFT {\n public canisterAdapters = new Map();\n\n public adapters = new Map();\n\n public initialAdapter(name: AdapterName, adapter: BaseNFTAdapter) {\n if (this.adapters.get(name)) throw Error(\"This adapter is already initialed\");\n this.adapters.set(name, adapter);\n }\n\n public register({ canisterIds, name }: { canisterIds: string[]; name: AdapterName }) {\n canisterIds.forEach((canisterId) => {\n this.canisterAdapters.set(canisterId, name);\n });\n }\n\n public getAdapter(canisterId: string) {\n const adapterName = this.canisterAdapters.get(canisterId);\n return adapterName ? this.adapters.get(adapterName) : undefined;\n }\n\n public getAdapterByName(adapterName: AdapterName) {\n if (!this.adapters.get(adapterName)) throw Error(`Can't not found adapter ${adapterName}`);\n return this.adapters.get(adapterName);\n }\n\n public async transfer({\n adapterName,\n params,\n identity,\n canisterId,\n }: {\n identity: Identity;\n adapterName: AdapterName;\n params: NFTTransferArgs;\n canisterId: string;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"No adapter\" };\n\n return await adapter.transfer({ canisterId, params, identity });\n }\n\n public async allowance({\n adapterName,\n params,\n canisterId,\n }: {\n canisterId: string;\n adapterName: AdapterName;\n params: NFTAllowanceArgs;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"No adapter\" };\n return await adapter.allowance({\n canisterId,\n params,\n });\n }\n\n public async approve({\n params,\n canisterId,\n adapterName,\n identity,\n }: {\n adapterName: AdapterName;\n canisterId: string;\n params: NFTApproveArgs;\n identity: Identity;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"No adapter\" };\n return await adapter.approve({\n canisterId,\n identity,\n params,\n });\n }\n}\n\nexport const NFTs = new NFT();\n\nexport const registerNFTs = ({ canisterIds, name }: { canisterIds: string[]; name: AdapterName }) =>\n NFTs.register({ canisterIds, name });\n\nexport enum AdapterName {\n ICPSwap = \"ICPSwap\",\n}\n\nNFTs.initialAdapter(AdapterName.ICPSwap, ICPSwapAdapter);\n","import type { NFTBuyArgs, NFTSaleArgs, NFTRevokeArgs } from \"@icpswap/types\";\nimport { StatusResult } from \"@icpswap/types\";\nimport { Identity } from \"types/global\";\n\nexport interface BuyParameters {\n identity: Identity;\n params: NFTBuyArgs;\n}\n\nexport interface SaleParameters {\n identity: Identity;\n params: NFTSaleArgs;\n}\n\nexport interface RevokeParameters {\n identity: Identity;\n params: NFTRevokeArgs;\n}\n\nexport abstract class BaseNFTsTradeAdapter {\n public readonly actor: any;\n\n constructor({ actor }: { actor: any }) {\n this.actor = actor;\n }\n\n public abstract buy(params: BuyParameters): Promise>;\n\n public abstract sale(params: SaleParameters): Promise>;\n\n public abstract revoke(params: RevokeParameters): Promise>;\n}\n","import type { NFTBuyArgs, NFTSaleArgs, NFTRevokeArgs } from \"@icpswap/types\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { Identity } from \"types/global\";\nimport { NFTTradeCanister } from \"@icpswap/actor\";\nimport { BaseNFTsTradeAdapter } from \"./BaseNFTAdapter\";\n\nexport class ICPSwapNFTsTradeAdapter extends BaseNFTsTradeAdapter {\n public async buy({ params, identity }: { params: NFTBuyArgs; identity: Identity }) {\n return resultFormat(await (await this.actor(identity)).buy(params));\n }\n\n public async sale({ params, identity }: { params: NFTSaleArgs; identity: Identity }) {\n return resultFormat(await (await this.actor(identity)).sale(params));\n }\n\n public async revoke({ params, identity }: { params: NFTRevokeArgs; identity: Identity }) {\n return resultFormat(await (await this.actor(identity)).revoke(params));\n }\n}\n\nexport const ICPSwapTradeAdapter = new ICPSwapNFTsTradeAdapter({\n actor: NFTTradeCanister,\n});\n","import { ResultStatus, type NFTBuyArgs, type NFTRevokeArgs, type NFTSaleArgs } from \"@icpswap/types\";\nimport { Identity } from \"types/global\";\nimport { BaseNFTsTradeAdapter } from \"./BaseNFTAdapter\";\nimport { ICPSwapTradeAdapter } from \"./ICPSwapNFTTradeAdapter\";\n\nexport enum TradeAdapterName {\n ICPSwap = \"ICPSwap\",\n}\n\nexport class NFTsTradeAdapter {\n public canisterAdapters = new Map();\n\n public adapters = new Map();\n\n public initialAdapter(name: TradeAdapterName, adapter: BaseNFTsTradeAdapter) {\n if (this.adapters.get(name)) throw Error(\"This adapter is already initialed\");\n this.adapters.set(name, adapter);\n }\n\n public register({ canisterIds, name }: { canisterIds: string[]; name: TradeAdapterName }) {\n canisterIds.forEach((canisterId) => {\n this.canisterAdapters.set(canisterId, name);\n });\n }\n\n public getAdapter(canisterId: string) {\n const adapterName = this.canisterAdapters.get(canisterId);\n return adapterName ? this.adapters.get(adapterName) : undefined;\n }\n\n public getAdapterByName(adapterName: TradeAdapterName) {\n if (!this.adapters.get(adapterName)) throw Error(`Can't not found adapter ${adapterName}`);\n return this.adapters.get(adapterName);\n }\n\n public async sale({\n adapterName,\n params,\n identity,\n }: {\n identity: Identity;\n adapterName: TradeAdapterName;\n params: NFTSaleArgs;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"\" };\n return await adapter.sale({ params, identity });\n }\n\n public async revoke({\n adapterName,\n params,\n identity,\n }: {\n identity: Identity;\n adapterName: TradeAdapterName;\n params: NFTRevokeArgs;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"\" };\n return await adapter.revoke({ params, identity });\n }\n\n public async buy({\n adapterName,\n params,\n identity,\n }: {\n identity: Identity;\n adapterName: TradeAdapterName;\n params: NFTBuyArgs;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"\" };\n return await adapter.buy({ params, identity });\n }\n}\n\nexport const NFTsTrade = new NFTsTradeAdapter();\n\nNFTsTrade.initialAdapter(TradeAdapterName.ICPSwap, ICPSwapTradeAdapter);\n","import { Principal } from \"@dfinity/principal\";\nimport { type SwapNFTTokenMetadata } from \"@icpswap/types\";\n\nexport function from32bits(data: number[]) {\n let value;\n\n for (let i = 0; i < 4; i++) {\n // @ts-ignore\n value = (value << 8) | data[i];\n }\n\n return value;\n}\n\nexport function to32bits(num: number) {\n const arrayBuffer = new ArrayBuffer(4);\n new DataView(arrayBuffer).setUint32(0, num);\n return Array.from(new Uint8Array(arrayBuffer));\n}\n\nexport function toHexString(byteArray: number[]) {\n return Array.from(byteArray, (byte) => {\n return `0${(byte & 0xff).toString(16)}`.slice(-2);\n }).join(\"\");\n}\n\nexport function encodeTokenIdentifier(principal: string, index: number | bigint) {\n // @ts-ignore\n const padding = Buffer(\"\\x0Atid\");\n\n const array = new Uint8Array([\n ...padding,\n ...Principal.fromText(principal).toUint8Array(),\n ...to32bits(Number(index)),\n ]);\n return Principal.fromUint8Array(array).toText();\n}\n\nexport function decodeTokenId(tid: string) {\n const p = [...Principal.fromText(tid).toUint8Array()];\n const padding = p.splice(0, 4);\n\n // @ts-ignore\n if (toHexString(padding) !== toHexString(Buffer(\"\\x0Atid\"))) {\n return {\n index: 0,\n canister: tid,\n token: encodeTokenIdentifier(tid, 0),\n };\n }\n return {\n index: from32bits(p.splice(-4)),\n // @ts-ignore\n canister: Principal.fromUint8Array(p).toText(),\n token: tid,\n };\n}\n\nexport function getNFTSwapPoolId(nft: SwapNFTTokenMetadata) {\n let poolId = \"\";\n\n for (let i = 0; i < nft.attributes.length; i++) {\n if (nft.attributes[i].k === \"pool\") {\n poolId = nft.attributes[i].v;\n break;\n }\n }\n\n return poolId;\n}\n\nexport function getNFTSwapPositionId(nft: SwapNFTTokenMetadata) {\n let poolId = \"\";\n\n for (let i = 0; i < nft.attributes.length; i++) {\n if (nft.attributes[i].k === \"positionId\") {\n poolId = nft.attributes[i].v;\n break;\n }\n }\n\n return poolId;\n}\n\nexport * from \"./NFT\";\nexport * from \"./trade\";\n","import { StakingState } from \"@icpswap/types\";\nimport { FilterState } from \"types/staking-token\";\n\nexport function getStateValue(state: StakingState) {\n switch (state) {\n case StakingState.LIVE:\n return BigInt(2);\n case StakingState.NOT_STARTED:\n return BigInt(1);\n case StakingState.FINISHED:\n return BigInt(3);\n default:\n return undefined;\n }\n}\n\nexport function getStateValueByFilterState(__state: FilterState) {\n switch (__state) {\n case FilterState.ALL:\n return undefined;\n case FilterState.NOT_STARTED:\n return getStateValue(StakingState.NOT_STARTED);\n case FilterState.LIVE:\n return getStateValue(StakingState.LIVE);\n case FilterState.FINISHED:\n return getStateValue(StakingState.FINISHED);\n case FilterState.YOUR:\n return undefined;\n default:\n return undefined;\n }\n}\n","import BigNumber from \"bignumber.js\";\nimport { SAFE_DECIMALS_LENGTH } from \"constants/index\";\n\n/**\n * Given some token amount, check and format the amount by the max decimals\n * @param amount token amount\n * @param decimals token decimals\n */\nexport function maxAmountFormat(amount: string, decimals: number): string {\n if (!amount) return amount;\n\n if (decimals > SAFE_DECIMALS_LENGTH) {\n return new BigNumber(amount).toFixed(SAFE_DECIMALS_LENGTH);\n }\n\n return amount;\n}\n","export function sortToken(token0: string, token1: string) {\n return token0 > token1 ? { token0: token1, token1: token0 } : { token0, token1 };\n}\n","import { type Position } from \"@icpswap/swap-sdk\";\n\nexport function encodePositionKey(position: Position | undefined, index: bigint | number) {\n if (!position) return undefined;\n\n const { token0, token1 } = position.pool;\n\n const keyItems = [\n position.pool.id,\n index.toString(),\n token0.address,\n token0.transFee.toString(),\n token1.address,\n token1.transFee.toString(),\n ];\n\n return keyItems.join(\"_\");\n}\n\nexport function encodePositionKeyByPool(poolId: string | undefined, index: bigint | number) {\n if (!poolId) return undefined;\n\n return `${poolId}_${index.toString()}`;\n}\n\nexport function decodePositionKey(key: string | undefined) {\n if (!key || !key.includes(\"_\")) return {};\n\n const arr = key.split(\"_\");\n\n return {\n poolId: arr[0],\n positionIndex: arr[1],\n token0: arr[2],\n token0Fee: arr[3],\n token1: arr[4],\n token1Fee: arr[5],\n };\n}\n\nexport enum PositionState {\n OutOfRange = \"outOfRange\",\n InRange = \"inRange\",\n LEVEL0 = \"level0\",\n LEVEL1 = \"level1\",\n CLOSED = \"closed\",\n}\n\nexport const getStateColor = (state: PositionState) => {\n switch (state) {\n case PositionState.OutOfRange:\n return \"#9D332C\";\n case PositionState.InRange:\n return \"#54C081\";\n case PositionState.LEVEL0:\n return \"#FFD24C\";\n case PositionState.LEVEL1:\n return \"#D3625B\";\n case PositionState.CLOSED:\n return \"#8492C4\";\n default:\n return \"#54C081\";\n }\n};\n","import {\n Price,\n Token,\n priceToClosestTick,\n nearestUsableTick,\n FeeAmount,\n TICK_SPACINGS,\n encodeSqrtRatioX96,\n TickMath,\n} from \"@icpswap/swap-sdk\";\nimport JSBI from \"jsbi\";\n\nexport function tryParsePrice(baseToken?: Token, quoteToken?: Token, value?: string) {\n if (!baseToken || !quoteToken || !value) {\n return undefined;\n }\n\n if (!value.match(/^\\d*\\.?\\d+$/)) {\n return undefined;\n }\n\n const [whole, fraction] = value.split(\".\");\n\n const decimals = fraction?.length ?? 0;\n const withoutDecimals = JSBI.BigInt((whole ?? \"\") + (fraction ?? \"\"));\n\n return new Price(\n baseToken,\n quoteToken,\n JSBI.multiply(JSBI.BigInt(10 ** decimals), JSBI.BigInt(10 ** baseToken.decimals)),\n JSBI.multiply(withoutDecimals, JSBI.BigInt(10 ** quoteToken.decimals)),\n );\n}\n\nexport function tryParseTick(\n baseToken?: Token,\n quoteToken?: Token,\n feeAmount?: FeeAmount,\n value?: string,\n): number | undefined {\n if (!baseToken || !quoteToken || !feeAmount || !value) {\n return undefined;\n }\n\n const price = tryParsePrice(baseToken, quoteToken, value);\n\n if (!price) {\n return undefined;\n }\n\n let tick: number;\n\n // check price is within min/max bounds, if outside return min/max\n const sqrtRatioX96 = encodeSqrtRatioX96(price.numerator, price.denominator);\n\n if (JSBI.greaterThanOrEqual(sqrtRatioX96, TickMath.MAX_SQRT_RATIO)) {\n tick = TickMath.MAX_TICK;\n } else if (JSBI.lessThanOrEqual(sqrtRatioX96, TickMath.MIN_SQRT_RATIO)) {\n tick = TickMath.MIN_TICK;\n } else {\n // this function is agnostic to the base, will always return the correct tick\n tick = priceToClosestTick(price);\n }\n\n return nearestUsableTick(tick, TICK_SPACINGS[feeAmount]);\n}\n","import { Token, CurrencyAmount } from \"@icpswap/swap-sdk\";\nimport { SAFE_INTEGER_LENGTH, SAFE_DECIMALS_LENGTH } from \"constants/index\";\nimport { BigNumber } from \"@icpswap/utils\";\n\nexport function tryParseAmount(value?: string, currency?: T): CurrencyAmount | undefined {\n if (!value || !currency) {\n return undefined;\n }\n try {\n const typedValueParsed = new BigNumber(value)\n .multipliedBy(10 ** currency.decimals)\n .toFormat({ groupSeparator: \"\" });\n\n if (typedValueParsed !== \"0\") {\n return CurrencyAmount.fromRawAmount(currency, typedValueParsed);\n }\n } catch (error) {\n // should fail if the user specifies too many decimal places of precision (or maybe exceed max uint?)\n console.error(`Failed to parse input amount: \"${value}\"`, error);\n }\n // necessary for all paths to return a value\n return undefined;\n}\n\nexport function feeAmountToPercentage(feeAmount: number | string): string {\n return `${new BigNumber(feeAmount).div(10000).toFixed(2)}%`;\n}\n\nexport function inputNumberCheck(num: string | number): boolean {\n const integer = String(num).split(\".\")[0];\n const decimal = String(num).split(\".\")[1];\n\n if (decimal && decimal.length > SAFE_DECIMALS_LENGTH) {\n return false;\n }\n\n if (integer && integer.length > SAFE_INTEGER_LENGTH) {\n return false;\n }\n\n return true;\n}\n\nexport * from \"./maxAmountFormat\";\nexport * from \"./maxAmountSpend\";\nexport * from \"./sortToken\";\nexport * from \"./liquidity\";\nexport * from \"./mint\";\nexport * from \"./limit-order\";\n","import {\n Pool,\n Position,\n Token,\n TICK_SPACINGS,\n priceToClosestTick,\n nearestUsableTick,\n Price,\n availableTick,\n} from \"@icpswap/swap-sdk\";\nimport { Null } from \"@icpswap/types\";\nimport { BigNumber, toSignificant } from \"@icpswap/utils\";\n\nexport function getBackendLimitTick(position: Position) {\n const pool = position.pool;\n const tickLower = position.tickLower;\n const tickUpper = position.tickUpper;\n\n if (tickUpper < pool.tickCurrent) {\n return tickLower;\n }\n\n return tickUpper;\n}\n\nexport function getPriceTickByPosition(position: Position) {\n return position.tickLower + TICK_SPACINGS[position.pool.fee];\n}\n\nexport function priceToClosestUseableTick(price: Price, pool: Pool, sorted: boolean) {\n const __orderPriceTick = priceToClosestTick(price);\n\n let useableTick = nearestUsableTick(__orderPriceTick, pool.tickSpacing);\n\n if (Math.abs(Math.abs(useableTick) - Math.abs(pool.tickCurrent)) <= TICK_SPACINGS[pool.fee]) {\n if (sorted) {\n useableTick += TICK_SPACINGS[pool.fee];\n } else {\n useableTick -= TICK_SPACINGS[pool.fee];\n }\n }\n\n return availableTick(useableTick);\n}\n\nexport function inputValueFormat(inputValue: string | Null) {\n return inputValue\n ? new BigNumber(inputValue).isLessThan(0.1)\n ? toSignificant(inputValue, 3)\n : toSignificant(inputValue, 6)\n : null;\n}\n","import { numberToString, BigNumber } from \"@icpswap/utils\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { Token } from \"@icpswap/swap-sdk\";\n\nexport function isUseTransferByStandard(standard: TOKEN_STANDARD) {\n return standard.includes(\"ICRC1\");\n}\n\nexport function isUseTransfer(token: Token | undefined) {\n if (token === undefined) return false;\n return isUseTransferByStandard(token.standard as TOKEN_STANDARD);\n}\n\nexport function actualAmountToPool(token: Token, amount: string) {\n if (isUseTransfer(token)) {\n if (!new BigNumber(amount).minus(token.transFee).isGreaterThan(0)) {\n return \"0\";\n }\n return numberToString(new BigNumber(amount).minus(token.transFee));\n }\n return amount;\n}\n","import { BigNumber } from \"@ethersproject/bignumber\";\n\n/**\n * Returns the gas value plus a margin for unexpected or variable gas costs\n * @param value the gas value to pad\n */\nexport function calculateGasMargin(value: BigNumber): BigNumber {\n return value.mul(120).div(100);\n}\n","import { initializeConnector, Web3ReactHooks } from \"@web3-react/core\";\nimport { MetaMask } from \"@web3-react/metamask\";\nimport { Connector } from \"@web3-react/types\";\n\nexport enum ConnectionType {\n INJECTED = \"INJECTED\",\n COINBASE_WALLET = \"COINBASE_WALLET\",\n WALLET_CONNECT = \"WALLET_CONNECT\",\n NETWORK = \"NETWORK\",\n GNOSIS_SAFE = \"GNOSIS_SAFE\",\n}\n\nexport interface Connection {\n connector: Connector;\n hooks: Web3ReactHooks;\n type: ConnectionType;\n}\n\nfunction onError(error: Error) {\n console.error(`web3-react error: ${error}`);\n}\n\nconst [metamask, hooks] = initializeConnector((actions) => new MetaMask({ actions, onError }));\n\nexport const injectedConnection: Connection = {\n connector: metamask,\n hooks,\n type: ConnectionType.INJECTED,\n};\n\nexport { metamask, hooks };\n","import { getAddress } from \"@ethersproject/address\";\nimport { BigNumber as Big } from \"@ethersproject/bignumber\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { Contract } from \"@ethersproject/contracts\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"@ethersproject/providers\";\nimport BigNumber from \"bignumber.js\";\n\n// returns the checksummed address if the address is valid, otherwise returns false\nexport function isAddress(value: any): string | false {\n try {\n return getAddress(value);\n } catch {\n return false;\n }\n}\n\n// shorten the checksummed version of the input address to have 0x + 4 characters at start and end\nexport function shortenAddress(address: string, chars = 4): string {\n const parsed = isAddress(address);\n if (!parsed) {\n throw Error(`Invalid 'address' parameter '${address}'.`);\n }\n return `${parsed.substring(0, chars + 2)}...${parsed.substring(42 - chars)}`;\n}\n\n// account is not optional\nfunction getSigner(provider: JsonRpcProvider, account: string): JsonRpcSigner {\n return provider.getSigner(account).connectUnchecked();\n}\n\n// account is optional\nfunction getProviderOrSigner(\n provider: JsonRpcProvider | undefined,\n account?: string,\n): JsonRpcProvider | JsonRpcSigner | undefined {\n return account && provider ? getSigner(provider, account) : provider;\n}\n\n// account is optional\nexport function getContract(\n address: string,\n ABI: any,\n provider: JsonRpcProvider | undefined,\n account?: string,\n): Contract {\n if (!isAddress(address) || address === AddressZero) {\n throw Error(`Invalid 'address' parameter '${address}'.`);\n }\n\n return new Contract(address, ABI, getProviderOrSigner(provider, account) as any);\n}\n\nexport function escapeRegExp(string: string): string {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\n}\n\nexport function toHexString(amount: string | number, decimals = 18): string {\n return `0x0${new BigNumber(amount).multipliedBy(10 ** decimals).toString(16)}`;\n}\n\n/**\n * Returns the gas value plus a margin for unexpected or variable gas costs\n * @param value the gas value to pad\n */\nexport function calculateGasMargin(value: Big): Big {\n return value.mul(120).div(100);\n}\n","export const idlFactory = ({ IDL }: any) => {\n const Config = IDL.Record({ value: IDL.Text, name: IDL.Text });\n const Media = IDL.Record({ link: IDL.Text, mediaType: IDL.Text });\n const TokenMetadata = IDL.Record({\n fee: IDL.Nat,\n configs: IDL.Vec(Config),\n decimals: IDL.Nat,\n name: IDL.Text,\n rank: IDL.Nat32,\n mediaLinks: IDL.Vec(Media),\n totalSupply: IDL.Nat,\n introduction: IDL.Text,\n standard: IDL.Text,\n symbol: IDL.Text,\n canisterId: IDL.Text,\n });\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Result_3 = IDL.Variant({\n ok: IDL.Opt(TokenMetadata),\n err: IDL.Text,\n });\n const Result_2 = IDL.Variant({ ok: IDL.Vec(IDL.Text), err: IDL.Text });\n const Result_1 = IDL.Variant({\n ok: IDL.Vec(TokenMetadata),\n err: IDL.Text,\n });\n const Result = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n return IDL.Service({\n add: IDL.Func([TokenMetadata], [BoolResult], []),\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n edit: IDL.Func([IDL.Text, TokenMetadata], [BoolResult], []),\n get: IDL.Func([IDL.Text], [Result_3], [\"query\"]),\n getAdminList: IDL.Func([], [Result_2], [\"query\"]),\n getList: IDL.Func([], [Result_1], [\"query\"]),\n getLogo: IDL.Func([IDL.Text], [Result], [\"query\"]),\n remove: IDL.Func([IDL.Text], [BoolResult], []),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n updateLogo: IDL.Func([IDL.Text, IDL.Text], [BoolResult], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const Result_4 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: IDL.Text,\n });\n const Result_3 = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const Subaccount = IDL.Vec(IDL.Nat8);\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(Subaccount),\n });\n const TokenInfo = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat,\n minting_account: IDL.Opt(Account),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Text,\n ledger_id: IDL.Principal,\n min_burn_amount: IDL.Nat,\n max_supply: IDL.Opt(IDL.Nat),\n index: IDL.Nat,\n standard: IDL.Text,\n total_supply: IDL.Nat,\n symbol: IDL.Text,\n });\n const Result_2 = IDL.Variant({ ok: TokenInfo, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(TokenInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_1 = IDL.Variant({ ok: Page, err: IDL.Text });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n status_code: IDL.Nat16,\n });\n return IDL.Service({\n add_token: IDL.Func([IDL.Principal, IDL.Text], [Result], []),\n cycleBalance: IDL.Func([], [IDL.Nat], []),\n getAdmins: IDL.Func([], [Result_4], [\"query\"]),\n get_logo: IDL.Func([IDL.Principal], [Result_3], [\"query\"]),\n get_task_state: IDL.Func([], [Result], [\"query\"]),\n get_token: IDL.Func([IDL.Principal], [Result_2], [\"query\"]),\n get_token_list: IDL.Func([IDL.Nat, IDL.Nat, IDL.Opt(IDL.Bool)], [Result_1], [\"query\"]),\n http_request: IDL.Func([HttpRequest], [HttpResponse], [\"query\"]),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n set_task_state: IDL.Func([IDL.Bool], [Result], []),\n set_token_index: IDL.Func([IDL.Principal, IDL.Nat], [Result], []),\n set_token_logo: IDL.Func([IDL.Principal, IDL.Text], [Result], []),\n set_token_logo_blob: IDL.Func([IDL.Principal, IDL.Vec(IDL.Nat8), IDL.Text], [Result], []),\n set_token_standard: IDL.Func([IDL.Principal, IDL.Text], [Result], []),\n sync_token: IDL.Func([], [IDL.Bool], []),\n update_token: IDL.Func([IDL.Principal], [Result], []),\n });\n};\n","import { HttpAgent, ActorSubclass } from \"@dfinity/agent\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { IDL } from \"@dfinity/candid\";\nimport { ic_host } from \"@icpswap/constants\";\nimport isObject from \"lodash/isObject\";\n\nimport { ActorName } from \"./ActorName\";\nimport { createBaseActor } from \"./BaseActor\";\n\nlet cachedCanisterIds: { [key: string]: string } = {};\n\nexport type ActorConstructor = {\n canisterId?: string;\n actorName?: ActorName;\n host?: string;\n idlFactory: IDL.InterfaceFactory;\n identity?: ActorIdentity;\n agent?: HttpAgent;\n};\n\nexport enum Connector {\n ICPSwap = \"ICPSwap\",\n PLUG = \"PLUG\",\n STOIC = \"STOIC\",\n IC = \"IC\",\n NFID = \"NFID\",\n INFINITY = \"INFINITY\",\n ME = \"ME\",\n Metamask = \"Metamask\",\n Oisy = \"Oisy\",\n}\n\nexport function isICConnector(connector: Connector) {\n return connector === Connector.IC || connector === Connector.STOIC || connector === Connector.NFID;\n}\n\nexport type ActorError = {\n canisterId: string;\n message: string;\n method: string;\n};\nexport type ActorErrorCallback = (error: ActorError) => void;\nexport type BeforeSubmitArgs = {\n canisterId: string;\n method: string;\n identity: ActorIdentity | undefined;\n connector: Connector;\n};\nexport type BeforeSubmitCallback = (args: BeforeSubmitArgs) => Promise<{ success: boolean; message: string }>;\n\nexport function isPlugTypeConnector(connector: Connector) {\n return connector === Connector.PLUG || connector === Connector.INFINITY;\n}\n\nexport function isMeConnector(connector: Connector) {\n return connector === Connector.ME;\n}\n\nexport class Actor {\n private connector: Connector = Connector.ICPSwap;\n\n private agent: null | HttpAgent = null;\n\n private host: string = ic_host;\n\n private errorCallbacks: ActorErrorCallback[] = [];\n\n private beforeSubmit: BeforeSubmitCallback;\n\n public log = false;\n\n public setConnector(connector: Connector) {\n this.connector = connector;\n }\n\n public async create({\n canisterId,\n host,\n idlFactory,\n identity,\n agent,\n actorName,\n }: ActorConstructor): Promise> {\n let id = canisterId;\n if (!id && actorName) id = cachedCanisterIds[actorName];\n if (!id) throw new Error(\"No canister id\");\n\n const __host = host ?? this.host;\n\n const isRejected = false;\n\n const serviceClass = idlFactory({ IDL });\n\n let actor: ActorSubclass | null = null;\n\n // catch create infinity actor rejected\n let createActorError: null | string = null;\n\n if (identity) {\n try {\n actor = await window.icConnector.createActor({\n canisterId: id,\n interfaceFactory: idlFactory,\n });\n } catch (error) {\n createActorError = String(error);\n }\n } else {\n actor = await createBaseActor({\n canisterId: id,\n interfaceFactory: idlFactory,\n agent: await this.AnonymousAgent(__host),\n fetchRootKey: __host !== ic_host,\n });\n }\n\n const _actor: any = {};\n\n serviceClass._fields.forEach((ele) => {\n const key = ele[0];\n\n _actor[key] = async (...args) => {\n if (createActorError)\n return {\n err: `${createActorError}. Please try reconnecting your wallet and ensure the account inside matches the account displayed on the ICPSwap page.`,\n };\n\n if (isRejected) {\n return {\n err: \"The agent creation was rejected. Please try reconnecting your wallet and ensure the account inside matches the account displayed on the ICPSwap page.\",\n };\n }\n\n try {\n if (!actor) return { err: \"no actor\" };\n\n if (this.beforeSubmit) {\n const checkResult = await this.beforeSubmit({\n canisterId: id,\n method: key,\n identity,\n connector: this.connector,\n });\n\n if (checkResult.success === false) {\n return { err: checkResult.message };\n }\n }\n\n const result = actor[key](...args) as Promise;\n return await result;\n } catch (error) {\n let message = \"\";\n\n if (isObject(error)) {\n if (\"message\" in error) {\n message = error.message as string;\n } else {\n message = JSON.stringify(error);\n }\n } else {\n const __error = String(error);\n\n if (__error.includes(\"Reject text:\")) {\n const _message = __error.split(`Reject text: `)[1]?.split(\" at\") ?? \"\";\n message = _message ? _message[0]?.trim() : __error;\n } else {\n const _message = __error.includes(`\"Message\"`) ? __error.split(`\"Message\": `)[1]?.split('\"') : \"\";\n message = __error.includes(`\"Message\"`) && !!_message ? _message[1] : __error;\n }\n }\n\n if (this.log) {\n console.log(\"Actor =====================>\");\n console.log(\"canister: \", id);\n console.log(\"method: \", key);\n console.log(\"rejected: \", message);\n console.log(\"Actor =====================>\");\n }\n\n this.errorCallbacks.forEach((call) => {\n call({ canisterId: id ?? \"\", method: key, message });\n });\n\n return { err: message };\n }\n };\n });\n\n return _actor as ActorSubclass;\n }\n\n public async AnonymousAgent(host?: string) {\n return await HttpAgent.create({\n host: host ?? this.host,\n });\n }\n\n public setAgent(agent: HttpAgent | null) {\n this.agent = agent;\n }\n\n public setHost(host: string) {\n this.host = host;\n }\n\n public static setActorCanisterIds(canisterIds: { [key: string]: string }) {\n cachedCanisterIds = canisterIds;\n }\n\n public onError(callback: ActorErrorCallback) {\n this.errorCallbacks.push(callback);\n }\n\n public onSubmit(callback: BeforeSubmitCallback) {\n this.beforeSubmit = callback;\n }\n\n public setLog(log: boolean) {\n this.log = log;\n }\n}\n\nexport const actor = new Actor();\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\nimport { IDL } from \"@dfinity/candid\";\n\nexport interface CreateBaseActorProps {\n canisterId: string;\n interfaceFactory: IDL.InterfaceFactory;\n actorOptions?: any;\n agent: HttpAgent;\n fetchRootKey?: boolean;\n}\n\nexport async function createBaseActor({\n canisterId,\n interfaceFactory,\n actorOptions,\n agent,\n fetchRootKey = false,\n}: CreateBaseActorProps) {\n // Fetch root key for certificate validation during development\n if (fetchRootKey) {\n await agent?.fetchRootKey().catch((err) => {\n console.warn(\n \"Unable to fetch root key. Check to ensure that your local replica is running\"\n );\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent: agent,\n canisterId,\n ...(actorOptions ?? {}),\n });\n}\n","export enum ActorName {\n SwapPool = \"SwapPool\",\n SwapFactory = \"SwapFactory\",\n SwapNFTCanister = \"SwapNFT\",\n Position = \"PositionIndex\",\n PassCodeManager = \"PassCodeManager\",\n LimitTransaction = \"LimitTransaction\",\n PositionCharts = \"PositionCharts\",\n\n SwapGraphRecord = \"BaseDataStructure\",\n SwapGraphPool = \"Pools\",\n SwapGraphToken = \"Token\",\n SwapTicket = \"Ticket\",\n GraphICP = \"ICPPrice\",\n TVL = \"TVL\",\n\n TokenList = \"TokenList\",\n AllTokenOfSwap = \"AllTokenOfSwap\",\n\n Token = \"token\",\n WICP = \"wicp\",\n\n FarmController = \"FarmController\",\n Farm = \"Farm\",\n FarmStorage = \"FarmStorage\",\n FarmIndex = \"FarmIndex\",\n\n NFTCanisterController = \"V3NFTCanisterController\",\n NFTCanister = \"NFTDynamicCanister\",\n NFTTradeCanister = \"V3TradeCanister\",\n NFTTradeStat = \"V3TradeStat\",\n\n LaunchpadCanister = \"LaunchpadCanister\",\n LaunchpadController = \"LaunchpadController\",\n LaunchpadManager = \"LaunchpadManager\",\n LaunchpadStorage = \"LaunchpadStorage\",\n\n ClaimController = \"ClaimController\",\n ClaimStorage = \"ClaimStorage\",\n\n VotingController = \"VoteController\",\n VotingCanister = \"VoteProjectCanister\",\n VotingFileCanister = \"VoteFileCanister\",\n\n StakingTokenController = \"StakingTokenController\",\n TokenPool = \"TokenPool\",\n TokenPoolStorage = \"TokenPoolStorage\",\n StakeIndex = \"StakeIndex\",\n\n V1TokenPoolController = \"V1TokenPoolController\",\n V1TokenPool = \"V1TokenPool\",\n V1TokenPoolStorage = \"V1TokenPoolStorage\",\n\n GlobalIndex = \"GlobalIndex\",\n NodeIndex = \"NodeIndex\",\n BaseIndex = \"BaseIndex\",\n\n LiquidityLocks = \"LiquidityLocks\",\n TokenAnalysis = \"TokenAnalysis\",\n}\n","import {\n TokenListService,\n TokenListInterfaceFactory,\n AllTokenOfSwapInterfaceFactory,\n AllTokenOfSwapService,\n} from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const tokenList = async (identity?: true) =>\n actor.create({\n actorName: ActorName.TokenList,\n identity,\n idlFactory: TokenListInterfaceFactory,\n });\n\nexport const allTokenOfSwap = async () =>\n actor.create({\n canisterId: \"aofop-yyaaa-aaaag-qdiqa-cai\",\n idlFactory: AllTokenOfSwapInterfaceFactory,\n });\n","import { SNS_ROOT_SERVE, SNS_INTERFACE_FACTORY } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const sns_root = async (canisterId: string) =>\n actor.create({\n canisterId,\n idlFactory: SNS_INTERFACE_FACTORY,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const SnsWasmCanisterInitPayload = IDL.Record({\n allowed_principals: IDL.Vec(IDL.Principal),\n access_controls_enabled: IDL.Bool,\n sns_subnet_ids: IDL.Vec(IDL.Principal),\n });\n const SnsWasm = IDL.Record({\n wasm: IDL.Vec(IDL.Nat8),\n canister_type: IDL.Int32,\n });\n const AddWasmRequest = IDL.Record({\n hash: IDL.Vec(IDL.Nat8),\n wasm: IDL.Opt(SnsWasm),\n });\n const SnsWasmError = IDL.Record({ message: IDL.Text });\n const Result = IDL.Variant({\n Error: SnsWasmError,\n Hash: IDL.Vec(IDL.Nat8),\n });\n const AddWasmResponse = IDL.Record({ result: IDL.Opt(Result) });\n const NeuronBasketConstructionParameters = IDL.Record({\n dissolve_delay_interval_seconds: IDL.Nat64,\n count: IDL.Nat64,\n });\n const Canister = IDL.Record({ id: IDL.Opt(IDL.Principal) });\n const DappCanisters = IDL.Record({ canisters: IDL.Vec(Canister) });\n const LinearScalingCoefficient = IDL.Record({\n slope_numerator: IDL.Opt(IDL.Nat64),\n intercept_icp_e8s: IDL.Opt(IDL.Nat64),\n from_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n slope_denominator: IDL.Opt(IDL.Nat64),\n to_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const IdealMatchedParticipationFunction = IDL.Record({\n serialized_representation: IDL.Opt(IDL.Text),\n });\n const NeuronsFundParticipationConstraints = IDL.Record({\n coefficient_intervals: IDL.Vec(LinearScalingCoefficient),\n max_neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n min_direct_participation_threshold_icp_e8s: IDL.Opt(IDL.Nat64),\n ideal_matched_participation_function: IDL.Opt(\n IdealMatchedParticipationFunction\n ),\n });\n const CfNeuron = IDL.Record({\n has_created_neuron_recipes: IDL.Opt(IDL.Bool),\n nns_neuron_id: IDL.Nat64,\n amount_icp_e8s: IDL.Nat64,\n });\n const CfParticipant = IDL.Record({\n hotkey_principal: IDL.Text,\n cf_neurons: IDL.Vec(CfNeuron),\n });\n const NeuronsFundParticipants = IDL.Record({\n participants: IDL.Vec(CfParticipant),\n });\n const TreasuryDistribution = IDL.Record({ total_e8s: IDL.Nat64 });\n const NeuronDistribution = IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n dissolve_delay_seconds: IDL.Nat64,\n memo: IDL.Nat64,\n stake_e8s: IDL.Nat64,\n vesting_period_seconds: IDL.Opt(IDL.Nat64),\n });\n const DeveloperDistribution = IDL.Record({\n developer_neurons: IDL.Vec(NeuronDistribution),\n });\n const AirdropDistribution = IDL.Record({\n airdrop_neurons: IDL.Vec(NeuronDistribution),\n });\n const SwapDistribution = IDL.Record({\n total_e8s: IDL.Nat64,\n initial_swap_amount_e8s: IDL.Nat64,\n });\n const FractionalDeveloperVotingPower = IDL.Record({\n treasury_distribution: IDL.Opt(TreasuryDistribution),\n developer_distribution: IDL.Opt(DeveloperDistribution),\n airdrop_distribution: IDL.Opt(AirdropDistribution),\n swap_distribution: IDL.Opt(SwapDistribution),\n });\n const InitialTokenDistribution = IDL.Variant({\n FractionalDeveloperVotingPower: FractionalDeveloperVotingPower,\n });\n const Countries = IDL.Record({ iso_codes: IDL.Vec(IDL.Text) });\n const SnsInitPayload = IDL.Record({\n url: IDL.Opt(IDL.Text),\n max_dissolve_delay_seconds: IDL.Opt(IDL.Nat64),\n max_dissolve_delay_bonus_percentage: IDL.Opt(IDL.Nat64),\n nns_proposal_id: IDL.Opt(IDL.Nat64),\n neurons_fund_participation: IDL.Opt(IDL.Bool),\n min_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_basket_construction_parameters: IDL.Opt(\n NeuronBasketConstructionParameters\n ),\n fallback_controller_principal_ids: IDL.Vec(IDL.Text),\n token_symbol: IDL.Opt(IDL.Text),\n final_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n max_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n confirmation_text: IDL.Opt(IDL.Text),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n swap_start_timestamp_seconds: IDL.Opt(IDL.Nat64),\n swap_due_timestamp_seconds: IDL.Opt(IDL.Nat64),\n initial_voting_period_seconds: IDL.Opt(IDL.Nat64),\n neuron_minimum_dissolve_delay_to_vote_seconds: IDL.Opt(IDL.Nat64),\n description: IDL.Opt(IDL.Text),\n max_neuron_age_seconds_for_age_bonus: IDL.Opt(IDL.Nat64),\n min_participants: IDL.Opt(IDL.Nat64),\n initial_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n wait_for_quiet_deadline_increase_seconds: IDL.Opt(IDL.Nat64),\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n dapp_canisters: IDL.Opt(DappCanisters),\n neurons_fund_participation_constraints: IDL.Opt(\n NeuronsFundParticipationConstraints\n ),\n neurons_fund_participants: IDL.Opt(NeuronsFundParticipants),\n max_age_bonus_percentage: IDL.Opt(IDL.Nat64),\n initial_token_distribution: IDL.Opt(InitialTokenDistribution),\n reward_rate_transition_duration_seconds: IDL.Opt(IDL.Nat64),\n token_logo: IDL.Opt(IDL.Text),\n token_name: IDL.Opt(IDL.Text),\n max_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n min_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n proposal_reject_cost_e8s: IDL.Opt(IDL.Nat64),\n restricted_countries: IDL.Opt(Countries),\n min_icp_e8s: IDL.Opt(IDL.Nat64),\n max_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const DeployNewSnsRequest = IDL.Record({\n sns_init_payload: IDL.Opt(SnsInitPayload),\n });\n const DappCanistersTransferResult = IDL.Record({\n restored_dapp_canisters: IDL.Vec(Canister),\n nns_controlled_dapp_canisters: IDL.Vec(Canister),\n sns_controlled_dapp_canisters: IDL.Vec(Canister),\n });\n const SnsCanisterIds = IDL.Record({\n root: IDL.Opt(IDL.Principal),\n swap: IDL.Opt(IDL.Principal),\n ledger: IDL.Opt(IDL.Principal),\n index: IDL.Opt(IDL.Principal),\n governance: IDL.Opt(IDL.Principal),\n });\n const DeployNewSnsResponse = IDL.Record({\n dapp_canisters_transfer_result: IDL.Opt(DappCanistersTransferResult),\n subnet_id: IDL.Opt(IDL.Principal),\n error: IDL.Opt(SnsWasmError),\n canisters: IDL.Opt(SnsCanisterIds),\n });\n const GetAllowedPrincipalsResponse = IDL.Record({\n allowed_principals: IDL.Vec(IDL.Principal),\n });\n const GetDeployedSnsByProposalIdRequest = IDL.Record({\n proposal_id: IDL.Nat64,\n });\n const DeployedSns = IDL.Record({\n root_canister_id: IDL.Opt(IDL.Principal),\n governance_canister_id: IDL.Opt(IDL.Principal),\n index_canister_id: IDL.Opt(IDL.Principal),\n swap_canister_id: IDL.Opt(IDL.Principal),\n ledger_canister_id: IDL.Opt(IDL.Principal),\n });\n const GetDeployedSnsByProposalIdResult = IDL.Variant({\n Error: SnsWasmError,\n DeployedSns: DeployedSns,\n });\n const GetDeployedSnsByProposalIdResponse = IDL.Record({\n get_deployed_sns_by_proposal_id_result: IDL.Opt(\n GetDeployedSnsByProposalIdResult\n ),\n });\n const SnsVersion = IDL.Record({\n archive_wasm_hash: IDL.Vec(IDL.Nat8),\n root_wasm_hash: IDL.Vec(IDL.Nat8),\n swap_wasm_hash: IDL.Vec(IDL.Nat8),\n ledger_wasm_hash: IDL.Vec(IDL.Nat8),\n governance_wasm_hash: IDL.Vec(IDL.Nat8),\n index_wasm_hash: IDL.Vec(IDL.Nat8),\n });\n const GetNextSnsVersionRequest = IDL.Record({\n governance_canister_id: IDL.Opt(IDL.Principal),\n current_version: IDL.Opt(SnsVersion),\n });\n const GetNextSnsVersionResponse = IDL.Record({\n next_version: IDL.Opt(SnsVersion),\n });\n const GetSnsSubnetIdsResponse = IDL.Record({\n sns_subnet_ids: IDL.Vec(IDL.Principal),\n });\n const GetWasmRequest = IDL.Record({ hash: IDL.Vec(IDL.Nat8) });\n const GetWasmResponse = IDL.Record({ wasm: IDL.Opt(SnsWasm) });\n const SnsUpgrade = IDL.Record({\n next_version: IDL.Opt(SnsVersion),\n current_version: IDL.Opt(SnsVersion),\n });\n const InsertUpgradePathEntriesRequest = IDL.Record({\n upgrade_path: IDL.Vec(SnsUpgrade),\n sns_governance_canister_id: IDL.Opt(IDL.Principal),\n });\n const InsertUpgradePathEntriesResponse = IDL.Record({\n error: IDL.Opt(SnsWasmError),\n });\n const ListDeployedSnsesResponse = IDL.Record({\n instances: IDL.Vec(DeployedSns),\n });\n const ListUpgradeStepsRequest = IDL.Record({\n limit: IDL.Nat32,\n starting_at: IDL.Opt(SnsVersion),\n sns_governance_canister_id: IDL.Opt(IDL.Principal),\n });\n const PrettySnsVersion = IDL.Record({\n archive_wasm_hash: IDL.Text,\n root_wasm_hash: IDL.Text,\n swap_wasm_hash: IDL.Text,\n ledger_wasm_hash: IDL.Text,\n governance_wasm_hash: IDL.Text,\n index_wasm_hash: IDL.Text,\n });\n const ListUpgradeStep = IDL.Record({\n pretty_version: IDL.Opt(PrettySnsVersion),\n version: IDL.Opt(SnsVersion),\n });\n const ListUpgradeStepsResponse = IDL.Record({\n steps: IDL.Vec(ListUpgradeStep),\n });\n const UpdateAllowedPrincipalsRequest = IDL.Record({\n added_principals: IDL.Vec(IDL.Principal),\n removed_principals: IDL.Vec(IDL.Principal),\n });\n const UpdateAllowedPrincipalsResult = IDL.Variant({\n Error: SnsWasmError,\n AllowedPrincipals: GetAllowedPrincipalsResponse,\n });\n const UpdateAllowedPrincipalsResponse = IDL.Record({\n update_allowed_principals_result: IDL.Opt(UpdateAllowedPrincipalsResult),\n });\n const UpdateSnsSubnetListRequest = IDL.Record({\n sns_subnet_ids_to_add: IDL.Vec(IDL.Principal),\n sns_subnet_ids_to_remove: IDL.Vec(IDL.Principal),\n });\n const UpdateSnsSubnetListResponse = IDL.Record({\n error: IDL.Opt(SnsWasmError),\n });\n return IDL.Service({\n add_wasm: IDL.Func([AddWasmRequest], [AddWasmResponse], []),\n deploy_new_sns: IDL.Func([DeployNewSnsRequest], [DeployNewSnsResponse], []),\n get_allowed_principals: IDL.Func(\n [IDL.Record({})],\n [GetAllowedPrincipalsResponse],\n [\"query\"]\n ),\n get_deployed_sns_by_proposal_id: IDL.Func(\n [GetDeployedSnsByProposalIdRequest],\n [GetDeployedSnsByProposalIdResponse],\n [\"query\"]\n ),\n get_latest_sns_version_pretty: IDL.Func(\n [IDL.Null],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [\"query\"]\n ),\n get_next_sns_version: IDL.Func(\n [GetNextSnsVersionRequest],\n [GetNextSnsVersionResponse],\n [\"query\"]\n ),\n get_sns_subnet_ids: IDL.Func(\n [IDL.Record({})],\n [GetSnsSubnetIdsResponse],\n [\"query\"]\n ),\n get_wasm: IDL.Func([GetWasmRequest], [GetWasmResponse], [\"query\"]),\n insert_upgrade_path_entries: IDL.Func(\n [InsertUpgradePathEntriesRequest],\n [InsertUpgradePathEntriesResponse],\n []\n ),\n list_deployed_snses: IDL.Func(\n [IDL.Record({})],\n [ListDeployedSnsesResponse],\n [\"query\"]\n ),\n list_upgrade_steps: IDL.Func(\n [ListUpgradeStepsRequest],\n [ListUpgradeStepsResponse],\n [\"query\"]\n ),\n update_allowed_principals: IDL.Func(\n [UpdateAllowedPrincipalsRequest],\n [UpdateAllowedPrincipalsResponse],\n []\n ),\n update_sns_subnet_list: IDL.Func(\n [UpdateSnsSubnetListRequest],\n [UpdateSnsSubnetListResponse],\n []\n ),\n });\n};\n","import { SNS_WASM_SERVICE, SNS_WASM_INTERFACE_FACTORY } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const sns_wasm = async () =>\n actor.create({\n canisterId: \"qaa6y-5yaaa-aaaaa-aaafa-cai\",\n idlFactory: SNS_WASM_INTERFACE_FACTORY,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NeuronBasketConstructionParameters = IDL.Record({\n dissolve_delay_interval_seconds: IDL.Nat64,\n count: IDL.Nat64,\n });\n const LinearScalingCoefficient = IDL.Record({\n slope_numerator: IDL.Opt(IDL.Nat64),\n intercept_icp_e8s: IDL.Opt(IDL.Nat64),\n from_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n slope_denominator: IDL.Opt(IDL.Nat64),\n to_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const IdealMatchedParticipationFunction = IDL.Record({\n serialized_representation: IDL.Opt(IDL.Text),\n });\n const NeuronsFundParticipationConstraints = IDL.Record({\n coefficient_intervals: IDL.Vec(LinearScalingCoefficient),\n max_neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n min_direct_participation_threshold_icp_e8s: IDL.Opt(IDL.Nat64),\n ideal_matched_participation_function: IDL.Opt(\n IdealMatchedParticipationFunction\n ),\n });\n const CfNeuron = IDL.Record({\n has_created_neuron_recipes: IDL.Opt(IDL.Bool),\n nns_neuron_id: IDL.Nat64,\n amount_icp_e8s: IDL.Nat64,\n });\n const CfParticipant = IDL.Record({\n hotkey_principal: IDL.Text,\n cf_neurons: IDL.Vec(CfNeuron),\n });\n const NeuronsFundParticipants = IDL.Record({\n cf_participants: IDL.Vec(CfParticipant),\n });\n const Countries = IDL.Record({ iso_codes: IDL.Vec(IDL.Text) });\n const Init = IDL.Record({\n nns_proposal_id: IDL.Opt(IDL.Nat64),\n sns_root_canister_id: IDL.Text,\n neurons_fund_participation: IDL.Opt(IDL.Bool),\n min_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_basket_construction_parameters: IDL.Opt(\n NeuronBasketConstructionParameters\n ),\n fallback_controller_principal_ids: IDL.Vec(IDL.Text),\n max_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n confirmation_text: IDL.Opt(IDL.Text),\n swap_start_timestamp_seconds: IDL.Opt(IDL.Nat64),\n swap_due_timestamp_seconds: IDL.Opt(IDL.Nat64),\n min_participants: IDL.Opt(IDL.Nat32),\n sns_token_e8s: IDL.Opt(IDL.Nat64),\n nns_governance_canister_id: IDL.Text,\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n icp_ledger_canister_id: IDL.Text,\n sns_ledger_canister_id: IDL.Text,\n neurons_fund_participation_constraints: IDL.Opt(\n NeuronsFundParticipationConstraints\n ),\n neurons_fund_participants: IDL.Opt(NeuronsFundParticipants),\n should_auto_finalize: IDL.Opt(IDL.Bool),\n max_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n sns_governance_canister_id: IDL.Text,\n min_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n restricted_countries: IDL.Opt(Countries),\n min_icp_e8s: IDL.Opt(IDL.Nat64),\n max_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const ErrorRefundIcpRequest = IDL.Record({\n source_principal_id: IDL.Opt(IDL.Principal),\n });\n const Ok = IDL.Record({ block_height: IDL.Opt(IDL.Nat64) });\n const Err = IDL.Record({\n description: IDL.Opt(IDL.Text),\n error_type: IDL.Opt(IDL.Int32),\n });\n const Result = IDL.Variant({ Ok: Ok, Err: Err });\n const ErrorRefundIcpResponse = IDL.Record({ result: IDL.Opt(Result) });\n const CanisterCallError = IDL.Record({\n code: IDL.Opt(IDL.Int32),\n description: IDL.Text,\n });\n const FailedUpdate = IDL.Record({\n err: IDL.Opt(CanisterCallError),\n dapp_canister_id: IDL.Opt(IDL.Principal),\n });\n const SetDappControllersResponse = IDL.Record({\n failed_updates: IDL.Vec(FailedUpdate),\n });\n const Possibility = IDL.Variant({\n Ok: SetDappControllersResponse,\n Err: CanisterCallError,\n });\n const SetDappControllersCallResult = IDL.Record({\n possibility: IDL.Opt(Possibility),\n });\n const SweepResult = IDL.Record({\n failure: IDL.Nat32,\n skipped: IDL.Nat32,\n invalid: IDL.Nat32,\n success: IDL.Nat32,\n global_failures: IDL.Nat32,\n });\n const GovernanceError = IDL.Record({\n error_message: IDL.Text,\n error_type: IDL.Int32,\n });\n const Response = IDL.Record({\n governance_error: IDL.Opt(GovernanceError),\n });\n const Possibility_1 = IDL.Variant({\n Ok: Response,\n Err: CanisterCallError,\n });\n const SettleCommunityFundParticipationResult = IDL.Record({\n possibility: IDL.Opt(Possibility_1),\n });\n const Ok_1 = IDL.Record({\n neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n neurons_fund_neurons_count: IDL.Opt(IDL.Nat64),\n });\n const Error = IDL.Record({ message: IDL.Opt(IDL.Text) });\n const Possibility_2 = IDL.Variant({ Ok: Ok_1, Err: Error });\n const SettleNeuronsFundParticipationResult = IDL.Record({\n possibility: IDL.Opt(Possibility_2),\n });\n const Possibility_3 = IDL.Variant({\n Ok: IDL.Record({}),\n Err: CanisterCallError,\n });\n const SetModeCallResult = IDL.Record({\n possibility: IDL.Opt(Possibility_3),\n });\n const FinalizeSwapResponse = IDL.Record({\n set_dapp_controllers_call_result: IDL.Opt(SetDappControllersCallResult),\n create_sns_neuron_recipes_result: IDL.Opt(SweepResult),\n settle_community_fund_participation_result: IDL.Opt(\n SettleCommunityFundParticipationResult\n ),\n error_message: IDL.Opt(IDL.Text),\n settle_neurons_fund_participation_result: IDL.Opt(\n SettleNeuronsFundParticipationResult\n ),\n set_mode_call_result: IDL.Opt(SetModeCallResult),\n sweep_icp_result: IDL.Opt(SweepResult),\n claim_neuron_result: IDL.Opt(SweepResult),\n sweep_sns_result: IDL.Opt(SweepResult),\n });\n const GetAutoFinalizationStatusResponse = IDL.Record({\n auto_finalize_swap_response: IDL.Opt(FinalizeSwapResponse),\n has_auto_finalize_been_attempted: IDL.Opt(IDL.Bool),\n is_auto_finalize_enabled: IDL.Opt(IDL.Bool),\n });\n const GetBuyerStateRequest = IDL.Record({\n principal_id: IDL.Opt(IDL.Principal),\n });\n const TransferableAmount = IDL.Record({\n transfer_fee_paid_e8s: IDL.Opt(IDL.Nat64),\n transfer_start_timestamp_seconds: IDL.Nat64,\n amount_e8s: IDL.Nat64,\n amount_transferred_e8s: IDL.Opt(IDL.Nat64),\n transfer_success_timestamp_seconds: IDL.Nat64,\n });\n const BuyerState = IDL.Record({\n icp: IDL.Opt(TransferableAmount),\n has_created_neuron_recipes: IDL.Opt(IDL.Bool),\n });\n const GetBuyerStateResponse = IDL.Record({\n buyer_state: IDL.Opt(BuyerState),\n });\n const GetBuyersTotalResponse = IDL.Record({ buyers_total: IDL.Nat64 });\n const CanisterStatusType = IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n });\n const DefiniteCanisterSettingsArgs = IDL.Record({\n freezing_threshold: IDL.Nat,\n controllers: IDL.Vec(IDL.Principal),\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const CanisterStatusResultV2 = IDL.Record({\n status: CanisterStatusType,\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: DefiniteCanisterSettingsArgs,\n idle_cycles_burned_per_day: IDL.Nat,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const GetDerivedStateResponse = IDL.Record({\n sns_tokens_per_icp: IDL.Opt(IDL.Float64),\n buyer_total_icp_e8s: IDL.Opt(IDL.Nat64),\n cf_participant_count: IDL.Opt(IDL.Nat64),\n neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n direct_participant_count: IDL.Opt(IDL.Nat64),\n cf_neuron_count: IDL.Opt(IDL.Nat64),\n });\n const GetInitResponse = IDL.Record({ init: IDL.Opt(Init) });\n const GetLifecycleResponse = IDL.Record({\n decentralization_sale_open_timestamp_seconds: IDL.Opt(IDL.Nat64),\n lifecycle: IDL.Opt(IDL.Int32),\n decentralization_swap_termination_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const Icrc1Account = IDL.Record({\n owner: IDL.Opt(IDL.Principal),\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const Ticket = IDL.Record({\n creation_time: IDL.Nat64,\n ticket_id: IDL.Nat64,\n account: IDL.Opt(Icrc1Account),\n amount_icp_e8s: IDL.Nat64,\n });\n const Ok_2 = IDL.Record({ ticket: IDL.Opt(Ticket) });\n const Err_1 = IDL.Record({ error_type: IDL.Opt(IDL.Int32) });\n const Result_1 = IDL.Variant({ Ok: Ok_2, Err: Err_1 });\n const GetOpenTicketResponse = IDL.Record({ result: IDL.Opt(Result_1) });\n const Params = IDL.Record({\n min_participant_icp_e8s: IDL.Nat64,\n neuron_basket_construction_parameters: IDL.Opt(\n NeuronBasketConstructionParameters\n ),\n max_icp_e8s: IDL.Nat64,\n swap_due_timestamp_seconds: IDL.Nat64,\n min_participants: IDL.Nat32,\n sns_token_e8s: IDL.Nat64,\n sale_delay_seconds: IDL.Opt(IDL.Nat64),\n max_participant_icp_e8s: IDL.Nat64,\n min_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n min_icp_e8s: IDL.Nat64,\n max_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const GetSaleParametersResponse = IDL.Record({ params: IDL.Opt(Params) });\n const NeuronId = IDL.Record({ id: IDL.Vec(IDL.Nat8) });\n const NeuronAttributes = IDL.Record({\n dissolve_delay_seconds: IDL.Nat64,\n memo: IDL.Nat64,\n followees: IDL.Vec(NeuronId),\n });\n const CfInvestment = IDL.Record({\n hotkey_principal: IDL.Text,\n nns_neuron_id: IDL.Nat64,\n });\n const DirectInvestment = IDL.Record({ buyer_principal: IDL.Text });\n const Investor = IDL.Variant({\n CommunityFund: CfInvestment,\n Direct: DirectInvestment,\n });\n const SnsNeuronRecipe = IDL.Record({\n sns: IDL.Opt(TransferableAmount),\n claimed_status: IDL.Opt(IDL.Int32),\n neuron_attributes: IDL.Opt(NeuronAttributes),\n investor: IDL.Opt(Investor),\n });\n const Swap = IDL.Record({\n auto_finalize_swap_response: IDL.Opt(FinalizeSwapResponse),\n neuron_recipes: IDL.Vec(SnsNeuronRecipe),\n next_ticket_id: IDL.Opt(IDL.Nat64),\n decentralization_sale_open_timestamp_seconds: IDL.Opt(IDL.Nat64),\n finalize_swap_in_progress: IDL.Opt(IDL.Bool),\n cf_participants: IDL.Vec(CfParticipant),\n init: IDL.Opt(Init),\n already_tried_to_auto_finalize: IDL.Opt(IDL.Bool),\n neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n purge_old_tickets_last_completion_timestamp_nanoseconds: IDL.Opt(IDL.Nat64),\n direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n lifecycle: IDL.Int32,\n purge_old_tickets_next_principal: IDL.Opt(IDL.Vec(IDL.Nat8)),\n decentralization_swap_termination_timestamp_seconds: IDL.Opt(IDL.Nat64),\n buyers: IDL.Vec(IDL.Tuple(IDL.Text, BuyerState)),\n params: IDL.Opt(Params),\n open_sns_token_swap_proposal_id: IDL.Opt(IDL.Nat64),\n });\n const DerivedState = IDL.Record({\n sns_tokens_per_icp: IDL.Float32,\n buyer_total_icp_e8s: IDL.Nat64,\n cf_participant_count: IDL.Opt(IDL.Nat64),\n neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n direct_participant_count: IDL.Opt(IDL.Nat64),\n cf_neuron_count: IDL.Opt(IDL.Nat64),\n });\n const GetStateResponse = IDL.Record({\n swap: IDL.Opt(Swap),\n derived: IDL.Opt(DerivedState),\n });\n const ListCommunityFundParticipantsRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat64),\n limit: IDL.Opt(IDL.Nat32),\n });\n const ListDirectParticipantsRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat32),\n limit: IDL.Opt(IDL.Nat32),\n });\n const Participant = IDL.Record({\n participation: IDL.Opt(BuyerState),\n participant_id: IDL.Opt(IDL.Principal),\n });\n const ListDirectParticipantsResponse = IDL.Record({\n participants: IDL.Vec(Participant),\n });\n const ListSnsNeuronRecipesRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat64),\n limit: IDL.Opt(IDL.Nat32),\n });\n const ListSnsNeuronRecipesResponse = IDL.Record({\n sns_neuron_recipes: IDL.Vec(SnsNeuronRecipe),\n });\n const NewSaleTicketRequest = IDL.Record({\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n amount_icp_e8s: IDL.Nat64,\n });\n const InvalidUserAmount = IDL.Record({\n min_amount_icp_e8s_included: IDL.Nat64,\n max_amount_icp_e8s_included: IDL.Nat64,\n });\n const Err_2 = IDL.Record({\n invalid_user_amount: IDL.Opt(InvalidUserAmount),\n existing_ticket: IDL.Opt(Ticket),\n error_type: IDL.Int32,\n });\n const Result_2 = IDL.Variant({ Ok: Ok_2, Err: Err_2 });\n const NewSaleTicketResponse = IDL.Record({ result: IDL.Opt(Result_2) });\n const OpenRequest = IDL.Record({\n cf_participants: IDL.Vec(CfParticipant),\n params: IDL.Opt(Params),\n open_sns_token_swap_proposal_id: IDL.Opt(IDL.Nat64),\n });\n const RefreshBuyerTokensRequest = IDL.Record({\n confirmation_text: IDL.Opt(IDL.Text),\n buyer: IDL.Text,\n });\n const RefreshBuyerTokensResponse = IDL.Record({\n icp_accepted_participation_e8s: IDL.Nat64,\n icp_ledger_account_balance_e8s: IDL.Nat64,\n });\n return IDL.Service({\n error_refund_icp: IDL.Func(\n [ErrorRefundIcpRequest],\n [ErrorRefundIcpResponse],\n []\n ),\n finalize_swap: IDL.Func([IDL.Record({})], [FinalizeSwapResponse], []),\n get_auto_finalization_status: IDL.Func(\n [IDL.Record({})],\n [GetAutoFinalizationStatusResponse],\n [\"query\"]\n ),\n get_buyer_state: IDL.Func(\n [GetBuyerStateRequest],\n [GetBuyerStateResponse],\n [\"query\"]\n ),\n get_buyers_total: IDL.Func([IDL.Record({})], [GetBuyersTotalResponse], []),\n get_canister_status: IDL.Func(\n [IDL.Record({})],\n [CanisterStatusResultV2],\n []\n ),\n get_derived_state: IDL.Func(\n [IDL.Record({})],\n [GetDerivedStateResponse],\n [\"query\"]\n ),\n get_init: IDL.Func([IDL.Record({})], [GetInitResponse], [\"query\"]),\n get_lifecycle: IDL.Func(\n [IDL.Record({})],\n [GetLifecycleResponse],\n [\"query\"]\n ),\n get_open_ticket: IDL.Func(\n [IDL.Record({})],\n [GetOpenTicketResponse],\n [\"query\"]\n ),\n get_sale_parameters: IDL.Func(\n [IDL.Record({})],\n [GetSaleParametersResponse],\n [\"query\"]\n ),\n get_state: IDL.Func([IDL.Record({})], [GetStateResponse], [\"query\"]),\n list_community_fund_participants: IDL.Func(\n [ListCommunityFundParticipantsRequest],\n [NeuronsFundParticipants],\n [\"query\"]\n ),\n list_direct_participants: IDL.Func(\n [ListDirectParticipantsRequest],\n [ListDirectParticipantsResponse],\n [\"query\"]\n ),\n list_sns_neuron_recipes: IDL.Func(\n [ListSnsNeuronRecipesRequest],\n [ListSnsNeuronRecipesResponse],\n [\"query\"]\n ),\n new_sale_ticket: IDL.Func(\n [NewSaleTicketRequest],\n [NewSaleTicketResponse],\n []\n ),\n notify_payment_failure: IDL.Func([IDL.Record({})], [Ok_2], []),\n open: IDL.Func([OpenRequest], [IDL.Record({})], []),\n refresh_buyer_tokens: IDL.Func(\n [RefreshBuyerTokensRequest],\n [RefreshBuyerTokensResponse],\n []\n ),\n restore_dapp_controllers: IDL.Func(\n [IDL.Record({})],\n [SetDappControllersCallResult],\n []\n ),\n });\n};\nexport const init = ({ IDL }: any) => {\n const NeuronBasketConstructionParameters = IDL.Record({\n dissolve_delay_interval_seconds: IDL.Nat64,\n count: IDL.Nat64,\n });\n const LinearScalingCoefficient = IDL.Record({\n slope_numerator: IDL.Opt(IDL.Nat64),\n intercept_icp_e8s: IDL.Opt(IDL.Nat64),\n from_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n slope_denominator: IDL.Opt(IDL.Nat64),\n to_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const IdealMatchedParticipationFunction = IDL.Record({\n serialized_representation: IDL.Opt(IDL.Text),\n });\n const NeuronsFundParticipationConstraints = IDL.Record({\n coefficient_intervals: IDL.Vec(LinearScalingCoefficient),\n max_neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n min_direct_participation_threshold_icp_e8s: IDL.Opt(IDL.Nat64),\n ideal_matched_participation_function: IDL.Opt(\n IdealMatchedParticipationFunction\n ),\n });\n const CfNeuron = IDL.Record({\n has_created_neuron_recipes: IDL.Opt(IDL.Bool),\n nns_neuron_id: IDL.Nat64,\n amount_icp_e8s: IDL.Nat64,\n });\n const CfParticipant = IDL.Record({\n hotkey_principal: IDL.Text,\n cf_neurons: IDL.Vec(CfNeuron),\n });\n const NeuronsFundParticipants = IDL.Record({\n cf_participants: IDL.Vec(CfParticipant),\n });\n const Countries = IDL.Record({ iso_codes: IDL.Vec(IDL.Text) });\n const Init = IDL.Record({\n nns_proposal_id: IDL.Opt(IDL.Nat64),\n sns_root_canister_id: IDL.Text,\n neurons_fund_participation: IDL.Opt(IDL.Bool),\n min_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_basket_construction_parameters: IDL.Opt(\n NeuronBasketConstructionParameters\n ),\n fallback_controller_principal_ids: IDL.Vec(IDL.Text),\n max_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n confirmation_text: IDL.Opt(IDL.Text),\n swap_start_timestamp_seconds: IDL.Opt(IDL.Nat64),\n swap_due_timestamp_seconds: IDL.Opt(IDL.Nat64),\n min_participants: IDL.Opt(IDL.Nat32),\n sns_token_e8s: IDL.Opt(IDL.Nat64),\n nns_governance_canister_id: IDL.Text,\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n icp_ledger_canister_id: IDL.Text,\n sns_ledger_canister_id: IDL.Text,\n neurons_fund_participation_constraints: IDL.Opt(\n NeuronsFundParticipationConstraints\n ),\n neurons_fund_participants: IDL.Opt(NeuronsFundParticipants),\n should_auto_finalize: IDL.Opt(IDL.Bool),\n max_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n sns_governance_canister_id: IDL.Text,\n min_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n restricted_countries: IDL.Opt(Countries),\n min_icp_e8s: IDL.Opt(IDL.Nat64),\n max_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n return [Init];\n};\n","import { SNS_SWAP_SERVICE, SNS_SWAP_INTERFACE_FACTORY } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const sns_swap = async (canisterId: string, identity?: true) =>\n actor.create({\n canisterId,\n idlFactory: SNS_SWAP_INTERFACE_FACTORY,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Timers = IDL.Record({\n last_spawned_timestamp_seconds: IDL.Opt(IDL.Nat64),\n last_reset_timestamp_seconds: IDL.Opt(IDL.Nat64),\n requires_periodic_tasks: IDL.Opt(IDL.Bool),\n });\n const Version = IDL.Record({\n archive_wasm_hash: IDL.Vec(IDL.Nat8),\n root_wasm_hash: IDL.Vec(IDL.Nat8),\n swap_wasm_hash: IDL.Vec(IDL.Nat8),\n ledger_wasm_hash: IDL.Vec(IDL.Nat8),\n governance_wasm_hash: IDL.Vec(IDL.Nat8),\n index_wasm_hash: IDL.Vec(IDL.Nat8),\n });\n const Versions = IDL.Record({ versions: IDL.Vec(Version) });\n const CachedUpgradeSteps = IDL.Record({\n upgrade_steps: IDL.Opt(Versions),\n response_timestamp_seconds: IDL.Opt(IDL.Nat64),\n requested_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const Topic = IDL.Variant({\n DappCanisterManagement: IDL.Null,\n DaoCommunitySettings: IDL.Null,\n ApplicationBusinessLogic: IDL.Null,\n CriticalDappOperations: IDL.Null,\n TreasuryAssetManagement: IDL.Null,\n Governance: IDL.Null,\n SnsFrameworkManagement: IDL.Null,\n });\n const GenericNervousSystemFunction = IDL.Record({\n topic: IDL.Opt(Topic),\n validator_canister_id: IDL.Opt(IDL.Principal),\n target_canister_id: IDL.Opt(IDL.Principal),\n validator_method_name: IDL.Opt(IDL.Text),\n target_method_name: IDL.Opt(IDL.Text),\n });\n const FunctionType = IDL.Variant({\n NativeNervousSystemFunction: IDL.Record({}),\n GenericNervousSystemFunction: GenericNervousSystemFunction,\n });\n const NervousSystemFunction = IDL.Record({\n id: IDL.Nat64,\n name: IDL.Text,\n description: IDL.Opt(IDL.Text),\n function_type: IDL.Opt(FunctionType),\n });\n const GovernanceCachedMetrics = IDL.Record({\n not_dissolving_neurons_e8s_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Float64)),\n garbage_collectable_neurons_count: IDL.Nat64,\n neurons_with_invalid_stake_count: IDL.Nat64,\n not_dissolving_neurons_count_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n neurons_with_less_than_6_months_dissolve_delay_count: IDL.Nat64,\n dissolved_neurons_count: IDL.Nat64,\n total_staked_e8s: IDL.Nat64,\n total_supply_governance_tokens: IDL.Nat64,\n not_dissolving_neurons_count: IDL.Nat64,\n dissolved_neurons_e8s: IDL.Nat64,\n neurons_with_less_than_6_months_dissolve_delay_e8s: IDL.Nat64,\n dissolving_neurons_count_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n dissolving_neurons_count: IDL.Nat64,\n dissolving_neurons_e8s_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Float64)),\n timestamp_seconds: IDL.Nat64,\n });\n const MaturityModulation = IDL.Record({\n current_basis_points: IDL.Opt(IDL.Int32),\n updated_at_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const TargetVersionSet = IDL.Record({\n old_target_version: IDL.Opt(Version),\n new_target_version: IDL.Opt(Version),\n is_advanced_automatically: IDL.Opt(IDL.Bool),\n });\n const UpgradeStepsReset = IDL.Record({\n human_readable: IDL.Opt(IDL.Text),\n upgrade_steps: IDL.Opt(Versions),\n });\n const UpgradeOutcome = IDL.Record({\n status: IDL.Opt(\n IDL.Variant({\n Success: IDL.Record({}),\n Timeout: IDL.Record({}),\n ExternalFailure: IDL.Record({}),\n InvalidState: IDL.Record({ version: IDL.Opt(Version) }),\n }),\n ),\n human_readable: IDL.Opt(IDL.Text),\n });\n const ProposalId = IDL.Record({ id: IDL.Nat64 });\n const UpgradeStarted = IDL.Record({\n current_version: IDL.Opt(Version),\n expected_version: IDL.Opt(Version),\n reason: IDL.Opt(\n IDL.Variant({\n UpgradeSnsToNextVersionProposal: ProposalId,\n BehindTargetVersion: IDL.Record({}),\n }),\n ),\n });\n const UpgradeStepsRefreshed = IDL.Record({\n upgrade_steps: IDL.Opt(Versions),\n });\n const TargetVersionReset = IDL.Record({\n human_readable: IDL.Opt(IDL.Text),\n old_target_version: IDL.Opt(Version),\n new_target_version: IDL.Opt(Version),\n });\n const UpgradeJournalEntry = IDL.Record({\n event: IDL.Opt(\n IDL.Variant({\n TargetVersionSet: TargetVersionSet,\n UpgradeStepsReset: UpgradeStepsReset,\n UpgradeOutcome: UpgradeOutcome,\n UpgradeStarted: UpgradeStarted,\n UpgradeStepsRefreshed: UpgradeStepsRefreshed,\n TargetVersionReset: TargetVersionReset,\n }),\n ),\n timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const UpgradeJournal = IDL.Record({\n entries: IDL.Vec(UpgradeJournalEntry),\n });\n const NeuronId = IDL.Record({ id: IDL.Vec(IDL.Nat8) });\n const Followees = IDL.Record({ followees: IDL.Vec(NeuronId) });\n const DefaultFollowees = IDL.Record({\n followees: IDL.Vec(IDL.Tuple(IDL.Nat64, Followees)),\n });\n const NeuronPermissionList = IDL.Record({\n permissions: IDL.Vec(IDL.Int32),\n });\n const VotingRewardsParameters = IDL.Record({\n final_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n initial_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n reward_rate_transition_duration_seconds: IDL.Opt(IDL.Nat64),\n round_duration_seconds: IDL.Opt(IDL.Nat64),\n });\n const NervousSystemParameters = IDL.Record({\n default_followees: IDL.Opt(DefaultFollowees),\n max_dissolve_delay_seconds: IDL.Opt(IDL.Nat64),\n max_dissolve_delay_bonus_percentage: IDL.Opt(IDL.Nat64),\n max_followees_per_function: IDL.Opt(IDL.Nat64),\n automatically_advance_target_version: IDL.Opt(IDL.Bool),\n neuron_claimer_permissions: IDL.Opt(NeuronPermissionList),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n max_neuron_age_for_age_bonus: IDL.Opt(IDL.Nat64),\n initial_voting_period_seconds: IDL.Opt(IDL.Nat64),\n neuron_minimum_dissolve_delay_to_vote_seconds: IDL.Opt(IDL.Nat64),\n reject_cost_e8s: IDL.Opt(IDL.Nat64),\n max_proposals_to_keep_per_action: IDL.Opt(IDL.Nat32),\n wait_for_quiet_deadline_increase_seconds: IDL.Opt(IDL.Nat64),\n max_number_of_neurons: IDL.Opt(IDL.Nat64),\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n max_number_of_proposals_with_ballots: IDL.Opt(IDL.Nat64),\n max_age_bonus_percentage: IDL.Opt(IDL.Nat64),\n neuron_grantable_permissions: IDL.Opt(NeuronPermissionList),\n voting_rewards_parameters: IDL.Opt(VotingRewardsParameters),\n maturity_modulation_disabled: IDL.Opt(IDL.Bool),\n max_number_of_principals_per_neuron: IDL.Opt(IDL.Nat64),\n });\n const RewardEvent = IDL.Record({\n rounds_since_last_distribution: IDL.Opt(IDL.Nat64),\n actual_timestamp_seconds: IDL.Nat64,\n end_timestamp_seconds: IDL.Opt(IDL.Nat64),\n total_available_e8s_equivalent: IDL.Opt(IDL.Nat64),\n distributed_e8s_equivalent: IDL.Nat64,\n round: IDL.Nat64,\n settled_proposals: IDL.Vec(ProposalId),\n });\n const PendingVersion = IDL.Record({\n mark_failed_at_seconds: IDL.Nat64,\n checking_upgrade_lock: IDL.Nat64,\n proposal_id: IDL.Opt(IDL.Nat64),\n target_version: IDL.Opt(Version),\n });\n const GovernanceError = IDL.Record({\n error_message: IDL.Text,\n error_type: IDL.Int32,\n });\n const Subaccount = IDL.Record({ subaccount: IDL.Vec(IDL.Nat8) });\n const Account = IDL.Record({\n owner: IDL.Opt(IDL.Principal),\n subaccount: IDL.Opt(Subaccount),\n });\n const Decimal = IDL.Record({ human_readable: IDL.Opt(IDL.Text) });\n const Tokens = IDL.Record({ e8s: IDL.Opt(IDL.Nat64) });\n const ValuationFactors = IDL.Record({\n xdrs_per_icp: IDL.Opt(Decimal),\n icps_per_token: IDL.Opt(Decimal),\n tokens: IDL.Opt(Tokens),\n });\n const Valuation = IDL.Record({\n token: IDL.Opt(IDL.Int32),\n account: IDL.Opt(Account),\n valuation_factors: IDL.Opt(ValuationFactors),\n timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const MintSnsTokensActionAuxiliary = IDL.Record({\n valuation: IDL.Opt(Valuation),\n });\n const SnsVersion = IDL.Record({\n archive_wasm_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n root_wasm_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n swap_wasm_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n ledger_wasm_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n governance_wasm_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n index_wasm_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const AdvanceSnsTargetVersionActionAuxiliary = IDL.Record({\n target_version: IDL.Opt(SnsVersion),\n });\n const ActionAuxiliary = IDL.Variant({\n TransferSnsTreasuryFunds: MintSnsTokensActionAuxiliary,\n MintSnsTokens: MintSnsTokensActionAuxiliary,\n AdvanceSnsTargetVersion: AdvanceSnsTargetVersionActionAuxiliary,\n });\n const Ballot = IDL.Record({\n vote: IDL.Int32,\n cast_timestamp_seconds: IDL.Nat64,\n voting_power: IDL.Nat64,\n });\n const Percentage = IDL.Record({ basis_points: IDL.Opt(IDL.Nat64) });\n const Tally = IDL.Record({\n no: IDL.Nat64,\n yes: IDL.Nat64,\n total: IDL.Nat64,\n timestamp_seconds: IDL.Nat64,\n });\n const ManageDappCanisterSettings = IDL.Record({\n freezing_threshold: IDL.Opt(IDL.Nat64),\n wasm_memory_threshold: IDL.Opt(IDL.Nat64),\n canister_ids: IDL.Vec(IDL.Principal),\n reserved_cycles_limit: IDL.Opt(IDL.Nat64),\n log_visibility: IDL.Opt(IDL.Int32),\n wasm_memory_limit: IDL.Opt(IDL.Nat64),\n memory_allocation: IDL.Opt(IDL.Nat64),\n compute_allocation: IDL.Opt(IDL.Nat64),\n });\n const SetTopicsForCustomProposals = IDL.Record({\n custom_function_id_to_topic: IDL.Vec(IDL.Tuple(IDL.Nat64, Topic)),\n });\n const RegisterDappCanisters = IDL.Record({\n canister_ids: IDL.Vec(IDL.Principal),\n });\n const TransferSnsTreasuryFunds = IDL.Record({\n from_treasury: IDL.Int32,\n to_principal: IDL.Opt(IDL.Principal),\n to_subaccount: IDL.Opt(Subaccount),\n memo: IDL.Opt(IDL.Nat64),\n amount_e8s: IDL.Nat64,\n });\n const ChunkedCanisterWasm = IDL.Record({\n wasm_module_hash: IDL.Vec(IDL.Nat8),\n chunk_hashes_list: IDL.Vec(IDL.Vec(IDL.Nat8)),\n store_canister_id: IDL.Opt(IDL.Principal),\n });\n const UpgradeSnsControlledCanister = IDL.Record({\n new_canister_wasm: IDL.Vec(IDL.Nat8),\n mode: IDL.Opt(IDL.Int32),\n canister_id: IDL.Opt(IDL.Principal),\n chunked_canister_wasm: IDL.Opt(ChunkedCanisterWasm),\n canister_upgrade_arg: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const DeregisterDappCanisters = IDL.Record({\n canister_ids: IDL.Vec(IDL.Principal),\n new_controllers: IDL.Vec(IDL.Principal),\n });\n const MintSnsTokens = IDL.Record({\n to_principal: IDL.Opt(IDL.Principal),\n to_subaccount: IDL.Opt(Subaccount),\n memo: IDL.Opt(IDL.Nat64),\n amount_e8s: IDL.Opt(IDL.Nat64),\n });\n const AdvanceSnsTargetVersion = IDL.Record({\n new_target: IDL.Opt(SnsVersion),\n });\n const ManageSnsMetadata = IDL.Record({\n url: IDL.Opt(IDL.Text),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n description: IDL.Opt(IDL.Text),\n });\n const ExecuteGenericNervousSystemFunction = IDL.Record({\n function_id: IDL.Nat64,\n payload: IDL.Vec(IDL.Nat8),\n });\n const ManageLedgerParameters = IDL.Record({\n token_symbol: IDL.Opt(IDL.Text),\n transfer_fee: IDL.Opt(IDL.Nat64),\n token_logo: IDL.Opt(IDL.Text),\n token_name: IDL.Opt(IDL.Text),\n });\n const Motion = IDL.Record({ motion_text: IDL.Text });\n const Action = IDL.Variant({\n ManageNervousSystemParameters: NervousSystemParameters,\n AddGenericNervousSystemFunction: NervousSystemFunction,\n ManageDappCanisterSettings: ManageDappCanisterSettings,\n RemoveGenericNervousSystemFunction: IDL.Nat64,\n SetTopicsForCustomProposals: SetTopicsForCustomProposals,\n UpgradeSnsToNextVersion: IDL.Record({}),\n RegisterDappCanisters: RegisterDappCanisters,\n TransferSnsTreasuryFunds: TransferSnsTreasuryFunds,\n UpgradeSnsControlledCanister: UpgradeSnsControlledCanister,\n DeregisterDappCanisters: DeregisterDappCanisters,\n MintSnsTokens: MintSnsTokens,\n AdvanceSnsTargetVersion: AdvanceSnsTargetVersion,\n Unspecified: IDL.Record({}),\n ManageSnsMetadata: ManageSnsMetadata,\n ExecuteGenericNervousSystemFunction: ExecuteGenericNervousSystemFunction,\n ManageLedgerParameters: ManageLedgerParameters,\n Motion: Motion,\n });\n const Proposal = IDL.Record({\n url: IDL.Text,\n title: IDL.Text,\n action: IDL.Opt(Action),\n summary: IDL.Text,\n });\n const WaitForQuietState = IDL.Record({\n current_deadline_timestamp_seconds: IDL.Nat64,\n });\n const ProposalData = IDL.Record({\n id: IDL.Opt(ProposalId),\n payload_text_rendering: IDL.Opt(IDL.Text),\n topic: IDL.Opt(Topic),\n action: IDL.Nat64,\n failure_reason: IDL.Opt(GovernanceError),\n action_auxiliary: IDL.Opt(ActionAuxiliary),\n ballots: IDL.Vec(IDL.Tuple(IDL.Text, Ballot)),\n minimum_yes_proportion_of_total: IDL.Opt(Percentage),\n reward_event_round: IDL.Nat64,\n failed_timestamp_seconds: IDL.Nat64,\n reward_event_end_timestamp_seconds: IDL.Opt(IDL.Nat64),\n proposal_creation_timestamp_seconds: IDL.Nat64,\n initial_voting_period_seconds: IDL.Nat64,\n reject_cost_e8s: IDL.Nat64,\n latest_tally: IDL.Opt(Tally),\n wait_for_quiet_deadline_increase_seconds: IDL.Nat64,\n decided_timestamp_seconds: IDL.Nat64,\n proposal: IDL.Opt(Proposal),\n proposer: IDL.Opt(NeuronId),\n wait_for_quiet_state: IDL.Opt(WaitForQuietState),\n minimum_yes_proportion_of_exercised: IDL.Opt(Percentage),\n is_eligible_for_rewards: IDL.Bool,\n executed_timestamp_seconds: IDL.Nat64,\n });\n const Split = IDL.Record({ memo: IDL.Nat64, amount_e8s: IDL.Nat64 });\n const Follow = IDL.Record({\n function_id: IDL.Nat64,\n followees: IDL.Vec(NeuronId),\n });\n const DisburseMaturity = IDL.Record({\n to_account: IDL.Opt(Account),\n percentage_to_disburse: IDL.Nat32,\n });\n const ChangeAutoStakeMaturity = IDL.Record({\n requested_setting_for_auto_stake_maturity: IDL.Bool,\n });\n const IncreaseDissolveDelay = IDL.Record({\n additional_dissolve_delay_seconds: IDL.Nat32,\n });\n const SetDissolveTimestamp = IDL.Record({\n dissolve_timestamp_seconds: IDL.Nat64,\n });\n const Operation = IDL.Variant({\n ChangeAutoStakeMaturity: ChangeAutoStakeMaturity,\n StopDissolving: IDL.Record({}),\n StartDissolving: IDL.Record({}),\n IncreaseDissolveDelay: IncreaseDissolveDelay,\n SetDissolveTimestamp: SetDissolveTimestamp,\n });\n const Configure = IDL.Record({ operation: IDL.Opt(Operation) });\n const RegisterVote = IDL.Record({\n vote: IDL.Int32,\n proposal: IDL.Opt(ProposalId),\n });\n const FinalizeDisburseMaturity = IDL.Record({\n amount_to_be_disbursed_e8s: IDL.Nat64,\n to_account: IDL.Opt(Account),\n });\n const MemoAndController = IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n memo: IDL.Nat64,\n });\n const By = IDL.Variant({\n MemoAndController: MemoAndController,\n NeuronId: IDL.Record({}),\n });\n const ClaimOrRefresh = IDL.Record({ by: IDL.Opt(By) });\n const RemoveNeuronPermissions = IDL.Record({\n permissions_to_remove: IDL.Opt(NeuronPermissionList),\n principal_id: IDL.Opt(IDL.Principal),\n });\n const AddNeuronPermissions = IDL.Record({\n permissions_to_add: IDL.Opt(NeuronPermissionList),\n principal_id: IDL.Opt(IDL.Principal),\n });\n const MergeMaturity = IDL.Record({ percentage_to_merge: IDL.Nat32 });\n const Amount = IDL.Record({ e8s: IDL.Nat64 });\n const Disburse = IDL.Record({\n to_account: IDL.Opt(Account),\n amount: IDL.Opt(Amount),\n });\n const Command_2 = IDL.Variant({\n Split: Split,\n Follow: Follow,\n DisburseMaturity: DisburseMaturity,\n Configure: Configure,\n RegisterVote: RegisterVote,\n SyncCommand: IDL.Record({}),\n MakeProposal: Proposal,\n FinalizeDisburseMaturity: FinalizeDisburseMaturity,\n ClaimOrRefreshNeuron: ClaimOrRefresh,\n RemoveNeuronPermissions: RemoveNeuronPermissions,\n AddNeuronPermissions: AddNeuronPermissions,\n MergeMaturity: MergeMaturity,\n Disburse: Disburse,\n });\n const NeuronInFlightCommand = IDL.Record({\n command: IDL.Opt(Command_2),\n timestamp: IDL.Nat64,\n });\n const NeuronPermission = IDL.Record({\n principal: IDL.Opt(IDL.Principal),\n permission_type: IDL.Vec(IDL.Int32),\n });\n const DissolveState = IDL.Variant({\n DissolveDelaySeconds: IDL.Nat64,\n WhenDissolvedTimestampSeconds: IDL.Nat64,\n });\n const DisburseMaturityInProgress = IDL.Record({\n timestamp_of_disbursement_seconds: IDL.Nat64,\n amount_e8s: IDL.Nat64,\n account_to_disburse_to: IDL.Opt(Account),\n finalize_disbursement_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const Neuron = IDL.Record({\n id: IDL.Opt(NeuronId),\n staked_maturity_e8s_equivalent: IDL.Opt(IDL.Nat64),\n permissions: IDL.Vec(NeuronPermission),\n maturity_e8s_equivalent: IDL.Nat64,\n cached_neuron_stake_e8s: IDL.Nat64,\n created_timestamp_seconds: IDL.Nat64,\n source_nns_neuron_id: IDL.Opt(IDL.Nat64),\n auto_stake_maturity: IDL.Opt(IDL.Bool),\n aging_since_timestamp_seconds: IDL.Nat64,\n dissolve_state: IDL.Opt(DissolveState),\n voting_power_percentage_multiplier: IDL.Nat64,\n vesting_period_seconds: IDL.Opt(IDL.Nat64),\n disburse_maturity_in_progress: IDL.Vec(DisburseMaturityInProgress),\n followees: IDL.Vec(IDL.Tuple(IDL.Nat64, Followees)),\n neuron_fees_e8s: IDL.Nat64,\n });\n const Governance = IDL.Record({\n root_canister_id: IDL.Opt(IDL.Principal),\n timers: IDL.Opt(Timers),\n cached_upgrade_steps: IDL.Opt(CachedUpgradeSteps),\n id_to_nervous_system_functions: IDL.Vec(IDL.Tuple(IDL.Nat64, NervousSystemFunction)),\n metrics: IDL.Opt(GovernanceCachedMetrics),\n maturity_modulation: IDL.Opt(MaturityModulation),\n upgrade_journal: IDL.Opt(UpgradeJournal),\n mode: IDL.Int32,\n parameters: IDL.Opt(NervousSystemParameters),\n is_finalizing_disburse_maturity: IDL.Opt(IDL.Bool),\n deployed_version: IDL.Opt(Version),\n sns_initialization_parameters: IDL.Text,\n latest_reward_event: IDL.Opt(RewardEvent),\n pending_version: IDL.Opt(PendingVersion),\n swap_canister_id: IDL.Opt(IDL.Principal),\n ledger_canister_id: IDL.Opt(IDL.Principal),\n proposals: IDL.Vec(IDL.Tuple(IDL.Nat64, ProposalData)),\n in_flight_commands: IDL.Vec(IDL.Tuple(IDL.Text, NeuronInFlightCommand)),\n sns_metadata: IDL.Opt(ManageSnsMetadata),\n neurons: IDL.Vec(IDL.Tuple(IDL.Text, Neuron)),\n target_version: IDL.Opt(Version),\n genesis_timestamp_seconds: IDL.Nat64,\n });\n const Principals = IDL.Record({ principals: IDL.Vec(IDL.Principal) });\n const NeuronsFund = IDL.Record({\n nns_neuron_hotkeys: IDL.Opt(Principals),\n nns_neuron_controller: IDL.Opt(IDL.Principal),\n nns_neuron_id: IDL.Opt(IDL.Nat64),\n });\n const Participant = IDL.Variant({\n NeuronsFund: NeuronsFund,\n Direct: IDL.Record({}),\n });\n const NeuronIds = IDL.Record({ neuron_ids: IDL.Vec(NeuronId) });\n const NeuronRecipe = IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n dissolve_delay_seconds: IDL.Opt(IDL.Nat64),\n participant: IDL.Opt(Participant),\n stake_e8s: IDL.Opt(IDL.Nat64),\n followees: IDL.Opt(NeuronIds),\n neuron_id: IDL.Opt(NeuronId),\n });\n const NeuronRecipes = IDL.Record({\n neuron_recipes: IDL.Vec(NeuronRecipe),\n });\n const ClaimSwapNeuronsRequest = IDL.Record({\n neuron_recipes: IDL.Opt(NeuronRecipes),\n });\n const SwapNeuron = IDL.Record({\n id: IDL.Opt(NeuronId),\n status: IDL.Int32,\n });\n const ClaimedSwapNeurons = IDL.Record({\n swap_neurons: IDL.Vec(SwapNeuron),\n });\n const ClaimSwapNeuronsResult = IDL.Variant({\n Ok: ClaimedSwapNeurons,\n Err: IDL.Int32,\n });\n const ClaimSwapNeuronsResponse = IDL.Record({\n claim_swap_neurons_result: IDL.Opt(ClaimSwapNeuronsResult),\n });\n const GetMaturityModulationResponse = IDL.Record({\n maturity_modulation: IDL.Opt(MaturityModulation),\n });\n const GetMetadataResponse = IDL.Record({\n url: IDL.Opt(IDL.Text),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n description: IDL.Opt(IDL.Text),\n });\n const GetModeResponse = IDL.Record({ mode: IDL.Opt(IDL.Int32) });\n const GetNeuron = IDL.Record({ neuron_id: IDL.Opt(NeuronId) });\n const Result = IDL.Variant({ Error: GovernanceError, Neuron: Neuron });\n const GetNeuronResponse = IDL.Record({ result: IDL.Opt(Result) });\n const GetProposal = IDL.Record({ proposal_id: IDL.Opt(ProposalId) });\n const Result_1 = IDL.Variant({\n Error: GovernanceError,\n Proposal: ProposalData,\n });\n const GetProposalResponse = IDL.Record({ result: IDL.Opt(Result_1) });\n const CanisterStatusType = IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n });\n const DefiniteCanisterSettingsArgs = IDL.Record({\n freezing_threshold: IDL.Nat,\n wasm_memory_threshold: IDL.Opt(IDL.Nat),\n controllers: IDL.Vec(IDL.Principal),\n wasm_memory_limit: IDL.Opt(IDL.Nat),\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const QueryStats = IDL.Record({\n response_payload_bytes_total: IDL.Opt(IDL.Nat),\n num_instructions_total: IDL.Opt(IDL.Nat),\n num_calls_total: IDL.Opt(IDL.Nat),\n request_payload_bytes_total: IDL.Opt(IDL.Nat),\n });\n const CanisterStatusResultV2 = IDL.Record({\n status: CanisterStatusType,\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: DefiniteCanisterSettingsArgs,\n query_stats: IDL.Opt(QueryStats),\n idle_cycles_burned_per_day: IDL.Nat,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const GetRunningSnsVersionResponse = IDL.Record({\n deployed_version: IDL.Opt(Version),\n pending_version: IDL.Opt(\n IDL.Record({\n mark_failed_at_seconds: IDL.Nat64,\n checking_upgrade_lock: IDL.Nat64,\n proposal_id: IDL.Nat64,\n target_version: IDL.Opt(Version),\n }),\n ),\n });\n const GetSnsInitializationParametersResponse = IDL.Record({\n sns_initialization_parameters: IDL.Text,\n });\n const GetTimersResponse = IDL.Record({ timers: IDL.Opt(Timers) });\n const GetUpgradeJournalRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat64),\n limit: IDL.Opt(IDL.Nat64),\n });\n const GetUpgradeJournalResponse = IDL.Record({\n upgrade_journal: IDL.Opt(UpgradeJournal),\n upgrade_steps: IDL.Opt(Versions),\n response_timestamp_seconds: IDL.Opt(IDL.Nat64),\n deployed_version: IDL.Opt(Version),\n target_version: IDL.Opt(Version),\n upgrade_journal_entry_count: IDL.Opt(IDL.Nat64),\n });\n const ListNervousSystemFunctionsResponse = IDL.Record({\n reserved_ids: IDL.Vec(IDL.Nat64),\n functions: IDL.Vec(NervousSystemFunction),\n });\n const ListNeurons = IDL.Record({\n of_principal: IDL.Opt(IDL.Principal),\n limit: IDL.Nat32,\n start_page_at: IDL.Opt(NeuronId),\n });\n const ListNeuronsResponse = IDL.Record({ neurons: IDL.Vec(Neuron) });\n const ListProposals = IDL.Record({\n include_reward_status: IDL.Vec(IDL.Int32),\n before_proposal: IDL.Opt(ProposalId),\n limit: IDL.Nat32,\n exclude_type: IDL.Vec(IDL.Nat64),\n include_status: IDL.Vec(IDL.Int32),\n });\n const ListProposalsResponse = IDL.Record({\n include_ballots_by_caller: IDL.Opt(IDL.Bool),\n proposals: IDL.Vec(ProposalData),\n });\n const ListTopicsRequest = IDL.Record({});\n const TopicInfo = IDL.Record({\n native_functions: IDL.Opt(IDL.Vec(NervousSystemFunction)),\n topic: IDL.Opt(Topic),\n is_critical: IDL.Opt(IDL.Bool),\n name: IDL.Opt(IDL.Text),\n description: IDL.Opt(IDL.Text),\n custom_functions: IDL.Opt(IDL.Vec(NervousSystemFunction)),\n });\n const ListTopicsResponse = IDL.Record({\n uncategorized_functions: IDL.Opt(IDL.Vec(NervousSystemFunction)),\n topics: IDL.Opt(IDL.Vec(TopicInfo)),\n });\n const StakeMaturity = IDL.Record({\n percentage_to_stake: IDL.Opt(IDL.Nat32),\n });\n const Command = IDL.Variant({\n Split: Split,\n Follow: Follow,\n DisburseMaturity: DisburseMaturity,\n ClaimOrRefresh: ClaimOrRefresh,\n Configure: Configure,\n RegisterVote: RegisterVote,\n MakeProposal: Proposal,\n StakeMaturity: StakeMaturity,\n RemoveNeuronPermissions: RemoveNeuronPermissions,\n AddNeuronPermissions: AddNeuronPermissions,\n MergeMaturity: MergeMaturity,\n Disburse: Disburse,\n });\n const ManageNeuron = IDL.Record({\n subaccount: IDL.Vec(IDL.Nat8),\n command: IDL.Opt(Command),\n });\n const SplitResponse = IDL.Record({ created_neuron_id: IDL.Opt(NeuronId) });\n const DisburseMaturityResponse = IDL.Record({\n amount_disbursed_e8s: IDL.Nat64,\n amount_deducted_e8s: IDL.Opt(IDL.Nat64),\n });\n const ClaimOrRefreshResponse = IDL.Record({\n refreshed_neuron_id: IDL.Opt(NeuronId),\n });\n const StakeMaturityResponse = IDL.Record({\n maturity_e8s: IDL.Nat64,\n staked_maturity_e8s: IDL.Nat64,\n });\n const MergeMaturityResponse = IDL.Record({\n merged_maturity_e8s: IDL.Nat64,\n new_stake_e8s: IDL.Nat64,\n });\n const DisburseResponse = IDL.Record({ transfer_block_height: IDL.Nat64 });\n const Command_1 = IDL.Variant({\n Error: GovernanceError,\n Split: SplitResponse,\n Follow: IDL.Record({}),\n DisburseMaturity: DisburseMaturityResponse,\n ClaimOrRefresh: ClaimOrRefreshResponse,\n Configure: IDL.Record({}),\n RegisterVote: IDL.Record({}),\n MakeProposal: GetProposal,\n RemoveNeuronPermission: IDL.Record({}),\n StakeMaturity: StakeMaturityResponse,\n MergeMaturity: MergeMaturityResponse,\n Disburse: DisburseResponse,\n AddNeuronPermission: IDL.Record({}),\n });\n const ManageNeuronResponse = IDL.Record({ command: IDL.Opt(Command_1) });\n const SetMode = IDL.Record({ mode: IDL.Int32 });\n return IDL.Service({\n claim_swap_neurons: IDL.Func([ClaimSwapNeuronsRequest], [ClaimSwapNeuronsResponse], []),\n fail_stuck_upgrade_in_progress: IDL.Func([IDL.Record({})], [IDL.Record({})], []),\n get_build_metadata: IDL.Func([], [IDL.Text], [\"query\"]),\n get_latest_reward_event: IDL.Func([], [RewardEvent], [\"query\"]),\n get_maturity_modulation: IDL.Func([IDL.Record({})], [GetMaturityModulationResponse], []),\n get_metadata: IDL.Func([IDL.Record({})], [GetMetadataResponse], [\"query\"]),\n get_mode: IDL.Func([IDL.Record({})], [GetModeResponse], [\"query\"]),\n get_nervous_system_parameters: IDL.Func([IDL.Null], [NervousSystemParameters], [\"query\"]),\n get_neuron: IDL.Func([GetNeuron], [GetNeuronResponse], [\"query\"]),\n get_proposal: IDL.Func([GetProposal], [GetProposalResponse], [\"query\"]),\n get_root_canister_status: IDL.Func([IDL.Null], [CanisterStatusResultV2], []),\n get_running_sns_version: IDL.Func([IDL.Record({})], [GetRunningSnsVersionResponse], [\"query\"]),\n get_sns_initialization_parameters: IDL.Func([IDL.Record({})], [GetSnsInitializationParametersResponse], [\"query\"]),\n get_timers: IDL.Func([IDL.Record({})], [GetTimersResponse], [\"query\"]),\n get_upgrade_journal: IDL.Func([GetUpgradeJournalRequest], [GetUpgradeJournalResponse], [\"query\"]),\n list_nervous_system_functions: IDL.Func([], [ListNervousSystemFunctionsResponse], [\"query\"]),\n list_neurons: IDL.Func([ListNeurons], [ListNeuronsResponse], [\"query\"]),\n list_proposals: IDL.Func([ListProposals], [ListProposalsResponse], [\"query\"]),\n list_topics: IDL.Func([ListTopicsRequest], [ListTopicsResponse], [\"query\"]),\n manage_neuron: IDL.Func([ManageNeuron], [ManageNeuronResponse], []),\n reset_timers: IDL.Func([IDL.Record({})], [IDL.Record({})], []),\n set_mode: IDL.Func([SetMode], [IDL.Record({})], []),\n });\n};\nexport const init = ({ IDL }) => {\n const Timers = IDL.Record({\n last_spawned_timestamp_seconds: IDL.Opt(IDL.Nat64),\n last_reset_timestamp_seconds: IDL.Opt(IDL.Nat64),\n requires_periodic_tasks: IDL.Opt(IDL.Bool),\n });\n const Version = IDL.Record({\n archive_wasm_hash: IDL.Vec(IDL.Nat8),\n root_wasm_hash: IDL.Vec(IDL.Nat8),\n swap_wasm_hash: IDL.Vec(IDL.Nat8),\n ledger_wasm_hash: IDL.Vec(IDL.Nat8),\n governance_wasm_hash: IDL.Vec(IDL.Nat8),\n index_wasm_hash: IDL.Vec(IDL.Nat8),\n });\n const Versions = IDL.Record({ versions: IDL.Vec(Version) });\n const CachedUpgradeSteps = IDL.Record({\n upgrade_steps: IDL.Opt(Versions),\n response_timestamp_seconds: IDL.Opt(IDL.Nat64),\n requested_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const Topic = IDL.Variant({\n DappCanisterManagement: IDL.Null,\n DaoCommunitySettings: IDL.Null,\n ApplicationBusinessLogic: IDL.Null,\n CriticalDappOperations: IDL.Null,\n TreasuryAssetManagement: IDL.Null,\n Governance: IDL.Null,\n SnsFrameworkManagement: IDL.Null,\n });\n const GenericNervousSystemFunction = IDL.Record({\n topic: IDL.Opt(Topic),\n validator_canister_id: IDL.Opt(IDL.Principal),\n target_canister_id: IDL.Opt(IDL.Principal),\n validator_method_name: IDL.Opt(IDL.Text),\n target_method_name: IDL.Opt(IDL.Text),\n });\n const FunctionType = IDL.Variant({\n NativeNervousSystemFunction: IDL.Record({}),\n GenericNervousSystemFunction: GenericNervousSystemFunction,\n });\n const NervousSystemFunction = IDL.Record({\n id: IDL.Nat64,\n name: IDL.Text,\n description: IDL.Opt(IDL.Text),\n function_type: IDL.Opt(FunctionType),\n });\n const GovernanceCachedMetrics = IDL.Record({\n not_dissolving_neurons_e8s_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Float64)),\n garbage_collectable_neurons_count: IDL.Nat64,\n neurons_with_invalid_stake_count: IDL.Nat64,\n not_dissolving_neurons_count_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n neurons_with_less_than_6_months_dissolve_delay_count: IDL.Nat64,\n dissolved_neurons_count: IDL.Nat64,\n total_staked_e8s: IDL.Nat64,\n total_supply_governance_tokens: IDL.Nat64,\n not_dissolving_neurons_count: IDL.Nat64,\n dissolved_neurons_e8s: IDL.Nat64,\n neurons_with_less_than_6_months_dissolve_delay_e8s: IDL.Nat64,\n dissolving_neurons_count_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n dissolving_neurons_count: IDL.Nat64,\n dissolving_neurons_e8s_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Float64)),\n timestamp_seconds: IDL.Nat64,\n });\n const MaturityModulation = IDL.Record({\n current_basis_points: IDL.Opt(IDL.Int32),\n updated_at_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const TargetVersionSet = IDL.Record({\n old_target_version: IDL.Opt(Version),\n new_target_version: IDL.Opt(Version),\n is_advanced_automatically: IDL.Opt(IDL.Bool),\n });\n const UpgradeStepsReset = IDL.Record({\n human_readable: IDL.Opt(IDL.Text),\n upgrade_steps: IDL.Opt(Versions),\n });\n const UpgradeOutcome = IDL.Record({\n status: IDL.Opt(\n IDL.Variant({\n Success: IDL.Record({}),\n Timeout: IDL.Record({}),\n ExternalFailure: IDL.Record({}),\n InvalidState: IDL.Record({ version: IDL.Opt(Version) }),\n }),\n ),\n human_readable: IDL.Opt(IDL.Text),\n });\n const ProposalId = IDL.Record({ id: IDL.Nat64 });\n const UpgradeStarted = IDL.Record({\n current_version: IDL.Opt(Version),\n expected_version: IDL.Opt(Version),\n reason: IDL.Opt(\n IDL.Variant({\n UpgradeSnsToNextVersionProposal: ProposalId,\n BehindTargetVersion: IDL.Record({}),\n }),\n ),\n });\n const UpgradeStepsRefreshed = IDL.Record({\n upgrade_steps: IDL.Opt(Versions),\n });\n const TargetVersionReset = IDL.Record({\n human_readable: IDL.Opt(IDL.Text),\n old_target_version: IDL.Opt(Version),\n new_target_version: IDL.Opt(Version),\n });\n const UpgradeJournalEntry = IDL.Record({\n event: IDL.Opt(\n IDL.Variant({\n TargetVersionSet: TargetVersionSet,\n UpgradeStepsReset: UpgradeStepsReset,\n UpgradeOutcome: UpgradeOutcome,\n UpgradeStarted: UpgradeStarted,\n UpgradeStepsRefreshed: UpgradeStepsRefreshed,\n TargetVersionReset: TargetVersionReset,\n }),\n ),\n timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const UpgradeJournal = IDL.Record({\n entries: IDL.Vec(UpgradeJournalEntry),\n });\n const NeuronId = IDL.Record({ id: IDL.Vec(IDL.Nat8) });\n const Followees = IDL.Record({ followees: IDL.Vec(NeuronId) });\n const DefaultFollowees = IDL.Record({\n followees: IDL.Vec(IDL.Tuple(IDL.Nat64, Followees)),\n });\n const NeuronPermissionList = IDL.Record({\n permissions: IDL.Vec(IDL.Int32),\n });\n const VotingRewardsParameters = IDL.Record({\n final_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n initial_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n reward_rate_transition_duration_seconds: IDL.Opt(IDL.Nat64),\n round_duration_seconds: IDL.Opt(IDL.Nat64),\n });\n const NervousSystemParameters = IDL.Record({\n default_followees: IDL.Opt(DefaultFollowees),\n max_dissolve_delay_seconds: IDL.Opt(IDL.Nat64),\n max_dissolve_delay_bonus_percentage: IDL.Opt(IDL.Nat64),\n max_followees_per_function: IDL.Opt(IDL.Nat64),\n automatically_advance_target_version: IDL.Opt(IDL.Bool),\n neuron_claimer_permissions: IDL.Opt(NeuronPermissionList),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n max_neuron_age_for_age_bonus: IDL.Opt(IDL.Nat64),\n initial_voting_period_seconds: IDL.Opt(IDL.Nat64),\n neuron_minimum_dissolve_delay_to_vote_seconds: IDL.Opt(IDL.Nat64),\n reject_cost_e8s: IDL.Opt(IDL.Nat64),\n max_proposals_to_keep_per_action: IDL.Opt(IDL.Nat32),\n wait_for_quiet_deadline_increase_seconds: IDL.Opt(IDL.Nat64),\n max_number_of_neurons: IDL.Opt(IDL.Nat64),\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n max_number_of_proposals_with_ballots: IDL.Opt(IDL.Nat64),\n max_age_bonus_percentage: IDL.Opt(IDL.Nat64),\n neuron_grantable_permissions: IDL.Opt(NeuronPermissionList),\n voting_rewards_parameters: IDL.Opt(VotingRewardsParameters),\n maturity_modulation_disabled: IDL.Opt(IDL.Bool),\n max_number_of_principals_per_neuron: IDL.Opt(IDL.Nat64),\n });\n const RewardEvent = IDL.Record({\n rounds_since_last_distribution: IDL.Opt(IDL.Nat64),\n actual_timestamp_seconds: IDL.Nat64,\n end_timestamp_seconds: IDL.Opt(IDL.Nat64),\n total_available_e8s_equivalent: IDL.Opt(IDL.Nat64),\n distributed_e8s_equivalent: IDL.Nat64,\n round: IDL.Nat64,\n settled_proposals: IDL.Vec(ProposalId),\n });\n const PendingVersion = IDL.Record({\n mark_failed_at_seconds: IDL.Nat64,\n checking_upgrade_lock: IDL.Nat64,\n proposal_id: IDL.Opt(IDL.Nat64),\n target_version: IDL.Opt(Version),\n });\n const GovernanceError = IDL.Record({\n error_message: IDL.Text,\n error_type: IDL.Int32,\n });\n const Subaccount = IDL.Record({ subaccount: IDL.Vec(IDL.Nat8) });\n const Account = IDL.Record({\n owner: IDL.Opt(IDL.Principal),\n subaccount: IDL.Opt(Subaccount),\n });\n const Decimal = IDL.Record({ human_readable: IDL.Opt(IDL.Text) });\n const Tokens = IDL.Record({ e8s: IDL.Opt(IDL.Nat64) });\n const ValuationFactors = IDL.Record({\n xdrs_per_icp: IDL.Opt(Decimal),\n icps_per_token: IDL.Opt(Decimal),\n tokens: IDL.Opt(Tokens),\n });\n const Valuation = IDL.Record({\n token: IDL.Opt(IDL.Int32),\n account: IDL.Opt(Account),\n valuation_factors: IDL.Opt(ValuationFactors),\n timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const MintSnsTokensActionAuxiliary = IDL.Record({\n valuation: IDL.Opt(Valuation),\n });\n const SnsVersion = IDL.Record({\n archive_wasm_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n root_wasm_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n swap_wasm_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n ledger_wasm_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n governance_wasm_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n index_wasm_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const AdvanceSnsTargetVersionActionAuxiliary = IDL.Record({\n target_version: IDL.Opt(SnsVersion),\n });\n const ActionAuxiliary = IDL.Variant({\n TransferSnsTreasuryFunds: MintSnsTokensActionAuxiliary,\n MintSnsTokens: MintSnsTokensActionAuxiliary,\n AdvanceSnsTargetVersion: AdvanceSnsTargetVersionActionAuxiliary,\n });\n const Ballot = IDL.Record({\n vote: IDL.Int32,\n cast_timestamp_seconds: IDL.Nat64,\n voting_power: IDL.Nat64,\n });\n const Percentage = IDL.Record({ basis_points: IDL.Opt(IDL.Nat64) });\n const Tally = IDL.Record({\n no: IDL.Nat64,\n yes: IDL.Nat64,\n total: IDL.Nat64,\n timestamp_seconds: IDL.Nat64,\n });\n const ManageDappCanisterSettings = IDL.Record({\n freezing_threshold: IDL.Opt(IDL.Nat64),\n wasm_memory_threshold: IDL.Opt(IDL.Nat64),\n canister_ids: IDL.Vec(IDL.Principal),\n reserved_cycles_limit: IDL.Opt(IDL.Nat64),\n log_visibility: IDL.Opt(IDL.Int32),\n wasm_memory_limit: IDL.Opt(IDL.Nat64),\n memory_allocation: IDL.Opt(IDL.Nat64),\n compute_allocation: IDL.Opt(IDL.Nat64),\n });\n const SetTopicsForCustomProposals = IDL.Record({\n custom_function_id_to_topic: IDL.Vec(IDL.Tuple(IDL.Nat64, Topic)),\n });\n const RegisterDappCanisters = IDL.Record({\n canister_ids: IDL.Vec(IDL.Principal),\n });\n const TransferSnsTreasuryFunds = IDL.Record({\n from_treasury: IDL.Int32,\n to_principal: IDL.Opt(IDL.Principal),\n to_subaccount: IDL.Opt(Subaccount),\n memo: IDL.Opt(IDL.Nat64),\n amount_e8s: IDL.Nat64,\n });\n const ChunkedCanisterWasm = IDL.Record({\n wasm_module_hash: IDL.Vec(IDL.Nat8),\n chunk_hashes_list: IDL.Vec(IDL.Vec(IDL.Nat8)),\n store_canister_id: IDL.Opt(IDL.Principal),\n });\n const UpgradeSnsControlledCanister = IDL.Record({\n new_canister_wasm: IDL.Vec(IDL.Nat8),\n mode: IDL.Opt(IDL.Int32),\n canister_id: IDL.Opt(IDL.Principal),\n chunked_canister_wasm: IDL.Opt(ChunkedCanisterWasm),\n canister_upgrade_arg: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const DeregisterDappCanisters = IDL.Record({\n canister_ids: IDL.Vec(IDL.Principal),\n new_controllers: IDL.Vec(IDL.Principal),\n });\n const MintSnsTokens = IDL.Record({\n to_principal: IDL.Opt(IDL.Principal),\n to_subaccount: IDL.Opt(Subaccount),\n memo: IDL.Opt(IDL.Nat64),\n amount_e8s: IDL.Opt(IDL.Nat64),\n });\n const AdvanceSnsTargetVersion = IDL.Record({\n new_target: IDL.Opt(SnsVersion),\n });\n const ManageSnsMetadata = IDL.Record({\n url: IDL.Opt(IDL.Text),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n description: IDL.Opt(IDL.Text),\n });\n const ExecuteGenericNervousSystemFunction = IDL.Record({\n function_id: IDL.Nat64,\n payload: IDL.Vec(IDL.Nat8),\n });\n const ManageLedgerParameters = IDL.Record({\n token_symbol: IDL.Opt(IDL.Text),\n transfer_fee: IDL.Opt(IDL.Nat64),\n token_logo: IDL.Opt(IDL.Text),\n token_name: IDL.Opt(IDL.Text),\n });\n const Motion = IDL.Record({ motion_text: IDL.Text });\n const Action = IDL.Variant({\n ManageNervousSystemParameters: NervousSystemParameters,\n AddGenericNervousSystemFunction: NervousSystemFunction,\n ManageDappCanisterSettings: ManageDappCanisterSettings,\n RemoveGenericNervousSystemFunction: IDL.Nat64,\n SetTopicsForCustomProposals: SetTopicsForCustomProposals,\n UpgradeSnsToNextVersion: IDL.Record({}),\n RegisterDappCanisters: RegisterDappCanisters,\n TransferSnsTreasuryFunds: TransferSnsTreasuryFunds,\n UpgradeSnsControlledCanister: UpgradeSnsControlledCanister,\n DeregisterDappCanisters: DeregisterDappCanisters,\n MintSnsTokens: MintSnsTokens,\n AdvanceSnsTargetVersion: AdvanceSnsTargetVersion,\n Unspecified: IDL.Record({}),\n ManageSnsMetadata: ManageSnsMetadata,\n ExecuteGenericNervousSystemFunction: ExecuteGenericNervousSystemFunction,\n ManageLedgerParameters: ManageLedgerParameters,\n Motion: Motion,\n });\n const Proposal = IDL.Record({\n url: IDL.Text,\n title: IDL.Text,\n action: IDL.Opt(Action),\n summary: IDL.Text,\n });\n const WaitForQuietState = IDL.Record({\n current_deadline_timestamp_seconds: IDL.Nat64,\n });\n const ProposalData = IDL.Record({\n id: IDL.Opt(ProposalId),\n payload_text_rendering: IDL.Opt(IDL.Text),\n topic: IDL.Opt(Topic),\n action: IDL.Nat64,\n failure_reason: IDL.Opt(GovernanceError),\n action_auxiliary: IDL.Opt(ActionAuxiliary),\n ballots: IDL.Vec(IDL.Tuple(IDL.Text, Ballot)),\n minimum_yes_proportion_of_total: IDL.Opt(Percentage),\n reward_event_round: IDL.Nat64,\n failed_timestamp_seconds: IDL.Nat64,\n reward_event_end_timestamp_seconds: IDL.Opt(IDL.Nat64),\n proposal_creation_timestamp_seconds: IDL.Nat64,\n initial_voting_period_seconds: IDL.Nat64,\n reject_cost_e8s: IDL.Nat64,\n latest_tally: IDL.Opt(Tally),\n wait_for_quiet_deadline_increase_seconds: IDL.Nat64,\n decided_timestamp_seconds: IDL.Nat64,\n proposal: IDL.Opt(Proposal),\n proposer: IDL.Opt(NeuronId),\n wait_for_quiet_state: IDL.Opt(WaitForQuietState),\n minimum_yes_proportion_of_exercised: IDL.Opt(Percentage),\n is_eligible_for_rewards: IDL.Bool,\n executed_timestamp_seconds: IDL.Nat64,\n });\n const Split = IDL.Record({ memo: IDL.Nat64, amount_e8s: IDL.Nat64 });\n const Follow = IDL.Record({\n function_id: IDL.Nat64,\n followees: IDL.Vec(NeuronId),\n });\n const DisburseMaturity = IDL.Record({\n to_account: IDL.Opt(Account),\n percentage_to_disburse: IDL.Nat32,\n });\n const ChangeAutoStakeMaturity = IDL.Record({\n requested_setting_for_auto_stake_maturity: IDL.Bool,\n });\n const IncreaseDissolveDelay = IDL.Record({\n additional_dissolve_delay_seconds: IDL.Nat32,\n });\n const SetDissolveTimestamp = IDL.Record({\n dissolve_timestamp_seconds: IDL.Nat64,\n });\n const Operation = IDL.Variant({\n ChangeAutoStakeMaturity: ChangeAutoStakeMaturity,\n StopDissolving: IDL.Record({}),\n StartDissolving: IDL.Record({}),\n IncreaseDissolveDelay: IncreaseDissolveDelay,\n SetDissolveTimestamp: SetDissolveTimestamp,\n });\n const Configure = IDL.Record({ operation: IDL.Opt(Operation) });\n const RegisterVote = IDL.Record({\n vote: IDL.Int32,\n proposal: IDL.Opt(ProposalId),\n });\n const FinalizeDisburseMaturity = IDL.Record({\n amount_to_be_disbursed_e8s: IDL.Nat64,\n to_account: IDL.Opt(Account),\n });\n const MemoAndController = IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n memo: IDL.Nat64,\n });\n const By = IDL.Variant({\n MemoAndController: MemoAndController,\n NeuronId: IDL.Record({}),\n });\n const ClaimOrRefresh = IDL.Record({ by: IDL.Opt(By) });\n const RemoveNeuronPermissions = IDL.Record({\n permissions_to_remove: IDL.Opt(NeuronPermissionList),\n principal_id: IDL.Opt(IDL.Principal),\n });\n const AddNeuronPermissions = IDL.Record({\n permissions_to_add: IDL.Opt(NeuronPermissionList),\n principal_id: IDL.Opt(IDL.Principal),\n });\n const MergeMaturity = IDL.Record({ percentage_to_merge: IDL.Nat32 });\n const Amount = IDL.Record({ e8s: IDL.Nat64 });\n const Disburse = IDL.Record({\n to_account: IDL.Opt(Account),\n amount: IDL.Opt(Amount),\n });\n const Command_2 = IDL.Variant({\n Split: Split,\n Follow: Follow,\n DisburseMaturity: DisburseMaturity,\n Configure: Configure,\n RegisterVote: RegisterVote,\n SyncCommand: IDL.Record({}),\n MakeProposal: Proposal,\n FinalizeDisburseMaturity: FinalizeDisburseMaturity,\n ClaimOrRefreshNeuron: ClaimOrRefresh,\n RemoveNeuronPermissions: RemoveNeuronPermissions,\n AddNeuronPermissions: AddNeuronPermissions,\n MergeMaturity: MergeMaturity,\n Disburse: Disburse,\n });\n const NeuronInFlightCommand = IDL.Record({\n command: IDL.Opt(Command_2),\n timestamp: IDL.Nat64,\n });\n const NeuronPermission = IDL.Record({\n principal: IDL.Opt(IDL.Principal),\n permission_type: IDL.Vec(IDL.Int32),\n });\n const DissolveState = IDL.Variant({\n DissolveDelaySeconds: IDL.Nat64,\n WhenDissolvedTimestampSeconds: IDL.Nat64,\n });\n const DisburseMaturityInProgress = IDL.Record({\n timestamp_of_disbursement_seconds: IDL.Nat64,\n amount_e8s: IDL.Nat64,\n account_to_disburse_to: IDL.Opt(Account),\n finalize_disbursement_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const Neuron = IDL.Record({\n id: IDL.Opt(NeuronId),\n staked_maturity_e8s_equivalent: IDL.Opt(IDL.Nat64),\n permissions: IDL.Vec(NeuronPermission),\n maturity_e8s_equivalent: IDL.Nat64,\n cached_neuron_stake_e8s: IDL.Nat64,\n created_timestamp_seconds: IDL.Nat64,\n source_nns_neuron_id: IDL.Opt(IDL.Nat64),\n auto_stake_maturity: IDL.Opt(IDL.Bool),\n aging_since_timestamp_seconds: IDL.Nat64,\n dissolve_state: IDL.Opt(DissolveState),\n voting_power_percentage_multiplier: IDL.Nat64,\n vesting_period_seconds: IDL.Opt(IDL.Nat64),\n disburse_maturity_in_progress: IDL.Vec(DisburseMaturityInProgress),\n followees: IDL.Vec(IDL.Tuple(IDL.Nat64, Followees)),\n neuron_fees_e8s: IDL.Nat64,\n });\n const Governance = IDL.Record({\n root_canister_id: IDL.Opt(IDL.Principal),\n timers: IDL.Opt(Timers),\n cached_upgrade_steps: IDL.Opt(CachedUpgradeSteps),\n id_to_nervous_system_functions: IDL.Vec(IDL.Tuple(IDL.Nat64, NervousSystemFunction)),\n metrics: IDL.Opt(GovernanceCachedMetrics),\n maturity_modulation: IDL.Opt(MaturityModulation),\n upgrade_journal: IDL.Opt(UpgradeJournal),\n mode: IDL.Int32,\n parameters: IDL.Opt(NervousSystemParameters),\n is_finalizing_disburse_maturity: IDL.Opt(IDL.Bool),\n deployed_version: IDL.Opt(Version),\n sns_initialization_parameters: IDL.Text,\n latest_reward_event: IDL.Opt(RewardEvent),\n pending_version: IDL.Opt(PendingVersion),\n swap_canister_id: IDL.Opt(IDL.Principal),\n ledger_canister_id: IDL.Opt(IDL.Principal),\n proposals: IDL.Vec(IDL.Tuple(IDL.Nat64, ProposalData)),\n in_flight_commands: IDL.Vec(IDL.Tuple(IDL.Text, NeuronInFlightCommand)),\n sns_metadata: IDL.Opt(ManageSnsMetadata),\n neurons: IDL.Vec(IDL.Tuple(IDL.Text, Neuron)),\n target_version: IDL.Opt(Version),\n genesis_timestamp_seconds: IDL.Nat64,\n });\n return [Governance];\n};\n","import { SNS_GOVERNANCE_INTERFACE_FACTORY, SNS_GOVERNANCE_SERVICE } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const sns_governance = async (canisterId: string, identity?: true) =>\n actor.create({\n canisterId,\n idlFactory: SNS_GOVERNANCE_INTERFACE_FACTORY,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const PublicPoolOverView = IDL.Record({\n id: IDL.Nat,\n token0TotalVolume: IDL.Float64,\n volumeUSD1d: IDL.Float64,\n volumeUSD7d: IDL.Float64,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n token1Volume24H: IDL.Float64,\n totalVolumeUSD: IDL.Float64,\n sqrtPrice: IDL.Float64,\n pool: IDL.Text,\n tick: IDL.Int,\n liquidity: IDL.Nat,\n token1Price: IDL.Float64,\n feeTier: IDL.Nat,\n token1TotalVolume: IDL.Float64,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n token0Volume24H: IDL.Float64,\n token1Standard: IDL.Text,\n txCount: IDL.Nat,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n });\n const PublicTokenOverview = IDL.Record({\n id: IDL.Nat,\n volumeUSD1d: IDL.Float64,\n volumeUSD7d: IDL.Float64,\n totalVolumeUSD: IDL.Float64,\n name: IDL.Text,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n priceUSDChange: IDL.Float64,\n address: IDL.Text,\n txCount: IDL.Int,\n priceUSD: IDL.Float64,\n standard: IDL.Text,\n symbol: IDL.Text,\n });\n const Address = IDL.Text;\n return IDL.Service({\n addOwner: IDL.Func([IDL.Principal], [], []),\n addQuoteToken: IDL.Func([IDL.Text, IDL.Bool], [], []),\n allPoolStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n allTokenStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n allUserStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n batchInsert: IDL.Func([IDL.Vec(Transaction)], [], []),\n clean: IDL.Func([], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllPools: IDL.Func([], [IDL.Vec(PublicPoolOverView)], [\"query\"]),\n getAllTokens: IDL.Func([], [IDL.Vec(PublicTokenOverview)], [\"query\"]),\n getControllers: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getDataQueueSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n getLastDataTime: IDL.Func([], [IDL.Int], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getPoolQueueSize: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat))],\n [\"query\"]\n ),\n getPoolsForToken: IDL.Func(\n [IDL.Text],\n [IDL.Vec(PublicPoolOverView)],\n [\"query\"]\n ),\n getQuoteTokens: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n getSyncLock: IDL.Func([], [IDL.Bool], [\"query\"]),\n getSyncStatus: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Bool, IDL.Text))],\n [\"query\"]\n ),\n getTokenQueueSize: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat))],\n [\"query\"]\n ),\n getTotalVolumeAndUser: IDL.Func([], [IDL.Float64, IDL.Nat], [\"query\"]),\n getUserQueueSize: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat))],\n [\"query\"]\n ),\n insert: IDL.Func([Transaction], [], []),\n poolMapping: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [\"query\"]\n ),\n poolStorage: IDL.Func([IDL.Text], [IDL.Opt(IDL.Text)], [\"query\"]),\n setPoolSyncStatus: IDL.Func([IDL.Bool], [IDL.Bool], []),\n setQuoteTokens: IDL.Func([IDL.Vec(IDL.Text), IDL.Bool], [], []),\n setTokenSyncStatus: IDL.Func([IDL.Bool], [IDL.Bool], []),\n setUserSyncStatus: IDL.Func([IDL.Bool], [IDL.Bool], []),\n syncOverview: IDL.Func([], [], []),\n tokenMapping: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [\"query\"]\n ),\n tokenStorage: IDL.Func([IDL.Text], [IDL.Opt(IDL.Text)], [\"query\"]),\n userMapping: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [\"query\"]\n ),\n userStorage: IDL.Func([Address], [IDL.Opt(IDL.Text)], [\"query\"]),\n });\n};\n","import { NodeIndex, NodeIndexInterfaceFactory } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const node_index = () =>\n actor.create({\n actorName: ActorName.NodeIndex,\n idlFactory: NodeIndexInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n limitOrder: IDL.Record({\n token0InAmount: IDL.Nat,\n positionId: IDL.Nat,\n tickLimit: IDL.Int,\n token1InAmount: IDL.Nat,\n }),\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n transferPosition: IDL.Nat,\n increaseLiquidity: IDL.Null,\n });\n const SwapRecordInfo__1 = IDL.Record({\n to: IDL.Text,\n feeAmount: IDL.Int,\n action: TransactionType,\n feeAmountTotal: IDL.Int,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n token0AmountTotal: IDL.Nat,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n tick: IDL.Int,\n feeTire: IDL.Nat,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Nat,\n token1AmountTotal: IDL.Nat,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Nat,\n token1Fee: IDL.Nat,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Nat,\n token0Standard: IDL.Text,\n price: IDL.Nat,\n poolId: IDL.Text,\n });\n const PoolTvlData = IDL.Record({\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n pool: IDL.Text,\n tvlUSD: IDL.Float64,\n token0Symbol: IDL.Text,\n token1Symbol: IDL.Text,\n });\n const SwapRecordInfo = IDL.Record({\n to: IDL.Text,\n feeAmount: IDL.Int,\n action: TransactionType,\n feeAmountTotal: IDL.Int,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n token0AmountTotal: IDL.Nat,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n tick: IDL.Int,\n feeTire: IDL.Nat,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Nat,\n token1AmountTotal: IDL.Nat,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Nat,\n token1Fee: IDL.Nat,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Nat,\n token0Standard: IDL.Text,\n price: IDL.Nat,\n poolId: IDL.Text,\n });\n const SwapErrorInfo = IDL.Record({\n data: SwapRecordInfo,\n error: IDL.Text,\n timestamp: IDL.Int,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const PoolBaseInfo = IDL.Record({\n fee: IDL.Int,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n pool: IDL.Text,\n token1Standard: IDL.Text,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token1Symbol: IDL.Text,\n });\n const TokenPrice = IDL.Record({\n tokenId: IDL.Text,\n volumeUSD7d: IDL.Float64,\n priceICP: IDL.Float64,\n priceUSD: IDL.Float64,\n });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n });\n const Token = IDL.Record({ arbitrary_data: IDL.Text });\n const StreamingCallbackHttpResponse = IDL.Record({\n token: IDL.Opt(Token),\n body: IDL.Vec(IDL.Nat8),\n });\n const CallbackStrategy = IDL.Record({\n token: Token,\n callback: IDL.Func([Token], [StreamingCallbackHttpResponse], [\"query\"]),\n });\n const StreamingStrategy = IDL.Variant({ Callback: CallbackStrategy });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n upgrade: IDL.Opt(IDL.Bool),\n streaming_strategy: IDL.Opt(StreamingStrategy),\n status_code: IDL.Nat16,\n });\n return IDL.Service({\n addClient: IDL.Func([IDL.Principal], [], []),\n baseLastStorage: IDL.Func([], [IDL.Text], [\"query\"]),\n baseStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n batchPush: IDL.Func([IDL.Vec(SwapRecordInfo__1)], [], []),\n batchUpdatePoolTvl: IDL.Func([IDL.Vec(PoolTvlData)], [], []),\n batchUpdateTokenPrice7dVolumeUSD: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Float64))], [], []),\n cleanErrorData: IDL.Func([], [IDL.Vec(SwapErrorInfo)], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllPools: IDL.Func([], [IDL.Vec(PoolBaseInfo)], [\"query\"]),\n getAllowTokens: IDL.Func([], [IDL.Vec(IDL.Text)], []),\n getClients: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getControllers: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getDataQueue: IDL.Func([], [IDL.Vec(SwapRecordInfo__1)], [\"query\"]),\n getErrorData: IDL.Func([], [IDL.Vec(SwapErrorInfo)], [\"query\"]),\n getPoolLastPrice: IDL.Func([IDL.Principal], [IDL.Float64], [\"query\"]),\n getPoolLastPriceTime: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Int))], [\"query\"]),\n getPoolTvl: IDL.Func([], [IDL.Vec(PoolTvlData)], [\"query\"]),\n getQuoteTokens: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n getStorageCount: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat)), IDL.Int], [\"query\"]),\n getSyncError: IDL.Func([], [IDL.Text], [\"query\"]),\n getSyncLock: IDL.Func([], [IDL.Bool], [\"query\"]),\n getTokenPriceMetadata: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, TokenPrice))], [\"query\"]),\n getTransferPositionStorageCount: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat)), IDL.Int], [\"query\"]),\n http_request: IDL.Func([HttpRequest], [HttpResponse], [\"query\"]),\n push: IDL.Func([SwapRecordInfo__1], [], []),\n removeTokenMetadata: IDL.Func([IDL.Principal], [], []),\n retryErrorData: IDL.Func([], [IDL.Vec(SwapErrorInfo)], []),\n setQuoteTokens: IDL.Func([IDL.Vec(IDL.Text), IDL.Bool], [], []),\n transferPositionLastStorage: IDL.Func([], [IDL.Text], [\"query\"]),\n transferPositionStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n updateMiniProportion: IDL.Func([IDL.Float64], [], []),\n updateTokenMetadata: IDL.Func([IDL.Principal, IDL.Text, IDL.Nat], [], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const RecordPage = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n batchInsert: IDL.Func([IDL.Vec(Transaction)], [], []),\n clean: IDL.Func([], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getBaseRecord: IDL.Func([IDL.Nat, IDL.Nat, IDL.Vec(IDL.Text)], [RecordPage], [\"query\"]),\n getByPool: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [RecordPage], [\"query\"]),\n getByToken: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [RecordPage], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getTxCount: IDL.Func([], [IDL.Nat], [\"query\"]),\n insert: IDL.Func([Transaction], [], []),\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\n\nimport {\n BaseIndex,\n BaseStorage,\n BaseIndexInterfaceFactory,\n BaseStorageInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const baseIndex = (identity?: ActorIdentity) =>\n actor.create({\n idlFactory: BaseIndexInterfaceFactory,\n actorName: ActorName.BaseIndex,\n identity,\n });\n\nexport const baseStorage = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: BaseStorageInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const TvlOverview = IDL.Record({\n tvlUSD: IDL.Float64,\n tvlUSDChange: IDL.Float64\n });\n const PublicProtocolData = IDL.Record({\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n tvlUSD: IDL.Float64,\n txCount: IDL.Int\n });\n return IDL.Service({\n addOwner: IDL.Func([IDL.Principal], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllPoolTvl: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Float64))], [\"query\"]),\n getAllTokenTvl: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Float64))], [\"query\"]),\n getAllowTokens: IDL.Func([], [IDL.Vec(IDL.Text)], []),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPoolLastTvl: IDL.Func([IDL.Text], [TvlOverview], [\"query\"]),\n getProtocolData: IDL.Func([], [PublicProtocolData], [\"query\"]),\n getSyncError: IDL.Func([], [IDL.Text], [\"query\"]),\n getSyncState: IDL.Func([], [IDL.Bool], [\"query\"]),\n getSyncTime: IDL.Func([], [IDL.Int], [\"query\"]),\n getTokenLastTvl: IDL.Func([IDL.Text], [TvlOverview], [\"query\"]),\n getTvlSyncState: IDL.Func([], [IDL.Bool], [\"query\"]),\n globalLastStorageCanister: IDL.Func([], [IDL.Text], [\"query\"]),\n globalStorageCanister: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n syncGlobal: IDL.Func([], [], []),\n syncTvl: IDL.Func([], [], []),\n syncTvlStatus: IDL.Func([], [IDL.Bool], [\"query\"]),\n tvlLastStorageCanister: IDL.Func([], [IDL.Text], [\"query\"]),\n tvlStorageCanister: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult__1 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const PublicSwapChartDayData = IDL.Record({\n id: IDL.Int,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n tvlUSD: IDL.Float64,\n timestamp: IDL.Int,\n txCount: IDL.Int\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n cycleAvailable: IDL.Func([], [NatResult__1], []),\n cycleBalance: IDL.Func([], [NatResult__1], [\"query\"]),\n getChartData: IDL.Func([], [IDL.Vec(PublicSwapChartDayData)], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n insert: IDL.Func([PublicSwapChartDayData], [], [])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult__2 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const TvlChartDayData = IDL.Record({\n id: IDL.Nat,\n tvlUSD: IDL.Float64,\n timestamp: IDL.Int\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n cycleAvailable: IDL.Func([], [NatResult__2], []),\n cycleBalance: IDL.Func([], [NatResult__2], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPoolChartTvl: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(TvlChartDayData)], [\"query\"]),\n getTokenChartTvl: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(TvlChartDayData)], [\"query\"]),\n insert: IDL.Func(\n [IDL.Vec(IDL.Tuple(IDL.Text, TvlChartDayData)), IDL.Vec(IDL.Tuple(IDL.Text, TvlChartDayData))],\n [IDL.Nat],\n []\n )\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\n\nimport {\n GlobalIndex,\n GlobalIndexInterfaceFactory,\n GlobalStorage,\n GlobalStorageInterfaceFactory,\n GlobalTVL,\n GlobalTVLInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const globalIndex = (identity?: ActorIdentity) =>\n actor.create({\n idlFactory: GlobalIndexInterfaceFactory,\n actorName: ActorName.GlobalIndex,\n identity,\n });\n\nexport const globalStorage = (id: string) =>\n actor.create({\n idlFactory: GlobalStorageInterfaceFactory,\n canisterId: id,\n });\n\nexport const globalTVL = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: GlobalTVLInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const PublicPoolOverView = IDL.Record({\n id: IDL.Nat,\n volumeUSD1d: IDL.Float64,\n volumeUSD7d: IDL.Float64,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n totalVolumeUSD: IDL.Float64,\n sqrtPrice: IDL.Float64,\n pool: IDL.Text,\n tick: IDL.Int,\n liquidity: IDL.Nat,\n token1Price: IDL.Float64,\n feeTier: IDL.Nat,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n token1Standard: IDL.Text,\n txCount: IDL.Nat,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text\n });\n const PublicPoolChartDayData = IDL.Record({\n id: IDL.Int,\n volumeUSD: IDL.Float64,\n timestamp: IDL.Int,\n txCount: IDL.Int\n });\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllPools: IDL.Func([], [IDL.Vec(PublicPoolOverView)], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPool: IDL.Func([IDL.Text], [PublicPoolOverView], [\"query\"]),\n getPoolChartData: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(PublicPoolChartDayData)], [\"query\"]),\n getPoolTransactions: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(Transaction)], [\"query\"]),\n insert: IDL.Func([Transaction], [], [])\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { PoolStorage, PoolStorageInterfaceFactory } from \"@icpswap/candid\";\n\nexport const poolStorage = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: PoolStorageInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const PublicTokenOverview = IDL.Record({\n id: IDL.Nat,\n volumeUSD1d: IDL.Float64,\n volumeUSD7d: IDL.Float64,\n totalVolumeUSD: IDL.Float64,\n name: IDL.Text,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n priceUSDChange: IDL.Float64,\n address: IDL.Text,\n txCount: IDL.Int,\n priceUSD: IDL.Float64,\n standard: IDL.Text,\n symbol: IDL.Text\n });\n const PoolInfo = IDL.Record({\n fee: IDL.Int,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n pool: IDL.Text,\n token1Price: IDL.Float64,\n token1Standard: IDL.Text,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text\n });\n const PublicTokenChartDayData = IDL.Record({\n id: IDL.Int,\n volumeUSD: IDL.Float64,\n timestamp: IDL.Int,\n txCount: IDL.Int\n });\n const PublicTokenPricesData = IDL.Record({\n id: IDL.Int,\n low: IDL.Float64,\n high: IDL.Float64,\n close: IDL.Float64,\n open: IDL.Float64,\n timestamp: IDL.Int\n });\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllTokens: IDL.Func([], [IDL.Vec(PublicTokenOverview)], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPoolsForToken: IDL.Func([IDL.Text], [IDL.Vec(PoolInfo)], [\"query\"]),\n getToken: IDL.Func([IDL.Text], [PublicTokenOverview], [\"query\"]),\n getTokenChartData: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(PublicTokenChartDayData)], [\"query\"]),\n getTokenPricesData: IDL.Func([IDL.Text, IDL.Int, IDL.Int, IDL.Nat], [IDL.Vec(PublicTokenPricesData)], [\"query\"]),\n getTokenTransactions: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(Transaction)], [\"query\"]),\n insert: IDL.Func([IDL.Text, Transaction], [], [])\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { TokenStorage, TokenStorageInterfaceFactory } from \"@icpswap/candid\";\n\nexport const tokenStorage = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: TokenStorageInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Address = IDL.Text;\n const RecordPage = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n batchInsert: IDL.Func([IDL.Text, IDL.Vec(Transaction)], [], []),\n clean: IDL.Func([], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n get: IDL.Func([Address, IDL.Nat, IDL.Nat, IDL.Vec(IDL.Text)], [RecordPage], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n insert: IDL.Func([Transaction], [], []),\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { UserStorage, UserStorageInterfaceFactory } from \"@icpswap/candid\";\n\nexport const userStorage = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: UserStorageInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n limitOrder: IDL.Record({\n token0InAmount: IDL.Nat,\n positionId: IDL.Nat,\n tickLimit: IDL.Int,\n token1InAmount: IDL.Nat,\n }),\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n transferPosition: IDL.Nat,\n increaseLiquidity: IDL.Null,\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const RecordPage = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n batchInsert: IDL.Func([IDL.Vec(Transaction)], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n get: IDL.Func([IDL.Nat, IDL.Nat, IDL.Vec(IDL.Text)], [RecordPage], [\"query\"]),\n getByPool: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [RecordPage], [\"query\"]),\n getByToken: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [RecordPage], [\"query\"]),\n getFirstBlock: IDL.Func([], [IDL.Nat], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getTx: IDL.Func([IDL.Nat, IDL.Nat], [RecordPage], [\"query\"]),\n getTxCount: IDL.Func([], [IDL.Nat], [\"query\"]),\n insert: IDL.Func([Transaction], [], []),\n });\n};\n","import { PositionTransactionsStorageFactory, PositionTransactionsStorage } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\n\nexport const positionTransactionsStorage = (id: string) =>\n actor.create({\n idlFactory: PositionTransactionsStorageFactory,\n canisterId: id,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Value = IDL.Rec();\n const Map = IDL.Vec(IDL.Tuple(IDL.Text, Value));\n Value.fill(\n IDL.Variant({\n Int: IDL.Int,\n Map: Map,\n Nat: IDL.Nat,\n Nat64: IDL.Nat64,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n Array: IDL.Vec(Value)\n })\n );\n const Block = Value;\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const Transaction = IDL.Record({\n burn: IDL.Opt(\n IDL.Record({\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n })\n ),\n kind: IDL.Text,\n mint: IDL.Opt(\n IDL.Record({\n to: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n })\n ),\n timestamp: IDL.Nat64,\n transfer: IDL.Opt(\n IDL.Record({\n to: Account,\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n })\n )\n });\n return IDL.Service({\n append_blocks: IDL.Func([IDL.Vec(IDL.Vec(IDL.Nat8))], [], []),\n get_blocks: IDL.Func(\n [IDL.Record({ start: IDL.Nat, length: IDL.Nat })],\n [IDL.Record({ blocks: IDL.Vec(Block) })],\n [\"query\"]\n ),\n get_transaction: IDL.Func([IDL.Nat64], [IDL.Opt(Transaction)], [\"query\"]),\n get_transactions: IDL.Func(\n [IDL.Record({ start: IDL.Nat, length: IDL.Nat })],\n [IDL.Record({ transactions: IDL.Vec(Transaction) })],\n [\"query\"]\n ),\n remaining_capacity: IDL.Func([], [IDL.Nat64], [\"query\"])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Subaccount = IDL.Vec(IDL.Nat8);\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(Subaccount)\n });\n const Tokens = IDL.Nat;\n const Value = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text\n });\n const Memo = IDL.Vec(IDL.Nat8);\n const Timestamp = IDL.Nat64;\n const TxIndex = IDL.Nat;\n const TransferError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n BadBurn: IDL.Record({ min_burn_amount: Tokens }),\n Duplicate: IDL.Record({ duplicate_of: TxIndex }),\n BadFee: IDL.Record({ expected_fee: Tokens }),\n CreatedInFuture: IDL.Record({ ledger_time: Timestamp }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: Tokens })\n });\n const TransferResult = IDL.Variant({ Ok: TxIndex, Err: TransferError });\n const GetTransactionsRequest = IDL.Record({\n start: IDL.Nat,\n length: IDL.Nat\n });\n const Burn = IDL.Record({\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const Mint = IDL.Record({\n to: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const Transfer = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const Transaction = IDL.Record({\n burn: IDL.Opt(Burn),\n kind: IDL.Text,\n mint: IDL.Opt(Mint),\n timestamp: IDL.Nat64,\n transfer: IDL.Opt(Transfer)\n });\n const ArchivedTransactionRange = IDL.Record({\n callback: IDL.Func([GetTransactionsRequest], [IDL.Record({ transactions: IDL.Vec(Transaction) })], [\"query\"]),\n start: IDL.Nat,\n length: IDL.Nat\n });\n const GetTransactionsResponse = IDL.Record({\n first_index: IDL.Nat,\n log_length: IDL.Nat,\n transactions: IDL.Vec(Transaction),\n archived_transactions: IDL.Vec(ArchivedTransactionRange)\n });\n const Ledger = IDL.Service({\n get_transactions: IDL.Func([GetTransactionsRequest], [GetTransactionsResponse], [\"query\"]),\n icrc1_balance_of: IDL.Func([Account], [Tokens], [\"query\"]),\n icrc1_decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n icrc1_fee: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_metadata: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, Value))], [\"query\"]),\n icrc1_minting_account: IDL.Func([], [IDL.Opt(Account)], [\"query\"]),\n icrc1_name: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_supported_standards: IDL.Func([], [IDL.Vec(IDL.Record({ url: IDL.Text, name: IDL.Text }))], [\"query\"]),\n icrc1_symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_total_supply: IDL.Func([], [Tokens], [\"query\"]),\n icrc1_logo: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_transfer: IDL.Func(\n [\n IDL.Record({\n to: Account,\n fee: IDL.Opt(Tokens),\n memo: IDL.Opt(Memo),\n from_subaccount: IDL.Opt(Subaccount),\n created_at_time: IDL.Opt(Timestamp),\n amount: Tokens\n })\n ],\n [TransferResult],\n []\n )\n });\n return Ledger;\n};\n\nexport const init = ({ IDL }: any) => {\n return [\n IDL.Record({\n decimals: IDL.Nat8,\n token_symbol: IDL.Text,\n transfer_fee: IDL.Nat,\n minting_account: IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n }),\n initial_mints: IDL.Vec(\n IDL.Record({\n account: IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n }),\n amount: IDL.Nat\n })\n ),\n token_name: IDL.Text\n })\n ];\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Value = IDL.Rec();\n const Vec = IDL.Rec();\n const MetadataValue = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text\n });\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const ChangeFeeCollector = IDL.Variant({\n SetTo: Account,\n Unset: IDL.Null\n });\n const FeatureFlags = IDL.Record({ icrc2: IDL.Bool });\n const UpgradeArgs = IDL.Record({\n token_symbol: IDL.Opt(IDL.Text),\n transfer_fee: IDL.Opt(IDL.Nat),\n metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))),\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n accounts_overflow_trim_quantity: IDL.Opt(IDL.Nat64),\n change_fee_collector: IDL.Opt(ChangeFeeCollector),\n max_memo_length: IDL.Opt(IDL.Nat16),\n token_name: IDL.Opt(IDL.Text),\n feature_flags: IDL.Opt(FeatureFlags)\n });\n const ArchiveOptions = IDL.Record({\n num_blocks_to_archive: IDL.Nat64,\n max_transactions_per_response: IDL.Opt(IDL.Nat64),\n trigger_threshold: IDL.Nat64,\n max_message_size_bytes: IDL.Opt(IDL.Nat64),\n cycles_for_archive_creation: IDL.Opt(IDL.Nat64),\n node_max_memory_size_bytes: IDL.Opt(IDL.Nat64),\n controller_id: IDL.Principal\n });\n const InitArgs = IDL.Record({\n decimals: IDL.Opt(IDL.Nat8),\n token_symbol: IDL.Text,\n transfer_fee: IDL.Nat,\n metadata: IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue)),\n minting_account: Account,\n initial_balances: IDL.Vec(IDL.Tuple(Account, IDL.Nat)),\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n accounts_overflow_trim_quantity: IDL.Opt(IDL.Nat64),\n fee_collector_account: IDL.Opt(Account),\n archive_options: ArchiveOptions,\n max_memo_length: IDL.Opt(IDL.Nat16),\n token_name: IDL.Text,\n feature_flags: IDL.Opt(FeatureFlags)\n });\n const LedgerArgument = IDL.Variant({\n Upgrade: IDL.Opt(UpgradeArgs),\n Init: InitArgs\n });\n const GetBlocksRequest = IDL.Record({\n start: IDL.Nat,\n length: IDL.Nat\n });\n Vec.fill(\n IDL.Vec(\n IDL.Variant({\n Int: IDL.Int,\n Map: IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n Nat: IDL.Nat,\n Nat64: IDL.Nat64,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n Array: Vec\n })\n )\n );\n Value.fill(\n IDL.Variant({\n Int: IDL.Int,\n Map: IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n Nat: IDL.Nat,\n Nat64: IDL.Nat64,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n Array: Vec\n })\n );\n const BlockRange = IDL.Record({ blocks: IDL.Vec(Value) });\n const ArchivedRange = IDL.Record({\n callback: IDL.Func([GetBlocksRequest], [BlockRange], [\"query\"]),\n start: IDL.Nat,\n length: IDL.Nat\n });\n const GetBlocksResponse = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n first_index: IDL.Nat,\n blocks: IDL.Vec(Value),\n chain_length: IDL.Nat64,\n archived_blocks: IDL.Vec(ArchivedRange)\n });\n const DataCertificate = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n hash_tree: IDL.Vec(IDL.Nat8)\n });\n const Burn = IDL.Record({\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n spender: IDL.Opt(Account)\n });\n const Mint = IDL.Record({\n to: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const Approve = IDL.Record({\n fee: IDL.Opt(IDL.Nat),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n expected_allowance: IDL.Opt(IDL.Nat),\n expires_at: IDL.Opt(IDL.Nat64),\n spender: Account\n });\n const Transfer = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n spender: IDL.Opt(Account)\n });\n const Transaction = IDL.Record({\n burn: IDL.Opt(Burn),\n kind: IDL.Text,\n mint: IDL.Opt(Mint),\n approve: IDL.Opt(Approve),\n timestamp: IDL.Nat64,\n transfer: IDL.Opt(Transfer)\n });\n const TransactionRange = IDL.Record({\n transactions: IDL.Vec(Transaction)\n });\n const ArchivedRange_1 = IDL.Record({\n callback: IDL.Func([GetBlocksRequest], [TransactionRange], [\"query\"]),\n start: IDL.Nat,\n length: IDL.Nat\n });\n const GetTransactionsResponse = IDL.Record({\n first_index: IDL.Nat,\n log_length: IDL.Nat,\n transactions: IDL.Vec(Transaction),\n archived_transactions: IDL.Vec(ArchivedRange_1)\n });\n const StandardRecord = IDL.Record({ url: IDL.Text, name: IDL.Text });\n const TransferArg = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const TransferError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n BadBurn: IDL.Record({ min_burn_amount: IDL.Nat }),\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat })\n });\n const Result = IDL.Variant({ Ok: IDL.Nat, Err: TransferError });\n const AllowanceArgs = IDL.Record({\n account: Account,\n spender: Account\n });\n const Allowance = IDL.Record({\n allowance: IDL.Nat,\n expires_at: IDL.Opt(IDL.Nat64)\n });\n const ApproveArgs = IDL.Record({\n fee: IDL.Opt(IDL.Nat),\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n expected_allowance: IDL.Opt(IDL.Nat),\n expires_at: IDL.Opt(IDL.Nat64),\n spender: Account\n });\n const ApproveError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n AllowanceChanged: IDL.Record({ current_allowance: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n Expired: IDL.Record({ ledger_time: IDL.Nat64 }),\n InsufficientFunds: IDL.Record({ balance: IDL.Nat })\n });\n const Result_1 = IDL.Variant({ Ok: IDL.Nat, Err: ApproveError });\n const TransferFromArgs = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n spender_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const TransferFromError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n InsufficientAllowance: IDL.Record({ allowance: IDL.Nat }),\n BadBurn: IDL.Record({ min_burn_amount: IDL.Nat }),\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat })\n });\n const Result_2 = IDL.Variant({ Ok: IDL.Nat, Err: TransferFromError });\n return IDL.Service({\n get_blocks: IDL.Func([GetBlocksRequest], [GetBlocksResponse], [\"query\"]),\n get_data_certificate: IDL.Func([], [DataCertificate], [\"query\"]),\n get_transactions: IDL.Func([GetBlocksRequest], [GetTransactionsResponse], [\"query\"]),\n icrc1_balance_of: IDL.Func([Account], [IDL.Nat], [\"query\"]),\n icrc1_decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n icrc1_fee: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_metadata: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))], [\"query\"]),\n icrc1_minting_account: IDL.Func([], [IDL.Opt(Account)], [\"query\"]),\n icrc1_name: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_supported_standards: IDL.Func([], [IDL.Vec(StandardRecord)], [\"query\"]),\n icrc1_symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_total_supply: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_transfer: IDL.Func([TransferArg], [Result], []),\n icrc2_allowance: IDL.Func([AllowanceArgs], [Allowance], [\"query\"]),\n icrc2_approve: IDL.Func([ApproveArgs], [Result_1], []),\n icrc2_transfer_from: IDL.Func([TransferFromArgs], [Result_2], [])\n });\n};\nexport const init = ({ IDL }) => {\n const MetadataValue = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text\n });\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const ChangeFeeCollector = IDL.Variant({\n SetTo: Account,\n Unset: IDL.Null\n });\n const FeatureFlags = IDL.Record({ icrc2: IDL.Bool });\n const UpgradeArgs = IDL.Record({\n token_symbol: IDL.Opt(IDL.Text),\n transfer_fee: IDL.Opt(IDL.Nat),\n metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))),\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n accounts_overflow_trim_quantity: IDL.Opt(IDL.Nat64),\n change_fee_collector: IDL.Opt(ChangeFeeCollector),\n max_memo_length: IDL.Opt(IDL.Nat16),\n token_name: IDL.Opt(IDL.Text),\n feature_flags: IDL.Opt(FeatureFlags)\n });\n const ArchiveOptions = IDL.Record({\n num_blocks_to_archive: IDL.Nat64,\n max_transactions_per_response: IDL.Opt(IDL.Nat64),\n trigger_threshold: IDL.Nat64,\n max_message_size_bytes: IDL.Opt(IDL.Nat64),\n cycles_for_archive_creation: IDL.Opt(IDL.Nat64),\n node_max_memory_size_bytes: IDL.Opt(IDL.Nat64),\n controller_id: IDL.Principal\n });\n const InitArgs = IDL.Record({\n decimals: IDL.Opt(IDL.Nat8),\n token_symbol: IDL.Text,\n transfer_fee: IDL.Nat,\n metadata: IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue)),\n minting_account: Account,\n initial_balances: IDL.Vec(IDL.Tuple(Account, IDL.Nat)),\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n accounts_overflow_trim_quantity: IDL.Opt(IDL.Nat64),\n fee_collector_account: IDL.Opt(Account),\n archive_options: ArchiveOptions,\n max_memo_length: IDL.Opt(IDL.Nat16),\n token_name: IDL.Text,\n feature_flags: IDL.Opt(FeatureFlags)\n });\n const LedgerArgument = IDL.Variant({\n Upgrade: IDL.Opt(UpgradeArgs),\n Init: InitArgs\n });\n return [LedgerArgument];\n};\n","import { actor } from \"../actor\";\nimport {\n ICRCArchive,\n ICRCArchiveInterfaceFactory,\n ICRC1_SERVICE,\n ICRC1InterfaceFactory,\n ICRC2,\n ICRC2InterfaceFactory,\n} from \"@icpswap/candid\";\nimport type { ActorIdentity } from \"@icpswap/types\";\n\nexport const icrcArchive = (canisterId: string) =>\n actor.create({\n idlFactory: ICRCArchiveInterfaceFactory,\n canisterId,\n });\n\nexport const icrc1 = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n idlFactory: ICRC1InterfaceFactory,\n canisterId,\n });\n\nexport const icrc2 = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n idlFactory: ICRC2InterfaceFactory,\n canisterId,\n });\n","export default ({ IDL }) => {\n const TxError = IDL.Variant({\n InsufficientAllowance: IDL.Null,\n InsufficientBalance: IDL.Null,\n ErrorOperationStyle: IDL.Null,\n Unauthorized: IDL.Null,\n LedgerTrap: IDL.Null,\n ErrorTo: IDL.Null,\n Other: IDL.Null,\n BlockUsed: IDL.Null,\n AmountTooSmall: IDL.Null,\n });\n const TxReceipt = IDL.Variant({ Ok: IDL.Nat, Err: TxError });\n const TransactionId = IDL.Nat64;\n const BurnError = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidTokenContract: IDL.Null,\n NotSufficientLiquidity: IDL.Null,\n });\n const BurnResult = IDL.Variant({ Ok: TransactionId, Err: BurnError });\n const TransactionStatus = IDL.Variant({\n FAILED: IDL.Null,\n SUCCEEDED: IDL.Null,\n });\n const EventDetail = IDL.Variant({\n Approve: IDL.Record({ to: IDL.Principal, from: IDL.Principal }),\n Burn: IDL.Record({ to: IDL.Principal, from: IDL.Principal }),\n Mint: IDL.Record({ to: IDL.Principal }),\n CanisterCreated: IDL.Record({\n from: IDL.Principal,\n canister: IDL.Principal,\n }),\n CanisterCalled: IDL.Record({\n from: IDL.Principal,\n method_name: IDL.Text,\n canister: IDL.Principal,\n }),\n Transfer: IDL.Record({ to: IDL.Principal, from: IDL.Principal }),\n TransferFrom: IDL.Record({\n to: IDL.Principal,\n from: IDL.Principal,\n caller: IDL.Principal,\n }),\n });\n const Event = IDL.Record({\n fee: IDL.Nat64,\n status: TransactionStatus,\n kind: EventDetail,\n cycles: IDL.Nat64,\n timestamp: IDL.Nat64,\n });\n const EventsConnection = IDL.Record({\n data: IDL.Vec(Event),\n next_offset: TransactionId,\n next_canister_id: IDL.Opt(IDL.Principal),\n });\n const Metadata = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat8,\n owner: IDL.Principal,\n logo: IDL.Text,\n name: IDL.Text,\n totalSupply: IDL.Nat,\n symbol: IDL.Text,\n });\n const Operation = IDL.Variant({\n transferFrom: IDL.Null,\n burn: IDL.Null,\n mint: IDL.Null,\n approve: IDL.Null,\n canisterCalled: IDL.Null,\n transfer: IDL.Null,\n canisterCreated: IDL.Null,\n });\n const Time = IDL.Int;\n const TxRecord = IDL.Record({\n op: Operation,\n to: IDL.Principal,\n fee: IDL.Nat,\n status: TransactionStatus,\n from: IDL.Principal,\n timestamp: Time,\n caller: IDL.Opt(IDL.Principal),\n index: IDL.Nat,\n amount: IDL.Nat,\n });\n const MintError = IDL.Variant({ NotSufficientLiquidity: IDL.Null });\n const MintResult = IDL.Variant({ Ok: TransactionId, Err: MintError });\n const Stats = IDL.Record({\n fee: IDL.Nat,\n transfers_count: IDL.Nat64,\n balance: IDL.Nat64,\n mints_count: IDL.Nat64,\n transfers_from_count: IDL.Nat64,\n canisters_created_count: IDL.Nat64,\n supply: IDL.Nat,\n burns_count: IDL.Nat64,\n approvals_count: IDL.Nat64,\n proxy_calls_count: IDL.Nat64,\n history_events: IDL.Nat64,\n });\n const ResultCall = IDL.Variant({\n Ok: IDL.Record({ return: IDL.Vec(IDL.Nat8) }),\n Err: IDL.Text,\n });\n const CreateResult = IDL.Variant({\n Ok: IDL.Record({ canister_id: IDL.Principal }),\n Err: IDL.Text,\n });\n const ResultSend = IDL.Variant({ Ok: IDL.Null, Err: IDL.Text });\n return IDL.Service({\n allowance: IDL.Func([IDL.Principal, IDL.Principal], [IDL.Nat], [\"query\"]),\n approve: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n balance: IDL.Func([IDL.Opt(IDL.Principal)], [IDL.Nat64], []),\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], [\"query\"]),\n burn: IDL.Func([IDL.Record({ canister_id: IDL.Principal, amount: IDL.Nat64 })], [BurnResult], []),\n decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n events: IDL.Func([IDL.Record({ offset: IDL.Opt(IDL.Nat64), limit: IDL.Nat16 })], [EventsConnection], [\"query\"]),\n getMetadata: IDL.Func([], [Metadata], [\"query\"]),\n getTransaction: IDL.Func([IDL.Nat], [TxRecord], []),\n getTransactions: IDL.Func([IDL.Nat, IDL.Nat], [IDL.Vec(TxRecord)], []),\n get_transaction: IDL.Func([TransactionId], [IDL.Opt(Event)], []),\n halt: IDL.Func([], [], []),\n historySize: IDL.Func([], [IDL.Nat], [\"query\"]),\n logo: IDL.Func([], [IDL.Text], [\"query\"]),\n mint: IDL.Func([IDL.Principal, IDL.Nat], [MintResult], []),\n name: IDL.Func([], [IDL.Text], [\"query\"]),\n nameErc20: IDL.Func([], [IDL.Text], [\"query\"]),\n stats: IDL.Func([], [Stats], [\"query\"]),\n symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n totalSupply: IDL.Func([], [IDL.Nat], [\"query\"]),\n transfer: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n transferErc20: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n transferFrom: IDL.Func([IDL.Principal, IDL.Principal, IDL.Nat], [TxReceipt], []),\n wallet_balance: IDL.Func([], [IDL.Record({ amount: IDL.Nat64 })], [\"query\"]),\n wallet_call: IDL.Func(\n [\n IDL.Record({\n args: IDL.Vec(IDL.Nat8),\n cycles: IDL.Nat64,\n method_name: IDL.Text,\n canister: IDL.Principal,\n }),\n ],\n [ResultCall],\n []\n ),\n wallet_create_canister: IDL.Func(\n [\n IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n cycles: IDL.Nat64,\n }),\n ],\n [CreateResult],\n []\n ),\n wallet_create_wallet: IDL.Func(\n [\n IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n cycles: IDL.Nat64,\n }),\n ],\n [CreateResult],\n []\n ),\n wallet_send: IDL.Func([IDL.Record({ canister: IDL.Principal, amount: IDL.Nat64 })], [ResultSend], []),\n });\n};\nexport const init = () => {\n return [];\n};\n","export default ({ IDL }: any) => {\n const TxReceipt = IDL.Variant({\n Ok: IDL.Nat,\n Err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n InsufficientBalance: IDL.Null,\n ErrorOperationStyle: IDL.Null,\n Unauthorized: IDL.Null,\n LedgerTrap: IDL.Null,\n ErrorTo: IDL.Null,\n Other: IDL.Text,\n BlockUsed: IDL.Null,\n AmountTooSmall: IDL.Null\n })\n });\n const Metadata = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat8,\n owner: IDL.Principal,\n logo: IDL.Text,\n name: IDL.Text,\n totalSupply: IDL.Nat,\n symbol: IDL.Text\n });\n const Time = IDL.Int;\n const TokenInfo = IDL.Record({\n holderNumber: IDL.Nat,\n deployTime: Time,\n metadata: Metadata,\n historySize: IDL.Nat,\n cycles: IDL.Nat,\n feeTo: IDL.Principal\n });\n return IDL.Service({\n allowance: IDL.Func([IDL.Principal, IDL.Principal], [IDL.Nat], [\"query\"]),\n approve: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], [\"query\"]),\n burn: IDL.Func([IDL.Nat], [TxReceipt], []),\n decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n getAllowanceSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n getHolders: IDL.Func([IDL.Nat, IDL.Nat], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat))], [\"query\"]),\n getMetadata: IDL.Func([], [Metadata], [\"query\"]),\n getTokenFee: IDL.Func([], [IDL.Nat], [\"query\"]),\n getTokenInfo: IDL.Func([], [TokenInfo], [\"query\"]),\n getUserApprovals: IDL.Func([IDL.Principal], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat))], [\"query\"]),\n historySize: IDL.Func([], [IDL.Nat], [\"query\"]),\n logo: IDL.Func([], [IDL.Text], [\"query\"]),\n mint: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n name: IDL.Func([], [IDL.Text], [\"query\"]),\n setFee: IDL.Func([IDL.Nat], [], [\"oneway\"]),\n setFeeTo: IDL.Func([IDL.Principal], [], [\"oneway\"]),\n setLogo: IDL.Func([IDL.Text], [], [\"oneway\"]),\n setName: IDL.Func([IDL.Text], [], [\"oneway\"]),\n setOwner: IDL.Func([IDL.Principal], [], [\"oneway\"]),\n symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n totalSupply: IDL.Func([], [IDL.Nat], [\"query\"]),\n transfer: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n transferFrom: IDL.Func([IDL.Principal, IDL.Principal, IDL.Nat], [TxReceipt], [])\n });\n};\n","export default ({ IDL }) => {\n return IDL.Service({\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], []),\n });\n};\n","export default ({ IDL }) => {\n return IDL.Service({\n totalSupply: IDL.Func([], [IDL.Nat], [])\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport {\n DIP20,\n DIP20Balance,\n DIP20InterfaceFactory,\n DIP20BalanceInterfaceFactory,\n XTC,\n XTCInterfaceFactory,\n DIP20Supply,\n DIP20SupplyInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const xtc = (identity?: ActorIdentity) =>\n actor.create({\n identity,\n idlFactory: XTCInterfaceFactory,\n canisterId: \"aanaa-xaaaa-aaaah-aaeiq-cai\",\n });\n\nexport const dip20 = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n idlFactory: DIP20InterfaceFactory,\n canisterId,\n });\n\nexport const dip20BalanceActor = (\n canisterId: string,\n identity?: ActorIdentity\n) =>\n actor.create({\n identity,\n idlFactory: DIP20BalanceInterfaceFactory,\n canisterId,\n });\n\nexport const dip20SupplyActor = (\n canisterId: string,\n identity?: ActorIdentity\n) =>\n actor.create({\n identity,\n idlFactory: DIP20SupplyInterfaceFactory,\n canisterId,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Balance = IDL.Nat;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const AllowanceRequest = IDL.Record({\n owner: User,\n subaccount: IDL.Opt(SubAccount),\n spender: IDL.Principal\n });\n const Balance__1 = IDL.Nat;\n const TokenIdentifier = IDL.Text;\n const CommonError__1 = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const Result_2 = IDL.Variant({ ok: Balance__1, err: CommonError__1 });\n const ApproveRequest = IDL.Record({\n subaccount: IDL.Opt(SubAccount),\n allowance: Balance,\n spender: IDL.Principal\n });\n const Result_3 = IDL.Variant({ ok: IDL.Bool, err: CommonError__1 });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User\n });\n const CommonError = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const BalanceResponse = IDL.Variant({ ok: Balance, err: CommonError });\n const Result_7 = IDL.Variant({ ok: IDL.Nat, err: CommonError__1 });\n const Extension = IDL.Text;\n const HoldersRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat)\n });\n const Holder = IDL.Record({\n balance: IDL.Nat,\n account: AccountIdentifier\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(Holder),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_6 = IDL.Variant({ ok: Page_1, err: CommonError });\n const Result_5 = IDL.Variant({ ok: IDL.Text, err: CommonError__1 });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n ownerAccount: AccountIdentifier,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) })\n });\n const Result_4 = IDL.Variant({ ok: Metadata, err: CommonError__1 });\n const MintRequest = IDL.Record({ to: User, amount: Balance });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n })\n });\n const AccountIdentifier__1 = IDL.Text;\n const User__1 = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const Result_1 = IDL.Variant({ ok: IDL.Nat, err: CommonError });\n const TransactionRequest = IDL.Record({\n hash: IDL.Opt(IDL.Text),\n user: IDL.Opt(User),\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat),\n index: IDL.Opt(IDL.Nat)\n });\n const TransType = IDL.Variant({\n burn: IDL.Null,\n mint: IDL.Null,\n approve: IDL.Null,\n transfer: IDL.Null\n });\n const Transaction = IDL.Record({\n to: AccountIdentifier,\n fee: Balance,\n status: IDL.Text,\n transType: TransType,\n from: AccountIdentifier,\n hash: IDL.Text,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n timestamp: IDL.Int,\n index: IDL.Nat,\n amount: Balance\n });\n const Page = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result = IDL.Variant({ ok: Page, err: CommonError });\n const Memo = IDL.Vec(IDL.Nat8);\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n nonce: IDL.Opt(IDL.Nat),\n amount: Balance\n });\n const Token = IDL.Service({\n allowance: IDL.Func([AllowanceRequest], [Result_2], [\"query\"]),\n approve: IDL.Func([ApproveRequest], [Result_3], []),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n cycleAvailable: IDL.Func([], [Result_7], []),\n cycleBalance: IDL.Func([], [Result_7], [\"query\"]),\n extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n getFee: IDL.Func([], [Result_2], [\"query\"]),\n holders: IDL.Func([HoldersRequest], [Result_6], [\"query\"]),\n logo: IDL.Func([], [Result_5], [\"query\"]),\n metadata: IDL.Func([], [Result_4], [\"query\"]),\n mint: IDL.Func([MintRequest], [TransferResponse], []),\n registry: IDL.Func([], [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Balance__1))], [\"query\"]),\n setFee: IDL.Func([Balance__1], [Result_3], []),\n setFeeTo: IDL.Func([User__1], [Result_3], []),\n setLogo: IDL.Func([IDL.Text], [Result_3], []),\n supply: IDL.Func([], [Result_2], [\"query\"]),\n totalHolders: IDL.Func([], [Result_1], [\"query\"]),\n transactions: IDL.Func([TransactionRequest], [Result], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n transferFrom: IDL.Func([TransferRequest], [TransferResponse], [])\n });\n return Token;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Balance = IDL.Nat;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const AllowanceRequest = IDL.Record({\n owner: User,\n subaccount: IDL.Opt(SubAccount),\n spender: IDL.Principal\n });\n const Balance__1 = IDL.Nat;\n const TokenIdentifier = IDL.Text;\n const CommonError__1 = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const Result_4 = IDL.Variant({ ok: Balance__1, err: CommonError__1 });\n const ApproveRequest = IDL.Record({\n subaccount: IDL.Opt(SubAccount),\n allowance: Balance,\n spender: IDL.Principal\n });\n const Result_5 = IDL.Variant({ ok: IDL.Bool, err: CommonError__1 });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User\n });\n const CommonError = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const BalanceResponse = IDL.Variant({ ok: Balance, err: CommonError });\n const Result_10 = IDL.Variant({ ok: IDL.Nat, err: CommonError__1 });\n const Extension = IDL.Text;\n const HoldersRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat)\n });\n const Holder = IDL.Record({\n balance: IDL.Nat,\n account: AccountIdentifier\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(Holder),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_9 = IDL.Variant({ ok: Page_2, err: CommonError });\n const Result_8 = IDL.Variant({ ok: IDL.Text, err: CommonError__1 });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n ownerAccount: AccountIdentifier,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) })\n });\n const Result_7 = IDL.Variant({ ok: Metadata, err: CommonError__1 });\n const BlockHeight = IDL.Nat64;\n const MintRequest = IDL.Record({ to: User, blockHeight: BlockHeight });\n const Result_6 = IDL.Variant({ ok: IDL.Bool, err: CommonError });\n const AccountIdentifier__1 = IDL.Text;\n const User__1 = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const Result_3 = IDL.Variant({ ok: IDL.Nat, err: CommonError });\n const TransactionRequest = IDL.Record({\n hash: IDL.Opt(IDL.Text),\n user: IDL.Opt(User),\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat),\n index: IDL.Opt(IDL.Nat)\n });\n const TransType = IDL.Variant({\n burn: IDL.Null,\n mint: IDL.Null,\n approve: IDL.Null,\n transfer: IDL.Null\n });\n const Transaction = IDL.Record({\n to: AccountIdentifier,\n fee: Balance,\n status: IDL.Text,\n transType: TransType,\n from: AccountIdentifier,\n hash: IDL.Text,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n timestamp: IDL.Int,\n index: IDL.Nat,\n amount: Balance\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_2 = IDL.Variant({ ok: Page_1, err: CommonError });\n const Memo = IDL.Vec(IDL.Nat8);\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n nonce: IDL.Opt(IDL.Nat),\n amount: Balance\n });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n })\n });\n const WithdrawRequest = IDL.Record({ to: User, amount: Balance });\n const BlockHeight__1 = IDL.Nat64;\n const Result_1 = IDL.Variant({ ok: BlockHeight__1, err: CommonError });\n const WrapRequest = IDL.Record({\n user: IDL.Opt(User),\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat),\n index: IDL.Opt(IDL.Nat)\n });\n const Date = IDL.Nat64;\n const WrapType = IDL.Variant({ wrap: IDL.Null, unwrap: IDL.Null });\n const WrapRecord = IDL.Record({\n to: AccountIdentifier,\n date: Date,\n from: AccountIdentifier,\n wrapType: WrapType,\n blockHeight: BlockHeight,\n index: IDL.Nat,\n amount: Balance\n });\n const Page = IDL.Record({\n content: IDL.Vec(WrapRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result = IDL.Variant({ ok: Page, err: CommonError });\n const WrapToken = IDL.Service({\n allowance: IDL.Func([AllowanceRequest], [Result_4], [\"query\"]),\n approve: IDL.Func([ApproveRequest], [Result_5], []),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n cycleAvailable: IDL.Func([], [Result_10], []),\n cycleBalance: IDL.Func([], [Result_10], [\"query\"]),\n extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n getFee: IDL.Func([], [Result_4], [\"query\"]),\n holders: IDL.Func([HoldersRequest], [Result_9], [\"query\"]),\n logo: IDL.Func([], [Result_8], [\"query\"]),\n metadata: IDL.Func([], [Result_7], [\"query\"]),\n mint: IDL.Func([MintRequest], [Result_6], []),\n registry: IDL.Func([], [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Balance__1))], [\"query\"]),\n setFee: IDL.Func([Balance__1], [Result_5], []),\n setFeeTo: IDL.Func([User__1], [Result_5], []),\n setLogo: IDL.Func([IDL.Text], [Result_5], []),\n supply: IDL.Func([], [Result_4], [\"query\"]),\n totalHolders: IDL.Func([], [Result_3], [\"query\"]),\n transactions: IDL.Func([TransactionRequest], [Result_2], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n transferFrom: IDL.Func([TransferRequest], [TransferResponse], []),\n withdraw: IDL.Func([WithdrawRequest], [Result_1], []),\n wrappedTx: IDL.Func([WrapRequest], [Result], [])\n });\n return WrapToken;\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\nimport {\n WrapICP,\n WrapICPInterfaceFactory,\n EXTToken,\n EXTTokenInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const ext = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n canisterId,\n idlFactory: EXTTokenInterfaceFactory,\n });\n\nexport const wrapICP = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.WICP,\n identity,\n idlFactory: WrapICPInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const UpgradeArgs = IDL.Record({\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n icrc1_minting_account: IDL.Opt(Account)\n });\n const Tokens = IDL.Record({ e8s: IDL.Nat64 });\n const Duration = IDL.Record({ secs: IDL.Nat64, nanos: IDL.Nat32 });\n const ArchiveOptions = IDL.Record({\n num_blocks_to_archive: IDL.Nat64,\n max_transactions_per_response: IDL.Opt(IDL.Nat64),\n trigger_threshold: IDL.Nat64,\n max_message_size_bytes: IDL.Opt(IDL.Nat64),\n cycles_for_archive_creation: IDL.Opt(IDL.Nat64),\n node_max_memory_size_bytes: IDL.Opt(IDL.Nat64),\n controller_id: IDL.Principal\n });\n const InitArgs = IDL.Record({\n send_whitelist: IDL.Vec(IDL.Principal),\n token_symbol: IDL.Opt(IDL.Text),\n transfer_fee: IDL.Opt(Tokens),\n minting_account: IDL.Text,\n transaction_window: IDL.Opt(Duration),\n max_message_size_bytes: IDL.Opt(IDL.Nat64),\n icrc1_minting_account: IDL.Opt(Account),\n archive_options: IDL.Opt(ArchiveOptions),\n initial_values: IDL.Vec(IDL.Tuple(IDL.Text, Tokens)),\n token_name: IDL.Opt(IDL.Text)\n });\n const LedgerCanisterPayload = IDL.Variant({\n Upgrade: IDL.Opt(UpgradeArgs),\n Init: InitArgs\n });\n const BinaryAccountBalanceArgs = IDL.Record({\n account: IDL.Vec(IDL.Nat8)\n });\n const AccountBalanceArgs = IDL.Record({ account: IDL.Text });\n const ArchiveInfo = IDL.Record({ canister_id: IDL.Principal });\n const Archives = IDL.Record({ archives: IDL.Vec(ArchiveInfo) });\n const Decimals = IDL.Record({ decimals: IDL.Nat32 });\n const MetadataValue = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text\n });\n const StandardRecord = IDL.Record({ url: IDL.Text, name: IDL.Text });\n const TransferArg = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const TransferError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n BadBurn: IDL.Record({ min_burn_amount: IDL.Nat }),\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat })\n });\n const Result = IDL.Variant({ Ok: IDL.Nat, Err: TransferError });\n const Name = IDL.Record({ name: IDL.Text });\n const GetBlocksArgs = IDL.Record({\n start: IDL.Nat64,\n length: IDL.Nat64\n });\n const TimeStamp = IDL.Record({ timestamp_nanos: IDL.Nat64 });\n const CandidOperation = IDL.Variant({\n Approve: IDL.Record({\n fee: Tokens,\n from: IDL.Vec(IDL.Nat8),\n allowance_e8s: IDL.Int,\n allowance: Tokens,\n expires_at: IDL.Opt(TimeStamp),\n spender: IDL.Vec(IDL.Nat8)\n }),\n Burn: IDL.Record({ from: IDL.Vec(IDL.Nat8), amount: Tokens }),\n Mint: IDL.Record({ to: IDL.Vec(IDL.Nat8), amount: Tokens }),\n Transfer: IDL.Record({\n to: IDL.Vec(IDL.Nat8),\n fee: Tokens,\n from: IDL.Vec(IDL.Nat8),\n amount: Tokens\n }),\n TransferFrom: IDL.Record({\n to: IDL.Vec(IDL.Nat8),\n fee: Tokens,\n from: IDL.Vec(IDL.Nat8),\n amount: Tokens,\n spender: IDL.Vec(IDL.Nat8)\n })\n });\n const CandidTransaction = IDL.Record({\n memo: IDL.Nat64,\n icrc1_memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n operation: IDL.Opt(CandidOperation),\n created_at_time: TimeStamp\n });\n const CandidBlock = IDL.Record({\n transaction: CandidTransaction,\n timestamp: TimeStamp,\n parent_hash: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const BlockRange = IDL.Record({ blocks: IDL.Vec(CandidBlock) });\n const GetBlocksError = IDL.Variant({\n BadFirstBlockIndex: IDL.Record({\n requested_index: IDL.Nat64,\n first_valid_index: IDL.Nat64\n }),\n Other: IDL.Record({\n error_message: IDL.Text,\n error_code: IDL.Nat64\n })\n });\n const ArchivedBlocksRange = IDL.Record({\n callback: IDL.Func([GetBlocksArgs], [IDL.Variant({ Ok: BlockRange, Err: GetBlocksError })], [\"query\"]),\n start: IDL.Nat64,\n length: IDL.Nat64\n });\n const QueryBlocksResponse = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n blocks: IDL.Vec(CandidBlock),\n chain_length: IDL.Nat64,\n first_block_index: IDL.Nat64,\n archived_blocks: IDL.Vec(ArchivedBlocksRange)\n });\n const ArchivedEncodedBlocksRange = IDL.Record({\n callback: IDL.Func(\n [GetBlocksArgs],\n [\n IDL.Variant({\n Ok: IDL.Vec(IDL.Vec(IDL.Nat8)),\n Err: GetBlocksError\n })\n ],\n [\"query\"]\n ),\n start: IDL.Nat64,\n length: IDL.Nat64\n });\n const QueryEncodedBlocksResponse = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n blocks: IDL.Vec(IDL.Vec(IDL.Nat8)),\n chain_length: IDL.Nat64,\n first_block_index: IDL.Nat64,\n archived_blocks: IDL.Vec(ArchivedEncodedBlocksRange)\n });\n const SendArgs = IDL.Record({\n to: IDL.Text,\n fee: Tokens,\n memo: IDL.Nat64,\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(TimeStamp),\n amount: Tokens\n });\n const Symbol = IDL.Record({ symbol: IDL.Text });\n const TransferArgs = IDL.Record({\n to: IDL.Vec(IDL.Nat8),\n fee: Tokens,\n memo: IDL.Nat64,\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(TimeStamp),\n amount: Tokens\n });\n const TransferError_1 = IDL.Variant({\n TxTooOld: IDL.Record({ allowed_window_nanos: IDL.Nat64 }),\n BadFee: IDL.Record({ expected_fee: Tokens }),\n TxDuplicate: IDL.Record({ duplicate_of: IDL.Nat64 }),\n TxCreatedInFuture: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: Tokens })\n });\n const Result_1 = IDL.Variant({ Ok: IDL.Nat64, Err: TransferError_1 });\n const TransferFee = IDL.Record({ transfer_fee: Tokens });\n return IDL.Service({\n account_balance: IDL.Func([BinaryAccountBalanceArgs], [Tokens], [\"query\"]),\n account_balance_dfx: IDL.Func([AccountBalanceArgs], [Tokens], [\"query\"]),\n archives: IDL.Func([], [Archives], [\"query\"]),\n decimals: IDL.Func([], [Decimals], [\"query\"]),\n icrc1_balance_of: IDL.Func([Account], [IDL.Nat], [\"query\"]),\n icrc1_decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n icrc1_fee: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_metadata: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))], [\"query\"]),\n icrc1_minting_account: IDL.Func([], [IDL.Opt(Account)], [\"query\"]),\n icrc1_name: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_supported_standards: IDL.Func([], [IDL.Vec(StandardRecord)], [\"query\"]),\n icrc1_symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_total_supply: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_transfer: IDL.Func([TransferArg], [Result], []),\n name: IDL.Func([], [Name], [\"query\"]),\n query_blocks: IDL.Func([GetBlocksArgs], [QueryBlocksResponse], [\"query\"]),\n query_encoded_blocks: IDL.Func([GetBlocksArgs], [QueryEncodedBlocksResponse], [\"query\"]),\n send_dfx: IDL.Func([SendArgs], [IDL.Nat64], []),\n symbol: IDL.Func([], [Symbol], [\"query\"]),\n transfer: IDL.Func([TransferArgs], [Result_1], []),\n transfer_fee: IDL.Func([IDL.Record({})], [TransferFee], [\"query\"])\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { Ledger, LedgerInterfaceFactory } from \"@icpswap/candid\";\n\nimport { LEDGER_CANISTER_ID, ic_host } from \"@icpswap/constants\";\n\nexport const ledgerService = (identity?: ActorIdentity) =>\n actor.create({\n idlFactory: LedgerInterfaceFactory,\n canisterId: LEDGER_CANISTER_ID,\n identity,\n host: ic_host,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const AccountIdentifier = IDL.Text;\n const KVPair = IDL.Record({ k: IDL.Text, v: IDL.Text });\n const CanisterInfo = IDL.Record({\n cid: IDL.Text,\n creator: AccountIdentifier,\n linkMap: IDL.Vec(KVPair),\n ownerName: IDL.Text,\n owner: AccountIdentifier,\n name: IDL.Text,\n createTime: IDL.Int,\n totalSupply: IDL.Nat,\n introduction: IDL.Text,\n mintSupply: IDL.Nat,\n royalties: IDL.Nat,\n image: IDL.Text\n });\n const ResponseResult_5 = IDL.Variant({\n ok: CanisterInfo,\n err: IDL.Text\n });\n const CanisterRequest = IDL.Record({\n linkMap: IDL.Vec(KVPair),\n ownerName: IDL.Text,\n name: IDL.Text,\n introduction: IDL.Text,\n royalties: IDL.Nat,\n image: IDL.Text\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const ResponseResult = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Nat, IDL.Text, IDL.Text),\n err: IDL.Text\n });\n const PageResponse = IDL.Record({\n content: IDL.Vec(CanisterInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_2 = IDL.Variant({\n ok: PageResponse,\n err: IDL.Text\n });\n const ResponseResult_4 = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Text, IDL.Text, IDL.Text),\n err: IDL.Text\n });\n const Page = IDL.Record({\n content: IDL.Vec(CanisterInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_3 = IDL.Variant({ ok: Page, err: IDL.Text });\n const ResponseResult_1 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n return IDL.Service({\n add: IDL.Func([IDL.Text, IDL.Nat], [NatResult], []),\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n canisterInfo: IDL.Func([IDL.Text], [ResponseResult_5], [\"query\"]),\n create: IDL.Func([CanisterRequest], [TextResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], []),\n delete: IDL.Func([IDL.Text], [BoolResult], []),\n deleteTradeStatCanister: IDL.Func([IDL.Text], [BoolResult], []),\n feeInfo: IDL.Func([], [ResponseResult], [\"query\"]),\n findCanister: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n findCanisterConfig: IDL.Func([], [ResponseResult_4], [\"query\"]),\n findTop5Canister: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_3], [\"query\"]),\n findUserCanister: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n getAdminList: IDL.Func([], [ResponseResult_1], [\"query\"]),\n initLogo: IDL.Func([], [BoolResult], []),\n insert: IDL.Func([CanisterInfo], [NatResult], []),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n setCanisterConfig: IDL.Func(\n [IDL.Nat, IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Nat32],\n [BoolResult],\n []\n ),\n setFeeInfo: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text, IDL.Text], [ResponseResult], []),\n setLogo: IDL.Func([IDL.Text, IDL.Text], [BoolResult], [])\n });\n};\n","export const idlFactory = ({ IDL }) => {\n const TokenIdentifier = IDL.Text;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n 'principal' : IDL.Principal,\n 'address' : AccountIdentifier,\n });\n const AllowanceRequest = IDL.Record({\n 'token' : TokenIdentifier,\n 'owner' : User,\n 'spender' : IDL.Principal,\n });\n const Balance__1 = IDL.Nat;\n const CommonError = IDL.Variant({\n 'InsufficientBalance' : IDL.Null,\n 'InvalidToken' : TokenIdentifier,\n 'Unauthorized' : AccountIdentifier,\n 'Other' : IDL.Text,\n });\n const Result_1 = IDL.Variant({ 'ok' : Balance__1, 'err' : CommonError });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Balance = IDL.Nat;\n const ApproveRequest = IDL.Record({\n 'token' : TokenIdentifier,\n 'subaccount' : IDL.Opt(SubAccount),\n 'allowance' : Balance,\n 'spender' : IDL.Principal,\n });\n const ApproveAllRequest = IDL.Record({\n 'approved' : IDL.Bool,\n 'spender' : User,\n });\n const BoolResult = IDL.Variant({ 'ok' : IDL.Bool, 'err' : IDL.Text });\n const BalanceRequest = IDL.Record({\n 'token' : TokenIdentifier,\n 'user' : User,\n });\n const CommonError__1 = IDL.Variant({\n 'InsufficientBalance' : IDL.Null,\n 'InvalidToken' : TokenIdentifier,\n 'Unauthorized' : AccountIdentifier,\n 'Other' : IDL.Text,\n });\n const BalanceResponse = IDL.Variant({\n 'ok' : Balance,\n 'err' : CommonError__1,\n });\n const TokenIdentifier__1 = IDL.Text;\n const AccountIdentifier__1 = IDL.Text;\n const Result_4 = IDL.Variant({\n 'ok' : AccountIdentifier__1,\n 'err' : CommonError,\n });\n const AccountIdentifier__2 = IDL.Text;\n const KVPair__1 = IDL.Record({ 'k' : IDL.Text, 'v' : IDL.Text });\n const CanisterInfo = IDL.Record({\n 'cid' : IDL.Text,\n 'creator' : AccountIdentifier__2,\n 'linkMap' : IDL.Vec(KVPair__1),\n 'ownerName' : IDL.Text,\n 'owner' : AccountIdentifier__2,\n 'name' : IDL.Text,\n 'createTime' : IDL.Int,\n 'totalSupply' : IDL.Nat,\n 'introduction' : IDL.Text,\n 'mintSupply' : IDL.Nat,\n 'royalties' : IDL.Nat,\n 'image' : IDL.Text,\n });\n const ResponseResult_6 = IDL.Variant({\n 'ok' : CanisterInfo,\n 'err' : IDL.Text,\n });\n const TokenIndex = IDL.Nat32;\n const TextResult = IDL.Variant({ 'ok' : IDL.Text, 'err' : IDL.Text });\n const Chunk = IDL.Record({\n 'content' : IDL.Vec(IDL.Nat8),\n 'batch_id' : IDL.Nat,\n });\n const NatResult = IDL.Variant({ 'ok' : IDL.Nat, 'err' : IDL.Text });\n const Extension = IDL.Text;\n const User__1 = IDL.Variant({\n 'principal' : IDL.Principal,\n 'address' : AccountIdentifier,\n });\n const TokenIndex__1 = IDL.Nat32;\n const KVPair = IDL.Record({ 'k' : IDL.Text, 'v' : IDL.Text });\n const IcsMetadata = IDL.Record({\n 'cId' : IDL.Text,\n 'tokenId' : TokenIndex__1,\n 'owner' : AccountIdentifier,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'link' : IDL.Text,\n 'name' : IDL.Text,\n 'minter' : AccountIdentifier,\n 'filePath' : IDL.Text,\n 'fileType' : IDL.Text,\n 'mintTime' : IDL.Int,\n 'introduction' : IDL.Text,\n 'attributes' : IDL.Vec(KVPair),\n 'royalties' : IDL.Nat,\n 'nftType' : IDL.Text,\n 'artistName' : IDL.Text,\n });\n const Page_1 = IDL.Record({\n 'content' : IDL.Vec(IcsMetadata),\n 'offset' : IDL.Nat,\n 'limit' : IDL.Nat,\n 'totalElements' : IDL.Nat,\n });\n const ResponseResult_5 = IDL.Variant({ 'ok' : Page_1, 'err' : IDL.Text });\n const Remark = IDL.Text;\n const Memo = IDL.Vec(IDL.Nat8);\n const TransType = IDL.Variant({\n 'burn' : IDL.Null,\n 'mint' : IDL.Null,\n 'approve' : IDL.Null,\n 'transfer' : IDL.Null,\n });\n const TransferRecord = IDL.Record({\n 'to' : AccountIdentifier,\n 'remark' : Remark,\n 'tokenId' : TokenIndex__1,\n 'from' : AccountIdentifier,\n 'hash' : IDL.Text,\n 'memo' : IDL.Opt(Memo),\n 'time' : IDL.Int,\n 'tokenName' : IDL.Text,\n 'txType' : TransType,\n 'caller' : AccountIdentifier,\n 'price' : Balance,\n 'amount' : Balance,\n });\n const Page = IDL.Record({\n 'content' : IDL.Vec(TransferRecord),\n 'offset' : IDL.Nat,\n 'limit' : IDL.Nat,\n 'totalElements' : IDL.Nat,\n });\n const ResponseResult_4 = IDL.Variant({ 'ok' : Page, 'err' : IDL.Text });\n const ResponseResult_3 = IDL.Variant({\n 'ok' : IDL.Tuple(IDL.Nat, IDL.Nat),\n 'err' : IDL.Text,\n });\n const Metadata = IDL.Variant({\n 'fungible' : IDL.Record({\n 'decimals' : IDL.Nat8,\n 'ownerAccount' : AccountIdentifier,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'name' : IDL.Text,\n 'symbol' : IDL.Text,\n }),\n 'nonfungible' : IDL.Record({ 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)) }),\n });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n 'url' : IDL.Text,\n 'method' : IDL.Text,\n 'body' : IDL.Vec(IDL.Nat8),\n 'headers' : IDL.Vec(HeaderField),\n });\n const StreamingCallbackToken__1 = IDL.Record({\n 'key' : IDL.Text,\n 'index' : IDL.Nat,\n 'content_encoding' : IDL.Text,\n });\n const StreamingStrategy = IDL.Variant({\n 'Callback' : IDL.Record({\n 'token' : StreamingCallbackToken__1,\n 'callback' : IDL.Func([], [], []),\n }),\n });\n const HttpResponse = IDL.Record({\n 'body' : IDL.Vec(IDL.Nat8),\n 'headers' : IDL.Vec(HeaderField),\n 'streaming_strategy' : IDL.Opt(StreamingStrategy),\n 'status_code' : IDL.Nat16,\n });\n const StreamingCallbackToken = IDL.Record({\n 'key' : IDL.Text,\n 'index' : IDL.Nat,\n 'content_encoding' : IDL.Text,\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n 'token' : IDL.Opt(StreamingCallbackToken__1),\n 'body' : IDL.Vec(IDL.Nat8),\n });\n const ResponseResult_2 = IDL.Variant({\n 'ok' : IcsMetadata,\n 'err' : IDL.Text,\n });\n const ResponseResult = IDL.Variant({ 'ok' : Balance__1, 'err' : IDL.Text });\n const Result_3 = IDL.Variant({ 'ok' : IDL.Text, 'err' : IDL.Text });\n const Result_2 = IDL.Variant({ 'ok' : Metadata, 'err' : CommonError });\n const IcsMintRequest = IDL.Record({\n 'owner' : User,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'link' : IDL.Text,\n 'name' : IDL.Text,\n 'filePath' : IDL.Text,\n 'fileType' : IDL.Text,\n 'introduction' : IDL.Text,\n 'attributes' : IDL.Vec(KVPair),\n 'royalties' : IDL.Nat,\n 'nftType' : IDL.Text,\n 'image' : IDL.Text,\n 'artistName' : IDL.Text,\n });\n const ResponseResult_1 = IDL.Variant({ 'ok' : TokenIndex, 'err' : IDL.Text });\n const MintRequest = IDL.Record({\n 'to' : User,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const IcsMintRequests = IDL.Record({\n 'owner' : User,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'link' : IDL.Text,\n 'name' : IDL.Text,\n 'count' : IDL.Nat,\n 'filePath' : IDL.Text,\n 'fileType' : IDL.Text,\n 'introduction' : IDL.Text,\n 'attributes' : IDL.Vec(KVPair),\n 'royalties' : IDL.Nat,\n 'nftType' : IDL.Text,\n 'image' : IDL.Text,\n 'artistName' : IDL.Text,\n });\n const Time = IDL.Int;\n const Listing = IDL.Record({\n 'locked' : IDL.Opt(Time),\n 'seller' : IDL.Principal,\n 'price' : IDL.Nat64,\n });\n const Result = IDL.Variant({\n 'ok' : IDL.Vec(\n IDL.Tuple(TokenIndex, IDL.Opt(Listing), IDL.Opt(IDL.Vec(IDL.Nat8)))\n ),\n 'err' : CommonError,\n });\n const TransferRequest = IDL.Record({\n 'to' : User,\n 'token' : TokenIdentifier,\n 'notify' : IDL.Bool,\n 'from' : User,\n 'memo' : Memo,\n 'subaccount' : IDL.Opt(SubAccount),\n 'nonce' : IDL.Opt(IDL.Nat),\n 'amount' : Balance,\n });\n const TransferResponse = IDL.Variant({\n 'ok' : Balance,\n 'err' : IDL.Variant({\n 'InsufficientAllowance' : IDL.Null,\n 'CannotNotify' : AccountIdentifier,\n 'InsufficientBalance' : IDL.Null,\n 'InvalidToken' : TokenIdentifier,\n 'Rejected' : IDL.Null,\n 'Unauthorized' : AccountIdentifier,\n 'Other' : IDL.Text,\n }),\n });\n const NFTDynamicCanister = IDL.Service({\n 'acceptCycles' : IDL.Func([], [], []),\n 'allowance' : IDL.Func([AllowanceRequest], [Result_1], ['query']),\n 'approve' : IDL.Func([ApproveRequest], [], []),\n 'approveForAll' : IDL.Func([ApproveAllRequest], [BoolResult], []),\n 'availableCycles' : IDL.Func([], [IDL.Nat], ['query']),\n 'balance' : IDL.Func([BalanceRequest], [BalanceResponse], ['query']),\n 'bearer' : IDL.Func([TokenIdentifier__1], [Result_4], ['query']),\n 'canisterInfo' : IDL.Func([], [ResponseResult_6], ['query']),\n 'chunkSize' : IDL.Func([], [IDL.Nat], ['query']),\n 'clearChunk' : IDL.Func([], [IDL.Bool], []),\n 'commit_batch' : IDL.Func(\n [\n IDL.Record({\n 'batch_id' : IDL.Nat,\n 'content_type' : IDL.Text,\n 'chunk_ids' : IDL.Vec(IDL.Nat),\n }),\n ],\n [],\n [],\n ),\n 'create' : IDL.Func([CanisterInfo, TokenIndex, IDL.Text], [TextResult], []),\n 'create_batch' : IDL.Func([], [IDL.Record({ 'batch_id' : IDL.Nat })], []),\n 'create_chunk' : IDL.Func(\n [Chunk],\n [IDL.Record({ 'chunk_id' : IDL.Nat })],\n [],\n ),\n 'cycleAvailable' : IDL.Func([], [NatResult], []),\n 'cycleBalance' : IDL.Func([], [NatResult], []),\n 'extensions' : IDL.Func([], [IDL.Vec(Extension)], ['query']),\n 'findCanisterId' : IDL.Func([], [TextResult], []),\n 'findTokenList' : IDL.Func(\n [User__1, IDL.Nat, IDL.Nat],\n [ResponseResult_5],\n ['query'],\n ),\n 'findTokenMarket' : IDL.Func(\n [IDL.Vec(IDL.Text), IDL.Nat, IDL.Nat],\n [ResponseResult_5],\n ['query'],\n ),\n 'findTokenTxRecord' : IDL.Func(\n [User__1, IDL.Nat, IDL.Nat],\n [ResponseResult_4],\n ['query'],\n ),\n 'findTxRecord' : IDL.Func(\n [TokenIdentifier, IDL.Nat, IDL.Nat],\n [ResponseResult_4],\n ['query'],\n ),\n 'getAllowances' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, IDL.Vec(AccountIdentifier__1)))],\n ['query'],\n ),\n 'getMinter' : IDL.Func([], [IDL.Principal], ['query']),\n 'getNftStat' : IDL.Func([], [ResponseResult_3], ['query']),\n 'getRegistry' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, AccountIdentifier__1))],\n ['query'],\n ),\n 'getTokens' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, Metadata))],\n ['query'],\n ),\n 'http_request' : IDL.Func([HttpRequest], [HttpResponse], ['query']),\n 'http_request_streaming_callback' : IDL.Func(\n [StreamingCallbackToken],\n [StreamingCallbackHttpResponse],\n ['query'],\n ),\n 'icsMetadata' : IDL.Func([TokenIndex], [ResponseResult_2], ['query']),\n 'isApproveForAll' : IDL.Func(\n [AccountIdentifier__1, AccountIdentifier__1],\n [BoolResult],\n ['query'],\n ),\n 'isApproveForToken' : IDL.Func(\n [TokenIndex, AccountIdentifier__1, AccountIdentifier__1],\n [ResponseResult],\n ['query'],\n ),\n 'maxFileSize' : IDL.Func([IDL.Nat], [Result_3], []),\n 'metadata' : IDL.Func([TokenIdentifier__1], [Result_2], ['query']),\n 'mint' : IDL.Func([IcsMintRequest], [ResponseResult_1], []),\n 'mintNFT' : IDL.Func([MintRequest], [TokenIndex], []),\n 'mint_batch' : IDL.Func([IcsMintRequests], [ResponseResult_1], []),\n 'ownerNFTCount' : IDL.Func([User__1], [ResponseResult], ['query']),\n 'removeAllApproval' : IDL.Func([ApproveAllRequest], [BoolResult], []),\n 'removeApproval' : IDL.Func([ApproveRequest], [BoolResult], []),\n 'setCanisterId' : IDL.Func([IDL.Opt(IDL.Text)], [BoolResult], []),\n 'setLogo' : IDL.Func([IDL.Text], [BoolResult], []),\n 'setMinter' : IDL.Func([IDL.Principal], [], []),\n 'spenderRemoveApproval' : IDL.Func([TokenIdentifier], [BoolResult], []),\n 'supply' : IDL.Func([TokenIdentifier__1], [Result_1], ['query']),\n 'tokens_ext' : IDL.Func([AccountIdentifier__1], [Result], ['query']),\n 'transfer' : IDL.Func([TransferRequest], [TransferResponse], []),\n });\n return NFTDynamicCanister;\n};\nexport const init = ({ IDL }) => { return [IDL.Principal]; };\n","export const idlFactory = ({ IDL }: any) => {\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const TokenIndex__1 = IDL.Nat32;\n const BuyRequest = IDL.Record({\n nftCid: IDL.Text,\n tokenIndex: TokenIndex__1\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const ResponseResult_6 = IDL.Variant({\n ok: IDL.Tuple(IDL.Text, IDL.Text),\n err: IDL.Text\n });\n const Time = IDL.Int;\n const AccountIdentifier = IDL.Text;\n const OrderInfo = IDL.Record({\n cid: IDL.Text,\n nftCid: IDL.Text,\n tokenIndex: TokenIndex__1,\n hash: IDL.Text,\n link: IDL.Text,\n name: IDL.Text,\n time: Time,\n minter: AccountIdentifier,\n filePath: IDL.Text,\n fileType: IDL.Text,\n seller: AccountIdentifier,\n introduction: IDL.Text,\n royalties: IDL.Nat,\n artistName: IDL.Text,\n price: IDL.Nat\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(OrderInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_5 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const AccountIdentifier__1 = IDL.Text;\n const TokenIndex = IDL.Nat32;\n const TxInfoResponse = IDL.Record({\n cid: IDL.Text,\n nftCid: IDL.Text,\n txFee: IDL.Nat,\n tokenIndex: TokenIndex__1,\n hash: IDL.Text,\n name: IDL.Text,\n time: Time,\n minter: AccountIdentifier,\n settleAmountStatus: IDL.Text,\n royaltiesFeeStatus: IDL.Text,\n royaltiesFee: IDL.Nat,\n filePath: IDL.Text,\n fileType: IDL.Text,\n txFeeStatus: IDL.Text,\n seller: AccountIdentifier,\n txStatus: IDL.Text,\n settleAmount: IDL.Nat,\n buyer: AccountIdentifier,\n price: IDL.Nat\n });\n const Page = IDL.Record({\n content: IDL.Vec(TxInfoResponse),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_4 = IDL.Variant({ ok: Page, err: IDL.Text });\n const ResponseResult_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n const ResponseResult_2 = IDL.Variant({ ok: OrderInfo, err: IDL.Text });\n const StatResponse = IDL.Record({\n totalVolume: IDL.Nat,\n listSize: IDL.Nat,\n totalTurnover: IDL.Nat,\n avgPrice: IDL.Nat,\n maxPrice: IDL.Nat,\n minPrice: IDL.Nat\n });\n const ResponseResult_1 = IDL.Variant({\n ok: StatResponse,\n err: IDL.Text\n });\n const ResponseResult = IDL.Variant({\n ok: IDL.Tuple(IDL.Bool, IDL.Nat, IDL.Nat, IDL.Nat),\n err: IDL.Text\n });\n const RevokeRequest = IDL.Record({\n nftCid: IDL.Text,\n tokenIndex: TokenIndex__1\n });\n const SaleRequest = IDL.Record({\n nftCid: IDL.Text,\n tokenIndex: TokenIndex__1,\n price: IDL.Nat\n });\n return IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n buy: IDL.Func([BuyRequest], [BoolResult], []),\n cancel: IDL.Func([IDL.Nat32, IDL.Text], [BoolResult], []),\n cancelOrder: IDL.Func([IDL.Nat32], [BoolResult], []),\n checkPayment: IDL.Func([IDL.Text], [BoolResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], []),\n findCanisterId: IDL.Func([], [ResponseResult_6], []),\n findCanisterRecommend: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [ResponseResult_5], [\"query\"]),\n findOrderPage: IDL.Func(\n [\n IDL.Opt(IDL.Text),\n IDL.Opt(IDL.Text),\n IDL.Opt(AccountIdentifier__1),\n IDL.Opt(TokenIndex),\n IDL.Nat,\n IDL.Nat,\n IDL.Text,\n IDL.Bool\n ],\n [ResponseResult_5],\n [\"query\"]\n ),\n findRecommend: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_5], [\"query\"]),\n findTokenOrderPage: IDL.Func(\n [TokenIndex, IDL.Text, IDL.Nat, IDL.Nat, IDL.Text, IDL.Bool],\n [ResponseResult_5],\n [\"query\"]\n ),\n findTokenTxPage: IDL.Func(\n [TokenIndex, IDL.Text, IDL.Nat, IDL.Nat, IDL.Text, IDL.Bool],\n [ResponseResult_4],\n [\"query\"]\n ),\n findTxPage: IDL.Func(\n [IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Opt(TokenIndex), IDL.Nat, IDL.Nat, IDL.Text, IDL.Bool],\n [ResponseResult_4],\n [\"query\"]\n ),\n findUserTxPage: IDL.Func(\n [AccountIdentifier__1, IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Nat, IDL.Nat, IDL.Text, IDL.Bool],\n [ResponseResult_4],\n [\"query\"]\n ),\n getAddress: IDL.Func([], [IDL.Text], [\"query\"]),\n getAdminList: IDL.Func([], [ResponseResult_3], [\"query\"]),\n getOrder: IDL.Func([IDL.Text, TokenIndex], [ResponseResult_2], [\"query\"]),\n getStat: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getTradeState: IDL.Func([], [ResponseResult], [\"query\"]),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n removeList: IDL.Func([], [BoolResult], []),\n revoke: IDL.Func([RevokeRequest], [BoolResult], []),\n sale: IDL.Func([SaleRequest], [BoolResult], []),\n setCanisterId: IDL.Func([IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Opt(IDL.Text)], [BoolResult], []),\n setState: IDL.Func([IDL.Text, IDL.Text, IDL.Text], [BoolResult], []),\n setTradeState: IDL.Func([IDL.Bool], [BoolResult], []),\n unlock: IDL.Func([IDL.Text, TokenIndex], [BoolResult], [])\n });\n};\n","export const idlFactory = ({ IDL }) => {\n const BoolResult = IDL.Variant({ 'ok' : IDL.Bool, 'err' : IDL.Text });\n const NatResult = IDL.Variant({ 'ok' : IDL.Nat, 'err' : IDL.Text });\n const TradeStatResp = IDL.Record({\n 'cid' : IDL.Text,\n 'totalVolume' : IDL.Nat,\n 'listSize' : IDL.Nat,\n 'name' : IDL.Text,\n 'totalTurnover' : IDL.Nat,\n 'floorPrice' : IDL.Nat,\n 'avgPrice' : IDL.Nat,\n 'maxPrice' : IDL.Nat,\n 'minPrice' : IDL.Nat,\n 'transactionCount' : IDL.Nat,\n });\n const Page = IDL.Record({\n 'content' : IDL.Vec(TradeStatResp),\n 'offset' : IDL.Nat,\n 'limit' : IDL.Nat,\n 'totalElements' : IDL.Nat,\n });\n const ResponseResult_3 = IDL.Variant({ 'ok' : Page, 'err' : IDL.Text });\n const ResponseResult_2 = IDL.Variant({\n 'ok' : IDL.Vec(IDL.Text),\n 'err' : IDL.Text,\n });\n const ResponseResult_1 = IDL.Variant({\n 'ok' : TradeStatResp,\n 'err' : IDL.Text,\n });\n const StatResponse = IDL.Record({\n 'totalVolume' : IDL.Nat,\n 'listSize' : IDL.Nat,\n 'totalTurnover' : IDL.Nat,\n 'avgPrice' : IDL.Nat,\n 'maxPrice' : IDL.Nat,\n 'minPrice' : IDL.Nat,\n });\n const ResponseResult = IDL.Variant({ 'ok' : StatResponse, 'err' : IDL.Text });\n return IDL.Service({\n 'addAdmin' : IDL.Func([IDL.Text], [BoolResult], []),\n 'cycleAvailable' : IDL.Func([], [NatResult], []),\n 'cycleBalance' : IDL.Func([], [NatResult], []),\n 'findCanisterStat' : IDL.Func(\n [IDL.Nat, IDL.Nat],\n [ResponseResult_3],\n ['query'],\n ),\n 'findNameStat' : IDL.Func(\n [IDL.Text, IDL.Nat, IDL.Nat],\n [ResponseResult_3],\n ['query'],\n ),\n 'getAdminList' : IDL.Func([], [ResponseResult_2], ['query']),\n 'getCanisterStat' : IDL.Func([IDL.Text], [ResponseResult_1], ['query']),\n 'getNameStat' : IDL.Func([IDL.Text], [ResponseResult_1], ['query']),\n 'getStat' : IDL.Func([], [ResponseResult], ['query']),\n 'init' : IDL.Func([], [NatResult], []),\n 'listStat' : IDL.Func(\n [IDL.Text, IDL.Text, IDL.Nat, IDL.Bool],\n [BoolResult],\n [],\n ),\n 'removeAdmin' : IDL.Func([IDL.Text], [BoolResult], []),\n 'setCanisterId' : IDL.Func(\n [IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Opt(IDL.Text)],\n [BoolResult],\n [],\n ),\n 'tradeStat' : IDL.Func(\n [IDL.Nat, IDL.Nat, IDL.Text, IDL.Text],\n [BoolResult],\n [],\n ),\n });\n};\nexport const init = ({ IDL }) => { return []; };\n","export default ({ IDL }: any) => {\n const List = IDL.Rec();\n const TokenIndex = IDL.Nat;\n const User = IDL.Text;\n const SendBatchRequest = IDL.Record({\n tokens: IDL.Vec(TokenIndex),\n users: IDL.Vec(User)\n });\n const AllowanceRequest = IDL.Record({\n token: TokenIndex,\n owner: User,\n spender: User\n });\n const Balance__1 = IDL.Nat;\n const Result_2 = IDL.Variant({ ok: Balance__1, err: IDL.Text });\n const Balance = IDL.Nat;\n const ApproveRequest = IDL.Record({\n token: TokenIndex,\n allowance: Balance,\n spender: User\n });\n const Result_6 = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const BalanceRequest = IDL.Record({ token: TokenIndex, user: User });\n const BalanceResponseV2 = IDL.Variant({ ok: Balance, err: IDL.Text });\n const TokenIndex__1 = IDL.Nat;\n const Result_7 = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const ClaimRequest = IDL.Record({ code: IDL.Text, email: IDL.Text });\n const User__1 = IDL.Text;\n const KVPair = IDL.Record({ k: IDL.Text, v: IDL.Text });\n const TokenMetadataV2 = IDL.Record({\n cId: IDL.Text,\n tokenId: IDL.Nat,\n owner: User,\n link: IDL.Text,\n name: IDL.Text,\n minter: User,\n filePath: IDL.Text,\n fileType: IDL.Text,\n mintTime: IDL.Int,\n introduction: IDL.Text,\n attributes: IDL.Vec(KVPair),\n royalties: IDL.Nat,\n nftType: IDL.Text,\n artistName: IDL.Text\n });\n const PageResponse_1 = IDL.Record({\n content: IDL.Vec(TokenMetadataV2),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_5 = IDL.Variant({ ok: PageResponse_1, err: IDL.Text });\n const Memo = IDL.Text;\n const TxType = IDL.Variant({\n handsel: IDL.Null,\n mint: IDL.Null,\n transaction: IDL.Null\n });\n const TransferRecordV2 = IDL.Record({\n to: User,\n tokenId: TokenIndex,\n from: User,\n memo: Memo,\n time: IDL.Int,\n tokenName: IDL.Text,\n txType: TxType,\n caller: User,\n price: Balance,\n amount: Balance\n });\n const PageResponse = IDL.Record({\n content: IDL.Vec(TransferRecordV2),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_4 = IDL.Variant({ ok: PageResponse, err: IDL.Text });\n const NftHolderInfo = IDL.Record({\n bronze: IDL.Nat,\n gold: IDL.Nat,\n iron: IDL.Nat,\n platinum: IDL.Nat,\n silver: IDL.Nat,\n roseGold: IDL.Nat\n });\n const NftStatInfo = IDL.Record({\n holderAmount: IDL.Nat,\n userMintAmount: IDL.Nat,\n officialMintAmount: IDL.Nat,\n totalMintAmount: IDL.Nat\n });\n const EmailCode = IDL.Record({\n token: TokenIndex,\n code: IDL.Text,\n email: IDL.Text\n });\n const EmailCodeRequest = IDL.Record({ emailCode: IDL.Vec(EmailCode) });\n const Result_3 = IDL.Variant({ ok: TokenMetadataV2, err: IDL.Text });\n const MintRequestV2 = IDL.Record({\n owner: User,\n link: IDL.Text,\n name: IDL.Text,\n filePath: IDL.Text,\n fileType: IDL.Text,\n introduction: IDL.Text,\n attributes: IDL.Vec(KVPair),\n royalties: IDL.Nat,\n nftType: IDL.Text,\n image: IDL.Text,\n artistName: IDL.Text\n });\n const Result_1 = IDL.Variant({ ok: TokenIndex__1, err: IDL.Text });\n const MintRequestsV2 = IDL.Record({\n owner: User,\n link: IDL.Text,\n name: IDL.Text,\n count: IDL.Nat,\n filePath: IDL.Text,\n fileType: IDL.Text,\n introduction: IDL.Text,\n attributes: IDL.Vec(KVPair),\n royalties: IDL.Nat,\n nftType: IDL.Text,\n image: IDL.Text,\n artistName: IDL.Text\n });\n List.fill(IDL.Opt(IDL.Tuple(IDL.Text, List)));\n const EmailState = IDL.Record({\n result: List,\n total: IDL.Nat,\n claimCount: IDL.Nat,\n emailCodeCount: IDL.Nat\n });\n const Result = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Nat),\n err: IDL.Text\n });\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIndex,\n from: User,\n memo: Memo,\n amount: Balance\n });\n const TransferResponseV2 = IDL.Variant({ ok: Balance, err: IDL.Text });\n return IDL.Service({\n airdrop: IDL.Func([SendBatchRequest], [IDL.Bool, IDL.Text], []),\n allowState: IDL.Func([IDL.Nat, IDL.Bool], [], []),\n allowable: IDL.Func([], [IDL.Nat, IDL.Nat, IDL.Bool, IDL.Bool, IDL.Nat], [\"query\"]),\n allowance: IDL.Func([AllowanceRequest], [Result_2], [\"query\"]),\n approve: IDL.Func([ApproveRequest], [Result_6], []),\n balance: IDL.Func([BalanceRequest], [BalanceResponseV2], [\"query\"]),\n bearer: IDL.Func([TokenIndex__1], [Result_7], [\"query\"]),\n claim: IDL.Func([ClaimRequest], [Result_6], []),\n cycleAvailable: IDL.Func([], [IDL.Nat], []),\n cycleBalance: IDL.Func([], [IDL.Nat], []),\n findSeriesType: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n findTokenList: IDL.Func([User__1, IDL.Nat, IDL.Nat], [Result_5], [\"query\"]),\n findTokenMarket: IDL.Func([IDL.Vec(IDL.Text), IDL.Nat, IDL.Nat], [Result_5], [\"query\"]),\n findTokenTxRecord: IDL.Func([User__1, IDL.Nat, IDL.Nat], [Result_4], [\"query\"]),\n findTxRecord: IDL.Func([TokenIndex__1, IDL.Nat, IDL.Nat], [Result_4], [\"query\"]),\n getNftHolderInfo: IDL.Func([], [NftHolderInfo], [\"query\"]),\n getNftStat: IDL.Func([], [NftStatInfo], [\"query\"]),\n initEmailCode: IDL.Func([EmailCodeRequest], [], [\"oneway\"]),\n metadata: IDL.Func([TokenIndex__1], [Result_3], [\"query\"]),\n mint: IDL.Func([MintRequestV2], [Result_1], []),\n mintNFT: IDL.Func([MintRequestV2], [Result_1], []),\n mintNFTs: IDL.Func([MintRequestsV2], [Result_1], []),\n mint_batch: IDL.Func([MintRequestsV2], [Result_1], []),\n ownerNFTCount: IDL.Func([User__1], [BalanceResponseV2], [\"query\"]),\n queryEmailState: IDL.Func([IDL.Nat, IDL.Nat], [EmailState], [\"query\"]),\n setClaimState: IDL.Func([IDL.Nat, IDL.Bool], [], []),\n setSeriesType: IDL.Func([IDL.Text, IDL.Bool], [], []),\n supply: IDL.Func([], [Result_2], [\"query\"]),\n swapMint: IDL.Func([MintRequestV2, IDL.Principal], [Result_1], []),\n tokenHolds: IDL.Func([IDL.Text], [Result], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponseV2], [])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const AssetHandle = IDL.Text;\n const AccountIdentifier__1 = IDL.Text;\n const TokenIndex = IDL.Nat32;\n const SubAccount__1 = IDL.Vec(IDL.Nat8);\n const TokenIdentifier = IDL.Text;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier,\n });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User,\n });\n const Balance = IDL.Nat;\n const CommonError__1 = IDL.Variant({\n InvalidToken: TokenIdentifier,\n Other: IDL.Text,\n });\n const BalanceResponse = IDL.Variant({\n ok: Balance,\n err: CommonError__1,\n });\n const TokenIdentifier__1 = IDL.Text;\n const CommonError = IDL.Variant({\n InvalidToken: TokenIdentifier,\n Other: IDL.Text,\n });\n const Result_7 = IDL.Variant({\n ok: AccountIdentifier__1,\n err: CommonError,\n });\n const Time = IDL.Int;\n const Listing = IDL.Record({\n locked: IDL.Opt(Time),\n seller: IDL.Principal,\n price: IDL.Nat64,\n });\n const Result_10 = IDL.Variant({\n ok: IDL.Tuple(AccountIdentifier__1, IDL.Opt(Listing)),\n err: CommonError,\n });\n const AssetId = IDL.Nat32;\n const ChunkId = IDL.Nat32;\n const AssetType = IDL.Variant({\n other: IDL.Text,\n canister: IDL.Record({ id: AssetId, canister: IDL.Text }),\n direct: IDL.Vec(ChunkId),\n });\n const Extension = IDL.Text;\n const ListRequest = IDL.Record({\n token: TokenIdentifier__1,\n from_subaccount: IDL.Opt(SubAccount__1),\n price: IDL.Opt(IDL.Nat64),\n });\n const Result_3 = IDL.Variant({ ok: IDL.Null, err: CommonError });\n const MetadataValue = IDL.Tuple(\n IDL.Text,\n IDL.Variant({\n nat: IDL.Nat,\n blob: IDL.Vec(IDL.Nat8),\n nat8: IDL.Nat8,\n text: IDL.Text,\n })\n );\n const MetadataContainer = IDL.Variant({\n blob: IDL.Vec(IDL.Nat8),\n data: IDL.Vec(MetadataValue),\n json: IDL.Text,\n });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n metadata: IDL.Opt(MetadataContainer),\n name: IDL.Text,\n symbol: IDL.Text,\n }),\n nonfungible: IDL.Record({\n thumbnail: IDL.Text,\n asset: IDL.Text,\n metadata: IDL.Opt(MetadataContainer),\n name: IDL.Text,\n }),\n });\n const Result_9 = IDL.Variant({\n ok: IDL.Tuple(AccountIdentifier__1, IDL.Nat64),\n err: CommonError,\n });\n const Transaction = IDL.Record({\n token: TokenIndex,\n time: Time,\n seller: AccountIdentifier__1,\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n });\n const Result_8 = IDL.Variant({ ok: Metadata, err: CommonError });\n const PaymentType = IDL.Variant({\n nft: TokenIndex,\n nfts: IDL.Vec(TokenIndex),\n sale: IDL.Nat64,\n });\n const Payment = IDL.Record({\n expires: Time,\n subaccount: SubAccount__1,\n payer: AccountIdentifier__1,\n amount: IDL.Nat64,\n purchase: PaymentType,\n });\n const SalePricingGroup = IDL.Record({\n end: Time,\n participants: IDL.Vec(AccountIdentifier__1),\n name: IDL.Text,\n limit: IDL.Tuple(IDL.Nat64, IDL.Nat64),\n pricing: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n start: Time,\n });\n const SaleRemaining = IDL.Variant({\n retain: IDL.Null,\n burn: IDL.Null,\n send: AccountIdentifier__1,\n });\n const Sale = IDL.Record({\n end: Time,\n groups: IDL.Vec(SalePricingGroup),\n start: Time,\n quantity: IDL.Nat,\n remaining: SaleRemaining,\n });\n const Result_5 = IDL.Variant({\n ok: IDL.Tuple(AccountIdentifier__1, IDL.Nat64),\n err: IDL.Text,\n });\n const SaleDetailGroup = IDL.Record({\n id: IDL.Nat,\n end: Time,\n name: IDL.Text,\n available: IDL.Bool,\n pricing: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n start: Time,\n });\n const SaleDetails = IDL.Record({\n end: Time,\n groups: IDL.Vec(SaleDetailGroup),\n start: Time,\n quantity: IDL.Nat,\n remaining: IDL.Nat,\n });\n const Result_4 = IDL.Variant({ ok: IDL.Null, err: IDL.Text });\n const SaleTransaction = IDL.Record({\n time: Time,\n seller: IDL.Principal,\n tokens: IDL.Vec(TokenIndex),\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n });\n const Memo = IDL.Vec(IDL.Nat8);\n const SubAccount = IDL.Vec(IDL.Nat8);\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n amount: Balance,\n });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text,\n }),\n });\n const Balance__1 = IDL.Nat;\n const Result_2 = IDL.Variant({ ok: Balance__1, err: CommonError });\n const MetadataLegacy = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text,\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) }),\n });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n });\n const HttpStreamingCallbackToken = IDL.Record({\n key: IDL.Text,\n sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n index: IDL.Nat,\n content_encoding: IDL.Text,\n });\n const HttpStreamingCallbackResponse = IDL.Record({\n token: IDL.Opt(HttpStreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8),\n });\n const HttpStreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: HttpStreamingCallbackToken,\n callback: IDL.Func(\n [HttpStreamingCallbackToken],\n [HttpStreamingCallbackResponse],\n [\"query\"]\n ),\n }),\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n upgrade: IDL.Bool,\n streaming_strategy: IDL.Opt(HttpStreamingStrategy),\n status_code: IDL.Nat16,\n });\n const Result_6 = IDL.Variant({ ok: MetadataLegacy, err: CommonError });\n const SaleSettings = IDL.Record({\n startTime: Time,\n whitelist: IDL.Bool,\n totalToSell: IDL.Nat,\n sold: IDL.Nat,\n bulkPricing: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n whitelistTime: Time,\n salePrice: IDL.Nat64,\n remaining: IDL.Nat,\n price: IDL.Nat64,\n });\n const Result_1 = IDL.Variant({\n ok: IDL.Vec(TokenIndex),\n err: CommonError,\n });\n const Result = IDL.Variant({\n ok: IDL.Vec(\n IDL.Tuple(TokenIndex, IDL.Opt(Listing), IDL.Opt(IDL.Vec(IDL.Nat8)))\n ),\n err: CommonError,\n });\n return IDL.Service({\n acceptCycles: IDL.Func([], [], []),\n addAsset: IDL.Func(\n [AssetHandle, IDL.Nat32, IDL.Text, IDL.Text, IDL.Text],\n [],\n []\n ),\n addThumbnail: IDL.Func([AssetHandle, IDL.Vec(IDL.Nat8)], [], []),\n adminKillHeartbeat: IDL.Func([], [], []),\n adminRefund: IDL.Func(\n [IDL.Text, AccountIdentifier__1, AccountIdentifier__1],\n [IDL.Text],\n []\n ),\n adminStartHeartbeat: IDL.Func([], [], []),\n allSettlements: IDL.Func(\n [],\n [\n IDL.Vec(\n IDL.Tuple(\n TokenIndex,\n IDL.Record({\n subaccount: SubAccount__1,\n seller: IDL.Principal,\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n })\n )\n ),\n ],\n [\"query\"]\n ),\n availableCycles: IDL.Func([], [IDL.Nat], [\"query\"]),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n bearer: IDL.Func([TokenIdentifier__1], [Result_7], [\"query\"]),\n details: IDL.Func([TokenIdentifier__1], [Result_10], [\"query\"]),\n ext_addAssetCanister: IDL.Func([], [], []),\n ext_admin: IDL.Func([], [IDL.Principal], [\"query\"]),\n ext_assetAdd: IDL.Func(\n [AssetHandle, IDL.Text, IDL.Text, AssetType, IDL.Nat],\n [],\n []\n ),\n ext_assetExists: IDL.Func([AssetHandle], [IDL.Bool], [\"query\"]),\n ext_assetFits: IDL.Func([IDL.Bool, IDL.Nat], [IDL.Bool], [\"query\"]),\n ext_assetStream: IDL.Func(\n [AssetHandle, IDL.Vec(IDL.Nat8), IDL.Bool],\n [IDL.Bool],\n []\n ),\n ext_balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n ext_bearer: IDL.Func([TokenIdentifier__1], [Result_7], [\"query\"]),\n ext_capInit: IDL.Func([], [], []),\n ext_expired: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, SubAccount__1))],\n [\"query\"]\n ),\n ext_extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n ext_marketplaceList: IDL.Func([ListRequest], [Result_3], []),\n ext_marketplaceListings: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, Listing, Metadata))],\n [\"query\"]\n ),\n ext_marketplacePurchase: IDL.Func(\n [TokenIdentifier__1, IDL.Nat64, AccountIdentifier__1],\n [Result_9],\n []\n ),\n ext_marketplaceSettle: IDL.Func([AccountIdentifier__1], [Result_3], []),\n ext_marketplaceStats: IDL.Func(\n [],\n [IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat, IDL.Nat, IDL.Nat],\n [\"query\"]\n ),\n ext_marketplaceTransactions: IDL.Func(\n [],\n [IDL.Vec(Transaction)],\n [\"query\"]\n ),\n ext_metadata: IDL.Func([TokenIdentifier__1], [Result_8], [\"query\"]),\n ext_mint: IDL.Func(\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Metadata))],\n [IDL.Vec(TokenIndex)],\n []\n ),\n ext_payments: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Payment))],\n [\"query\"]\n ),\n ext_removeAdmin: IDL.Func([], [], []),\n ext_saleClose: IDL.Func([], [IDL.Bool], []),\n ext_saleCurrent: IDL.Func([], [IDL.Opt(Sale)], [\"query\"]),\n ext_saleEnd: IDL.Func([], [IDL.Bool], []),\n ext_saleOpen: IDL.Func(\n [IDL.Vec(SalePricingGroup), SaleRemaining, IDL.Vec(AccountIdentifier__1)],\n [IDL.Bool],\n []\n ),\n ext_salePause: IDL.Func([], [IDL.Bool], []),\n ext_salePurchase: IDL.Func(\n [IDL.Nat, IDL.Nat64, IDL.Nat64, AccountIdentifier__1],\n [Result_5],\n []\n ),\n ext_saleResume: IDL.Func([], [IDL.Bool], []),\n ext_saleSettings: IDL.Func(\n [AccountIdentifier__1],\n [IDL.Opt(SaleDetails)],\n [\"query\"]\n ),\n ext_saleSettle: IDL.Func([AccountIdentifier__1], [Result_4], []),\n ext_saleTransactions: IDL.Func([], [IDL.Vec(SaleTransaction)], [\"query\"]),\n ext_saleUpdate: IDL.Func(\n [\n IDL.Opt(IDL.Vec(SalePricingGroup)),\n IDL.Opt(SaleRemaining),\n IDL.Opt(IDL.Vec(AccountIdentifier__1)),\n ],\n [IDL.Bool],\n []\n ),\n ext_setAdmin: IDL.Func([IDL.Principal], [], []),\n ext_setCollectionMetadata: IDL.Func([IDL.Text, IDL.Text], [], []),\n ext_setMarketplaceOpen: IDL.Func([Time], [], []),\n ext_setOwner: IDL.Func([IDL.Principal], [], []),\n ext_setRoyalty: IDL.Func([AccountIdentifier__1, IDL.Nat64], [], []),\n ext_transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n extdata_supply: IDL.Func([TokenIdentifier__1], [Result_2], [\"query\"]),\n extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n failedSales: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, SubAccount__1))],\n [\"query\"]\n ),\n getMetadata: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, MetadataLegacy))],\n [\"query\"]\n ),\n getMinter: IDL.Func([], [IDL.Principal], [\"query\"]),\n getRegistry: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, AccountIdentifier__1))],\n [\"query\"]\n ),\n getTokens: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, MetadataLegacy))],\n [\"query\"]\n ),\n heartbeat_assetCanisters: IDL.Func([], [], []),\n heartbeat_capEvents: IDL.Func([], [], []),\n heartbeat_disbursements: IDL.Func([], [], []),\n heartbeat_external: IDL.Func([], [], []),\n heartbeat_isRunning: IDL.Func([], [IDL.Bool], [\"query\"]),\n heartbeat_paymentSettlements: IDL.Func([], [], []),\n heartbeat_pending: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat))],\n [\"query\"]\n ),\n heartbeat_start: IDL.Func([], [], []),\n heartbeat_stop: IDL.Func([], [], []),\n http_request: IDL.Func([HttpRequest], [HttpResponse], [\"query\"]),\n http_request_streaming_callback: IDL.Func(\n [HttpStreamingCallbackToken],\n [HttpStreamingCallbackResponse],\n [\"query\"]\n ),\n http_request_update: IDL.Func([HttpRequest], [HttpResponse], []),\n isHeartbeatRunning: IDL.Func([], [IDL.Bool], [\"query\"]),\n list: IDL.Func([ListRequest], [Result_3], []),\n listings: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, Listing, MetadataLegacy))],\n [\"query\"]\n ),\n lock: IDL.Func(\n [TokenIdentifier__1, IDL.Nat64, AccountIdentifier__1, SubAccount__1],\n [Result_7],\n []\n ),\n metadata: IDL.Func([TokenIdentifier__1], [Result_6], [\"query\"]),\n reserve: IDL.Func(\n [IDL.Nat64, IDL.Nat64, AccountIdentifier__1, SubAccount__1],\n [Result_5],\n []\n ),\n retreive: IDL.Func([AccountIdentifier__1], [Result_4], []),\n saleTransactions: IDL.Func([], [IDL.Vec(SaleTransaction)], [\"query\"]),\n salesSettings: IDL.Func([AccountIdentifier__1], [SaleSettings], [\"query\"]),\n setMinter: IDL.Func([IDL.Principal], [], []),\n settle: IDL.Func([TokenIdentifier__1], [Result_3], []),\n settlements: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, AccountIdentifier__1, IDL.Nat64))],\n [\"query\"]\n ),\n stats: IDL.Func(\n [],\n [IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat, IDL.Nat, IDL.Nat],\n [\"query\"]\n ),\n supply: IDL.Func([TokenIdentifier__1], [Result_2], [\"query\"]),\n tokens: IDL.Func([AccountIdentifier__1], [Result_1], [\"query\"]),\n tokens_ext: IDL.Func([AccountIdentifier__1], [Result], [\"query\"]),\n transactions: IDL.Func([], [IDL.Vec(Transaction)], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\n\nimport {\n V3TradeCanister,\n V3TradeCanisterInterfaceFactory,\n NFTCanister as NFT_SERVICE,\n NFTCanisterInterfaceFactory,\n V3TradeStat,\n V3TradeStatInterfaceFactory,\n V3NFTCanisterController,\n V3NFTCanisterControllerInterfaceFactory,\n NFTFile,\n NFTFileInterfaceFactory,\n V1NFTCanister,\n V1NFTCanisterInterfaceFactory,\n ExtNFTInterfaceFactory,\n ExtNFTService,\n} from \"@icpswap/candid\";\n\nexport const NFTCanisterController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.NFTCanisterController,\n identity,\n idlFactory: V3NFTCanisterControllerInterfaceFactory,\n });\n\nexport const NFTCanister = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n identity,\n actorName: ActorName.NFTCanister,\n idlFactory: NFTCanisterInterfaceFactory,\n });\n\nexport const NFTTradeCanister = (identity?: ActorIdentity) => {\n return actor.create({\n identity,\n actorName: ActorName.NFTTradeCanister,\n idlFactory: V3TradeCanisterInterfaceFactory,\n });\n};\n\nexport const NFTTradeStat = (identity?: ActorIdentity) => {\n return actor.create({\n identity,\n actorName: ActorName.NFTTradeStat,\n idlFactory: V3TradeStatInterfaceFactory,\n });\n};\n\nexport const NFT_V1 = (canisterId: string, identity?: ActorIdentity) => {\n return actor.create({\n identity,\n idlFactory: V1NFTCanisterInterfaceFactory,\n canisterId,\n });\n};\n\nexport const nftFile = (canisterId: string, identity?: ActorIdentity) => {\n return actor.create({\n identity,\n idlFactory: NFTFileInterfaceFactory,\n canisterId,\n });\n};\n\nexport const ext_nft = (canisterId: string, identity?: ActorIdentity) => {\n return actor.create({\n identity,\n idlFactory: ExtNFTInterfaceFactory,\n canisterId,\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const AssetClass = IDL.Variant({\n Cryptocurrency: IDL.Null,\n FiatCurrency: IDL.Null\n });\n const Asset = IDL.Record({ class: AssetClass, symbol: IDL.Text });\n const ExchangeRateError = IDL.Variant({\n AnonymousPrincipalNotAllowed: IDL.Null,\n CryptoQuoteAssetNotFound: IDL.Null,\n FailedToAcceptCycles: IDL.Null,\n ForexBaseAssetNotFound: IDL.Null,\n CryptoBaseAssetNotFound: IDL.Null,\n StablecoinRateTooFewRates: IDL.Null,\n ForexAssetsNotFound: IDL.Null,\n InconsistentRatesReceived: IDL.Null,\n RateLimited: IDL.Null,\n StablecoinRateZeroRate: IDL.Null,\n Other: IDL.Record({ code: IDL.Nat32, description: IDL.Text }),\n ForexInvalidTimestamp: IDL.Null,\n NotEnoughCycles: IDL.Null,\n ForexQuoteAssetNotFound: IDL.Null,\n StablecoinRateNotFound: IDL.Null,\n Pending: IDL.Null\n });\n const Error = IDL.Record({\n message: ExchangeRateError,\n timestamp: IDL.Int\n });\n const ExchangeRate__1 = IDL.Record({\n decimals: IDL.Nat32,\n rate: IDL.Nat64,\n error: IDL.Opt(Error),\n timestamp: IDL.Nat64,\n quote_symbol: IDL.Text,\n quote_class: IDL.Text,\n base_symbol: IDL.Text,\n base_class: IDL.Text\n });\n return IDL.Service({\n add_asset: IDL.Func([Asset, Asset], [], []),\n force_update_rate: IDL.Func([], [], []),\n get_assets: IDL.Func([], [IDL.Vec(IDL.Tuple(Asset, Asset))], [\"query\"]),\n get_exchange_rate: IDL.Func([IDL.Text], [ExchangeRate__1], [\"query\"]),\n get_exchange_rates: IDL.Func([], [IDL.Vec(ExchangeRate__1)], [\"query\"])\n });\n};\n","import { actor } from \"../actor\";\nimport { ExchangeRate, ExchangeRateInterfaceFactory } from \"@icpswap/candid\";\n\nexport const exchangeRate = () =>\n actor.create({\n canisterId: \"2ixw4-taaaa-aaaag-qcpdq-cai\",\n idlFactory: ExchangeRateInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const BlockTag = IDL.Variant({\n Safe: IDL.Null,\n Finalized: IDL.Null,\n Latest: IDL.Null,\n });\n const UpgradeArg = IDL.Record({\n deposit_with_subaccount_helper_contract_address: IDL.Opt(IDL.Text),\n next_transaction_nonce: IDL.Opt(IDL.Nat),\n evm_rpc_id: IDL.Opt(IDL.Principal),\n ledger_suite_orchestrator_id: IDL.Opt(IDL.Principal),\n erc20_helper_contract_address: IDL.Opt(IDL.Text),\n last_erc20_scraped_block_number: IDL.Opt(IDL.Nat),\n ethereum_contract_address: IDL.Opt(IDL.Text),\n minimum_withdrawal_amount: IDL.Opt(IDL.Nat),\n last_deposit_with_subaccount_scraped_block_number: IDL.Opt(IDL.Nat),\n ethereum_block_height: IDL.Opt(BlockTag),\n });\n const EthereumNetwork = IDL.Variant({\n Mainnet: IDL.Null,\n Sepolia: IDL.Null,\n });\n const InitArg = IDL.Record({\n ethereum_network: EthereumNetwork,\n last_scraped_block_number: IDL.Nat,\n ecdsa_key_name: IDL.Text,\n next_transaction_nonce: IDL.Nat,\n ledger_id: IDL.Principal,\n ethereum_contract_address: IDL.Opt(IDL.Text),\n minimum_withdrawal_amount: IDL.Nat,\n ethereum_block_height: BlockTag,\n });\n const MinterArg = IDL.Variant({\n UpgradeArg: UpgradeArg,\n InitArg: InitArg,\n });\n const AddCkErc20Token = IDL.Record({\n ckerc20_ledger_id: IDL.Principal,\n chain_id: IDL.Nat,\n address: IDL.Text,\n ckerc20_token_symbol: IDL.Text,\n });\n const Eip1559TransactionPriceArg = IDL.Record({\n ckerc20_ledger_id: IDL.Principal,\n });\n const Eip1559TransactionPrice = IDL.Record({\n max_priority_fee_per_gas: IDL.Nat,\n max_fee_per_gas: IDL.Nat,\n max_transaction_fee: IDL.Nat,\n timestamp: IDL.Opt(IDL.Nat64),\n gas_limit: IDL.Nat,\n });\n const CanisterStatusType = IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n });\n const LogVisibility = IDL.Variant({\n controllers: IDL.Null,\n public: IDL.Null,\n });\n const DefiniteCanisterSettings = IDL.Record({\n freezing_threshold: IDL.Nat,\n controllers: IDL.Vec(IDL.Principal),\n reserved_cycles_limit: IDL.Nat,\n log_visibility: LogVisibility,\n wasm_memory_limit: IDL.Nat,\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const QueryStats = IDL.Record({\n response_payload_bytes_total: IDL.Nat,\n num_instructions_total: IDL.Nat,\n num_calls_total: IDL.Nat,\n request_payload_bytes_total: IDL.Nat,\n });\n const CanisterStatusResponse = IDL.Record({\n status: CanisterStatusType,\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: DefiniteCanisterSettings,\n query_stats: QueryStats,\n idle_cycles_burned_per_day: IDL.Nat,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n reserved_cycles: IDL.Nat,\n });\n const Subaccount = IDL.Vec(IDL.Nat8);\n const EventSource = IDL.Record({\n transaction_hash: IDL.Text,\n log_index: IDL.Nat,\n });\n const UnsignedTransaction = IDL.Record({\n destination: IDL.Text,\n value: IDL.Nat,\n max_priority_fee_per_gas: IDL.Nat,\n data: IDL.Vec(IDL.Nat8),\n max_fee_per_gas: IDL.Nat,\n chain_id: IDL.Nat,\n nonce: IDL.Nat,\n gas_limit: IDL.Nat,\n access_list: IDL.Vec(\n IDL.Record({\n storage_keys: IDL.Vec(IDL.Vec(IDL.Nat8)),\n address: IDL.Text,\n }),\n ),\n });\n const ReimbursementIndex = IDL.Variant({\n CkErc20: IDL.Record({\n cketh_ledger_burn_index: IDL.Nat,\n ledger_id: IDL.Principal,\n ckerc20_ledger_burn_index: IDL.Nat,\n }),\n CkEth: IDL.Record({ ledger_burn_index: IDL.Nat }),\n });\n const TransactionReceipt = IDL.Record({\n effective_gas_price: IDL.Nat,\n status: IDL.Variant({ Success: IDL.Null, Failure: IDL.Null }),\n transaction_hash: IDL.Text,\n block_hash: IDL.Text,\n block_number: IDL.Nat,\n gas_used: IDL.Nat,\n });\n const Event = IDL.Record({\n timestamp: IDL.Nat64,\n payload: IDL.Variant({\n SkippedBlock: IDL.Record({\n block_number: IDL.Nat,\n contract_address: IDL.Opt(IDL.Text),\n }),\n AcceptedErc20Deposit: IDL.Record({\n principal: IDL.Principal,\n transaction_hash: IDL.Text,\n value: IDL.Nat,\n log_index: IDL.Nat,\n subaccount: IDL.Opt(Subaccount),\n block_number: IDL.Nat,\n erc20_contract_address: IDL.Text,\n from_address: IDL.Text,\n }),\n SignedTransaction: IDL.Record({\n raw_transaction: IDL.Text,\n withdrawal_id: IDL.Nat,\n }),\n Upgrade: UpgradeArg,\n Init: InitArg,\n AddedCkErc20Token: IDL.Record({\n ckerc20_ledger_id: IDL.Principal,\n chain_id: IDL.Nat,\n address: IDL.Text,\n ckerc20_token_symbol: IDL.Text,\n }),\n SyncedDepositWithSubaccountToBlock: IDL.Record({\n block_number: IDL.Nat,\n }),\n QuarantinedDeposit: IDL.Record({ event_source: EventSource }),\n SyncedToBlock: IDL.Record({ block_number: IDL.Nat }),\n AcceptedDeposit: IDL.Record({\n principal: IDL.Principal,\n transaction_hash: IDL.Text,\n value: IDL.Nat,\n log_index: IDL.Nat,\n subaccount: IDL.Opt(Subaccount),\n block_number: IDL.Nat,\n from_address: IDL.Text,\n }),\n ReplacedTransaction: IDL.Record({\n withdrawal_id: IDL.Nat,\n transaction: UnsignedTransaction,\n }),\n QuarantinedReimbursement: IDL.Record({ index: ReimbursementIndex }),\n MintedCkEth: IDL.Record({\n event_source: EventSource,\n mint_block_index: IDL.Nat,\n }),\n ReimbursedEthWithdrawal: IDL.Record({\n transaction_hash: IDL.Opt(IDL.Text),\n withdrawal_id: IDL.Nat,\n reimbursed_amount: IDL.Nat,\n reimbursed_in_block: IDL.Nat,\n }),\n FailedErc20WithdrawalRequest: IDL.Record({\n to: IDL.Principal,\n withdrawal_id: IDL.Nat,\n reimbursed_amount: IDL.Nat,\n to_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n }),\n ReimbursedErc20Withdrawal: IDL.Record({\n burn_in_block: IDL.Nat,\n transaction_hash: IDL.Opt(IDL.Text),\n withdrawal_id: IDL.Nat,\n reimbursed_amount: IDL.Nat,\n ledger_id: IDL.Principal,\n reimbursed_in_block: IDL.Nat,\n }),\n MintedCkErc20: IDL.Record({\n event_source: EventSource,\n erc20_contract_address: IDL.Text,\n mint_block_index: IDL.Nat,\n ckerc20_token_symbol: IDL.Text,\n }),\n CreatedTransaction: IDL.Record({\n withdrawal_id: IDL.Nat,\n transaction: UnsignedTransaction,\n }),\n InvalidDeposit: IDL.Record({\n event_source: EventSource,\n reason: IDL.Text,\n }),\n SyncedErc20ToBlock: IDL.Record({ block_number: IDL.Nat }),\n AcceptedErc20WithdrawalRequest: IDL.Record({\n cketh_ledger_burn_index: IDL.Nat,\n destination: IDL.Text,\n ckerc20_ledger_id: IDL.Principal,\n withdrawal_amount: IDL.Nat,\n from: IDL.Principal,\n created_at: IDL.Nat64,\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n erc20_contract_address: IDL.Text,\n ckerc20_ledger_burn_index: IDL.Nat,\n max_transaction_fee: IDL.Nat,\n }),\n AcceptedEthWithdrawalRequest: IDL.Record({\n ledger_burn_index: IDL.Nat,\n destination: IDL.Text,\n withdrawal_amount: IDL.Nat,\n from: IDL.Principal,\n created_at: IDL.Opt(IDL.Nat64),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n }),\n FinalizedTransaction: IDL.Record({\n withdrawal_id: IDL.Nat,\n transaction_receipt: TransactionReceipt,\n }),\n }),\n });\n const CkErc20Token = IDL.Record({\n erc20_contract_address: IDL.Text,\n ledger_canister_id: IDL.Principal,\n ckerc20_token_symbol: IDL.Text,\n });\n const GasFeeEstimate = IDL.Record({\n max_priority_fee_per_gas: IDL.Nat,\n max_fee_per_gas: IDL.Nat,\n timestamp: IDL.Nat64,\n });\n const MinterInfo = IDL.Record({\n deposit_with_subaccount_helper_contract_address: IDL.Opt(IDL.Text),\n eth_balance: IDL.Opt(IDL.Nat),\n eth_helper_contract_address: IDL.Opt(IDL.Text),\n last_observed_block_number: IDL.Opt(IDL.Nat),\n evm_rpc_id: IDL.Opt(IDL.Principal),\n erc20_helper_contract_address: IDL.Opt(IDL.Text),\n last_erc20_scraped_block_number: IDL.Opt(IDL.Nat),\n supported_ckerc20_tokens: IDL.Opt(IDL.Vec(CkErc20Token)),\n last_gas_fee_estimate: IDL.Opt(GasFeeEstimate),\n cketh_ledger_id: IDL.Opt(IDL.Principal),\n smart_contract_address: IDL.Opt(IDL.Text),\n last_eth_scraped_block_number: IDL.Opt(IDL.Nat),\n minimum_withdrawal_amount: IDL.Opt(IDL.Nat),\n erc20_balances: IDL.Opt(IDL.Vec(IDL.Record({ balance: IDL.Nat, erc20_contract_address: IDL.Text }))),\n minter_address: IDL.Opt(IDL.Text),\n last_deposit_with_subaccount_scraped_block_number: IDL.Opt(IDL.Nat),\n ethereum_block_height: IDL.Opt(BlockTag),\n });\n const EthTransaction = IDL.Record({ transaction_hash: IDL.Text });\n const TxFinalizedStatus = IDL.Variant({\n Success: IDL.Record({\n transaction_hash: IDL.Text,\n effective_transaction_fee: IDL.Opt(IDL.Nat),\n }),\n Reimbursed: IDL.Record({\n transaction_hash: IDL.Text,\n reimbursed_amount: IDL.Nat,\n reimbursed_in_block: IDL.Nat,\n }),\n PendingReimbursement: EthTransaction,\n });\n const RetrieveEthStatus = IDL.Variant({\n NotFound: IDL.Null,\n TxFinalized: TxFinalizedStatus,\n TxSent: EthTransaction,\n TxCreated: IDL.Null,\n Pending: IDL.Null,\n });\n const WithdrawErc20Arg = IDL.Record({\n ckerc20_ledger_id: IDL.Principal,\n recipient: IDL.Text,\n from_cketh_subaccount: IDL.Opt(Subaccount),\n from_ckerc20_subaccount: IDL.Opt(Subaccount),\n amount: IDL.Nat,\n });\n const RetrieveErc20Request = IDL.Record({\n ckerc20_block_index: IDL.Nat,\n cketh_block_index: IDL.Nat,\n });\n const LedgerError = IDL.Variant({\n TemporarilyUnavailable: IDL.Text,\n InsufficientAllowance: IDL.Record({\n token_symbol: IDL.Text,\n ledger_id: IDL.Principal,\n allowance: IDL.Nat,\n failed_burn_amount: IDL.Nat,\n }),\n AmountTooLow: IDL.Record({\n minimum_burn_amount: IDL.Nat,\n token_symbol: IDL.Text,\n ledger_id: IDL.Principal,\n failed_burn_amount: IDL.Nat,\n }),\n InsufficientFunds: IDL.Record({\n balance: IDL.Nat,\n token_symbol: IDL.Text,\n ledger_id: IDL.Principal,\n failed_burn_amount: IDL.Nat,\n }),\n });\n const WithdrawErc20Error = IDL.Variant({\n TokenNotSupported: IDL.Record({\n supported_tokens: IDL.Vec(CkErc20Token),\n }),\n TemporarilyUnavailable: IDL.Text,\n CkErc20LedgerError: IDL.Record({\n error: LedgerError,\n cketh_block_index: IDL.Nat,\n }),\n CkEthLedgerError: IDL.Record({ error: LedgerError }),\n RecipientAddressBlocked: IDL.Record({ address: IDL.Text }),\n });\n const WithdrawalArg = IDL.Record({\n recipient: IDL.Text,\n from_subaccount: IDL.Opt(Subaccount),\n amount: IDL.Nat,\n });\n const RetrieveEthRequest = IDL.Record({ block_index: IDL.Nat });\n const WithdrawalError = IDL.Variant({\n TemporarilyUnavailable: IDL.Text,\n InsufficientAllowance: IDL.Record({ allowance: IDL.Nat }),\n AmountTooLow: IDL.Record({ min_withdrawal_amount: IDL.Nat }),\n RecipientAddressBlocked: IDL.Record({ address: IDL.Text }),\n InsufficientFunds: IDL.Record({ balance: IDL.Nat }),\n });\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const WithdrawalSearchParameter = IDL.Variant({\n ByRecipient: IDL.Text,\n BySenderAccount: Account,\n ByWithdrawalId: IDL.Nat64,\n });\n const WithdrawalStatus = IDL.Variant({\n TxFinalized: TxFinalizedStatus,\n TxSent: EthTransaction,\n TxCreated: IDL.Null,\n Pending: IDL.Null,\n });\n const WithdrawalDetail = IDL.Record({\n status: WithdrawalStatus,\n token_symbol: IDL.Text,\n withdrawal_amount: IDL.Nat,\n withdrawal_id: IDL.Nat64,\n from: IDL.Principal,\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n max_transaction_fee: IDL.Opt(IDL.Nat),\n recipient_address: IDL.Text,\n });\n return IDL.Service({\n add_ckerc20_token: IDL.Func([AddCkErc20Token], [], []),\n eip_1559_transaction_price: IDL.Func([IDL.Opt(Eip1559TransactionPriceArg)], [Eip1559TransactionPrice], [\"query\"]),\n get_canister_status: IDL.Func([], [CanisterStatusResponse], []),\n get_events: IDL.Func(\n [IDL.Record({ start: IDL.Nat64, length: IDL.Nat64 })],\n [\n IDL.Record({\n total_event_count: IDL.Nat64,\n events: IDL.Vec(Event),\n }),\n ],\n [\"query\"],\n ),\n get_minter_info: IDL.Func([], [MinterInfo], [\"query\"]),\n is_address_blocked: IDL.Func([IDL.Text], [IDL.Bool], [\"query\"]),\n minter_address: IDL.Func([], [IDL.Text], []),\n retrieve_eth_status: IDL.Func([IDL.Nat64], [RetrieveEthStatus], []),\n smart_contract_address: IDL.Func([], [IDL.Text], [\"query\"]),\n withdraw_erc20: IDL.Func(\n [WithdrawErc20Arg],\n [\n IDL.Variant({\n Ok: RetrieveErc20Request,\n Err: WithdrawErc20Error,\n }),\n ],\n [],\n ),\n withdraw_eth: IDL.Func([WithdrawalArg], [IDL.Variant({ Ok: RetrieveEthRequest, Err: WithdrawalError })], []),\n withdrawal_status: IDL.Func([WithdrawalSearchParameter], [IDL.Vec(WithdrawalDetail)], [\"query\"]),\n });\n};\nexport const init = ({ IDL }) => {\n const BlockTag = IDL.Variant({\n Safe: IDL.Null,\n Finalized: IDL.Null,\n Latest: IDL.Null,\n });\n const UpgradeArg = IDL.Record({\n deposit_with_subaccount_helper_contract_address: IDL.Opt(IDL.Text),\n next_transaction_nonce: IDL.Opt(IDL.Nat),\n evm_rpc_id: IDL.Opt(IDL.Principal),\n ledger_suite_orchestrator_id: IDL.Opt(IDL.Principal),\n erc20_helper_contract_address: IDL.Opt(IDL.Text),\n last_erc20_scraped_block_number: IDL.Opt(IDL.Nat),\n ethereum_contract_address: IDL.Opt(IDL.Text),\n minimum_withdrawal_amount: IDL.Opt(IDL.Nat),\n last_deposit_with_subaccount_scraped_block_number: IDL.Opt(IDL.Nat),\n ethereum_block_height: IDL.Opt(BlockTag),\n });\n const EthereumNetwork = IDL.Variant({\n Mainnet: IDL.Null,\n Sepolia: IDL.Null,\n });\n const InitArg = IDL.Record({\n ethereum_network: EthereumNetwork,\n last_scraped_block_number: IDL.Nat,\n ecdsa_key_name: IDL.Text,\n next_transaction_nonce: IDL.Nat,\n ledger_id: IDL.Principal,\n ethereum_contract_address: IDL.Opt(IDL.Text),\n minimum_withdrawal_amount: IDL.Nat,\n ethereum_block_height: BlockTag,\n });\n const MinterArg = IDL.Variant({\n UpgradeArg: UpgradeArg,\n InitArg: InitArg,\n });\n return [MinterArg];\n};\n","import { ChainKeyMinterInterfaceFactory, ChainKeyMinterService } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const chainKeyETHMinter = (canisterId: string, identity?: true) =>\n actor.create({\n canisterId,\n idlFactory: ChainKeyMinterInterfaceFactory,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Result = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const Result_2 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: IDL.Text,\n });\n const AliasResult = IDL.Record({\n is_public: IDL.Bool,\n alias: IDL.Opt(IDL.Text),\n governance_id: IDL.Opt(IDL.Principal),\n ledger_id: IDL.Principal,\n });\n const Page = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Text)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_1 = IDL.Variant({ ok: Page, err: IDL.Text });\n return IDL.Service({\n addPrincipalAlias: IDL.Func([IDL.Principal, IDL.Text], [Result], []),\n addSharedPrincipal: IDL.Func([IDL.Principal], [Result], []),\n cycleBalance: IDL.Func([], [IDL.Nat], []),\n getAdmins: IDL.Func([], [Result_2], [\"query\"]),\n getAllPrincipalAliases: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Text))], [\"query\"]),\n getPrincipalAlias: IDL.Func([IDL.Principal], [IDL.Opt(IDL.Text)], [\"query\"]),\n getPrincipalAliasByLedger: IDL.Func([IDL.Principal], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Text))], [\"query\"]),\n getPrincipalAliasByLedgers: IDL.Func([IDL.Vec(IDL.Principal)], [IDL.Vec(AliasResult)], [\"query\"]),\n queryPrincipalAliasPage: IDL.Func([IDL.Nat, IDL.Nat], [Result_1], [\"query\"]),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n syncSNSProject: IDL.Func([], [Result], []),\n });\n};\n","import { LiquidityLocksService, LiquidityLocksInterfaceFactory } from \"@icpswap/candid\";\nimport { ActorName } from \"../ActorName\";\n\nimport { actor } from \"../actor\";\n\nexport const liquidityLocks = () =>\n actor.create({\n actorName: ActorName.LiquidityLocks,\n idlFactory: LiquidityLocksInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Result_2 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: IDL.Text,\n });\n const TokenBalance = IDL.Record({\n token: IDL.Principal,\n balance: IDL.Float64,\n });\n const WalletBalance = IDL.Record({\n user: IDL.Principal,\n tokens: IDL.Vec(TokenBalance),\n totalBalance: IDL.Float64,\n });\n const Result_1 = IDL.Variant({ ok: WalletBalance, err: IDL.Text });\n const UserWalletInfo = IDL.Record({\n user: IDL.Text,\n tokens: IDL.Vec(TokenBalance),\n });\n const Page = IDL.Record({\n content: IDL.Vec(UserWalletInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result = IDL.Variant({ ok: Page, err: IDL.Text });\n const UserWallet = IDL.Record({\n user: IDL.Principal,\n tokens: IDL.Vec(TokenBalance),\n });\n const UploadRequests = IDL.Record({ userWallets: IDL.Vec(UserWallet) });\n return IDL.Service({\n cycleBalance: IDL.Func([], [IDL.Nat], []),\n getAdmins: IDL.Func([], [Result_2], [\"query\"]),\n getUSDPrice: IDL.Func([IDL.Principal], [IDL.Float64], []),\n getUserTokens: IDL.Func([IDL.Principal], [Result_1], [\"query\"]),\n queryUserTokens: IDL.Func([IDL.Nat, IDL.Nat], [Result], [\"query\"]),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n uploadUserWallet: IDL.Func([UploadRequests], [IDL.Bool], []),\n });\n};\n","import { ToolService, ToolInterfaceFactory } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const userTokenHelper = () =>\n actor.create({\n canisterId: \"mecty-aaaaa-aaaag-qkp6a-cai\",\n idlFactory: ToolInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const DepositArgs = IDL.Record({ fee: IDL.Nat, amount: IDL.Nat });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result = IDL.Variant({ ok: IDL.Nat, err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Text, err: Error });\n const WithdrawArgs = IDL.Record({ fee: IDL.Nat, amount: IDL.Nat });\n return IDL.Service({\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], []),\n deposit: IDL.Func([DepositArgs], [Result], []),\n depositFrom: IDL.Func([DepositArgs], [Result], []),\n destoryPasscode: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat],\n [Result_1],\n []\n ),\n getFactoryCid: IDL.Func([], [IDL.Principal], [\"query\"]),\n getTokenCid: IDL.Func([], [IDL.Principal], [\"query\"]),\n metadata: IDL.Func(\n [],\n [\n IDL.Record({\n passcodePrice: IDL.Nat,\n tokenCid: IDL.Principal,\n factoryCid: IDL.Principal,\n }),\n ],\n []\n ),\n requestPasscode: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat],\n [Result_1],\n []\n ),\n withdraw: IDL.Func([WithdrawArgs], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const LimitOrder = IDL.Record({\n to: IDL.Text,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n token0InAmount: IDL.Float64,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n positionId: IDL.Nat,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n price: IDL.Nat,\n token0Decimals: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text,\n token1InAmount: IDL.Float64,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const QueryResult = IDL.Record({\n total: IDL.Nat,\n records: IDL.Vec(LimitOrder),\n storages: IDL.Vec(IDL.Tuple(IDL.Int, IDL.Principal)),\n });\n return IDL.Service({\n addOwner: IDL.Func([IDL.Principal], [], []),\n batchInsert: IDL.Func([IDL.Vec(LimitOrder)], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n get: IDL.Func([IDL.Text, IDL.Int, IDL.Nat, IDL.Nat], [QueryResult], [\"query\"]),\n getControllers: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const TokenIdentifier = IDL.Text;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const AllowanceRequest = IDL.Record({\n token: TokenIdentifier,\n owner: User,\n spender: IDL.Principal\n });\n const CommonError = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const Result_17 = IDL.Variant({ ok: IDL.Nat, err: CommonError });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Balance = IDL.Nat;\n const ApproveRequest = IDL.Record({\n token: TokenIdentifier,\n subaccount: IDL.Opt(SubAccount),\n allowance: Balance,\n spender: IDL.Principal\n });\n const ApproveAllRequest = IDL.Record({\n approved: IDL.Bool,\n spender: User\n });\n const Result_3 = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User\n });\n const BalanceResponse = IDL.Variant({ ok: Balance, err: CommonError });\n const Result_16 = IDL.Variant({ ok: IDL.Text, err: CommonError });\n const Chunk = IDL.Record({\n content: IDL.Vec(IDL.Nat8),\n batch_id: IDL.Nat\n });\n const Extension = IDL.Text;\n const TokenIndex = IDL.Nat32;\n const KVPair = IDL.Record({ k: IDL.Text, v: IDL.Text });\n const TokenMetadata = IDL.Record({\n cId: IDL.Text,\n tokenId: TokenIndex,\n owner: AccountIdentifier,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n link: IDL.Text,\n name: IDL.Text,\n minter: AccountIdentifier,\n filePath: IDL.Text,\n fileType: IDL.Text,\n mintTime: IDL.Int,\n introduction: IDL.Text,\n attributes: IDL.Vec(KVPair),\n royalties: IDL.Nat,\n nftType: IDL.Text,\n artistName: IDL.Text\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(TokenMetadata),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_15 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const Remark = IDL.Text;\n const Memo = IDL.Vec(IDL.Nat8);\n const TransType = IDL.Variant({\n burn: IDL.Null,\n mint: IDL.Null,\n approve: IDL.Null,\n transfer: IDL.Null\n });\n const TransferRecord = IDL.Record({\n to: AccountIdentifier,\n remark: Remark,\n tokenId: TokenIndex,\n from: AccountIdentifier,\n hash: IDL.Text,\n memo: IDL.Opt(Memo),\n time: IDL.Int,\n tokenName: IDL.Text,\n txType: TransType,\n caller: AccountIdentifier,\n price: Balance,\n amount: Balance\n });\n const Page = IDL.Record({\n content: IDL.Vec(TransferRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_14 = IDL.Variant({ ok: Page, err: IDL.Text });\n const KVPair__1 = IDL.Record({ k: IDL.Text, v: IDL.Text });\n const CanisterInfo = IDL.Record({\n cid: IDL.Text,\n creator: AccountIdentifier,\n linkMap: IDL.Vec(KVPair__1),\n ownerName: IDL.Text,\n owner: AccountIdentifier,\n name: IDL.Text,\n createTime: IDL.Int,\n totalSupply: IDL.Nat,\n introduction: IDL.Text,\n mintSupply: IDL.Nat,\n royalties: IDL.Nat,\n image: IDL.Text\n });\n const Result_13 = IDL.Variant({ ok: CanisterInfo, err: IDL.Text });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null\n });\n const Result_12 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_11 = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Nat),\n err: IDL.Text\n });\n const Result_10 = IDL.Variant({ ok: IDL.Vec(IDL.Text), err: IDL.Text });\n const Result_6 = IDL.Variant({ ok: TokenIndex, err: IDL.Text });\n const Result_1 = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField)\n });\n const StreamingCallbackToken = IDL.Record({\n key: IDL.Text,\n index: IDL.Nat,\n content_encoding: IDL.Text\n });\n const StreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: StreamingCallbackToken,\n callback: IDL.Func([], [], [])\n })\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n streaming_strategy: IDL.Opt(StreamingStrategy),\n status_code: IDL.Nat16\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n token: IDL.Opt(StreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8)\n });\n const Result_9 = IDL.Variant({ ok: TokenMetadata, err: IDL.Text });\n const Result_8 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n ownerAccount: AccountIdentifier,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) })\n });\n const Result_7 = IDL.Variant({ ok: Metadata, err: CommonError });\n const MintRequest = IDL.Record({\n owner: User,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n link: IDL.Text,\n name: IDL.Text,\n filePath: IDL.Text,\n fileType: IDL.Text,\n introduction: IDL.Text,\n attributes: IDL.Vec(KVPair),\n royalties: IDL.Nat,\n nftType: IDL.Text,\n image: IDL.Text,\n artistName: IDL.Text\n });\n const Result_5 = IDL.Variant({ ok: Balance, err: IDL.Text });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const QueryPositionResult = IDL.Record({\n fee: IDL.Nat,\n tickUpper: IDL.Int,\n feeGrowthInside1LastX128: IDL.Nat,\n pool: IDL.Text,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n positionId: IDL.Text,\n token0: Token,\n token1: Token,\n tickLower: IDL.Int\n });\n const Result_4 = IDL.Variant({\n ok: QueryPositionResult,\n err: IDL.Text\n });\n const Result_2 = IDL.Variant({ ok: Balance, err: CommonError });\n const Time = IDL.Int;\n const Listing = IDL.Record({\n locked: IDL.Opt(Time),\n seller: IDL.Principal,\n price: IDL.Nat64\n });\n const Result = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(TokenIndex, IDL.Opt(Listing), IDL.Opt(IDL.Vec(IDL.Nat8)))),\n err: CommonError\n });\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n nonce: IDL.Opt(IDL.Nat),\n amount: Balance\n });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n })\n });\n const SwapNFT = IDL.Service({\n allowance: IDL.Func([AllowanceRequest], [Result_17], [\"query\"]),\n approve: IDL.Func([ApproveRequest], [], []),\n approveForAll: IDL.Func([ApproveAllRequest], [Result_3], []),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n bearer: IDL.Func([TokenIdentifier], [Result_16], [\"query\"]),\n checkOperator: IDL.Func([IDL.Text, IDL.Text, IDL.Text], [IDL.Bool], []),\n chunkSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n clearChunk: IDL.Func([], [IDL.Bool], []),\n commit_batch: IDL.Func(\n [\n IDL.Record({\n batch_id: IDL.Nat,\n content_type: IDL.Text,\n chunk_ids: IDL.Vec(IDL.Nat)\n })\n ],\n [],\n []\n ),\n create_batch: IDL.Func([], [IDL.Record({ batch_id: IDL.Nat })], []),\n create_chunk: IDL.Func([Chunk], [IDL.Record({ chunk_id: IDL.Nat })], []),\n deletePool: IDL.Func([IDL.Text], [], []),\n extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n findRemovedTokenList: IDL.Func([User, IDL.Nat, IDL.Nat], [Result_15], [\"query\"]),\n findTokenList: IDL.Func([User, IDL.Nat, IDL.Nat], [Result_15], [\"query\"]),\n findTokenListByPool: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [Result_15], [\"query\"]),\n findTokenMarket: IDL.Func([IDL.Vec(IDL.Text), IDL.Nat, IDL.Nat], [Result_15], [\"query\"]),\n findTokenTxRecord: IDL.Func([User, IDL.Nat, IDL.Nat], [Result_14], [\"query\"]),\n findTxRecord: IDL.Func([TokenIdentifier, IDL.Nat, IDL.Nat], [Result_14], [\"query\"]),\n getAllowances: IDL.Func([], [IDL.Vec(IDL.Tuple(TokenIndex, IDL.Vec(AccountIdentifier)))], [\"query\"]),\n getCanisterInfo: IDL.Func([], [Result_13], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_12], []),\n getMinter: IDL.Func([], [IDL.Principal], [\"query\"]),\n getNftStat: IDL.Func([], [Result_11], [\"query\"]),\n getRegistry: IDL.Func([], [IDL.Vec(IDL.Tuple(TokenIndex, IDL.Text))], [\"query\"]),\n getRemovedPools: IDL.Func([], [Result_10], [\"query\"]),\n getTokenId: IDL.Func([IDL.Text, IDL.Text], [Result_6], [\"query\"]),\n getTokens: IDL.Func([], [IDL.Vec(IDL.Tuple(TokenIndex, TokenMetadata))], [\"query\"]),\n getTradeCanisterId: IDL.Func([], [Result_1], [\"query\"]),\n http_request: IDL.Func([HttpRequest], [HttpResponse], [\"query\"]),\n http_request_streaming_callback: IDL.Func([StreamingCallbackToken], [StreamingCallbackHttpResponse], [\"query\"]),\n icsMetadata: IDL.Func([TokenIndex], [Result_9], [\"query\"]),\n initNFTCanisterInfo: IDL.Func([CanisterInfo, TokenIndex, IDL.Text], [Result_1], []),\n isApproveForAll: IDL.Func([IDL.Text, IDL.Text], [Result_3], [\"query\"]),\n isApproveForToken: IDL.Func([TokenIndex, IDL.Text, IDL.Text], [Result_8], [\"query\"]),\n maxFileSize: IDL.Func([IDL.Nat], [Result_1], []),\n metadata: IDL.Func([TokenIdentifier], [Result_7], [\"query\"]),\n mint: IDL.Func([MintRequest], [Result_6], []),\n ownerNFTCount: IDL.Func([User], [Result_5], [\"query\"]),\n positions: IDL.Func([TokenIndex], [Result_4], []),\n removeAllApproval: IDL.Func([ApproveAllRequest], [Result_3], []),\n removeApproval: IDL.Func([ApproveRequest], [Result_3], []),\n removePool: IDL.Func([IDL.Text], [], []),\n setLogo: IDL.Func([IDL.Text], [Result_3], []),\n setMinter: IDL.Func([IDL.Principal], [], []),\n setTradeCanisterId: IDL.Func([IDL.Opt(IDL.Text)], [Result_3], []),\n spenderRemoveApproval: IDL.Func([TokenIdentifier], [Result_3], []),\n supply: IDL.Func([TokenIdentifier], [Result_2], [\"query\"]),\n tokenURI: IDL.Func([IDL.Nat], [Result_1], []),\n tokens_ext: IDL.Func([AccountIdentifier], [Result], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], [])\n });\n return SwapNFT;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Passcode = IDL.Record({\n fee: IDL.Nat,\n token0: IDL.Principal,\n token1: IDL.Principal,\n });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_1 = IDL.Variant({ ok: IDL.Null, err: Error });\n const PoolInstaller = IDL.Record({\n weight: IDL.Nat,\n subnet: IDL.Text,\n subnetType: IDL.Text,\n canisterId: IDL.Principal,\n });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const CreatePoolArgs = IDL.Record({\n fee: IDL.Nat,\n sqrtPriceX96: IDL.Text,\n token0: Token,\n token1: Token,\n subnet: IDL.Opt(IDL.Text),\n });\n const PoolData = IDL.Record({\n fee: IDL.Nat,\n key: IDL.Text,\n tickSpacing: IDL.Int,\n token0: Token,\n token1: Token,\n canisterId: IDL.Principal,\n });\n const Result_8 = IDL.Variant({ ok: PoolData, err: Error });\n const PoolUpgradeTaskStep = IDL.Record({\n isDone: IDL.Bool,\n timestamp: IDL.Nat,\n });\n const PoolUpgradeTask = IDL.Record({\n turnOnAvailable: PoolUpgradeTaskStep,\n backup: IDL.Record({\n isDone: IDL.Bool,\n isSent: IDL.Bool,\n retryCount: IDL.Nat,\n timestamp: IDL.Nat,\n }),\n stop: PoolUpgradeTaskStep,\n moduleHashBefore: IDL.Opt(IDL.Vec(IDL.Nat8)),\n moduleHashAfter: IDL.Opt(IDL.Vec(IDL.Nat8)),\n turnOffAvailable: PoolUpgradeTaskStep,\n upgrade: PoolUpgradeTaskStep,\n start: PoolUpgradeTaskStep,\n poolData: PoolData,\n });\n const Result_13 = IDL.Variant({\n ok: IDL.Opt(PoolUpgradeTask),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_12 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_11 = IDL.Variant({\n ok: IDL.Opt(IDL.Principal),\n err: Error,\n });\n const Result_10 = IDL.Variant({\n ok: IDL.Record({\n infoCid: IDL.Principal,\n trustedCanisterManagerCid: IDL.Principal,\n governanceCid: IDL.Opt(IDL.Principal),\n passcodeManagerCid: IDL.Principal,\n backupCid: IDL.Principal,\n feeReceiverCid: IDL.Principal,\n }),\n err: Error,\n });\n const Result_9 = IDL.Variant({ ok: IDL.Vec(Passcode), err: Error });\n const Result_7 = IDL.Variant({\n ok: IDL.Vec(PoolUpgradeTask),\n err: Error,\n });\n const GetPoolArgs = IDL.Record({\n fee: IDL.Nat,\n token0: Token,\n token1: Token,\n });\n const Result_6 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(PoolUpgradeTask))),\n err: Error,\n });\n const Result_4 = IDL.Variant({ ok: IDL.Vec(PoolData), err: Error });\n const Result_5 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(Passcode))),\n err: Error,\n });\n const FailedPoolInfo = IDL.Record({\n task: PoolUpgradeTask,\n timestamp: IDL.Nat,\n errorMsg: IDL.Text,\n });\n const Result_3 = IDL.Variant({\n ok: IDL.Vec(FailedPoolInfo),\n err: Error,\n });\n const Icrc21ConsentMessageMetadata = IDL.Record({\n utc_offset_minutes: IDL.Opt(IDL.Int16),\n language: IDL.Text,\n });\n const Icrc21ConsentMessageSpec = IDL.Record({\n metadata: Icrc21ConsentMessageMetadata,\n device_spec: IDL.Opt(\n IDL.Variant({\n GenericDisplay: IDL.Null,\n LineDisplay: IDL.Record({\n characters_per_line: IDL.Nat16,\n lines_per_page: IDL.Nat16,\n }),\n }),\n ),\n });\n const Icrc21ConsentMessageRequest = IDL.Record({\n arg: IDL.Vec(IDL.Nat8),\n method: IDL.Text,\n user_preferences: Icrc21ConsentMessageSpec,\n });\n const Icrc21ConsentMessage = IDL.Variant({\n LineDisplayMessage: IDL.Record({\n pages: IDL.Vec(IDL.Record({ lines: IDL.Vec(IDL.Text) })),\n }),\n GenericDisplayMessage: IDL.Text,\n });\n const Icrc21ConsentInfo = IDL.Record({\n metadata: Icrc21ConsentMessageMetadata,\n consent_message: Icrc21ConsentMessage,\n });\n const Icrc21ErrorInfo = IDL.Record({ description: IDL.Text });\n const Icrc21Error = IDL.Variant({\n GenericError: IDL.Record({\n description: IDL.Text,\n error_code: IDL.Nat,\n }),\n InsufficientPayment: Icrc21ErrorInfo,\n UnsupportedCanisterCall: Icrc21ErrorInfo,\n ConsentMessageUnavailable: Icrc21ErrorInfo,\n });\n const Icrc21ConsentMessageResponse = IDL.Variant({\n Ok: Icrc21ConsentInfo,\n Err: Icrc21Error,\n });\n const Icrc28TrustedOriginsResponse = IDL.Record({\n trusted_origins: IDL.Vec(IDL.Text),\n });\n const Result_2 = IDL.Variant({ ok: IDL.Bool, err: Error });\n const UpgradePoolArgs = IDL.Record({ poolIds: IDL.Vec(IDL.Principal) });\n const Result = IDL.Variant({ ok: IDL.Text, err: Error });\n return IDL.Service({\n addPasscode: IDL.Func([IDL.Principal, Passcode], [Result_1], []),\n addPoolControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n addPoolInstallers: IDL.Func([IDL.Vec(PoolInstaller)], [], []),\n addPoolInstallersValidate: IDL.Func([IDL.Vec(PoolInstaller)], [IDL.Variant({ Ok: IDL.Text, Err: IDL.Text })], []),\n batchAddPoolControllers: IDL.Func([IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)], [], []),\n batchClearRemovedPool: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n batchRemovePoolControllers: IDL.Func([IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)], [], []),\n batchRemovePools: IDL.Func([IDL.Vec(IDL.Principal)], [Result_1], []),\n batchSetPoolAdmins: IDL.Func([IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)], [], []),\n batchSetPoolAvailable: IDL.Func([IDL.Vec(IDL.Principal), IDL.Bool], [], []),\n batchSetPoolIcrc28TrustedOrigins: IDL.Func([IDL.Vec(IDL.Principal), IDL.Vec(IDL.Text)], [Result_1], []),\n batchSetPoolLimitOrderAvailable: IDL.Func([IDL.Vec(IDL.Principal), IDL.Bool], [], []),\n clearPoolUpgradeTaskHis: IDL.Func([], [], []),\n clearRemovedPool: IDL.Func([IDL.Principal], [IDL.Text], []),\n clearUpgradeFailedPoolList: IDL.Func([], [], []),\n createPool: IDL.Func([CreatePoolArgs], [Result_8], []),\n deletePasscode: IDL.Func([IDL.Principal, Passcode], [Result_1], []),\n getAdmins: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getCurrentUpgradeTask: IDL.Func([], [Result_13], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_12], []),\n getGovernanceCid: IDL.Func([], [Result_11], [\"query\"]),\n getInitArgs: IDL.Func([], [Result_10], [\"query\"]),\n getInstallerModuleHash: IDL.Func([], [IDL.Opt(IDL.Vec(IDL.Nat8))], [\"query\"]),\n getNextPoolVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n getPasscodesByPrincipal: IDL.Func([IDL.Principal], [Result_9], [\"query\"]),\n getPendingUpgradePoolList: IDL.Func([], [Result_7], [\"query\"]),\n getPool: IDL.Func([GetPoolArgs], [Result_8], [\"query\"]),\n getPoolInstallers: IDL.Func([], [IDL.Vec(PoolInstaller)], [\"query\"]),\n getPoolUpgradeTaskHis: IDL.Func([IDL.Principal], [Result_7], [\"query\"]),\n getPoolUpgradeTaskHisList: IDL.Func([], [Result_6], [\"query\"]),\n getPools: IDL.Func([], [Result_4], [\"query\"]),\n getPrincipalPasscodes: IDL.Func([], [Result_5], [\"query\"]),\n getRemovedPools: IDL.Func([], [Result_4], [\"query\"]),\n getUpgradeFailedPoolList: IDL.Func([], [Result_3], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc10_supported_standards: IDL.Func([], [IDL.Vec(IDL.Record({ url: IDL.Text, name: IDL.Text }))], [\"query\"]),\n icrc21_canister_call_consent_message: IDL.Func([Icrc21ConsentMessageRequest], [Icrc21ConsentMessageResponse], []),\n icrc28_trusted_origins: IDL.Func([], [Icrc28TrustedOriginsResponse], []),\n removePool: IDL.Func([GetPoolArgs], [IDL.Text], []),\n removePoolControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n removePoolInstaller: IDL.Func([IDL.Principal], [], []),\n removePoolInstallerValidate: IDL.Func([IDL.Principal], [IDL.Variant({ Ok: IDL.Text, Err: IDL.Text })], []),\n retryAllFailedUpgrades: IDL.Func([], [Result_1], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setIcrc28TrustedOrigins: IDL.Func([IDL.Vec(IDL.Text)], [Result_2], []),\n setInstallerModuleHash: IDL.Func([IDL.Vec(IDL.Nat8)], [], []),\n setInstallerModuleHashValidate: IDL.Func([IDL.Vec(IDL.Nat8)], [IDL.Variant({ Ok: IDL.Text, Err: IDL.Text })], []),\n setPoolAdmins: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setPoolAvailable: IDL.Func([IDL.Principal, IDL.Bool], [], []),\n setUpgradePoolList: IDL.Func([UpgradePoolArgs], [Result_1], []),\n upgradePoolTokenStandard: IDL.Func([IDL.Principal, IDL.Principal], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const LimitOrderArgs = IDL.Record({\n positionId: IDL.Nat,\n tickLimit: IDL.Int,\n });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_2 = IDL.Variant({ ok: IDL.Bool, err: Error });\n const AccountBalance = IDL.Record({\n balance0: IDL.Nat,\n balance1: IDL.Nat,\n });\n const Page_5 = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Principal, AccountBalance)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_30 = IDL.Variant({ ok: Page_5, err: Error });\n const Result_29 = IDL.Variant({\n ok: IDL.Record({\n tokenIncome: IDL.Vec(IDL.Tuple(IDL.Nat, IDL.Record({ tokensOwed0: IDL.Nat, tokensOwed1: IDL.Nat }))),\n totalTokensOwed0: IDL.Nat,\n totalTokensOwed1: IDL.Nat,\n }),\n err: Error,\n });\n const ClaimArgs = IDL.Record({ positionId: IDL.Nat });\n const Result_28 = IDL.Variant({\n ok: IDL.Record({ amount0: IDL.Nat, amount1: IDL.Nat }),\n err: Error,\n });\n const DecreaseLiquidityArgs = IDL.Record({\n liquidity: IDL.Text,\n positionId: IDL.Nat,\n });\n const DepositArgs = IDL.Record({\n fee: IDL.Nat,\n token: IDL.Text,\n amount: IDL.Nat,\n });\n const Result = IDL.Variant({ ok: IDL.Nat, err: Error });\n const DepositAndMintArgs = IDL.Record({\n tickUpper: IDL.Int,\n fee0: IDL.Nat,\n fee1: IDL.Nat,\n amount0: IDL.Nat,\n amount1: IDL.Nat,\n positionOwner: IDL.Principal,\n amount0Desired: IDL.Text,\n amount1Desired: IDL.Text,\n tickLower: IDL.Int,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_27 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_26 = IDL.Variant({\n ok: IDL.Record({\n feeGrowthGlobal1X128: IDL.Nat,\n feeGrowthGlobal0X128: IDL.Nat,\n }),\n err: Error,\n });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const Result_25 = IDL.Variant({\n ok: IDL.Record({\n infoCid: IDL.Principal,\n trustedCanisterManagerCid: IDL.Principal,\n token0: Token,\n token1: Token,\n feeReceiverCid: IDL.Principal,\n }),\n err: Error,\n });\n const LimitOrderKey = IDL.Record({\n timestamp: IDL.Nat,\n tickLimit: IDL.Int,\n });\n const LimitOrderValue = IDL.Record({\n userPositionId: IDL.Nat,\n token0InAmount: IDL.Nat,\n owner: IDL.Principal,\n token1InAmount: IDL.Nat,\n });\n const Result_24 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(LimitOrderKey, LimitOrderValue)),\n err: Error,\n });\n const Result_23 = IDL.Variant({\n ok: IDL.Record({\n lowerLimitOrders: IDL.Vec(IDL.Tuple(LimitOrderKey, LimitOrderValue)),\n upperLimitOrders: IDL.Vec(IDL.Tuple(LimitOrderKey, LimitOrderValue)),\n }),\n err: Error,\n });\n const GetPositionArgs = IDL.Record({\n tickUpper: IDL.Int,\n tickLower: IDL.Int,\n });\n const PositionInfo = IDL.Record({\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n });\n const Result_22 = IDL.Variant({ ok: PositionInfo, err: Error });\n const PositionInfoWithId = IDL.Record({\n id: IDL.Text,\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n });\n const Page_4 = IDL.Record({\n content: IDL.Vec(PositionInfoWithId),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_21 = IDL.Variant({ ok: Page_4, err: Error });\n const Result_20 = IDL.Variant({\n ok: IDL.Vec(\n IDL.Record({\n userPositionId: IDL.Nat,\n token0InAmount: IDL.Nat,\n timestamp: IDL.Nat,\n tickLimit: IDL.Int,\n token1InAmount: IDL.Nat,\n }),\n ),\n err: Error,\n });\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n limitOrder: IDL.Record({\n token0InAmount: IDL.Nat,\n positionId: IDL.Nat,\n token1InAmount: IDL.Nat,\n }),\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n transferPosition: IDL.Nat,\n increaseLiquidity: IDL.Null,\n });\n const SwapRecordInfo = IDL.Record({\n to: IDL.Text,\n feeAmount: IDL.Int,\n action: TransactionType,\n feeAmountTotal: IDL.Int,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n token0AmountTotal: IDL.Nat,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n tick: IDL.Int,\n feeTire: IDL.Nat,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Nat,\n token1AmountTotal: IDL.Nat,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n TVLToken0: IDL.Int,\n TVLToken1: IDL.Int,\n token0Fee: IDL.Nat,\n token1Fee: IDL.Nat,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Nat,\n token0Standard: IDL.Text,\n price: IDL.Nat,\n poolId: IDL.Text,\n });\n const PushError = IDL.Record({ time: IDL.Int, message: IDL.Text });\n const Result_19 = IDL.Variant({\n ok: IDL.Record({\n infoCid: IDL.Text,\n records: IDL.Vec(SwapRecordInfo),\n errors: IDL.Vec(PushError),\n retryCount: IDL.Nat,\n }),\n err: Error,\n });\n const Result_18 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Int, IDL.Nat)),\n err: Error,\n });\n const TickLiquidityInfo = IDL.Record({\n tickIndex: IDL.Int,\n price0Decimal: IDL.Nat,\n liquidityNet: IDL.Int,\n price0: IDL.Nat,\n price1: IDL.Nat,\n liquidityGross: IDL.Nat,\n price1Decimal: IDL.Nat,\n });\n const Page_3 = IDL.Record({\n content: IDL.Vec(TickLiquidityInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_17 = IDL.Variant({ ok: Page_3, err: Error });\n const TickInfoWithId = IDL.Record({\n id: IDL.Text,\n initialized: IDL.Bool,\n feeGrowthOutside1X128: IDL.Nat,\n secondsPerLiquidityOutsideX128: IDL.Nat,\n liquidityNet: IDL.Int,\n secondsOutside: IDL.Nat,\n liquidityGross: IDL.Nat,\n feeGrowthOutside0X128: IDL.Nat,\n tickCumulativeOutside: IDL.Int,\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(TickInfoWithId),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_16 = IDL.Variant({ ok: Page_2, err: Error });\n const Result_15 = IDL.Variant({\n ok: IDL.Record({\n swapFee0Repurchase: IDL.Nat,\n token0Amount: IDL.Nat,\n swapFeeReceiver: IDL.Text,\n token1Amount: IDL.Nat,\n swapFee1Repurchase: IDL.Nat,\n }),\n err: Error,\n });\n const Value = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n });\n const TransferLog = IDL.Record({\n to: IDL.Principal,\n fee: IDL.Nat,\n result: IDL.Text,\n token: Token,\n action: IDL.Text,\n daysFrom19700101: IDL.Nat,\n owner: IDL.Principal,\n from: IDL.Principal,\n fromSubaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n timestamp: IDL.Nat,\n index: IDL.Nat,\n amount: IDL.Nat,\n errorMsg: IDL.Text,\n toSubaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const Result_14 = IDL.Variant({ ok: IDL.Vec(TransferLog), err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Text, err: Error });\n const Result_13 = IDL.Variant({\n ok: IDL.Record({\n upperLimitOrdersIds: IDL.Vec(IDL.Record({ userPositionId: IDL.Nat, timestamp: IDL.Nat })),\n lowerLimitOrderIds: IDL.Vec(IDL.Record({ userPositionId: IDL.Nat, timestamp: IDL.Nat })),\n }),\n err: Error,\n });\n const UserPositionInfo = IDL.Record({\n tickUpper: IDL.Int,\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n tickLower: IDL.Int,\n });\n const Result_12 = IDL.Variant({ ok: UserPositionInfo, err: Error });\n const Result_11 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Nat))),\n err: Error,\n });\n const Result_10 = IDL.Variant({ ok: IDL.Vec(IDL.Nat), err: Error });\n const UserPositionInfoWithTokenAmount = IDL.Record({\n id: IDL.Nat,\n tickUpper: IDL.Int,\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n token0Amount: IDL.Nat,\n token1Amount: IDL.Nat,\n tickLower: IDL.Int,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(UserPositionInfoWithTokenAmount),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_9 = IDL.Variant({ ok: Page_1, err: Error });\n const UserPositionInfoWithId = IDL.Record({\n id: IDL.Nat,\n tickUpper: IDL.Int,\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n tickLower: IDL.Int,\n });\n const Page = IDL.Record({\n content: IDL.Vec(UserPositionInfoWithId),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_8 = IDL.Variant({ ok: Page, err: Error });\n const Result_7 = IDL.Variant({\n ok: IDL.Vec(UserPositionInfoWithId),\n err: Error,\n });\n const Result_6 = IDL.Variant({\n ok: IDL.Record({ balance0: IDL.Nat, balance1: IDL.Nat }),\n err: Error,\n });\n const Icrc21ConsentMessageMetadata = IDL.Record({\n utc_offset_minutes: IDL.Opt(IDL.Int16),\n language: IDL.Text,\n });\n const Icrc21ConsentMessageSpec = IDL.Record({\n metadata: Icrc21ConsentMessageMetadata,\n device_spec: IDL.Opt(\n IDL.Variant({\n GenericDisplay: IDL.Null,\n LineDisplay: IDL.Record({\n characters_per_line: IDL.Nat16,\n lines_per_page: IDL.Nat16,\n }),\n }),\n ),\n });\n const Icrc21ConsentMessageRequest = IDL.Record({\n arg: IDL.Vec(IDL.Nat8),\n method: IDL.Text,\n user_preferences: Icrc21ConsentMessageSpec,\n });\n const Icrc21ConsentMessage = IDL.Variant({\n LineDisplayMessage: IDL.Record({\n pages: IDL.Vec(IDL.Record({ lines: IDL.Vec(IDL.Text) })),\n }),\n GenericDisplayMessage: IDL.Text,\n });\n const Icrc21ConsentInfo = IDL.Record({\n metadata: Icrc21ConsentMessageMetadata,\n consent_message: Icrc21ConsentMessage,\n });\n const Icrc21ErrorInfo = IDL.Record({ description: IDL.Text });\n const Icrc21Error = IDL.Variant({\n GenericError: IDL.Record({\n description: IDL.Text,\n error_code: IDL.Nat,\n }),\n InsufficientPayment: Icrc21ErrorInfo,\n UnsupportedCanisterCall: Icrc21ErrorInfo,\n ConsentMessageUnavailable: Icrc21ErrorInfo,\n });\n const Icrc21ConsentMessageResponse = IDL.Variant({\n Ok: Icrc21ConsentInfo,\n Err: Icrc21Error,\n });\n const Icrc28TrustedOriginsResponse = IDL.Record({\n trusted_origins: IDL.Vec(IDL.Text),\n });\n const IncreaseLiquidityArgs = IDL.Record({\n positionId: IDL.Nat,\n amount0Desired: IDL.Text,\n amount1Desired: IDL.Text,\n });\n const PoolMetadata = IDL.Record({\n fee: IDL.Nat,\n key: IDL.Text,\n sqrtPriceX96: IDL.Nat,\n tick: IDL.Int,\n liquidity: IDL.Nat,\n token0: Token,\n token1: Token,\n maxLiquidityPerTick: IDL.Nat,\n nextPositionId: IDL.Nat,\n });\n const Result_5 = IDL.Variant({ ok: PoolMetadata, err: Error });\n const MintArgs = IDL.Record({\n fee: IDL.Nat,\n tickUpper: IDL.Int,\n token0: IDL.Text,\n token1: IDL.Text,\n amount0Desired: IDL.Text,\n amount1Desired: IDL.Text,\n tickLower: IDL.Int,\n });\n const SwapArgs = IDL.Record({\n amountIn: IDL.Text,\n zeroForOne: IDL.Bool,\n amountOutMinimum: IDL.Text,\n });\n const Result_4 = IDL.Variant({\n ok: IDL.Record({ tokensOwed0: IDL.Nat, tokensOwed1: IDL.Nat }),\n err: Error,\n });\n const Result_3 = IDL.Variant({ ok: IDL.Int, err: Error });\n const WithdrawArgs = IDL.Record({\n fee: IDL.Nat,\n token: IDL.Text,\n amount: IDL.Nat,\n });\n const WithdrawToSubaccountArgs = IDL.Record({\n fee: IDL.Nat,\n token: IDL.Text,\n subaccount: IDL.Vec(IDL.Nat8),\n amount: IDL.Nat,\n });\n return IDL.Service({\n addLimitOrder: IDL.Func([LimitOrderArgs], [Result_2], []),\n allTokenBalance: IDL.Func([IDL.Nat, IDL.Nat], [Result_30], [\"query\"]),\n approvePosition: IDL.Func([IDL.Principal, IDL.Nat], [Result_2], []),\n batchRefreshIncome: IDL.Func([IDL.Vec(IDL.Nat)], [Result_29], [\"query\"]),\n checkOwnerOfUserPosition: IDL.Func([IDL.Principal, IDL.Nat], [Result_2], [\"query\"]),\n claim: IDL.Func([ClaimArgs], [Result_28], []),\n decreaseLiquidity: IDL.Func([DecreaseLiquidityArgs], [Result_28], []),\n deposit: IDL.Func([DepositArgs], [Result], []),\n depositAllAndMint: IDL.Func([DepositAndMintArgs], [Result], []),\n depositFrom: IDL.Func([DepositArgs], [Result], []),\n getAdmins: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getAvailabilityState: IDL.Func(\n [],\n [\n IDL.Record({\n whiteList: IDL.Vec(IDL.Principal),\n available: IDL.Bool,\n }),\n ],\n [\"query\"],\n ),\n getClaimLog: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_27], []),\n getFeeGrowthGlobal: IDL.Func([], [Result_26], [\"query\"]),\n getInitArgs: IDL.Func([], [Result_25], [\"query\"]),\n getLimitOrderAvailabilityState: IDL.Func([], [Result_2], [\"query\"]),\n getLimitOrderStack: IDL.Func([], [Result_24], [\"query\"]),\n getLimitOrders: IDL.Func([], [Result_23], [\"query\"]),\n getMistransferBalance: IDL.Func([Token], [Result], []),\n getPosition: IDL.Func([GetPositionArgs], [Result_22], [\"query\"]),\n getPositions: IDL.Func([IDL.Nat, IDL.Nat], [Result_21], [\"query\"]),\n getSortedUserLimitOrders: IDL.Func([IDL.Principal], [Result_20], [\"query\"]),\n getSwapRecordState: IDL.Func([], [Result_19], [\"query\"]),\n getTickBitmaps: IDL.Func([], [Result_18], [\"query\"]),\n getTickInfos: IDL.Func([IDL.Nat, IDL.Nat], [Result_17], [\"query\"]),\n getTicks: IDL.Func([IDL.Nat, IDL.Nat], [Result_16], [\"query\"]),\n getTokenAmountState: IDL.Func([], [Result_15], [\"query\"]),\n getTokenBalance: IDL.Func([], [IDL.Record({ token0: IDL.Nat, token1: IDL.Nat })], []),\n getTokenMeta: IDL.Func(\n [],\n [\n IDL.Record({\n token0: IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n token1: IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n token0Fee: IDL.Opt(IDL.Nat),\n token1Fee: IDL.Opt(IDL.Nat),\n }),\n ],\n [],\n ),\n getTransferLogs: IDL.Func([], [Result_14], [\"query\"]),\n getUserByPositionId: IDL.Func([IDL.Nat], [Result_1], [\"query\"]),\n getUserLimitOrders: IDL.Func([IDL.Principal], [Result_13], [\"query\"]),\n getUserPosition: IDL.Func([IDL.Nat], [Result_12], [\"query\"]),\n getUserPositionIds: IDL.Func([], [Result_11], [\"query\"]),\n getUserPositionIdsByPrincipal: IDL.Func([IDL.Principal], [Result_10], [\"query\"]),\n getUserPositionWithTokenAmount: IDL.Func([IDL.Nat, IDL.Nat], [Result_9], [\"query\"]),\n getUserPositions: IDL.Func([IDL.Nat, IDL.Nat], [Result_8], [\"query\"]),\n getUserPositionsByPrincipal: IDL.Func([IDL.Principal], [Result_7], [\"query\"]),\n getUserUnusedBalance: IDL.Func([IDL.Principal], [Result_6], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc10_supported_standards: IDL.Func([], [IDL.Vec(IDL.Record({ url: IDL.Text, name: IDL.Text }))], [\"query\"]),\n icrc21_canister_call_consent_message: IDL.Func([Icrc21ConsentMessageRequest], [Icrc21ConsentMessageResponse], []),\n icrc28_trusted_origins: IDL.Func([], [Icrc28TrustedOriginsResponse], []),\n increaseLiquidity: IDL.Func([IncreaseLiquidityArgs], [Result], []),\n init: IDL.Func([IDL.Nat, IDL.Int, IDL.Nat], [], []),\n metadata: IDL.Func([], [Result_5], [\"query\"]),\n mint: IDL.Func([MintArgs], [Result], []),\n quote: IDL.Func([SwapArgs], [Result], [\"query\"]),\n quoteForAll: IDL.Func([SwapArgs], [Result], [\"query\"]),\n refreshIncome: IDL.Func([IDL.Nat], [Result_4], [\"query\"]),\n removeErrorTransferLog: IDL.Func([IDL.Nat, IDL.Bool], [], []),\n removeLimitOrder: IDL.Func([IDL.Nat], [Result_2], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setAvailable: IDL.Func([IDL.Bool], [], []),\n setLimitOrderAvailable: IDL.Func([IDL.Bool], [], []),\n setWhiteList: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n sumTick: IDL.Func([], [Result_3], [\"query\"]),\n swap: IDL.Func([SwapArgs], [Result], []),\n transferPosition: IDL.Func([IDL.Principal, IDL.Principal, IDL.Nat], [Result_2], []),\n upgradeTokenStandard: IDL.Func([IDL.Principal], [Result_1], []),\n withdraw: IDL.Func([WithdrawArgs], [Result], []),\n withdrawMistransferBalance: IDL.Func([Token], [Result], []),\n withdrawToSubaccount: IDL.Func([WithdrawToSubaccountArgs], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result = IDL.Variant({ ok: IDL.Bool, err: Error });\n const Result_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_2 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Vec(IDL.Text), err: Error });\n const PositionIndex = IDL.Service({\n addPoolId: IDL.Func([IDL.Text], [Result], []),\n getControllers: IDL.Func([], [Result_3], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_2], []),\n getPools: IDL.Func([], [Result_1], [\"query\"]),\n getUserPools: IDL.Func([IDL.Text], [Result_1], [\"query\"]),\n initUserPoolMap: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Text)))], [], []),\n removePoolId: IDL.Func([IDL.Text], [Result], []),\n removePoolIdWithoutCheck: IDL.Func([IDL.Text], [Result], []),\n setOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n updatePoolIds: IDL.Func([], [], []),\n });\n return PositionIndex;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result_11 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: IDL.Text,\n });\n const PoolAprIndex = IDL.Record({\n aprAvg1D: IDL.Float64,\n aprAvg7D: IDL.Float64,\n pool: IDL.Principal,\n aprAvg30D: IDL.Float64,\n });\n const Result_10 = IDL.Variant({ ok: PoolAprIndex, err: IDL.Text });\n const PositionDataIndex = IDL.Record({\n apr: IDL.Float64,\n snapshotTime: IDL.Nat,\n token0FeeAmount: IDL.Nat,\n value: IDL.Float64,\n token1FeeDayAmount: IDL.Nat,\n fees: IDL.Float64,\n pool: IDL.Principal,\n positionId: IDL.Nat,\n token0Amount: IDL.Nat,\n token1USDPrice: IDL.Float64,\n dayId: IDL.Nat,\n token1Amount: IDL.Nat,\n token1FeeAmount: IDL.Nat,\n token0FeeDayAmount: IDL.Nat,\n token0USDPrice: IDL.Float64,\n });\n const Result_9 = IDL.Variant({\n ok: IDL.Vec(PositionDataIndex),\n err: IDL.Text,\n });\n const PriceIndex = IDL.Record({\n priceLow7D: IDL.Float64,\n pool: IDL.Principal,\n priceHigh24H: IDL.Float64,\n priceHigh30D: IDL.Float64,\n priceHigh7D: IDL.Float64,\n priceLow24H: IDL.Float64,\n priceLow30D: IDL.Float64,\n });\n const Result_8 = IDL.Variant({ ok: PriceIndex, err: IDL.Text });\n const TaskPositionStatus = IDL.Record({\n lastSyncDay4Position: IDL.Nat,\n syncErrorMsgs: IDL.Vec(IDL.Text),\n syncPoolSize: IDL.Nat,\n taskStatus: IDL.Bool,\n currentSyncPool: IDL.Text,\n pendingSyncPoolSize: IDL.Nat,\n step1: IDL.Text,\n step2: IDL.Text,\n step3: IDL.Text,\n step4: IDL.Text,\n step5: IDL.Text,\n currentPoolPositionSize: IDL.Nat,\n currentDay: IDL.Nat,\n syncPositionDataLock: IDL.Bool,\n nowTime: IDL.Nat,\n });\n const TaskPriceStatus = IDL.Record({\n syncErrorMsgs: IDL.Vec(IDL.Text),\n syncPoolSize: IDL.Nat,\n taskStatus: IDL.Bool,\n currentSyncPool: IDL.Text,\n pendingSyncPoolSize: IDL.Nat,\n currentHour: IDL.Nat,\n step1: IDL.Text,\n step2: IDL.Text,\n step3: IDL.Text,\n step4: IDL.Text,\n lastSyncHour4PoolPrice: IDL.Nat,\n currentDay: IDL.Nat,\n syncPoolPriceLock: IDL.Bool,\n nowTime: IDL.Nat,\n });\n const TaskStatus = IDL.Record({\n lastSyncDay4Position: IDL.Nat,\n lastSyncDay4PoolData: IDL.Nat,\n totalPoolSize: IDL.Nat,\n taskStatus: IDL.Bool,\n currentHour: IDL.Nat,\n syncPoolDataLock: IDL.Bool,\n pendingSyncPriceSize: IDL.Nat,\n totalTokenListSize: IDL.Nat,\n lastSyncHour4PoolPrice: IDL.Nat,\n currentDay: IDL.Nat,\n pendingSyncPoolDataSize: IDL.Nat,\n syncPositionDataLock: IDL.Bool,\n pendingSyncPositionSize: IDL.Nat,\n syncPoolPriceLock: IDL.Bool,\n nowTime: IDL.Nat,\n });\n const Result_7 = IDL.Variant({\n ok: IDL.Vec(\n IDL.Record({\n apr: IDL.Float64,\n snapshotTime: IDL.Nat,\n dayId: IDL.Nat,\n poolId: IDL.Text,\n }),\n ),\n err: IDL.Text,\n });\n const ICPSwapPoolDataIndex = IDL.Record({\n low: IDL.Float64,\n snapshotTime: IDL.Nat,\n volumeToken0: IDL.Float64,\n volumeToken1: IDL.Float64,\n sqrtPrice: IDL.Float64,\n high: IDL.Float64,\n close: IDL.Float64,\n open: IDL.Float64,\n token1Price: IDL.Float64,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n tvlUSD: IDL.Float64,\n token0LockedAmount: IDL.Float64,\n txCount: IDL.Int,\n token1LedgerId: IDL.Text,\n dayId: IDL.Nat,\n token0LedgerId: IDL.Text,\n token1LockedAmount: IDL.Float64,\n token0Price: IDL.Float64,\n poolId: IDL.Text,\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(ICPSwapPoolDataIndex),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_6 = IDL.Variant({ ok: Page_2, err: IDL.Text });\n const Result_5 = IDL.Variant({\n ok: IDL.Vec(\n IDL.Record({\n snapshotTime: IDL.Nat,\n price: IDL.Float64,\n hourId: IDL.Nat,\n dayId: IDL.Nat,\n poolId: IDL.Principal,\n }),\n ),\n err: IDL.Text,\n });\n const Result_4 = IDL.Variant({\n ok: IDL.Vec(\n IDL.Record({\n apr: IDL.Float64,\n snapshotTime: IDL.Nat,\n positionId: IDL.Nat,\n dayId: IDL.Nat,\n poolId: IDL.Principal,\n }),\n ),\n err: IDL.Text,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(PositionDataIndex),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_3 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const Result_2 = IDL.Variant({\n ok: IDL.Vec(\n IDL.Record({\n snapshotTime: IDL.Nat,\n fees: IDL.Float64,\n positionId: IDL.Nat,\n dayId: IDL.Nat,\n poolId: IDL.Principal,\n }),\n ),\n err: IDL.Text,\n });\n const Result_1 = IDL.Variant({\n ok: IDL.Vec(\n IDL.Record({\n snapshotTime: IDL.Nat,\n value: IDL.Float64,\n positionId: IDL.Nat,\n dayId: IDL.Nat,\n poolId: IDL.Principal,\n }),\n ),\n err: IDL.Text,\n });\n const Page = IDL.Record({\n content: IDL.Vec(PriceIndex),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result = IDL.Variant({ ok: Page, err: IDL.Text });\n return IDL.Service({\n cycleBalance: IDL.Func([], [IDL.Nat], []),\n getAdmins: IDL.Func([], [Result_11], [\"query\"]),\n getPoolAprIndex: IDL.Func([IDL.Principal], [Result_10], [\"query\"]),\n getPositionIndexs: IDL.Func([IDL.Principal, IDL.Nat], [Result_9], [\"query\"]),\n getPriceIndex: IDL.Func([IDL.Principal], [Result_8], [\"query\"]),\n getStat: IDL.Func([], [TaskPositionStatus], [\"query\"]),\n getStatPrice: IDL.Func([], [TaskPriceStatus], [\"query\"]),\n getStatus: IDL.Func([], [TaskStatus], [\"query\"]),\n getTaskState: IDL.Func([], [IDL.Bool], [\"query\"]),\n queryPoolAprLine: IDL.Func([IDL.Principal], [Result_7], [\"query\"]),\n queryPoolDataIndexPage: IDL.Func([IDL.Nat, IDL.Nat], [Result_6], [\"query\"]),\n queryPoolPriceLine: IDL.Func([IDL.Principal], [Result_5], [\"query\"]),\n queryPositionAprLine: IDL.Func([IDL.Principal, IDL.Nat], [Result_4], [\"query\"]),\n queryPositionDataIndexPage: IDL.Func([IDL.Opt(IDL.Text), IDL.Nat, IDL.Nat], [Result_3], [\"query\"]),\n queryPositionFeesLine: IDL.Func([IDL.Principal, IDL.Nat], [Result_2], [\"query\"]),\n queryPositionValueLine: IDL.Func([IDL.Principal, IDL.Nat], [Result_1], [\"query\"]),\n queryPriceIndexPage: IDL.Func([IDL.Nat, IDL.Nat], [Result], [\"query\"]),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setTaskState: IDL.Func([IDL.Bool], [IDL.Bool], []),\n syncPoolAndTokenList: IDL.Func([], [], []),\n syncPoolPriceData: IDL.Func([], [], []),\n syncPositionData: IDL.Func([], [], []),\n });\n};\n","import { ActorIdentity } from \"@icpswap/types\";\nimport {\n SwapFactory,\n SwapFactoryInterfaceFactory,\n SwapNFT,\n SwapNFTInterfaceFactory,\n SwapPool,\n SwapPoolInterfaceFactory,\n TICKET_SERVICE,\n TicketInterfaceFactory,\n PositionIndex,\n PositionIndexInterfaceFactory,\n PositionChartsService,\n PositionChartsFactory,\n} from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const swapNFT = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.SwapNFTCanister,\n identity,\n idlFactory: SwapNFTInterfaceFactory,\n });\n\nexport const swapFactory = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.SwapFactory,\n identity,\n idlFactory: SwapFactoryInterfaceFactory,\n });\n\nexport const swapPool = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n canisterId,\n idlFactory: SwapPoolInterfaceFactory,\n });\n\nexport const swapTicket = () =>\n actor.create({\n actorName: ActorName.SwapTicket,\n idlFactory: TicketInterfaceFactory,\n });\n\nexport const swapPosition = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.Position,\n idlFactory: PositionIndexInterfaceFactory,\n identity,\n });\n\nexport const positionCharts = () =>\n actor.create({\n actorName: ActorName.PositionCharts,\n idlFactory: PositionChartsFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Result_2 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: IDL.Text,\n });\n const TokenDataIndex = IDL.Record({\n marketAmount: IDL.Float64,\n decimals: IDL.Nat,\n ledgerId: IDL.Principal,\n standards: IDL.Text,\n name: IDL.Text,\n transactionAmount: IDL.Nat,\n holders: IDL.Nat,\n symbol: IDL.Text,\n lockedAmount: IDL.Float64,\n });\n const Result_1 = IDL.Variant({ ok: TokenDataIndex, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(TokenDataIndex),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result = IDL.Variant({ ok: Page, err: IDL.Text });\n const UploadRequests = IDL.Record({ tokenDatas: IDL.Vec(TokenDataIndex) });\n return IDL.Service({\n cycleBalance: IDL.Func([], [IDL.Nat], []),\n getAdmins: IDL.Func([], [Result_2], [\"query\"]),\n getTokenData: IDL.Func([IDL.Principal], [Result_1], [\"query\"]),\n getUSDPrice: IDL.Func([IDL.Principal], [IDL.Float64], []),\n queryTokenDatas: IDL.Func([IDL.Nat, IDL.Nat], [Result], [\"query\"]),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n uploadTokenData: IDL.Func([UploadRequests], [IDL.Bool], []),\n });\n};\n","import { TokenAnalysisService, TokenAnalysisFactory } from \"@icpswap/candid\";\n\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const tokenAnalysis = async () =>\n actor.create({\n idlFactory: TokenAnalysisFactory,\n actorName: ActorName.TokenAnalysis,\n });\n","import {\n PassCodeManagerService,\n PassCodeManagerInterfaceFactory,\n LimitTransactionService,\n LimitTransactionInterfaceFactory,\n} from \"@icpswap/candid\";\n\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const passCodeManager = async (identity?: true) =>\n actor.create({\n identity,\n idlFactory: PassCodeManagerInterfaceFactory,\n actorName: ActorName.PassCodeManager,\n });\n\nexport const limitTransaction = async () =>\n actor.create({\n idlFactory: LimitTransactionInterfaceFactory,\n actorName: ActorName.LimitTransaction,\n });\n\nexport * from \"./global\";\nexport * from \"./tokenAnalysis\";\n","export const idlFactory = ({ IDL }: any) => {\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const CreateFarmArgs = IDL.Record({\n startTime: IDL.Nat,\n secondPerCycle: IDL.Nat,\n rewardToken: Token,\n endTime: IDL.Nat,\n rewardAmount: IDL.Nat,\n pool: IDL.Principal,\n refunder: IDL.Principal,\n priceInsideLimit: IDL.Bool,\n token0AmountLimit: IDL.Nat,\n token1AmountLimit: IDL.Nat,\n });\n const Result_4 = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_2 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Nat, err: Error });\n const Result = IDL.Variant({\n ok: IDL.Record({\n farmIndexCid: IDL.Principal,\n governanceCid: IDL.Opt(IDL.Principal),\n feeReceiverCid: IDL.Principal,\n }),\n err: Error,\n });\n return IDL.Service({\n addFarmControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n create: IDL.Func([CreateFarmArgs], [Result_4], []),\n getAdmins: IDL.Func([], [Result_3], [\"query\"]),\n getAllFarms: IDL.Func([], [Result_3], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_2], []),\n getFee: IDL.Func([], [Result_1], [\"query\"]),\n getInitArgs: IDL.Func([], [Result], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n removeFarmControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setFarmAdmins: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setFee: IDL.Func([IDL.Nat], [], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result = IDL.Variant({ ok: IDL.Text, err: Error });\n const Result_21 = IDL.Variant({\n ok: IDL.Record({\n token0DecimalsConst: IDL.Float64,\n token1DecimalsConst: IDL.Float64,\n rewardTokenDecimalsConst: IDL.Float64,\n timeConst: IDL.Float64,\n }),\n err: Error,\n });\n const Result_20 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Nat, IDL.Float64)),\n err: Error,\n });\n const Result_19 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const Result_18 = IDL.Variant({ ok: IDL.Float64, err: Error });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_17 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Deposit = IDL.Record({\n tickUpper: IDL.Int,\n rewardAmount: IDL.Nat,\n owner: IDL.Principal,\n liquidity: IDL.Nat,\n initTime: IDL.Nat,\n lastDistributeTime: IDL.Nat,\n positionId: IDL.Nat,\n token0Amount: IDL.Int,\n holder: IDL.Principal,\n token1Amount: IDL.Int,\n tickLower: IDL.Int,\n });\n const Result_16 = IDL.Variant({ ok: Deposit, err: Error });\n const DistributeRecord = IDL.Record({\n rewardTotal: IDL.Nat,\n owner: IDL.Principal,\n positionId: IDL.Nat,\n timestamp: IDL.Nat,\n rewardGained: IDL.Nat,\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(DistributeRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_15 = IDL.Variant({ ok: Page_2, err: IDL.Text });\n const FarmStatus = IDL.Variant({\n LIVE: IDL.Null,\n NOT_STARTED: IDL.Null,\n CLOSED: IDL.Null,\n FINISHED: IDL.Null,\n });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const FarmInfo = IDL.Record({\n startTime: IDL.Nat,\n status: FarmStatus,\n creator: IDL.Principal,\n totalRewardHarvested: IDL.Nat,\n numberOfStakes: IDL.Nat,\n rewardToken: Token,\n endTime: IDL.Nat,\n totalRewardBalance: IDL.Nat,\n pool: IDL.Principal,\n refunder: IDL.Principal,\n poolToken0: Token,\n poolToken1: Token,\n poolFee: IDL.Nat,\n totalRewardUnharvested: IDL.Nat,\n totalReward: IDL.Nat,\n userNumberOfStakes: IDL.Nat,\n positionIds: IDL.Vec(IDL.Nat),\n });\n const Result_14 = IDL.Variant({ ok: FarmInfo, err: Error });\n const InitFarmArgs = IDL.Record({\n fee: IDL.Nat,\n startTime: IDL.Nat,\n status: FarmStatus,\n secondPerCycle: IDL.Nat,\n creator: IDL.Principal,\n nodeIndexCid: IDL.Principal,\n farmIndexCid: IDL.Principal,\n rewardToken: Token,\n endTime: IDL.Nat,\n pool: IDL.Principal,\n refunder: IDL.Principal,\n governanceCid: IDL.Opt(IDL.Principal),\n priceInsideLimit: IDL.Bool,\n token0AmountLimit: IDL.Nat,\n token1AmountLimit: IDL.Nat,\n totalReward: IDL.Nat,\n farmFactoryCid: IDL.Principal,\n feeReceiverCid: IDL.Principal,\n });\n const Result_13 = IDL.Variant({ ok: InitFarmArgs, err: Error });\n const Result_12 = IDL.Variant({\n ok: IDL.Record({\n priceInsideLimit: IDL.Bool,\n positionNumLimit: IDL.Nat,\n token0AmountLimit: IDL.Nat,\n token1AmountLimit: IDL.Nat,\n }),\n err: Error,\n });\n const Result_11 = IDL.Variant({\n ok: IDL.Record({\n poolToken0Amount: IDL.Nat,\n totalLiquidity: IDL.Nat,\n poolToken1Amount: IDL.Nat,\n }),\n err: Error,\n });\n const Result_10 = IDL.Variant({\n ok: IDL.Record({\n poolToken0Symbol: IDL.Text,\n poolToken1Symbol: IDL.Text,\n poolToken1Decimals: IDL.Nat,\n poolToken0Decimals: IDL.Nat,\n poolToken0: IDL.Record({\n address: IDL.Text,\n standard: IDL.Text,\n }),\n poolToken1: IDL.Record({\n address: IDL.Text,\n standard: IDL.Text,\n }),\n }),\n err: Error,\n });\n const Result_9 = IDL.Variant({ ok: IDL.Vec(IDL.Nat), err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Nat, err: Error });\n const Result_8 = IDL.Variant({\n ok: IDL.Record({\n secondPerCycle: IDL.Nat,\n totalRewardHarvested: IDL.Nat,\n totalRewardBalance: IDL.Nat,\n totalRewardFee: IDL.Nat,\n rewardPerCycle: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n totalCycleCount: IDL.Nat,\n totalRewardUnharvested: IDL.Nat,\n currentCycleCount: IDL.Nat,\n totalReward: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n }),\n err: Error,\n });\n const TransType = IDL.Variant({\n withdraw: IDL.Null,\n distribute: IDL.Null,\n unstake: IDL.Null,\n stake: IDL.Null,\n harvest: IDL.Null,\n });\n const StakeRecord = IDL.Record({\n to: IDL.Principal,\n transType: TransType,\n from: IDL.Principal,\n liquidity: IDL.Nat,\n positionId: IDL.Nat,\n timestamp: IDL.Nat,\n amount: IDL.Nat,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(StakeRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_7 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const TokenAmount = IDL.Record({\n address: IDL.Text,\n amount: IDL.Nat,\n standard: IDL.Text,\n });\n const TVL = IDL.Record({\n poolToken0: TokenAmount,\n poolToken1: TokenAmount,\n });\n const Result_6 = IDL.Variant({ ok: TVL, err: Error });\n const TransferLog = IDL.Record({\n to: IDL.Principal,\n fee: IDL.Nat,\n result: IDL.Text,\n token: Token,\n action: IDL.Text,\n daysFrom19700101: IDL.Nat,\n owner: IDL.Principal,\n from: IDL.Principal,\n fromSubaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n timestamp: IDL.Nat,\n index: IDL.Nat,\n amount: IDL.Nat,\n errorMsg: IDL.Text,\n });\n const Result_5 = IDL.Variant({ ok: IDL.Vec(TransferLog), err: Error });\n const Result_4 = IDL.Variant({ ok: IDL.Vec(Deposit), err: Error });\n const Page = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_3 = IDL.Variant({ ok: Page, err: Error });\n const Result_2 = IDL.Variant({\n ok: IDL.Record({\n poolToken0: TokenAmount,\n poolToken1: TokenAmount,\n }),\n err: Error,\n });\n return IDL.Service({\n clearErrorLog: IDL.Func([], [], []),\n close: IDL.Func([], [Result], []),\n finishManually: IDL.Func([], [Result], []),\n getAPRConst: IDL.Func([], [Result_21], [\"query\"]),\n getAPRRecord: IDL.Func([], [Result_20], [\"query\"]),\n getAdmins: IDL.Func([], [Result_19], [\"query\"]),\n getAvgAPR: IDL.Func([], [Result_18], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_17], []),\n getDeposit: IDL.Func([IDL.Nat], [Result_16], [\"query\"]),\n getDistributeRecord: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [Result_15], [\"query\"]),\n getErrorLog: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n getFarmInfo: IDL.Func([IDL.Text], [Result_14], [\"query\"]),\n getInitArgs: IDL.Func([], [Result_13], [\"query\"]),\n getLimitInfo: IDL.Func([], [Result_12], [\"query\"]),\n getLiquidityInfo: IDL.Func([], [Result_11], [\"query\"]),\n getPoolMeta: IDL.Func([], [IDL.Record({ sqrtPriceX96: IDL.Nat, tick: IDL.Int })], []),\n getPoolTokenMeta: IDL.Func([], [Result_10], [\"query\"]),\n getPositionIds: IDL.Func([], [Result_9], [\"query\"]),\n getRewardInfo: IDL.Func([IDL.Vec(IDL.Nat)], [Result_1], [\"query\"]),\n getRewardMeta: IDL.Func([], [Result_8], [\"query\"]),\n getRewardTokenBalance: IDL.Func([], [IDL.Nat], []),\n getStakeRecord: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [Result_7], [\"query\"]),\n getTVL: IDL.Func([], [Result_6], [\"query\"]),\n getTransferLogs: IDL.Func([], [Result_5], [\"query\"]),\n getUserDeposits: IDL.Func([IDL.Principal], [Result_4], [\"query\"]),\n getUserRewardBalance: IDL.Func([IDL.Principal], [Result_1], [\"query\"]),\n getUserRewardBalances: IDL.Func([IDL.Nat, IDL.Nat], [Result_3], [\"query\"]),\n getUserTVL: IDL.Func([IDL.Principal], [Result_2], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n init: IDL.Func([], [], []),\n removeErrorTransferLog: IDL.Func([IDL.Nat, IDL.Bool], [], []),\n restartManually: IDL.Func([], [Result], []),\n sendRewardManually: IDL.Func([], [Result], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setLimitInfo: IDL.Func([IDL.Nat, IDL.Nat, IDL.Nat, IDL.Bool], [], []),\n stake: IDL.Func([IDL.Nat], [Result], []),\n unstake: IDL.Func([IDL.Nat], [Result], []),\n withdraw: IDL.Func([], [Result_1], []),\n withdrawRewardFee: IDL.Func([], [Result], []),\n });\n};\nexport const init = ({ IDL }) => {\n return [];\n};\n","export const idlFactory = ({ IDL }) => {\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const AddFarmIndexArgs = IDL.Record({\n rewardToken: Token,\n farmCid: IDL.Principal,\n poolToken0: Token,\n poolToken1: Token,\n poolCid: IDL.Principal,\n totalReward: IDL.Nat,\n });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_8 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(IDL.Principal))),\n err: Error,\n });\n const Result_9 = IDL.Variant({\n ok: IDL.Record({\n LIVE: IDL.Vec(IDL.Principal),\n NOT_STARTED: IDL.Vec(IDL.Principal),\n CLOSED: IDL.Vec(IDL.Principal),\n FINISHED: IDL.Vec(IDL.Principal),\n }),\n err: IDL.Text,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_7 = IDL.Variant({ ok: CycleInfo, err: Error });\n const FarmRewardInfo = IDL.Record({\n poolToken0TVL: IDL.Record({\n address: IDL.Principal,\n amount: IDL.Nat,\n standard: IDL.Text,\n }),\n poolToken1TVL: IDL.Record({\n address: IDL.Principal,\n amount: IDL.Nat,\n standard: IDL.Text,\n }),\n pool: IDL.Principal,\n initTime: IDL.Nat,\n totalReward: IDL.Record({\n address: IDL.Principal,\n amount: IDL.Nat,\n standard: IDL.Text,\n }),\n });\n const Result_6 = IDL.Variant({ ok: FarmRewardInfo, err: Error });\n const FarmStatus = IDL.Variant({\n LIVE: IDL.Null,\n NOT_STARTED: IDL.Null,\n CLOSED: IDL.Null,\n FINISHED: IDL.Null,\n });\n const Result_5 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, FarmRewardInfo)),\n err: Error,\n });\n const Result = IDL.Variant({ ok: IDL.Vec(IDL.Principal), err: Error });\n const Result_4 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: IDL.Text,\n });\n const SearchCondition = IDL.Record({\n status: IDL.Opt(IDL.Vec(FarmStatus)),\n rewardToken: IDL.Opt(IDL.Principal),\n pool: IDL.Opt(IDL.Principal),\n user: IDL.Opt(IDL.Principal),\n });\n const Result_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Principal)),\n err: Error,\n });\n const Result_2 = IDL.Variant({\n ok: IDL.Vec(FarmRewardInfo),\n err: Error,\n });\n const Result_1 = IDL.Variant({\n ok: IDL.Record({ farmAmount: IDL.Nat, principalAmount: IDL.Nat }),\n err: Error,\n });\n const TokenAmount = IDL.Record({\n address: IDL.Text,\n amount: IDL.Nat,\n standard: IDL.Text,\n });\n const TVL = IDL.Record({\n poolToken0: TokenAmount,\n poolToken1: TokenAmount,\n });\n return IDL.Service({\n addFarmIndex: IDL.Func([AddFarmIndexArgs], [], []),\n getAllFarmUsers: IDL.Func([], [Result_8], [\"query\"]),\n getAllFarms: IDL.Func([], [Result_9], [\"query\"]),\n getAllPoolFarms: IDL.Func([], [Result_8], [\"query\"]),\n getAllRewardTokenFarms: IDL.Func([], [Result_8], [\"query\"]),\n getAllUserFarms: IDL.Func([], [Result_8], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_7], []),\n getFarmRewardTokenInfo: IDL.Func([IDL.Principal], [Result_6], [\"query\"]),\n getFarmRewardTokenInfos: IDL.Func([IDL.Opt(FarmStatus)], [Result_5], [\"query\"]),\n getFarmUsers: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getFarms: IDL.Func([IDL.Opt(FarmStatus)], [Result_4], [\"query\"]),\n getFarmsByConditions: IDL.Func([SearchCondition], [Result], [\"query\"]),\n getFarmsByPool: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getFarmsByRewardToken: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getLiveFarmsByPools: IDL.Func([IDL.Vec(IDL.Principal)], [Result_3], [\"query\"]),\n getPrincipalRecord: IDL.Func([], [Result], [\"query\"]),\n getRewardInfoByStatus: IDL.Func([FarmStatus], [Result_2], [\"query\"]),\n getTotalAmount: IDL.Func([], [Result_1], [\"query\"]),\n getUserFarms: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n syncHisData: IDL.Func([IDL.Principal, IDL.Nat], [IDL.Text], []),\n updateFarmStatus: IDL.Func([FarmStatus], [], []),\n updateFarmTVL: IDL.Func([TVL], [], []),\n updateUserInfo: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n });\n};\n","import { ActorIdentity } from \"@icpswap/types\";\nimport {\n Farm,\n FarmInterfaceFactory,\n FarmController,\n FarmControllerInterfaceFactory,\n FarmStorage,\n FarmStorageInterfaceFactory,\n FarmIndex,\n FarmIndexInterfaceFactory,\n} from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const farmController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.FarmController,\n identity,\n idlFactory: FarmControllerInterfaceFactory,\n });\n\nexport const farm = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.Farm,\n canisterId,\n identity,\n idlFactory: FarmInterfaceFactory,\n });\n\nexport const farmStorage = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.FarmStorage,\n canisterId,\n identity,\n idlFactory: FarmStorageInterfaceFactory,\n });\n\nexport const farmIndex = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.FarmIndex,\n identity,\n idlFactory: FarmIndexInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const InitRequest = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n stakingToken: Token,\n rewardToken: Token,\n rewardPerTime: IDL.Nat,\n name: IDL.Text,\n stakingTokenFee: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n });\n const Result_11 = IDL.Variant({ ok: IDL.Principal, err: IDL.Text });\n const Result_2 = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const TokenGlobalDataInfo = IDL.Record({\n rewardAmount: IDL.Float64,\n stakingAmount: IDL.Float64,\n rewardTokenPrice: IDL.Float64,\n rewardTokenCanisterId: IDL.Text,\n stakingTokenCanisterId: IDL.Text,\n stakingTokenPrice: IDL.Float64,\n stakingTokenAmount: IDL.Nat,\n rewardTokenAmount: IDL.Nat,\n });\n const Result_10 = IDL.Variant({\n ok: IDL.Vec(TokenGlobalDataInfo),\n err: IDL.Text,\n });\n const StakingPoolInfo = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n creator: IDL.Principal,\n stakingToken: Token,\n rewardToken: Token,\n rewardPerTime: IDL.Nat,\n name: IDL.Text,\n createTime: IDL.Nat,\n stakingTokenFee: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n canisterId: IDL.Principal,\n });\n const Page = IDL.Record({\n content: IDL.Vec(StakingPoolInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_9 = IDL.Variant({ ok: Page, err: Page });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_8 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_7 = IDL.Variant({ ok: CycleInfo, err: Error });\n const GlobalDataInfo = IDL.Record({\n valueOfStaking: IDL.Float64,\n valueOfRewarded: IDL.Float64,\n totalStaker: IDL.Nat,\n valueOfRewardsInProgress: IDL.Float64,\n totalPools: IDL.Nat,\n });\n const Result_6 = IDL.Variant({ ok: GlobalDataInfo, err: IDL.Text });\n const Result_5 = IDL.Variant({\n ok: IDL.Record({\n governanceCid: IDL.Opt(IDL.Principal),\n userIndexCid: IDL.Principal,\n feeReceiverCid: IDL.Principal,\n }),\n err: Error,\n });\n const Result_4 = IDL.Variant({\n ok: IDL.Tuple(IDL.Text, IDL.Text, IDL.Nat, IDL.Nat, IDL.Bool),\n err: IDL.Text,\n });\n const Result_3 = IDL.Variant({\n ok: TokenGlobalDataInfo,\n err: IDL.Text,\n });\n const Result_1 = IDL.Variant({ ok: StakingPoolInfo, err: IDL.Text });\n const Result = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n return IDL.Service({\n addStakingPoolControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n createStakingPool: IDL.Func([InitRequest], [Result_11], []),\n deleteStakingPool: IDL.Func([IDL.Principal], [Result_2], []),\n findPoolStatInfo: IDL.Func([], [Result_10], [\"query\"]),\n findStakingPoolPage: IDL.Func([IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [Result_9], [\"query\"]),\n findStakingPoolPageV2: IDL.Func(\n [IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat, IDL.Opt(IDL.Text), IDL.Opt(IDL.Text)],\n [Result_9],\n [\"query\"],\n ),\n getAdmins: IDL.Func([], [Result_8], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_7], []),\n getGlobalData: IDL.Func([], [Result_6], [\"query\"]),\n getInitArgs: IDL.Func([], [Result_5], [\"query\"]),\n getOperationInfo: IDL.Func([], [Result_4], [\"query\"]),\n getPoolStatInfo: IDL.Func([IDL.Principal], [Result_3], [\"query\"]),\n getStakingPool: IDL.Func([IDL.Principal], [Result_1], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n removeStakingPoolControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setRewardFee: IDL.Func([IDL.Nat], [Result_2], []),\n setStakingPoolAdmins: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setStakingPoolTime: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [Result_1], []),\n setUpdateGlobalDataState: IDL.Func([IDL.Bool], [Result_2], []),\n setUserIndexCanister: IDL.Func([IDL.Principal], [Result_2], []),\n stopStakingPool: IDL.Func([IDL.Principal], [Result_1], []),\n stopTimer: IDL.Func([], [], []),\n unclaimdRewardFee: IDL.Func([IDL.Principal], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const TransType = IDL.Variant({\n withdraw: IDL.Null,\n liquidate: IDL.Null,\n deposit: IDL.Null,\n unstake: IDL.Null,\n stake: IDL.Null,\n harvest: IDL.Null,\n });\n const TransTokenType = IDL.Variant({\n stakeToken: IDL.Null,\n rewardToken: IDL.Null,\n });\n const Record = IDL.Record({\n to: IDL.Principal,\n stakingTokenSymbol: IDL.Text,\n result: IDL.Text,\n rewardTokenSymbol: IDL.Text,\n stakingToken: IDL.Text,\n rewardToken: IDL.Text,\n stakingStandard: IDL.Text,\n transType: TransType,\n from: IDL.Principal,\n transTokenType: TransTokenType,\n errMsg: IDL.Text,\n rewardStandard: IDL.Text,\n timestamp: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n amount: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(Record),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_9 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_8 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Nat, Record)),\n err: Error,\n });\n const PublicUserInfo = IDL.Record({\n pendingReward: IDL.Nat,\n lastRewardTime: IDL.Nat,\n stakeAmount: IDL.Nat,\n rewardTokenBalance: IDL.Nat,\n rewardDebt: IDL.Nat,\n lastStakeTime: IDL.Nat,\n stakeTokenBalance: IDL.Nat,\n });\n const Page = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Principal, PublicUserInfo)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_7 = IDL.Variant({ ok: Page, err: IDL.Text });\n const Result_6 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_5 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const LiquidationStatus = IDL.Variant({\n pending: IDL.Null,\n liquidation: IDL.Null,\n liquidated: IDL.Null,\n });\n const PublicStakingPoolInfo = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n lastRewardTime: IDL.Nat,\n totalDeposit: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n creator: IDL.Principal,\n stakingToken: Token,\n rewardToken: Token,\n totalUnstaked: IDL.Float64,\n rewardPerTime: IDL.Nat,\n totalHarvest: IDL.Float64,\n name: IDL.Text,\n liquidationStatus: LiquidationStatus,\n createTime: IDL.Nat,\n stakingTokenFee: IDL.Nat,\n rewardFee: IDL.Nat,\n rewardDebt: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n accPerShare: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n totalStaked: IDL.Float64,\n rewardTokenDecimals: IDL.Nat,\n feeReceiverCid: IDL.Principal,\n });\n const Result_1 = IDL.Variant({\n ok: PublicStakingPoolInfo,\n err: IDL.Text,\n });\n const Result_4 = IDL.Variant({ ok: PublicUserInfo, err: IDL.Text });\n const Result_2 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Result_3 = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const UpdateStakingPool = IDL.Record({\n startTime: IDL.Nat,\n rewardPerTime: IDL.Nat,\n bonusEndTime: IDL.Nat,\n });\n return IDL.Service({\n claim: IDL.Func([], [Result], []),\n deposit: IDL.Func([], [Result], []),\n depositFrom: IDL.Func([IDL.Nat], [Result], []),\n findRewardRecordPage: IDL.Func([IDL.Opt(IDL.Principal), IDL.Nat, IDL.Nat], [Result_9], [\"query\"]),\n findStakingRecordPage: IDL.Func([IDL.Opt(IDL.Principal), IDL.Nat, IDL.Nat], [Result_9], [\"query\"]),\n findTransferRecord: IDL.Func([], [Result_8], [\"query\"]),\n findUserInfo: IDL.Func([IDL.Nat, IDL.Nat], [Result_7], [\"query\"]),\n getAdmins: IDL.Func([], [Result_6], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_5], []),\n getPoolInfo: IDL.Func([], [Result_1], [\"query\"]),\n getUserInfo: IDL.Func([IDL.Principal], [Result_4], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n harvest: IDL.Func([], [Result_2], []),\n liquidation: IDL.Func([], [Result], []),\n pendingReward: IDL.Func([IDL.Principal], [Result_2], [\"query\"]),\n refundRewardToken: IDL.Func([], [Result], []),\n refundUserToken: IDL.Func([], [Result], []),\n removeTransferRecord: IDL.Func([IDL.Nat, IDL.Bool], [Result_3], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n stake: IDL.Func([], [Result_2], []),\n stop: IDL.Func([], [Result_1], []),\n unclaimdRewardFee: IDL.Func([], [Result_2], [\"query\"]),\n unstake: IDL.Func([IDL.Nat], [Result_2], []),\n updateStakingPool: IDL.Func([UpdateStakingPool], [Result_1], []),\n withdraw: IDL.Func([IDL.Bool, IDL.Nat], [Result], []),\n withdrawRewardFee: IDL.Func([], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result_1 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_6 = IDL.Variant({ ok: CycleInfo, err: Error });\n const APRInfo = IDL.Record({\n apr: IDL.Float64,\n day: IDL.Nat,\n rewardPerTime: IDL.Nat,\n time: IDL.Nat,\n stakingPool: IDL.Principal,\n stakingTokenPriceUSD: IDL.Float64,\n rewardTokenPriceUSD: IDL.Float64,\n stakingTokenDecimals: IDL.Nat,\n stakingTokenAmount: IDL.Float64,\n rewardTokenDecimals: IDL.Nat,\n });\n const Result_5 = IDL.Variant({ ok: IDL.Vec(APRInfo), err: IDL.Text });\n const Result_4 = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Nat, IDL.Principal),\n err: IDL.Text,\n });\n const PublicUserInfo = IDL.Record({\n pendingReward: IDL.Nat,\n lastRewardTime: IDL.Nat,\n stakeAmount: IDL.Nat,\n rewardTokenBalance: IDL.Nat,\n rewardDebt: IDL.Nat,\n lastStakeTime: IDL.Nat,\n stakeTokenBalance: IDL.Nat,\n });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const UserPool = IDL.Record({\n userInfo: PublicUserInfo,\n stakingToken: Token,\n rewardToken: Token,\n owner: IDL.Principal,\n stakingPool: IDL.Principal,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(UserPool),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_3 = IDL.Variant({ ok: Page_1, err: Page_1 });\n const StakingPoolInfo = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n creator: IDL.Principal,\n stakingToken: Token,\n rewardToken: Token,\n rewardPerTime: IDL.Nat,\n name: IDL.Text,\n createTime: IDL.Nat,\n stakingTokenFee: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n canisterId: IDL.Principal,\n });\n const Page = IDL.Record({\n content: IDL.Vec(StakingPoolInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_2 = IDL.Variant({ ok: Page, err: IDL.Text });\n const UserStakedToken = IDL.Record({\n ledgerId: IDL.Principal,\n value: IDL.Float64,\n price: IDL.Float64,\n amount: IDL.Float64,\n poolId: IDL.Principal,\n });\n const Result = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n return IDL.Service({\n computeStakingPool: IDL.Func([], [Result_1], []),\n getCycleInfo: IDL.Func([], [Result_6], []),\n getUSDPrice: IDL.Func([IDL.Text], [IDL.Float64], []),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n queryAPR: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [Result_5], [\"query\"]),\n queryIndexInfo: IDL.Func([], [Result_4], [\"query\"]),\n queryPool: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat, IDL.Opt(IDL.Text), IDL.Opt(IDL.Text)], [Result_3], [\"query\"]),\n queryStakingPool: IDL.Func([IDL.Nat, IDL.Nat], [Result_2], [\"query\"]),\n queryUserStakedTokens: IDL.Func([IDL.Principal], [IDL.Vec(UserStakedToken)], [\"query\"]),\n syncStakingPool: IDL.Func([], [Result_1], []),\n updateUser: IDL.Func([IDL.Principal, PublicUserInfo], [Result], []),\n });\n};\n","import { ActorIdentity } from \"@icpswap/types\";\nimport {\n TokenPool,\n StakingPoolController,\n StakingPoolControllerInterfaceFactory,\n TokenPoolInterfaceFactory,\n StakeIndex,\n StakeIndexInterfaceFactor,\n} from \"@icpswap/candid\";\n\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const stakingPoolController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.StakingTokenController,\n identity,\n idlFactory: StakingPoolControllerInterfaceFactory,\n });\n\nexport const stakingPool = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n actorName: ActorName.TokenPool,\n identity,\n idlFactory: TokenPoolInterfaceFactory,\n });\n\nexport const stakeIndex = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.StakeIndex,\n identity,\n idlFactory: StakeIndexInterfaceFactor,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const ClaimEventInfo = IDL.Record({\n claimEventCreator: IDL.Principal,\n tokenCid: IDL.Text,\n tokenStandard: IDL.Text,\n claimedTokenAmount: IDL.Nat,\n claimEventId: IDL.Text,\n tokenDecimals: IDL.Nat8,\n claimEventStatus: IDL.Nat,\n tokenSymbol: IDL.Text,\n totalUserAmount: IDL.Nat,\n totalTokenAmount: IDL.Nat,\n claimedUserAmount: IDL.Nat,\n tokenName: IDL.Text,\n claimCanisterId: IDL.Text,\n claimEventName: IDL.Text\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(ClaimEventInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_2 = IDL.Variant({ ok: Page, err: IDL.Text });\n const User__1 = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ClaimRecordInfo = IDL.Record({\n claimAmount: IDL.Nat,\n tokenCid: IDL.Text,\n tokenStandard: IDL.Text,\n claimStatus: IDL.Nat,\n claimEventId: IDL.Text,\n tokenDecimals: IDL.Nat8,\n claimTime: IDL.Opt(IDL.Int),\n claimUser: User__1,\n tokenSymbol: IDL.Text,\n tokenName: IDL.Text,\n claimEventName: IDL.Text\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(ClaimRecordInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_3 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const ResponseResult_1 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n const ResponseResult = IDL.Variant({\n ok: ClaimEventInfo,\n err: IDL.Text\n });\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ClaimQuota = IDL.Record({ user: User, quota: IDL.Nat });\n return IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n claim: IDL.Func([IDL.Text], [BoolResult], []),\n create: IDL.Func([ClaimEventInfo], [TextResult], []),\n cycleAvailable: IDL.Func([], [NatResult], [\"query\"]),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n delete: IDL.Func([IDL.Text], [BoolResult], []),\n findAllEvents: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n findCreateEvents: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n findEventRecords: IDL.Func([IDL.Text, IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_3], []),\n findUserEventRecords: IDL.Func(\n [IDL.Principal, IDL.Opt(IDL.Text), IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat],\n [ResponseResult_3],\n []\n ),\n findUserEvents: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n getAdminList: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getControllerAddress: IDL.Func([], [TextResult], [\"query\"]),\n getEvent: IDL.Func([IDL.Text], [ResponseResult], [\"query\"]),\n getStorageCanister: IDL.Func([], [TextResult], [\"query\"]),\n importQuota: IDL.Func([IDL.Text, IDL.Vec(ClaimQuota)], [BoolResult], []),\n ready: IDL.Func([IDL.Text], [BoolResult], []),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n setStatus: IDL.Func([IDL.Text, IDL.Bool], [BoolResult], []),\n setStorageCanister: IDL.Func([IDL.Text], [BoolResult], []),\n unlock: IDL.Func([IDL.Principal], [BoolResult], []),\n updateEvent: IDL.Func([ClaimEventInfo], [BoolResult], [])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const ClaimEventInfo = IDL.Record({\n claimEventCreator: IDL.Principal,\n tokenCid: IDL.Text,\n tokenStandard: IDL.Text,\n claimedTokenAmount: IDL.Nat,\n claimEventId: IDL.Text,\n tokenDecimals: IDL.Nat8,\n claimEventStatus: IDL.Nat,\n tokenSymbol: IDL.Text,\n totalUserAmount: IDL.Nat,\n totalTokenAmount: IDL.Nat,\n claimedUserAmount: IDL.Nat,\n tokenName: IDL.Text,\n claimCanisterId: IDL.Text,\n claimEventName: IDL.Text\n });\n const User__1 = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ClaimRecordInfo = IDL.Record({\n claimAmount: IDL.Nat,\n tokenCid: IDL.Text,\n tokenStandard: IDL.Text,\n claimStatus: IDL.Nat,\n claimEventId: IDL.Text,\n tokenDecimals: IDL.Nat8,\n claimTime: IDL.Opt(IDL.Int),\n claimUser: User__1,\n tokenSymbol: IDL.Text,\n tokenName: IDL.Text,\n claimEventName: IDL.Text\n });\n const ResponseResult = IDL.Variant({\n ok: ClaimEventInfo,\n err: IDL.Text\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(ClaimRecordInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_3 = IDL.Variant({ ok: Page, err: IDL.Text });\n const Page_1 = IDL.Record({\n content: IDL.Vec(ClaimEventInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_4 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ResponseResult_2 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n const ResponseResult_1 = IDL.Variant({\n ok: IDL.Tuple(User, IDL.Text),\n err: IDL.Text\n });\n return IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n addEvent: IDL.Func([ClaimEventInfo], [BoolResult], []),\n addEventRecords: IDL.Func([IDL.Text, IDL.Vec(ClaimRecordInfo)], [BoolResult], []),\n claim: IDL.Func([IDL.Text, IDL.Principal], [ResponseResult], []),\n cycleAvailable: IDL.Func([], [NatResult], [\"query\"]),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n deleteEvent: IDL.Func([IDL.Text], [BoolResult], []),\n findAllEventRecords: IDL.Func([IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_3], [\"query\"]),\n findAllEvents: IDL.Func([IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_4], [\"query\"]),\n findEventRecords: IDL.Func([IDL.Text, IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_3], [\"query\"]),\n findUserEventRecords: IDL.Func(\n [User, IDL.Opt(IDL.Text), IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat],\n [ResponseResult_3],\n [\"query\"]\n ),\n getAdminList: IDL.Func([], [ResponseResult_2], [\"query\"]),\n getCanisterPrincipal: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getEvent: IDL.Func([IDL.Text], [ResponseResult], [\"query\"]),\n ready: IDL.Func([IDL.Text], [BoolResult], []),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n setStatus: IDL.Func([IDL.Text, IDL.Bool], [BoolResult], []),\n userClaim: IDL.Func([IDL.Text], [ResponseResult], [])\n });\n};\n","import { actor } from \"./actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"./ActorName\";\nimport {\n ClaimController,\n ClaimControllerInterfaceFactory,\n ClaimStorage,\n ClaimStorageInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const tokenClaimController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.ClaimController,\n identity,\n idlFactory: ClaimControllerInterfaceFactory,\n });\n\nexport const tokenClaimStorage = (\n canisterId: string,\n identity?: ActorIdentity\n) =>\n actor.create({\n identity,\n canisterId,\n idlFactory: ClaimStorageInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ProjectInfo = IDL.Record({\n tokenCid: IDL.Text,\n logo: IDL.Text,\n name: IDL.Text,\n projectCid: IDL.Text,\n managerAddress: User,\n tokenStand: IDL.Text\n });\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(ProjectInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_2 = IDL.Variant({ ok: Page, err: IDL.Text });\n const ResponseResult_1 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const ResponseResult = IDL.Variant({ ok: ProjectInfo, err: IDL.Text });\n return IDL.Service({\n add: IDL.Func([ProjectInfo], [BoolResult], []),\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n create: IDL.Func([ProjectInfo], [BoolResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], []),\n delete: IDL.Func([IDL.Text], [BoolResult], []),\n findProjectPage: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n getAdminList: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getFileCanister: IDL.Func([], [TextResult], [\"query\"]),\n getProject: IDL.Func([IDL.Text], [ResponseResult], [\"query\"]),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n setFileCanister: IDL.Func([IDL.Text], [BoolResult], [])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const KVPair = IDL.Record({ k: IDL.Text, v: IDL.Nat });\n const ProposalCreateInfo = IDL.Record({\n title: IDL.Text,\n content: IDL.Text,\n endTime: IDL.Int,\n createUser: IDL.Text,\n beginTime: IDL.Int,\n userAmount: IDL.Nat,\n options: IDL.Vec(KVPair)\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ProjectInfo = IDL.Record({\n tokenCid: IDL.Text,\n logo: IDL.Text,\n name: IDL.Text,\n projectCid: IDL.Text,\n managerAddress: User,\n tokenStand: IDL.Text\n });\n const ProposalInfo = IDL.Record({\n id: IDL.Text,\n storageCanisterId: IDL.Text,\n title: IDL.Text,\n content: IDL.Text,\n endTime: IDL.Int,\n createTime: IDL.Int,\n createUser: IDL.Text,\n state: IDL.Nat,\n createAddress: User,\n beginTime: IDL.Int,\n userAmount: IDL.Nat,\n options: IDL.Vec(KVPair),\n project: ProjectInfo\n });\n const Page_3 = IDL.Record({\n content: IDL.Vec(ProposalInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_5 = IDL.Variant({ ok: Page_3, err: IDL.Text });\n const UserVoteRecord = IDL.Record({\n voteTime: IDL.Int,\n address: User,\n usedProof: IDL.Nat,\n options: IDL.Vec(KVPair)\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(UserVoteRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_4 = IDL.Variant({ ok: Page_2, err: IDL.Text });\n const UserVotePowersInfo = IDL.Record({\n availablePowers: IDL.Nat,\n address: User,\n usedPowers: IDL.Nat\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(UserVotePowersInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_3 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(IDL.Principal),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_2 = IDL.Variant({ ok: Page, err: IDL.Text });\n const ProjectInfo__1 = IDL.Record({\n tokenCid: IDL.Text,\n logo: IDL.Text,\n name: IDL.Text,\n projectCid: IDL.Text,\n managerAddress: User,\n tokenStand: IDL.Text\n });\n const ResponseResult_1 = IDL.Variant({\n ok: ProjectInfo__1,\n err: IDL.Text\n });\n const ResponseResult = IDL.Variant({ ok: ProposalInfo, err: IDL.Text });\n const VoteProjectCanister = IDL.Service({\n addAdmin: IDL.Func([IDL.Principal], [BoolResult], []),\n create: IDL.Func([ProposalCreateInfo], [TextResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], []),\n deleteAdmin: IDL.Func([IDL.Principal], [BoolResult], []),\n deleteProposal: IDL.Func([IDL.Text], [BoolResult], []),\n findPage: IDL.Func([IDL.Opt(IDL.Text), IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_5], [\"query\"]),\n findRecordPage: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [ResponseResult_4], [\"query\"]),\n findVotePower: IDL.Func([IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Nat, IDL.Nat], [ResponseResult_3], [\"query\"]),\n getAdminList: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n getProject: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getProposal: IDL.Func([IDL.Text], [ResponseResult], [\"query\"]),\n getVotePowerCount: IDL.Func([], [IDL.Nat], [\"query\"]),\n isProjectAdmin: IDL.Func([IDL.Principal], [IDL.Bool], [\"query\"]),\n setOwner: IDL.Func([IDL.Principal], [BoolResult], []),\n setProject: IDL.Func([ProjectInfo__1, IDL.Text], [BoolResult], []),\n setState: IDL.Func([IDL.Text, IDL.Nat], [BoolResult], []),\n setVotePower: IDL.Func([IDL.Text, IDL.Vec(UserVotePowersInfo)], [BoolResult], []),\n updateProposal: IDL.Func([ProposalInfo], [BoolResult], []),\n vote: IDL.Func([IDL.Text, IDL.Text, IDL.Nat], [BoolResult], [])\n });\n return VoteProjectCanister;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Chunk = IDL.Record({\n content: IDL.Vec(IDL.Nat8),\n batch_id: IDL.Nat\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField)\n });\n const StreamingCallbackToken = IDL.Record({\n key: IDL.Text,\n index: IDL.Nat,\n content_encoding: IDL.Text\n });\n const StreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: StreamingCallbackToken,\n callback: IDL.Func([], [], [])\n })\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n streaming_strategy: IDL.Opt(StreamingStrategy),\n status_code: IDL.Nat16\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n token: IDL.Opt(StreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8)\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const FileCanister = IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [IDL.Bool], []),\n chunkSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n clearChunk: IDL.Func([], [IDL.Bool], []),\n commit_batch: IDL.Func(\n [\n IDL.Record({\n batch_id: IDL.Nat,\n content_type: IDL.Text,\n chunk_ids: IDL.Vec(IDL.Nat)\n }),\n IDL.Text\n ],\n [],\n []\n ),\n create_batch: IDL.Func([IDL.Text], [IDL.Record({ batch_id: IDL.Nat })], []),\n create_chunk: IDL.Func([Chunk, IDL.Text], [IDL.Record({ chunk_id: IDL.Nat })], []),\n cycleAvailable: IDL.Func([], [NatResult], [\"query\"]),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAdminList: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n http_request: IDL.Func([HttpRequest], [HttpResponse], [\"query\"]),\n http_request_streaming_callback: IDL.Func([StreamingCallbackToken], [StreamingCallbackHttpResponse], [\"query\"]),\n maxFileSize: IDL.Func([IDL.Nat], [TextResult], []),\n removeAdmin: IDL.Func([IDL.Text], [IDL.Bool], [])\n });\n return FileCanister;\n};\n","import { actor } from \"./actor\";\nimport { ActorName } from \"./ActorName\";\nimport { ActorIdentity } from \"@icpswap/types\";\n\nimport {\n VoteController,\n VoteControllerInterfaceFactory,\n VoteFile,\n VoteFileInterfaceFactory,\n VoteProject,\n VoteProjectInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const votingController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.VotingController,\n idlFactory: VoteControllerInterfaceFactory,\n identity,\n });\n\nexport const votingCanister = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n identity,\n idlFactory: VoteProjectInterfaceFactory,\n });\n\nexport const votingFile = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n identity,\n idlFactory: VoteFileInterfaceFactory,\n });\n","export const LEDGER_CANISTER_ID = \"ryjl3-tyaaa-aaaaa-aaaba-cai\";\n\nexport const GOVERNANCE_CANISTER_ID = \"rrkah-fqaaa-aaaaa-aaaaq-cai\";\n\nexport const WICP_CANISTER_ID = \"5xnja-6aaaa-aaaan-qad4a-cai\";\n\nexport const ICS_CANISTER_ID = \"ca6gz-lqaaa-aaaaq-aacwa-cai\";\n","export enum ChainId {\n MAINNET = 1,\n GOERLI = 5,\n SEPOLIA = 11155111,\n OPTIMISM = 10,\n OPTIMISM_GOERLI = 420,\n OPTIMISM_SEPOLIA = 11155420,\n ARBITRUM_ONE = 42161,\n ARBITRUM_GOERLI = 421613,\n ARBITRUM_SEPOLIA = 421614,\n POLYGON = 137,\n POLYGON_MUMBAI = 80001,\n CELO = 42220,\n CELO_ALFAJORES = 44787,\n GNOSIS = 100,\n MOONBEAM = 1284,\n BNB = 56,\n AVALANCHE = 43114,\n BASE_GOERLI = 84531,\n BASE = 8453,\n ZORA = 7777777,\n ZORA_SEPOLIA = 999999999,\n ROOTSTOCK = 30,\n BLAST = 81457,\n}\n\nexport const SUPPORTED_CHAINS = [\n ChainId.MAINNET,\n ChainId.OPTIMISM,\n ChainId.OPTIMISM_GOERLI,\n ChainId.OPTIMISM_SEPOLIA,\n ChainId.ARBITRUM_ONE,\n ChainId.ARBITRUM_GOERLI,\n ChainId.ARBITRUM_SEPOLIA,\n ChainId.POLYGON,\n ChainId.POLYGON_MUMBAI,\n ChainId.GOERLI,\n ChainId.SEPOLIA,\n ChainId.CELO_ALFAJORES,\n ChainId.CELO,\n ChainId.BNB,\n ChainId.AVALANCHE,\n ChainId.BASE,\n ChainId.BASE_GOERLI,\n ChainId.ZORA,\n ChainId.ZORA_SEPOLIA,\n ChainId.ROOTSTOCK,\n ChainId.BLAST,\n] as const;\nexport type SupportedChainsType = (typeof SUPPORTED_CHAINS)[number];\n\nexport enum NativeCurrencyName {\n // Strings match input for CLI\n ETHER = \"ETH\",\n MATIC = \"MATIC\",\n CELO = \"CELO\",\n GNOSIS = \"XDAI\",\n MOONBEAM = \"GLMR\",\n BNB = \"BNB\",\n AVAX = \"AVAX\",\n ROOTSTOCK = \"RBTC\",\n}\n","export const AnonymousPrincipal = \"2vxsx-fae\";\n\nexport const INFO_URL = \"\";\n\nexport const FREE_LIQUIDITY_NAME = \"Free liquidity\";\n\nexport enum ckBridgeChain {\n eth = \"Ethereum\",\n icp = \"Internet Computer\",\n btc = \"Bitcoin\",\n}\n\nexport const NONE_SUB_HEX = \"0000000000000000000000000000000000000000000000000000000000000000\";\n","export const ic_host = \"https://icp0.io\";\n","export enum TradeType {\n EXACT_INPUT = 0,\n EXACT_OUTPUT = 1,\n}\n\nexport enum Bound {\n LOWER = \"LOWER\",\n UPPER = \"UPPER\",\n}\n","import { useCallback } from \"react\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { chainKeyETHMinter } from \"@icpswap/actor\";\nimport type {\n WithdrawalSearchParameter,\n WithdrawalDetail,\n ChainKeyETHMinterInfo,\n Eip1559TransactionPrice,\n Null,\n} from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport { useCallsData } from \"../useCallData\";\n\nexport interface WithdrawErc20TokenArgs {\n ledger_id: Principal;\n recipient: string;\n amount: bigint;\n minter_id: string;\n}\n\nexport async function withdrawErc20Token({ minter_id, ledger_id, recipient, amount }: WithdrawErc20TokenArgs) {\n return resultFormat<{\n ckerc20_block_index: bigint;\n cketh_block_index: bigint;\n }>(\n await (\n await chainKeyETHMinter(minter_id, true)\n ).withdraw_erc20({\n recipient,\n amount,\n ckerc20_ledger_id: ledger_id,\n from_cketh_subaccount: [],\n from_ckerc20_subaccount: [],\n }),\n );\n}\n\nexport interface WithdrawErc20TokenStatusArgs {\n params: WithdrawalSearchParameter;\n minter_id: string;\n}\n\nexport async function withdrawErc20TokenStatus({ minter_id, params }: WithdrawErc20TokenStatusArgs) {\n return resultFormat(await (await chainKeyETHMinter(minter_id)).withdrawal_status(params)).data;\n}\n\nexport interface UseWithdrawErc20TokenStatusArgs {\n params: WithdrawalSearchParameter | undefined;\n minter_id: string;\n refresh?: boolean | number;\n}\n\nexport function useWithdrawErc20TokenStatus({ minter_id, params, refresh }: UseWithdrawErc20TokenStatusArgs) {\n return useCallsData(\n useCallback(async () => {\n if (!params) return undefined;\n return await withdrawErc20TokenStatus({ minter_id, params });\n }, [minter_id, params]),\n refresh,\n );\n}\n\nexport async function getChainKeyMinterInfo(minter_id: string) {\n return resultFormat(await (await chainKeyETHMinter(minter_id)).get_minter_info()).data;\n}\n\nexport function useChainKeyMinterInfo(minter_id: string | Null) {\n return useCallsData(\n useCallback(async () => {\n if (!minter_id) return undefined;\n return await getChainKeyMinterInfo(minter_id);\n }, [minter_id]),\n );\n}\n\nexport async function getChainKeyTransactionPrice(minter_id: string) {\n return resultFormat(\n await (await chainKeyETHMinter(minter_id)).eip_1559_transaction_price([]),\n ).data;\n}\n\nexport function useChainKeyTransactionPrice(minter_id: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!minter_id) return undefined;\n return await getChainKeyTransactionPrice(minter_id);\n }, [minter_id]),\n );\n}\n\nexport async function withdraw_eth(minter_id: string, recipient: string, amount: bigint) {\n return resultFormat<{\n block_index: bigint;\n }>(\n await (\n await chainKeyETHMinter(minter_id, true)\n ).withdraw_eth({\n recipient,\n amount,\n from_subaccount: [],\n }),\n );\n}\n","import { useCallback } from \"react\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { node_index } from \"@icpswap/actor\";\nimport { Null, PublicPoolOverView, PublicTokenOverview } from \"@icpswap/types\";\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getNodeInfoAllPools() {\n return resultFormat(await (await node_index()).getAllPools()).data;\n}\n\nexport function useNodeInfoAllPools() {\n return useCallsData(\n useCallback(async () => {\n return await getNodeInfoAllPools();\n }, []),\n );\n}\n\nexport async function getNodeInfoAllTokens() {\n return resultFormat(await (await node_index()).getAllTokens()).data;\n}\n\nexport function useNodeInfoAllTokens() {\n return useCallsData(\n useCallback(async () => {\n return await getNodeInfoAllTokens();\n }, []),\n );\n}\n\nexport async function getInfoPoolStorageIds(pool: string) {\n return resultFormat(await (await node_index()).poolStorage(pool)).data;\n}\n\nexport function useInfoPoolStorageIds(pool: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!pool) return undefined;\n return await getInfoPoolStorageIds(pool!);\n }, [pool]),\n );\n}\n\nexport async function getInfoTokenStorageIds(token: string) {\n return resultFormat(await (await node_index()).tokenStorage(token)).data;\n}\n\nexport function useInfoTokenStorageIds(token: string | Null) {\n return useCallsData(\n useCallback(async () => {\n if (!token) return undefined;\n return await getInfoTokenStorageIds(token!);\n }, [token]),\n );\n}\n\nexport async function getInfoUserStorageIds(principal: string) {\n return resultFormat(await (await node_index()).userStorage(principal)).data;\n}\n\nexport function useInfoUserStorageIds(principal: string | Null) {\n return useCallsData(\n useCallback(async () => {\n if (!principal) return undefined;\n return await getInfoUserStorageIds(principal!);\n }, [principal]),\n );\n}\n","import { useMemo } from \"react\";\nimport useSwr from \"swr\";\nimport useSWRImmutable from \"swr/immutable\";\nimport type { Null, PublicTokenOverview } from \"@icpswap/types\";\nimport { ckUSDC } from \"@icpswap/tokens\";\n\nimport { getNodeInfoAllTokens } from \"./node\";\n\nexport function useFetchInfoAllTokens() {\n const { data } = useSwr(\n [\"info_all_tokens\"],\n async () => {\n return await getNodeInfoAllTokens();\n },\n {\n refreshInterval: 60000,\n },\n );\n\n return data;\n}\n\nexport function useInfoAllTokens() {\n const { data } = useSWRImmutable([\"info_all_tokens\"]);\n return useMemo(() => data, data);\n}\n\nexport function useInfoToken(tokenId: string | Null): PublicTokenOverview | undefined {\n const { data } = useSWRImmutable([\"info_all_tokens\"]);\n\n return useMemo(() => {\n const info = data?.find((e) => e.address === tokenId);\n // Make ckUSDC price USD is 1\n if (tokenId === ckUSDC.address && info) return { ...info, priceUSD: 1 } as PublicTokenOverview;\n\n return info;\n }, [data, tokenId]);\n}\n","import { useMemo } from \"react\";\nimport { Pool, Position } from \"@icpswap/swap-sdk\";\n\ninterface PositionInfo {\n liquidity: bigint;\n tickLower: bigint;\n tickUpper: bigint;\n}\n\nexport interface GetSinglePoolMultiPositionsProps {\n positionInfos: PositionInfo[];\n pool: Pool;\n}\n\nexport function getSinglePoolMultiPositions({ pool, positionInfos }: GetSinglePoolMultiPositionsProps) {\n const positions = positionInfos.map((positionInfo) => {\n return new Position({\n pool,\n liquidity: positionInfo.liquidity.toString(),\n tickLower: Number(positionInfo.tickLower),\n tickUpper: Number(positionInfo.tickUpper),\n });\n });\n\n return positions;\n}\n\nexport interface UseSinglePoolMultiPositionsProps {\n positionInfos: PositionInfo[] | undefined;\n pool: Pool | null | undefined;\n}\n\nexport function useSinglePoolMultiPositions({ pool, positionInfos }: UseSinglePoolMultiPositionsProps) {\n return useMemo(() => {\n if (!pool || !positionInfos) return undefined;\n\n return getSinglePoolMultiPositions({ pool, positionInfos });\n }, [positionInfos, pool]);\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { liquidityLocks } from \"@icpswap/actor\";\nimport { Principal } from \"@dfinity/principal\";\nimport { isNullArgs, nonNullArgs, resultFormat } from \"@icpswap/utils\";\nimport { Pool, Position } from \"@icpswap/swap-sdk\";\nimport { Null, type UserPositionInfoWithId } from \"@icpswap/types\";\n\nimport { useCallsData } from \"./useCallData\";\nimport { useMultiPositionInfos, useMultiPositionInfosByIds } from \"./swap/useMultiPositionInfos\";\nimport { getSinglePoolMultiPositions } from \"./swap/useSinglePoolMultiPositions\";\n\nexport function useLiquidityLockIds(tokenIds: string[] | Null) {\n return useCallsData(\n useCallback(async () => {\n if (!tokenIds) return undefined;\n\n return resultFormat<\n Array<{\n is_public: boolean;\n alias: [] | [string];\n governance_id: [] | [Principal];\n ledger_id: Principal;\n }>\n >(\n await (\n await liquidityLocks()\n ).getPrincipalAliasByLedgers(tokenIds.map((tokenId) => Principal.fromText(tokenId))),\n ).data;\n }, [tokenIds]),\n );\n}\n\nexport function useExtraBlackHoleLiquidityLocks(pool: Pool | Null): Position[] | Null {\n const poolId = pool?.id;\n\n const positionIds: bigint[] | undefined = useMemo(() => {\n if (!poolId) return undefined;\n if (poolId === \"wlv64-biaaa-aaaag-qcrlq-cai\") return [24, 20, 1].map((e) => BigInt(e));\n return undefined;\n }, [poolId]);\n\n const { result: positions } = useMultiPositionInfosByIds(poolId, positionIds);\n\n const multiPositions = useMemo(() => {\n if (!positions || !pool) return null;\n\n return getSinglePoolMultiPositions({\n pool,\n positionInfos: positions.map((e) => ({\n tickUpper: e.tickUpper,\n tickLower: e.tickLower,\n liquidity: e.liquidity,\n })),\n });\n }, [positions, pool]);\n\n return useMemo(() => multiPositions, [multiPositions]);\n}\n\nexport function useExtraBlackHolePositionInfos(poolId: string | Null) {\n const positionIds: bigint[] | undefined = useMemo(() => {\n if (!poolId) return undefined;\n if (poolId === \"wlv64-biaaa-aaaag-qcrlq-cai\") return [24, 20, 1].map((e) => BigInt(e));\n return undefined;\n }, [poolId]);\n\n const { result: positions } = useMultiPositionInfosByIds(poolId, positionIds);\n\n return useMemo(() => {\n if (!positions) return null;\n\n return positions.map((e, index) => (e ? ({ ...e, id: positionIds[index] } as UserPositionInfoWithId) : null));\n }, [positions]);\n}\n\nexport function useAllLiquidityLocks(\n tokenIds: string[] | Null,\n poolId: string | Null,\n pool: Pool | Null,\n): {\n loading: boolean;\n result: [Position[], string, string][] | null;\n} {\n const [loading, setLoading] = useState(true);\n const [result, setResult] = useState>(null);\n\n const { result: lockIds } = useLiquidityLockIds(tokenIds);\n\n const ledgerIds = useMemo(() => {\n if (!lockIds) return undefined;\n return lockIds.map(({ governance_id, ledger_id, alias }) => {\n if (alias[0] && alias[0].includes(\"Governance\")) return governance_id[0]?.toString();\n return ledger_id.toString();\n });\n }, [lockIds]);\n\n // Notice: positionInfos may be contains undefined\n const { result: positionInfos } = useMultiPositionInfos(poolId, ledgerIds);\n\n useEffect(() => {\n if (poolId) {\n setLoading(true);\n }\n }, [poolId]);\n\n useEffect(() => {\n async function call() {\n if (positionInfos && lockIds) {\n setLoading(true);\n\n const result: Array<[UserPositionInfoWithId[], string, string]> = positionInfos\n .map((positionInfos, index) => {\n const lockId = lockIds[index];\n if (!lockId) return undefined;\n const alias = lockIds[index].alias[0];\n if (isNullArgs(positionInfos) || isNullArgs(positionInfos)) return undefined;\n return [positionInfos, ledgerIds[index], alias] as [UserPositionInfoWithId[], string, string];\n })\n .filter((element) => nonNullArgs(element));\n\n setResult(\n result.reduce(\n (prev, curr) => {\n const index = prev.findIndex(([, , name]) => name === curr[2]);\n\n if (index !== -1) {\n const __prev = [...prev];\n const concatValue = [__prev[index][0].concat(curr[0]), curr[1], curr[2]] as [\n UserPositionInfoWithId[],\n string,\n string,\n ];\n __prev.splice(index, 1, concatValue);\n return __prev;\n }\n\n return prev.concat([curr]);\n },\n [] as Array<[UserPositionInfoWithId[], string, string]>,\n ),\n );\n setLoading(false);\n }\n\n if (lockIds && lockIds.length === 0) {\n setLoading(false);\n }\n }\n\n call();\n }, [positionInfos, lockIds, ledgerIds]);\n\n const extraBlackHolePositions = useExtraBlackHoleLiquidityLocks(pool);\n\n const multiPositions = useMemo(() => {\n if (!result || !pool) return null;\n\n return result.map(([positionInfos, principalId, name]) => [\n getSinglePoolMultiPositions({\n pool,\n positionInfos: positionInfos.map((positionInfo) => ({\n tickUpper: positionInfo.tickUpper,\n tickLower: positionInfo.tickLower,\n liquidity: positionInfo.liquidity,\n })),\n }),\n principalId,\n name,\n ]) as Array<[Position[], string, string]>;\n }, [result, pool]);\n\n const allPositions: Array<[Position[], string, string]> | null = useMemo(() => {\n if (!multiPositions) return null;\n\n return multiPositions.map(([positions, principalId, name]) => {\n if (name === \"Black Hole\") {\n return [(positions ?? []).concat(extraBlackHolePositions ?? []), principalId, name];\n }\n\n return [positions, principalId, name];\n }) as Array<[Position[], string, string]>;\n }, [multiPositions, extraBlackHolePositions]);\n\n return useMemo(\n () => ({\n loading,\n result: allPositions,\n }),\n [allPositions, loading],\n );\n}\n","import { resultFormat } from \"@icpswap/utils\";\nimport { sns_wasm } from \"@icpswap/actor\";\nimport type { ListDeployedSnsesResponse } from \"@icpswap/candid\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { SnsTokensInfo } from \"@icpswap/types\";\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getListDeployedSNSs() {\n return resultFormat(await (await sns_wasm()).list_deployed_snses({})).data;\n}\n\nexport function useListDeployedSNSs() {\n return useCallsData(\n useCallback(async () => {\n return await getListDeployedSNSs();\n }, []),\n );\n}\n\nexport async function getSnsTokensInfo(page: number): Promise {\n let result: any;\n\n try {\n result = await fetch(`https://3r4gx-wqaaa-aaaaq-aaaia-cai.icp0.io/v1/sns/list/page/${page}/slow.json`).catch(\n () => undefined,\n );\n } catch (error) {\n console.log(error);\n }\n\n if (!result || result.ok === false) return undefined;\n\n return (await result.json()) as SnsTokensInfo[];\n}\n\nconst sns_all_tokens_info_call_rounds = 5;\n\nexport async function getSnsAllTokensInfo(): Promise {\n let fetch_index = 0;\n let fetch_done = false;\n\n let data: SnsTokensInfo[] = [];\n\n const fetch = async (index: number) => {\n fetch_index += 1;\n\n const allResults: (SnsTokensInfo | undefined)[] = (\n await Promise.all(\n Array.from({ length: sns_all_tokens_info_call_rounds }, (_, i) => i).map(async (call_index) => {\n const page = call_index + index * sns_all_tokens_info_call_rounds;\n const result = await getSnsTokensInfo(page);\n\n if (!result) return undefined;\n\n data = data.concat(result);\n\n if (result.length < 10) {\n fetch_done = true;\n }\n\n return result;\n }),\n )\n ).flat();\n\n // If happened network error, make is fetch_done = true when have two or more undefined result\n if (allResults.filter((e) => !e).length >= 2) {\n fetch_done = true;\n }\n\n if (!fetch_done) {\n await fetch(fetch_index);\n }\n };\n\n await fetch(fetch_index);\n\n return data\n .sort((a, b) => {\n if (a.index < b.index) return -1;\n if (a.index > b.index) return 1;\n return 0;\n })\n .map((e) => ({ ...e, meta: { ...e.meta, logo: `https://3r4gx-wqaaa-aaaaq-aaaia-cai.icp0.io${e.meta.logo}` } }));\n}\n\nexport function useSnsAllTokensInfo() {\n const [snsAllTokensInfo, setSnsAllTokensInfo] = useState(undefined);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n setLoading(true);\n const data = await getSnsAllTokensInfo();\n setSnsAllTokensInfo(data);\n setLoading(false);\n }\n\n call();\n }, []);\n\n return useMemo(\n () => ({\n loading,\n result: snsAllTokensInfo,\n }),\n [loading, snsAllTokensInfo],\n );\n}\n","import { useCallback } from \"react\";\nimport { resultFormat, isAvailablePageArgs, availableArgsNull } from \"@icpswap/utils\";\nimport { stakingPoolController, stakingPool } from \"@icpswap/actor\";\nimport type {\n CreateStakingPoolArgs,\n StakingPoolInfo,\n StakingPoolControllerPoolInfo,\n StakingPoolTransaction,\n StakingPoolUserInfo,\n StakingPoolCycle,\n StakingPoolGlobalData,\n PaginationResult,\n StakeGlobalDataInfo,\n} from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useCallsData } from \"../useCallData\";\n\n/* token controller */\nexport async function createStakingPool(args: CreateStakingPoolArgs) {\n return resultFormat(await (await stakingPoolController(true)).createStakingPool(args));\n}\n\nexport async function getStakingPools(state: bigint | undefined, offset: number, limit: number) {\n return resultFormat>(\n await (\n await stakingPoolController()\n ).findStakingPoolPage(availableArgsNull(state), BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useStakingPools(state: bigint | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!isAvailablePageArgs(offset, limit)) return undefined;\n return await getStakingPools(state, offset, limit);\n }, [offset, limit, state]),\n );\n}\n\nexport interface GetStakePoolsProps {\n state: bigint | undefined;\n offset: number;\n limit: number;\n rewardTokenId?: string | null;\n stakeTokenId?: string | null;\n}\n\nexport async function getStakePools({ state, offset, limit, rewardTokenId, stakeTokenId }: GetStakePoolsProps) {\n return resultFormat>(\n await (\n await stakingPoolController()\n ).findStakingPoolPageV2(\n availableArgsNull(state),\n BigInt(offset),\n BigInt(limit),\n availableArgsNull(stakeTokenId),\n availableArgsNull(rewardTokenId),\n ),\n ).data;\n}\n\nexport interface UseStakePoolsProps {\n state: bigint | undefined;\n offset: number;\n limit: number;\n rewardTokenId?: string | null;\n stakeTokenId?: string | null;\n}\n\nexport function useStakePools({ state, offset, limit, rewardTokenId, stakeTokenId }: UseStakePoolsProps) {\n return useCallsData(\n useCallback(async () => {\n if (!isAvailablePageArgs(offset, limit)) return undefined;\n return await getStakePools({ state, offset, limit, rewardTokenId, stakeTokenId });\n }, [offset, limit, state, rewardTokenId, stakeTokenId]),\n );\n}\n\nexport async function getStakingPoolGlobalData() {\n return resultFormat(await (await stakingPoolController()).getGlobalData()).data;\n}\n\nexport function useStakingPoolGlobalData(reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n return await getStakingPoolGlobalData();\n }, []),\n reload,\n );\n}\n\nexport async function getStakingPoolFromController(canisterId: string) {\n return resultFormat(\n await (await stakingPoolController()).getStakingPool(Principal.fromText(canisterId)),\n ).data;\n}\n\nexport function useStakingPoolInfoFromController(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getStakingPoolFromController(canisterId);\n }, [canisterId]),\n );\n}\n\n/* token pool */\nexport async function getStakingTokenPool(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId)).getPoolInfo()).data;\n}\n\nexport function useStakingTokenPool(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getStakingTokenPool(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n\nexport async function getStakingTokenUserInfo(canisterId: string, principal: Principal) {\n return resultFormat(await (await stakingPool(canisterId)).getUserInfo(principal)).data;\n}\n\nexport function useStakingTokenUserInfo(\n canisterId: string | undefined,\n principal: Principal | undefined,\n reload?: boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !principal) return undefined;\n return await getStakingTokenUserInfo(canisterId, principal);\n }, [canisterId, principal]),\n reload,\n );\n}\n\n// export async function getStakingPoolAllUserInfo(canisterId: string, offset: number, limit: number) {\n// return resultFormat(\n// await (await stakingPool(canisterId)).findAllUserInfo(BigInt(offset), BigInt(limit)),\n// ).data;\n// }\n\n// export function useStakingPoolAllUserInfo(\n// canisterId: string | undefined,\n// offset: number,\n// limit: number,\n// reload?: boolean,\n// ) {\n// return useCallsData(\n// useCallback(async () => {\n// if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n// return await getStakingPoolAllUserInfo(canisterId!, offset, limit);\n// }, [canisterId, offset, limit]),\n// reload,\n// );\n// }\n\nexport async function getStakingPoolCycles(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId)).getCycleInfo()).data;\n}\n\nexport function useStakingPoolCycles(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getStakingPoolCycles(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n\n/**\n * @description claim the failed deposit token\n * @param canisterId - pool canister id\n * @returns\n */\nexport async function stakingPoolClaim(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId, true)).claim());\n}\n\nexport async function stakingPoolDeposit(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId, true)).deposit());\n}\n\nexport async function stakingPoolDepositFrom(canisterId: string, amount: bigint) {\n return resultFormat(await (await stakingPool(canisterId, true)).depositFrom(amount));\n}\n\nexport async function stakingPoolHarvest(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId, true)).harvest());\n}\n\nexport async function stakingTokenStake(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId, true)).stake());\n}\n\n/**\n * @description withdraw the token for staked token and reward token\n * @export\n * @param {string} canisterId - pool canister id\n * @param {boolean} isStakeToken - staked token is true, reward token is false\n * @param {bigint} amount - withdraw amount\n * @return {*}\n */\nexport async function stakingPoolWithdraw(canisterId: string, isStakeToken: boolean, amount: bigint) {\n return resultFormat(await (await stakingPool(canisterId, true)).withdraw(isStakeToken, amount));\n}\n\nexport async function stakingPoolUnstake(canisterId: string, amount: bigint) {\n return resultFormat(await (await stakingPool(canisterId, true)).unstake(amount));\n}\n\n/* records */\nexport async function getStakingPoolTransactions(\n canisterId: string,\n principal: Principal | undefined,\n offset: number,\n limit: number,\n) {\n return resultFormat>(\n await (\n await stakingPool(canisterId)\n ).findStakingRecordPage(availableArgsNull(principal), BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useStakingPoolTransactions(\n canisterId: string | undefined,\n principal: Principal | undefined,\n offset: number,\n limit: number,\n reload?: boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getStakingPoolTransactions(canisterId, principal, offset, limit);\n }, [canisterId, offset, limit, principal]),\n reload,\n );\n}\n\nexport async function getStakingPoolClaimTransactions(\n canisterId: string,\n principal: Principal | undefined,\n offset: number,\n limit: number,\n) {\n return resultFormat>(\n await (\n await stakingPool(canisterId)\n ).findRewardRecordPage(availableArgsNull(principal), BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useStakingPoolClaimTransactions(\n canisterId: string | undefined,\n principal: Principal | undefined,\n offset: number,\n limit: number,\n reload?: boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getStakingPoolClaimTransactions(canisterId!, principal, offset, limit);\n }, [canisterId, offset, limit, principal]),\n reload,\n );\n}\n\nexport async function stakingPoolClaimRewards(canisterId: string, owner: Principal | undefined) {\n if (!owner) return resultFormat({ err: \"Principal is undefined\" });\n\n return resultFormat(await (await stakingPool(canisterId, true)).claim());\n}\n\nexport async function getStakePoolStatInfo(principal: string) {\n return resultFormat(\n await (await stakingPoolController()).getPoolStatInfo(Principal.fromText(principal)),\n ).data;\n}\n\nexport function useStakePoolStatInfo(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getStakePoolStatInfo(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n","import { useCallback } from \"react\";\nimport { resultFormat, isAvailablePageArgs, isNullArgs, availableArgsNull } from \"@icpswap/utils\";\nimport { stakeIndex } from \"@icpswap/actor\";\nimport type { PaginationResult, StakeIndexPoolInfo, StakeAprInfo, StakeUserStakeInfo } from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getUserStakePools(\n principal: string,\n offset: number,\n limit: number,\n stakeTokenId?: string | undefined | null,\n rewardTokenId?: string | undefined | null,\n) {\n return resultFormat>(\n await (\n await stakeIndex()\n ).queryPool(\n Principal.fromText(principal),\n BigInt(offset),\n BigInt(limit),\n availableArgsNull(stakeTokenId),\n availableArgsNull(rewardTokenId),\n ),\n ).data;\n}\n\nexport function useUserStakePools(principal: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!isAvailablePageArgs(offset, limit)) return undefined;\n return await getUserStakePools(principal, offset, limit);\n }, [offset, limit, principal]),\n );\n}\n\nexport async function getStakeAprChartData(principal: string, start_time: number, end_time: number) {\n return resultFormat>(\n await (await stakeIndex()).queryAPR(Principal.fromText(principal), BigInt(start_time), BigInt(end_time)),\n ).data;\n}\n\nexport function useStakeAprChartData(\n principal: string | undefined,\n start_time: number | undefined,\n end_time: number | undefined,\n) {\n return useCallsData(\n useCallback(async () => {\n if (isNullArgs(start_time) || isNullArgs(principal) || isNullArgs(end_time)) return undefined;\n return await getStakeAprChartData(principal, start_time, end_time);\n }, [start_time, end_time, principal]),\n );\n}\n\nexport async function getUserStakedTokens(principal: string) {\n return resultFormat>(\n await (await stakeIndex()).queryUserStakedTokens(Principal.fromText(principal)),\n ).data;\n}\n\nexport function useUserStakedTokens(principal: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (isNullArgs(principal)) return undefined;\n\n return await getUserStakedTokens(principal);\n }, [principal]),\n );\n}\n","import { useCallback } from \"react\";\nimport { swapFactory, swapPool, swapNFT, swapPosition } from \"@icpswap/actor\";\nimport type {\n SwapPoolData,\n TickLiquidityInfo,\n PoolMetadata,\n GetPoolArgs,\n CreatePoolArgs,\n MintArgs,\n UserPositionInfo,\n DecreaseLiquidityArgs,\n IncreaseLiquidityArgs,\n SwapArgs,\n ClaimArgs,\n NFTTokenMetadata,\n UserPositionInfoWithTokenAmount,\n UserPositionInfoWithId,\n PositionInfoWithId,\n TickInfoWithId,\n ActorIdentity,\n PaginationResult,\n Null,\n} from \"@icpswap/types\";\nimport { resultFormat, isAvailablePageArgs } from \"@icpswap/utils\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport { useCallsData, getPaginationAllData, usePaginationAllData, getPaginationAllDataLimit } from \"../useCallData\";\n\nexport async function createSwapPool(args: CreatePoolArgs) {\n return resultFormat(await (await swapFactory(true)).createPool(args));\n}\n\nexport async function getSwapPool(args: GetPoolArgs) {\n return resultFormat(await (await swapFactory()).getPool(args)).data;\n}\n\nexport function useSwapPool(args: GetPoolArgs | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!args) return undefined;\n return await getSwapPool(args);\n }, [args]),\n );\n}\n\nexport async function getSwapPools() {\n return resultFormat(await (await swapFactory()).getPools()).data;\n}\n\nexport function useSwapPools() {\n return useCallsData(\n useCallback(async () => {\n return await getSwapPools();\n }, []),\n );\n}\n\nexport async function getSwapPoolMetadata(canisterId: string) {\n return resultFormat(await (await swapPool(canisterId)).metadata()).data;\n}\n\nexport function useSwapPoolMetadata(canisterId: string | Null) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapPoolMetadata(canisterId);\n }, [canisterId]),\n );\n}\n\nexport async function getSwapTickInfos(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).getTickInfos(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport async function getSwapPoolAllTickInfos(poolId: string, limit = 500) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapTickInfos(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function useLiquidityTickInfos(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapPoolAllTickInfos(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function deposit(canisterId: string, token: string, amount: bigint, fee: bigint) {\n return resultFormat(await (await swapPool(canisterId, true)).deposit({ token, amount, fee }));\n}\n\nexport async function depositFrom(canisterId: string, token: string, amount: bigint, fee: bigint) {\n return resultFormat(await (await swapPool(canisterId, true)).depositFrom({ token, amount, fee }));\n}\n\nexport async function mint(canisterId: string, args: MintArgs) {\n return resultFormat(await (await swapPool(canisterId, true)).mint(args));\n}\n\nexport async function increaseLiquidity(poolId: string, args: IncreaseLiquidityArgs) {\n return resultFormat(await (await swapPool(poolId, true)).increaseLiquidity(args));\n}\n\nexport async function decreaseLiquidity(poolId: string, args: DecreaseLiquidityArgs) {\n return resultFormat<{ amount0: bigint; amount1: bigint }>(\n await (await swapPool(poolId, true)).decreaseLiquidity(args),\n );\n}\n\nexport async function withdraw(poolId: string, token: string, fee: bigint, amount: bigint) {\n return resultFormat(await (await swapPool(poolId, true)).withdraw({ token, fee, amount }));\n}\n\nexport async function quote(poolId: string, args: SwapArgs) {\n const quote_result = await (await swapPool(poolId)).quote(args);\n return resultFormat(quote_result).data;\n}\n\nexport async function swap(poolId: string, args: SwapArgs) {\n return resultFormat(await (await swapPool(poolId, true)).swap(args));\n}\n\nexport async function collect(poolId: string, args: ClaimArgs) {\n return resultFormat<{ amount0: bigint; amount1: bigint }>(await (await swapPool(poolId, true)).claim(args));\n}\n\nexport async function getUserUnusedBalance(canisterId: string, user: Principal) {\n return resultFormat<{ balance0: bigint; balance1: bigint }>(\n await (await swapPool(canisterId)).getUserUnusedBalance(user),\n ).data;\n}\n\nexport function useUserUnusedBalance(canisterId: string | Null, user: Principal | Null, refresh?: number | boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !user) return undefined;\n return await getUserUnusedBalance(canisterId, user);\n }, [canisterId, user]),\n refresh,\n );\n}\n\nexport async function getSwapPosition(canisterId: string, tokenId: bigint) {\n return resultFormat(await (await swapPool(canisterId)).getUserPosition(tokenId)).data;\n}\n\nexport function useSwapPosition(canisterId: string | undefined, positionId: bigint | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || (!positionId && positionId !== BigInt(0))) return undefined;\n return await getSwapPosition(canisterId, positionId);\n }, [canisterId, positionId]),\n );\n}\n\nexport async function getPositionFee(canisterId: string, positionId: bigint) {\n return resultFormat<{ tokensOwed0: bigint; tokensOwed1: bigint }>(\n await (await swapPool(canisterId)).refreshIncome(positionId),\n ).data;\n}\n\nexport function usePositionFee(\n canisterId: string | undefined,\n positionId: bigint | undefined,\n refresh?: number | boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || (!positionId && positionId === BigInt(0))) return undefined;\n return await getPositionFee(canisterId, positionId);\n }, [canisterId, positionId]),\n refresh,\n );\n}\n\nexport type SwapPoolAllBalance = [Principal, { balance0: bigint; balance1: bigint }];\n\nexport async function getSwapPoolAllBalance(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).allTokenBalance(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useSwapPoolAllBalance(canisterId: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapPoolAllBalance(canisterId, offset, limit);\n }, [canisterId, offset, limit]),\n );\n}\n\nexport async function _getSwapPoolAllBalance(poolId: string, limit = 1000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapPoolAllBalance(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function _useSwapPoolAllBalance(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await _getSwapPoolAllBalance(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\n/* swap nft */\n\nexport async function getUserSwapNFTs(principal: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapNFT()).findTokenList({ principal: Principal.fromText(principal) }, BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useUserSwapNFTs(principal: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!principal || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getUserSwapNFTs(principal, offset, limit);\n }, [principal, offset, limit]),\n );\n}\n\nexport function useUserAllNFTs(principal: string | undefined) {\n const callback = useCallback(\n async (offset: number, limit: number) => {\n if (!principal) return undefined;\n return await getUserSwapNFTs(principal, offset, limit);\n },\n [principal],\n );\n\n return usePaginationAllData(callback, 2000);\n}\n\nexport async function getSwapNFTTokenURI(tokenId: bigint | number) {\n const data = resultFormat(await (await swapNFT()).tokenURI(BigInt(tokenId))).data;\n return JSON.parse(data ?? \"\") as { image: string; [key: string]: any };\n}\n\nexport function useSwapNFTTokenURI(tokenId: bigint | number | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (tokenId === undefined) return undefined;\n return await getSwapNFTTokenURI(tokenId);\n }, [tokenId]),\n );\n}\n\nexport async function getPositionNFTId(poolId: string, positionId: string) {\n return resultFormat(await (await swapNFT()).getTokenId(poolId, positionId)).data;\n}\n\nexport function usePositionNFTId(poolId: string | undefined, positionId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (poolId === undefined || positionId === undefined) return undefined;\n\n return await getPositionNFTId(poolId, positionId);\n }, [poolId, positionId]),\n );\n}\n\n/* swap nft */\n\n/* swap records */\n\nexport async function getSwapUserPositionWithAmount(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).getUserPositionWithTokenAmount(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useSwapUserPositionWithAmount(canisterId: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getSwapUserPositionWithAmount(canisterId, offset, limit);\n }, [canisterId, offset, limit]),\n );\n}\n\nexport async function _getSwapUserPositionsWithAmount(poolId: string, limit = 1000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapUserPositionWithAmount(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function _useSwapUserPositionsWithAmount(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await _getSwapUserPositionsWithAmount(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function getSwapPositions(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).getUserPositions(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useSwapPositions(canisterId: string | Null, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getSwapPositions(canisterId, offset, limit);\n }, [canisterId, offset, limit]),\n );\n}\n\nexport async function getSwapAllUserPositions(poolId: string, limit = 2000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapPositions(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function useSwapAllUserPositions(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapAllUserPositions(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function getSwapPoolPositions(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).getPositions(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useSwapPoolPositions(canisterId: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getSwapPoolPositions(canisterId, offset, limit);\n }, [canisterId, offset, limit]),\n );\n}\n\nexport async function getSwapPoolAllPositions(poolId: string, limit = 1000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapPoolPositions(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function useSwapPoolAllPositions(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapPoolAllPositions(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function getSwapTicks(canisterId: string, offset: number, limit: number) {\n const result = await (await swapPool(canisterId)).getTicks(BigInt(offset), BigInt(limit));\n return resultFormat>(result).data;\n}\n\nexport async function getSwapAllTicks(canisterId: string, limit = 1000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapTicks(canisterId, offset, limit);\n };\n\n return await getPaginationAllDataLimit(callback, limit);\n}\n\nexport function useSwapAllTicks(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapAllTicks(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function getSwapCyclesInfo(canisterId: string) {\n return resultFormat<{ balance: bigint; available: bigint }>(await (await swapPool(canisterId)).getCycleInfo()).data;\n}\n\nexport function useSwapCyclesInfo(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapCyclesInfo(canisterId);\n }, [canisterId]),\n );\n}\n\nexport async function getSwapTokenAmountState(canisterId: string) {\n return resultFormat<{\n swapFee0Repurchase: bigint;\n token0Amount: bigint;\n token1Amount: bigint;\n swapFee1Repurchase: bigint;\n }>(await (await swapPool(canisterId)).getTokenAmountState()).data;\n}\n\nexport function useSwapTokenAmountState(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapTokenAmountState(canisterId);\n }, [canisterId]),\n );\n}\n\n/* swap records */\n\n/* swap positions */\nexport async function updateUserPositionPoolId(poolId: string, identity?: ActorIdentity) {\n return resultFormat(await (await swapPosition(identity)).addPoolId(poolId));\n}\n\nexport async function getUserPositionsPools(account: string) {\n return resultFormat(await (await swapPosition()).getUserPools(account)).data;\n}\n\nexport function useUserPositionPools(account: string | undefined | null) {\n return useCallsData(\n useCallback(async () => {\n if (!account) return undefined;\n return await getUserPositionsPools(account);\n }, [account]),\n );\n}\n\nexport async function getSwapUserPositions(poolId: string, principal: string) {\n return resultFormat(\n await (await swapPool(poolId)).getUserPositionsByPrincipal(Principal.fromText(principal)),\n ).data;\n}\n\nexport function useSwapUserPositions(poolId: string | Null, principal: string | Null, refresh?: boolean | number) {\n return useCallsData(\n useCallback(async () => {\n if (!principal || !poolId) return undefined;\n return await getSwapUserPositions(poolId, principal);\n }, [principal, poolId]),\n refresh,\n );\n}\n\nexport async function approvePosition(poolId: string, spender: string, index: number | bigint) {\n return resultFormat(\n await (await swapPool(poolId, true)).approvePosition(Principal.fromText(spender), BigInt(index)),\n );\n}\n\nexport async function getSwapPositionOwner(poolId: string, positionIndex: number | bigint) {\n return resultFormat(await (await swapPool(poolId)).getUserByPositionId(BigInt(positionIndex))).data;\n}\n\nexport function useSwapPositionOwner(\n poolId: string | undefined,\n positionIndex: number | bigint | undefined,\n refresh?: number,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!poolId || positionIndex === undefined) return undefined;\n return await getSwapPositionOwner(poolId, positionIndex);\n }, [positionIndex, poolId]),\n refresh,\n );\n}\n\n/* swap positions */\n","import { useEffect, useMemo, useState } from \"react\";\nimport { type UserPositionInfoWithId, type UserPositionInfo, Null } from \"@icpswap/types\";\n\nimport { getSwapUserPositions, getSwapPosition } from \"./calls\";\n\nexport interface useMultiPositionInfosResults {\n loading: boolean;\n result: Array | null;\n}\n\nexport function useMultiPositionInfos(\n poolId: string | Null,\n principals: (string | undefined)[] | Null,\n): useMultiPositionInfosResults {\n const [loading, setLoading] = useState(true);\n const [result, setResult] = useState>(null);\n\n useEffect(() => {\n async function call() {\n setResult(null);\n\n if (principals && poolId) {\n const allResult: Array = await Promise.all(\n principals.map(async (principal) => {\n if (!principal) return undefined;\n return await getSwapUserPositions(poolId, principal.toString());\n }),\n );\n\n setResult(allResult);\n setLoading(false);\n }\n\n if (principals && principals.length === 0 && poolId) {\n setLoading(false);\n }\n\n if (!poolId) {\n setLoading(false);\n }\n }\n\n call();\n }, [principals, poolId]);\n\n return useMemo(\n () => ({\n loading,\n result,\n }),\n [result, loading],\n );\n}\n\nexport function useMultiPositionInfosByIds(\n poolId: string | undefined,\n positionIds: (bigint | undefined)[] | undefined,\n): {\n loading: boolean;\n result: Array | null;\n} {\n const [loading, setLoading] = useState(true);\n const [result, setResult] = useState>(null);\n\n useEffect(() => {\n async function call() {\n setResult(null);\n\n if (positionIds && poolId) {\n const allResult: Array = await Promise.all(\n positionIds.map(async (positionId) => {\n if (!positionId) return undefined;\n return await getSwapPosition(poolId, positionId);\n }),\n );\n\n setResult(allResult);\n setLoading(false);\n }\n\n if (positionIds && positionIds.length === 0 && poolId) {\n setLoading(false);\n }\n }\n\n call();\n }, [positionIds, poolId]);\n\n return useMemo(\n () => ({\n loading,\n result,\n }),\n [result, loading],\n );\n}\n","import { useCallback } from \"react\";\nimport { swapFactory } from \"@icpswap/actor\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { Principal } from \"@dfinity/principal\";\nimport type { PassCode } from \"@icpswap/candid\";\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getPassCode(principal: string) {\n return resultFormat(await (await swapFactory()).getPasscodesByPrincipal(Principal.fromText(principal)))\n .data;\n}\n\nexport function usePassCode(principal: string | undefined, reload?: number | boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!principal) return undefined;\n return getPassCode(principal);\n }, [principal]),\n reload,\n );\n}\n","import { useCallback } from \"react\";\nimport { passCodeManager } from \"@icpswap/actor\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useCallsData } from \"../useCallData\";\n\nexport function usePCMMetadata() {\n return useCallsData(\n useCallback(async () => {\n return resultFormat<{\n passcodePrice: bigint;\n tokenCid: Principal;\n factoryCid: Principal;\n }>(await (await passCodeManager()).metadata()).data;\n }, []),\n );\n}\n\nexport async function requestPassCode(token0: Principal, token1: Principal, fee: bigint) {\n const result = await (await passCodeManager(true)).requestPasscode(token0, token1, fee);\n\n return resultFormat(result);\n}\n\nexport async function withdrawPCMBalance(amount: bigint, fee: bigint | number) {\n const result = await (await passCodeManager(true)).withdraw({ fee: BigInt(fee), amount });\n return resultFormat(result);\n}\n\nexport async function destroyPassCode(token0: string, token1: string, fee: bigint) {\n const result = await (\n await passCodeManager(true)\n ).destoryPasscode(Principal.fromText(token0), Principal.fromText(token1), fee);\n\n return resultFormat(result);\n}\n\nexport function useUserPCMBalance(principal: Principal | undefined, reload?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!principal) return undefined;\n return resultFormat(await (await passCodeManager()).balanceOf(principal)).data;\n }, [principal]),\n reload,\n );\n}\n","import { useCallback } from \"react\";\nimport { tokenClaimController, tokenClaimStorage } from \"@icpswap/actor\";\nimport { resultFormat, isAvailablePageArgs, availableArgsNull } from \"@icpswap/utils\";\nimport type { ActorIdentity, PaginationResult, ClaimEventInfo, ClaimQuota, ClaimTransaction } from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getEvent(eventId: string) {\n return resultFormat(await (await tokenClaimController()).getEvent(eventId)).data;\n}\n\nexport function useEvent(eventId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!eventId) return undefined;\n return await getEvent(eventId!);\n }, [eventId]),\n reload,\n );\n}\n\nexport async function claimToken(eventId: string, storageId: string) {\n return resultFormat(await (await tokenClaimStorage(storageId, true)).userClaim(eventId));\n}\n\nexport async function createClaimEvent(args: ClaimEventInfo, identity: ActorIdentity) {\n return resultFormat(await (await tokenClaimController(identity)).create(args));\n}\n\nexport async function setClaimEventReady(id: string, identity: ActorIdentity) {\n return resultFormat(await (await tokenClaimController(identity)).ready(id));\n}\n\nexport async function setClaimEventState(id: string, state: boolean, identity: ActorIdentity) {\n return resultFormat(await (await tokenClaimController(identity)).setStatus(id, state));\n}\n\nexport async function setClaimEventData(id: string, args: ClaimQuota[], identity: ActorIdentity) {\n return resultFormat(await (await tokenClaimController(identity)).importQuota(id, args));\n}\n\nexport async function getClaimEvents(offset: number, limit: number) {\n return resultFormat>(\n await (await tokenClaimController()).findAllEvents(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useClaimEvents(offset: number, limit: number, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!isAvailablePageArgs(offset, limit)) return undefined;\n return await getClaimEvents(offset, limit);\n }, [offset, limit]),\n reload,\n );\n}\n\nexport async function getUserCreatedClaimEvents(user: string, offset: number, limit: number) {\n return resultFormat>(\n await (await tokenClaimController()).findCreateEvents(Principal.fromText(user), BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useUserCreatedClaimEvents(user: string | undefined, offset: number, limit: number, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!user || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getUserCreatedClaimEvents(user!, offset, limit);\n }, [user, offset, limit]),\n reload,\n );\n}\n\nexport async function getUserClaimEvents(user: string, offset: number, limit: number) {\n return resultFormat>(\n await (await tokenClaimController()).findUserEvents(Principal.fromText(user), BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useUserClaimEvents(user: string | undefined, offset: number, limit: number, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!user || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getUserClaimEvents(user!, offset, limit);\n }, [user, offset, limit]),\n\n reload,\n );\n}\n\nexport async function getClaimEventTransactions(id: string, state: number | undefined, offset: number, limit: number) {\n return resultFormat>(\n await (\n await tokenClaimController()\n ).findEventRecords(\n id,\n state === undefined ? [] : availableArgsNull(BigInt(state)),\n BigInt(offset),\n BigInt(limit),\n ),\n ).data;\n}\n\nexport function useClaimEventTransactions(\n id: string | undefined,\n state: number | undefined,\n offset: number,\n limit: number,\n reload?: boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!id || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getClaimEventTransactions(id!, state, offset, limit);\n }, [id, state, offset, limit]),\n reload,\n );\n}\n\nexport async function getUserClaimEventTransactions(\n user: string,\n id: string | undefined,\n state: number | undefined,\n offset: number,\n limit: number,\n) {\n return resultFormat>(\n await (\n await tokenClaimController()\n ).findUserEventRecords(\n Principal.fromText(user),\n id === undefined ? [] : availableArgsNull(id),\n state === undefined ? [] : availableArgsNull(BigInt(state)),\n BigInt(offset),\n BigInt(limit),\n ),\n ).data;\n}\n\nexport function useUserClaimEventTransactions(\n user: string | undefined,\n id: string | undefined,\n state: number | undefined,\n offset: number,\n limit: number,\n reload?: boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!user || !isAvailablePageArgs(offset, limit)) return undefined;\n\n return await getUserClaimEventTransactions(user!, id, state, offset, limit);\n }, [user, state, offset, limit]),\n reload,\n );\n}\n","import { tokenList, allTokenOfSwap } from \"@icpswap/actor\";\nimport type { TokenListMetadata, AllTokenOfSwapTokenInfo, PaginationResult } from \"@icpswap/types\";\nimport { useCallback } from \"react\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { useCallsData } from \"../useCallData\";\nimport { getLimitedInfinityCall } from \"../useLimitedInfinityCall\";\n\nexport async function getTokensFromList() {\n return resultFormat(await (await tokenList()).getList()).data;\n}\n\nexport function useTokensFromList() {\n return useCallsData(\n useCallback(async () => {\n return await getTokensFromList();\n }, []),\n );\n}\n\nexport function useTokenListTokenInfo(canisterId: string | undefined | null) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n const info = resultFormat(await (await tokenList()).get(canisterId)).data;\n return info ? info[0] : undefined;\n }, [canisterId]),\n );\n}\n\nexport async function getAllTokensOfSwap(offset: number, limit: number) {\n return resultFormat>(\n await (await allTokenOfSwap()).get_token_list(BigInt(offset), BigInt(limit), [true]),\n ).data;\n}\n\nexport function useAllTokensOfSwap() {\n const call = async (offset: number, limit: number) => {\n const result = resultFormat>(\n await (await allTokenOfSwap()).get_token_list(BigInt(offset), BigInt(limit), [true]),\n ).data;\n\n return result?.content;\n };\n\n return useCallsData(\n useCallback(async () => {\n return getLimitedInfinityCall(call, 1000, 2);\n }, []),\n );\n}\n","import { useCallback } from \"react\";\nimport { isPrincipal, isValidPrincipal } from \"@icpswap/utils\";\nimport { tokenAdapter } from \"@icpswap/token-adapter\";\nimport { Principal } from \"@dfinity/principal\";\nimport BigNumber from \"bignumber.js\";\nimport { useLatestDataCall } from \"../useCallData\";\n\nexport interface GetTokenBalanceArgs {\n canisterId: string;\n address: string | Principal;\n sub?: Uint8Array;\n}\n\nexport async function getTokenBalance({ canisterId, address, sub }: GetTokenBalanceArgs) {\n const result = await tokenAdapter.balance({\n canisterId,\n params: {\n user: isPrincipal(address)\n ? { principal: address }\n : isValidPrincipal(address)\n ? {\n principal: Principal.fromText(address),\n }\n : { address },\n token: \"\",\n subaccount: sub ? [...sub] : undefined,\n },\n });\n\n return result.data;\n}\n\nexport interface UserTokenBalanceArgs {\n canisterId: string | undefined;\n address: string | Principal | undefined;\n sub?: Uint8Array;\n refresh?: boolean | number;\n}\n\nexport function useTokenBalance({ canisterId, address, sub, refresh }: UserTokenBalanceArgs): {\n result: BigNumber | undefined;\n loading: boolean;\n} {\n return useLatestDataCall(\n useCallback(async () => {\n if (!address || !canisterId) return undefined;\n const balance = await getTokenBalance({ canisterId, sub, address });\n return balance === undefined ? undefined : new BigNumber(balance.toString());\n }, [address, canisterId, sub]),\n refresh,\n );\n}\n","import { useState, useMemo, useEffect, useRef } from \"react\";\nimport type { ApiResult, CallResult, Null, PaginationResult } from \"@icpswap/types\";\nimport { pageArgsFormat, sleep } from \"@icpswap/utils\";\n\nexport type Call = () => Promise>;\n\nexport function useCallsData(fn: Call, reload?: number | string | boolean): CallResult {\n const result = useRef(undefined);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (fn) {\n result.current = undefined;\n setLoading(true);\n fn().then((res) => {\n result.current = res;\n setLoading(false);\n });\n }\n }, [fn, reload]);\n\n return useMemo(() => {\n return {\n result: result.current,\n loading,\n };\n }, [result.current, loading]);\n}\n\nexport function useLatestDataCall(fn: Call, refresh?: number | string | boolean | Null) {\n const [loading, setLoading] = useState(false);\n\n const indexRef = useRef(0);\n const resultsRef = useRef<{ [key: string]: T | undefined }>({});\n\n useEffect(() => {\n if (fn) {\n setLoading(true);\n\n indexRef.current += 1;\n const index = indexRef.current;\n\n fn().then((result) => {\n resultsRef.current = {\n ...resultsRef.current,\n [String(index)]: result as T,\n };\n\n setLoading(false);\n });\n }\n }, [fn, refresh]);\n\n return useMemo(() => {\n return {\n result: resultsRef.current[indexRef.current] as T | undefined,\n loading,\n };\n }, [resultsRef.current, indexRef.current, loading]);\n}\n\nexport function usePaginationAllData(\n callback: (offset: number, limit: number) => Promise | undefined>,\n limit: number,\n reload = false,\n) {\n const [loading, setLoading] = useState(false);\n const [list, setList] = useState([]);\n\n const fetch = async (offset: number, limit: number) => {\n return await callback(offset, limit).then((result) => {\n if (result) {\n const content = result.content;\n if (content && content.length > 0) {\n return content;\n }\n return [];\n }\n return [];\n });\n };\n\n const fetchDone = async (_list: { [k: string]: T[] }) => {\n let data: T[] = [];\n Object.keys(_list).forEach((key) => {\n data = data.concat(_list[key]);\n });\n setList(data);\n };\n\n useEffect(() => {\n async function getTotalElements() {\n if (callback) {\n const result = await callback(0, 1);\n if (result) {\n return result.totalElements;\n }\n return BigInt(0);\n }\n\n return BigInt(0);\n }\n\n async function call() {\n const totalElements = await getTotalElements();\n\n if (Number(totalElements) !== 0) {\n const num = Number(totalElements) % limit;\n const totalPage =\n num === 0 ? Number(totalElements) / limit : parseInt(String(Number(totalElements) / limit)) + 1;\n\n setLoading(true);\n\n const _list: { [k: string]: T[] } = {};\n\n for (let i = 0; i < totalPage; i++) {\n const [offset] = pageArgsFormat(i + 1, limit);\n\n if (totalPage % 80 === 0) {\n await sleep(2000);\n }\n\n const _fetch = () => {\n fetch(offset, limit)\n .then(async (content) => {\n if (content && content.length > 0) {\n _list[`${i + 1}`] = content;\n if (Object.keys(_list).length === totalPage) {\n await fetchDone(_list);\n setLoading(false);\n }\n }\n })\n .catch((error) => {\n console.log(error);\n _fetch();\n });\n };\n\n _fetch();\n }\n } else {\n setList([]);\n setLoading(false);\n }\n }\n\n call();\n }, [reload, callback]);\n\n return useMemo(\n () => ({\n result: list,\n loading,\n }),\n [list, loading],\n );\n}\n\nexport async function getPaginationAllData(\n callback: (offset: number, limit: number) => Promise | undefined>,\n limit: number,\n) {\n const fetch = async (offset: number, limit: number) => {\n return await callback(offset, limit);\n };\n\n const _result = await fetch(0, 1);\n const totalElements = Number(_result?.totalElements ?? 0);\n const totalPage =\n totalElements % limit === 0 ? parseInt(String(totalElements / limit)) : parseInt(String(totalElements / limit)) + 1;\n\n const promise: Promise | undefined>[] = [];\n\n for (let i = 1; i < totalPage + 1; i++) {\n const [offset] = pageArgsFormat(i, limit);\n promise.push(fetch(offset, limit));\n }\n\n const result = await Promise.all(promise);\n\n return result\n .filter((res) => !!res)\n .reduce((prev, curr) => {\n return prev.concat(curr?.content ?? []);\n }, [] as T[]);\n}\n\nexport async function getPaginationAllDataLimit(\n callback: (offset: number, limit: number) => Promise | undefined>,\n limit: number,\n) {\n const fetch = async (offset: number, limit: number) => {\n return await callback(offset, limit);\n };\n\n const __result = await fetch(0, limit);\n const totalElements = Number(__result?.totalElements ?? 0);\n const totalPage =\n totalElements % limit === 0 ? parseInt(String(totalElements / limit)) : parseInt(String(totalElements / limit)) + 1;\n\n const promise: Promise | undefined>[] = [];\n\n for (let i = 2; i < totalPage + 1; i++) {\n const [offset] = pageArgsFormat(i, limit);\n promise.push(fetch(offset, limit));\n }\n\n const result = await Promise.all(promise);\n\n return result\n .filter((res) => !!res)\n .reduce(\n (prev, curr) => {\n return prev.concat(curr?.content ?? []);\n },\n __result.content ?? ([] as T[]),\n );\n}\n","import { useEffect, useState } from \"react\";\n\n/**\n * Debounces updates to a value.\n * Non-primitives *must* wrap the value in useMemo, or the value will be updated due to referential inequality.\n */\n// modified from https://usehooks.com/useDebounce/\nexport function useDebounce(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport function useDebouncedChangeHandler(\n value: T,\n onChange: (newValue: T) => void,\n debouncedMs = 100,\n): [T, (value: T) => void] {\n const [inner, setInner] = useState(() => value);\n const timer = useRef>();\n\n const onChangeInner = useCallback(\n (newValue: T) => {\n setInner(newValue);\n if (timer.current) {\n clearTimeout(timer.current);\n }\n timer.current = setTimeout(() => {\n onChange(newValue);\n timer.current = undefined;\n }, debouncedMs);\n },\n [debouncedMs, onChange],\n );\n\n useEffect(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = undefined;\n }\n setInner(value);\n }, [value]);\n\n return [inner, onChangeInner];\n}\n","import { useState, useEffect, useMemo } from \"react\";\n\nexport function useInterval(\n callback: (() => Promise) | (() => void) | undefined,\n force: boolean | number = false,\n interval = 5000,\n): T | undefined {\n const [data, setData] = useState(undefined);\n const [tick, setTick] = useState(0);\n\n useEffect(() => {\n async function __callback() {\n if (callback) {\n const result = await callback();\n\n if (result) {\n setData(result);\n }\n }\n }\n\n __callback();\n }, [tick, callback, force]);\n\n useEffect(() => {\n const timer = setInterval(() => {\n if (callback) {\n setTick((prevState) => prevState + 1);\n }\n }, interval);\n\n return () => {\n clearInterval(timer);\n };\n }, [interval, callback]);\n\n return useMemo(() => data, [data]);\n}\n","import { useState, useMemo, useEffect } from \"react\";\n\nexport function useLimitedInfinityCall(\n callback: (offset: number, limit: number) => Promise,\n limit: number,\n reload = false,\n) {\n const [loading, setLoading] = useState(false);\n const [list, setList] = useState([]);\n\n useEffect(() => {\n async function call() {\n setLoading(true);\n const result = await getLimitedInfinityCall(callback, limit, 5);\n setList(result);\n }\n\n call();\n }, [reload, callback, limit]);\n\n return useMemo(\n () => ({\n result: list,\n loading,\n }),\n [list, loading],\n );\n}\n\ntype Callback = (offset: number, limit: number) => Promise;\n\nexport async function fetch_data(start: number, limit: number, callback: Callback) {\n const result = await callback(start, limit);\n return result;\n}\n\n/**\n * @description getLimitedInfinityCall\n * @param callback The call to fetch the data\n * @param limit The data length in each call\n * @param call_rounds Number of call\n */\nexport async function getLimitedInfinityCall(\n callback: (offset: number, limit: number) => Promise,\n limit: number,\n call_rounds = 10,\n start_index?: number,\n) {\n let data: T[] = [];\n let fetch_index = 0;\n let fetch_done = false;\n\n const fetch = async (index: number) => {\n fetch_index += 1;\n\n await Promise.all(\n Array.from({ length: call_rounds }, (_, i) => i).map(async (call_index) => {\n const start = (start_index ?? 0) + call_index * limit + index * limit * call_rounds;\n\n const result = await fetch_data(start, limit, callback);\n\n if (!result) {\n return undefined;\n }\n data = data.concat(result);\n\n if (result.length < limit) {\n fetch_done = true;\n }\n\n return undefined;\n }),\n );\n\n if (!fetch_done) {\n await fetch(fetch_index);\n }\n };\n\n await fetch(fetch_index);\n\n return data;\n}\n","import { parse, ParsedQs } from \"qs\";\nimport { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport function parsedQueryString(search?: string): ParsedQs {\n let string: string = search ?? \"\";\n\n if (!search) {\n // react-router-dom places search string in the hash\n const { hash } = window.location;\n string = hash.substr(hash.indexOf(\"?\"));\n }\n\n return string && string.length > 1 ? parse(string, { parseArrays: false, ignoreQueryPrefix: true }) : {};\n}\n\nexport function useParsedQueryString(): ParsedQs {\n const { search } = useLocation();\n return useMemo(() => parsedQueryString(search), [search]);\n}\n","import { splitArr } from \"@icpswap/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\n\ntype Call = Promise;\n\nexport async function getPromisesAwait(calls: Call[], limit = 100) {\n const __calls = splitArr(calls, limit);\n\n const result: Array = [];\n\n for (let i = 0; i < __calls.length; i++) {\n const res = await Promise.all(__calls[i]);\n result.push(res);\n }\n\n return result.flat();\n}\n\nexport function usePromisesAwait(calls: Call[] | undefined, limit = 100) {\n const [result, setResult] = useState(null);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n if (calls) {\n setLoading(true);\n const result = await getPromisesAwait(calls, limit);\n setResult(result);\n setLoading(false);\n }\n }\n\n call();\n }, [calls, limit]);\n\n return useMemo(() => ({ loading, result }), [loading, result]);\n}\n","export const ADDRESS_ZERO = \"0x0000000000000000000000000000000000000000\";\n\n/**\n * The default factory enabled fee amounts, denominated in hundredths of bips.\n */\nexport enum FeeAmount {\n LOWEST = 100,\n LOW = 500,\n MEDIUM = 3000,\n HIGH = 10000,\n}\n\n/**\n * The default factory tick spacings by fee amount.\n */\nexport const TICK_SPACINGS: { [amount in FeeAmount]: number } = {\n [FeeAmount.LOWEST]: 1,\n [FeeAmount.LOW]: 10,\n [FeeAmount.MEDIUM]: 60,\n [FeeAmount.HIGH]: 200,\n};\n","import JSBI from \"jsbi\";\n\n// exports for external consumption\nexport type BigintIsh = JSBI | string | number;\n\nexport enum TradeType {\n EXACT_INPUT,\n EXACT_OUTPUT\n}\n\nexport enum Rounding {\n ROUND_DOWN,\n ROUND_HALF_UP,\n ROUND_UP\n}\n\nexport const MaxUint256 = JSBI.BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n","/* eslint-disable @typescript-eslint/prefer-as-const */\n\nimport invariant from \"tiny-invariant\";\nimport { validateAndParseERC20Address } from \"../utils/validateAndParseAddress\";\n\ninterface ConstructorArgs {\n address: string;\n decimals: number;\n symbol: string;\n name: string;\n logo?: string;\n transFee?: number;\n}\n\n/**\n * Represents an ERC20 token with a unique address and some metadata.\n */\nexport class ERC20Token {\n public readonly isNative: false = false;\n\n public readonly isToken: true = true;\n\n /**\n * The decimals used in representing currency amounts\n */\n public readonly decimals: number;\n\n /**\n * The symbol of the currency, i.e. a short textual non-unique identifier\n */\n public readonly symbol: string;\n\n /**\n * The name of the currency, i.e. a descriptive textual non-unique identifier\n */\n public readonly name: string;\n\n public readonly logo: string;\n\n public readonly transFee: number;\n\n public readonly standard: string;\n\n /**\n * The contract address on the chain on which this token lives\n */\n public readonly address: string;\n\n public constructor({ address, decimals, symbol, name, logo, transFee }: ConstructorArgs) {\n invariant(decimals >= 0 && decimals < 255 && Number.isInteger(decimals), \"DECIMALS\");\n\n this.decimals = decimals;\n this.symbol = symbol;\n this.name = name ?? \"\";\n this.logo = logo ?? \"\";\n this.transFee = transFee;\n this.address = validateAndParseERC20Address(address);\n }\n\n /**\n * Returns true if the two tokens are equivalent, i.e. have the same address.\n * @param other other token to compare\n */\n public equals(other: ERC20Token): boolean {\n return other.isToken && this.address === other.address;\n }\n\n /**\n * Returns true if the address of this token sorts before the address of the other token\n * @param other other token to compare\n * @throws if the tokens have the same address\n * @throws if the tokens are on different chains\n */\n public sortsBefore(other: ERC20Token): boolean {\n invariant(this.address !== other.address, \"ADDRESSES\");\n return this.address.toLowerCase() < other.address.toLowerCase();\n }\n}\n","import invariant from \"tiny-invariant\";\nimport JSBI from \"jsbi\";\nimport _Big from \"big.js\";\nimport toFormat from \"toformat\";\n\nimport { Token } from \"../token\";\nimport { Fraction } from \"./fraction\";\nimport { BigintIsh, Rounding, MaxUint256 } from \"../../constants\";\n\nconst Big = toFormat(_Big);\n\nexport class CurrencyAmount extends Fraction {\n public readonly currency: T;\n\n public readonly decimalScale: JSBI;\n\n /**\n * Returns a new currency amount instance from the unitless amount of token, i.e. the raw amount\n * @param currency the currency in the amount\n * @param rawAmount the raw token or ether amount\n */\n public static fromRawAmount(currency: T, rawAmount: BigintIsh): CurrencyAmount {\n return new CurrencyAmount(currency, rawAmount);\n }\n\n /**\n * Construct a currency amount with a denominator that is not equal to 1\n * @param currency the currency\n * @param numerator the numerator of the fractional token amount\n * @param denominator the denominator of the fractional token amount\n */\n public static fromFractionalAmount(\n currency: T,\n numerator: BigintIsh,\n denominator: BigintIsh,\n ): CurrencyAmount {\n return new CurrencyAmount(currency, numerator, denominator);\n }\n\n protected constructor(currency: T, numerator: BigintIsh, denominator?: BigintIsh) {\n super(numerator, denominator);\n invariant(JSBI.lessThanOrEqual(this.quotient, MaxUint256), \"AMOUNT\");\n this.currency = currency;\n this.decimalScale = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(currency.decimals));\n }\n\n public add(other: CurrencyAmount): CurrencyAmount {\n invariant(this.currency.equals(other.currency), \"CURRENCY\");\n const added = super.add(other);\n return CurrencyAmount.fromFractionalAmount(this.currency, added.numerator, added.denominator);\n }\n\n public subtract(other: CurrencyAmount): CurrencyAmount {\n invariant(this.currency.equals(other.currency), \"CURRENCY\");\n const subtracted = super.subtract(other);\n return CurrencyAmount.fromFractionalAmount(this.currency, subtracted.numerator, subtracted.denominator);\n }\n\n public multiply(other: Fraction | BigintIsh): CurrencyAmount {\n const multiplied = super.multiply(other);\n return CurrencyAmount.fromFractionalAmount(this.currency, multiplied.numerator, multiplied.denominator);\n }\n\n public divide(other: Fraction | BigintIsh): CurrencyAmount {\n const divided = super.divide(other);\n return CurrencyAmount.fromFractionalAmount(this.currency, divided.numerator, divided.denominator);\n }\n\n public toSignificant(significantDigits = 6, format?: object, rounding: Rounding = Rounding.ROUND_DOWN): string {\n return super.divide(this.decimalScale).toSignificant(significantDigits, format, rounding);\n }\n\n public toFixed(\n decimalPlaces: number = this.currency.decimals,\n format?: object,\n rounding: Rounding = Rounding.ROUND_DOWN,\n ): string {\n invariant(decimalPlaces <= this.currency.decimals, \"DECIMALS\");\n return super.divide(this.decimalScale).toFixed(decimalPlaces, format, rounding);\n }\n\n public toExact(format: object = { groupSeparator: \"\" }): string {\n Big.DP = this.currency.decimals;\n return new Big(this.quotient.toString()).div(this.decimalScale.toString()).toFormat(format);\n }\n\n public get wrapped(): CurrencyAmount {\n if (this.currency.isToken) return this as CurrencyAmount;\n return CurrencyAmount.fromFractionalAmount(this.currency.wrapped, this.numerator, this.denominator);\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport _Decimal from \"decimal.js-light\";\nimport _Big from \"big.js\";\nimport toFormat from \"toformat\";\n\nimport { BigintIsh, Rounding } from \"../../constants\";\n\nconst Decimal = toFormat(_Decimal);\nconst Big = toFormat(_Big);\n\nconst toSignificantRounding = {\n [Rounding.ROUND_DOWN]: Decimal.ROUND_DOWN,\n [Rounding.ROUND_HALF_UP]: Decimal.ROUND_HALF_UP,\n [Rounding.ROUND_UP]: Decimal.ROUND_UP,\n};\n\nconst enum RoundingMode {\n /**\n * Rounds towards zero.\n * I.e. truncate, no rounding.\n */\n RoundDown = 0,\n /**\n * Rounds towards nearest neighbour.\n * If equidistant, rounds away from zero.\n */\n RoundHalfUp = 1,\n /**\n * Rounds towards nearest neighbour.\n * If equidistant, rounds towards even neighbour.\n */\n RoundHalfEven = 2,\n /**\n * Rounds away from zero.\n */\n RoundUp = 3,\n}\n\nconst toFixedRounding = {\n [Rounding.ROUND_DOWN]: RoundingMode.RoundDown,\n [Rounding.ROUND_HALF_UP]: RoundingMode.RoundHalfUp,\n [Rounding.ROUND_UP]: RoundingMode.RoundUp,\n};\n\nexport class Fraction {\n public readonly numerator: JSBI;\n\n public readonly denominator: JSBI;\n\n public constructor(numerator: BigintIsh, denominator: BigintIsh = JSBI.BigInt(1)) {\n this.numerator = JSBI.BigInt(numerator);\n this.denominator = JSBI.BigInt(denominator);\n }\n\n private static tryParseFraction(fractionish: BigintIsh | Fraction): Fraction {\n if (fractionish instanceof JSBI || typeof fractionish === \"number\" || typeof fractionish === \"string\")\n return new Fraction(fractionish);\n\n if (\"numerator\" in fractionish && \"denominator\" in fractionish) return fractionish;\n throw new Error(\"Could not parse fraction\");\n }\n\n // performs floor division\n public get quotient(): JSBI {\n return JSBI.divide(this.numerator, this.denominator);\n }\n\n // remainder after floor division\n public get remainder(): Fraction {\n return new Fraction(JSBI.remainder(this.numerator, this.denominator), this.denominator);\n }\n\n public invert(): Fraction {\n return new Fraction(this.denominator, this.numerator);\n }\n\n public add(other: Fraction | BigintIsh): Fraction {\n const otherParsed = Fraction.tryParseFraction(other);\n if (JSBI.equal(this.denominator, otherParsed.denominator)) {\n return new Fraction(JSBI.add(this.numerator, otherParsed.numerator), this.denominator);\n }\n return new Fraction(\n JSBI.add(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator),\n ),\n JSBI.multiply(this.denominator, otherParsed.denominator),\n );\n }\n\n public subtract(other: Fraction | BigintIsh): Fraction {\n const otherParsed = Fraction.tryParseFraction(other);\n if (JSBI.equal(this.denominator, otherParsed.denominator)) {\n return new Fraction(JSBI.subtract(this.numerator, otherParsed.numerator), this.denominator);\n }\n return new Fraction(\n JSBI.subtract(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator),\n ),\n JSBI.multiply(this.denominator, otherParsed.denominator),\n );\n }\n\n public lessThan(other: Fraction | BigintIsh): boolean {\n const otherParsed = Fraction.tryParseFraction(other);\n return JSBI.lessThan(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator),\n );\n }\n\n public equalTo(other: Fraction | BigintIsh): boolean {\n const otherParsed = Fraction.tryParseFraction(other);\n return JSBI.equal(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator),\n );\n }\n\n public greaterThan(other: Fraction | BigintIsh): boolean {\n const otherParsed = Fraction.tryParseFraction(other);\n return JSBI.greaterThan(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator),\n );\n }\n\n public multiply(other: Fraction | BigintIsh): Fraction {\n const otherParsed = Fraction.tryParseFraction(other);\n return new Fraction(\n JSBI.multiply(this.numerator, otherParsed.numerator),\n JSBI.multiply(this.denominator, otherParsed.denominator),\n );\n }\n\n public divide(other: Fraction | BigintIsh): Fraction {\n const otherParsed = Fraction.tryParseFraction(other);\n return new Fraction(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(this.denominator, otherParsed.numerator),\n );\n }\n\n public toSignificant(\n significantDigits: number,\n format: object = { groupSeparator: \"\" },\n rounding: Rounding = Rounding.ROUND_HALF_UP,\n ): string {\n invariant(Number.isInteger(significantDigits), `${significantDigits} is not an integer.`);\n invariant(significantDigits > 0, `${significantDigits} is not positive.`);\n\n Decimal.set({\n precision: significantDigits + 1,\n rounding: toSignificantRounding[rounding],\n });\n const quotient = new Decimal(this.numerator.toString())\n .div(this.denominator.toString())\n .toSignificantDigits(significantDigits);\n return quotient.toFormat(quotient.decimalPlaces(), format);\n }\n\n public toFixed(\n decimalPlaces: number,\n format: object = { groupSeparator: \"\" },\n rounding: Rounding = Rounding.ROUND_HALF_UP,\n ): string {\n invariant(Number.isInteger(decimalPlaces), `${decimalPlaces} is not an integer.`);\n invariant(decimalPlaces >= 0, `${decimalPlaces} is negative.`);\n\n Big.DP = decimalPlaces;\n Big.RM = toFixedRounding[rounding];\n return new Big(this.numerator.toString()).div(this.denominator.toString()).toFormat(decimalPlaces, format);\n }\n\n /**\n * Helper method for converting any super class back to a fraction\n */\n public get asFraction(): Fraction {\n return new Fraction(this.numerator, this.denominator);\n }\n}\n","import JSBI from \"jsbi\";\nimport { BigintIsh, Rounding } from \"../../constants\";\nimport { Fraction } from \"./fraction\";\n\nconst ONE_HUNDRED = new Fraction(JSBI.BigInt(100));\n\n/**\n * Converts a fraction to a percent\n * @param fraction the fraction to convert\n */\nfunction toPercent(fraction: Fraction): Percent {\n return new Percent(fraction.numerator, fraction.denominator);\n}\n\nexport class Percent extends Fraction {\n /**\n * This boolean prevents a fraction from being interpreted as a Percent\n */\n public readonly isPercent: true = true;\n\n add(other: Fraction | BigintIsh): Percent {\n return toPercent(super.add(other));\n }\n\n subtract(other: Fraction | BigintIsh): Percent {\n return toPercent(super.subtract(other));\n }\n\n multiply(other: Fraction | BigintIsh): Percent {\n return toPercent(super.multiply(other));\n }\n\n divide(other: Fraction | BigintIsh): Percent {\n return toPercent(super.divide(other));\n }\n\n public toSignificant(significantDigits: number = 5, format?: object, rounding?: Rounding): string {\n return super.multiply(ONE_HUNDRED).toSignificant(significantDigits, format, rounding);\n }\n\n public toFixed(decimalPlaces: number = 2, format?: object, rounding?: Rounding): string {\n return super.multiply(ONE_HUNDRED).toFixed(decimalPlaces, format, rounding);\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\n\nimport { BigintIsh, Rounding } from \"../../constants\";\nimport { Token } from \"../token\";\nimport { Fraction } from \"./fraction\";\nimport { CurrencyAmount } from \"./currencyAmount\";\n\nexport class Price extends Fraction {\n public readonly baseCurrency: TBase; // input i.e. denominator\n\n public readonly quoteCurrency: TQuote; // output i.e. numerator\n\n public readonly scalar: Fraction; // used to adjust the raw fraction w/r/t the decimals of the {base,quote}Token\n\n /**\n * Construct a price, either with the base and quote currency amount, or the\n * @param args\n */\n public constructor(\n ...args:\n | [TBase, TQuote, BigintIsh, BigintIsh]\n | [\n {\n baseAmount: CurrencyAmount;\n quoteAmount: CurrencyAmount;\n },\n ]\n ) {\n let baseCurrency: TBase;\n let quoteCurrency: TQuote;\n let denominator: BigintIsh;\n let numerator: BigintIsh;\n\n if (args.length === 4) {\n [baseCurrency, quoteCurrency, denominator, numerator] = args;\n } else {\n const result = args[0].quoteAmount.divide(args[0].baseAmount);\n [baseCurrency, quoteCurrency, denominator, numerator] = [\n args[0].baseAmount.currency,\n args[0].quoteAmount.currency,\n result.denominator,\n result.numerator,\n ];\n }\n super(numerator, denominator);\n\n this.baseCurrency = baseCurrency;\n this.quoteCurrency = quoteCurrency;\n this.scalar = new Fraction(\n JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(baseCurrency.decimals)),\n JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(quoteCurrency.decimals)),\n );\n }\n\n /**\n * Flip the price, switching the base and quote currency\n */\n public invert(): Price {\n return new Price(this.quoteCurrency, this.baseCurrency, this.numerator, this.denominator);\n }\n\n /**\n * Multiply the price by another price, returning a new price. The other price must have the same base currency as this price's quote currency\n * @param other the other price\n */\n public multiply(other: Price): Price {\n invariant(this.quoteCurrency.equals(other.baseCurrency), \"TOKEN\");\n const fraction = super.multiply(other);\n return new Price(this.baseCurrency, other.quoteCurrency, fraction.denominator, fraction.numerator);\n }\n\n /**\n * Return the amount of quote currency corresponding to a given amount of the base currency\n * @param currencyAmount the amount of base currency to quote against the price\n */\n public quote(currencyAmount: CurrencyAmount): CurrencyAmount {\n invariant(currencyAmount.currency.equals(this.baseCurrency), \"TOKEN\");\n const result = super.multiply(currencyAmount);\n return CurrencyAmount.fromFractionalAmount(this.quoteCurrency, result.numerator, result.denominator);\n }\n\n /**\n * Get the value scaled by decimals for formatting\n * @private\n */\n private get adjustedForDecimals(): Fraction {\n return super.multiply(this.scalar);\n }\n\n public toSignificant(significantDigits = 6, format?: object, rounding?: Rounding): string {\n return this.adjustedForDecimals.toSignificant(significantDigits, format, rounding);\n }\n\n public toFixed(decimalPlaces = 4, format?: object, rounding: Rounding = Rounding.ROUND_DOWN): string {\n return this.adjustedForDecimals.toFixed(decimalPlaces, format, rounding);\n }\n}\n","import invariant from \"tiny-invariant\";\n\n/**\n * A currency is any fungible financial instrument, including Ether, all ERC20 tokens, and other chain-native currencies\n */\nexport abstract class BaseCurrency {\n /**\n * Returns whether the currency is native to the chain and must be wrapped (e.g. Ether)\n */\n public abstract readonly isNative: boolean;\n\n /**\n * Returns whether the currency is a token that is usable without wrapping\n */\n public abstract readonly isToken: boolean;\n\n /**\n * The decimals used in representing currency amounts\n */\n public readonly decimals: number;\n\n /**\n * The symbol of the currency, i.e. a short textual non-unique identifier\n */\n public readonly symbol: string;\n\n /**\n * The name of the currency, i.e. a descriptive textual non-unique identifier\n */\n public readonly name: string;\n\n public readonly logo: string;\n\n public readonly transFee: number;\n\n public readonly standard: string;\n\n /**\n * Constructs an instance of the base class `BaseCurrency`.\n * @param decimals decimals of the currency\n * @param symbol symbol of the currency\n * @param name of the currency\n */\n protected constructor({\n decimals,\n symbol,\n name,\n logo,\n transFee,\n standard,\n }: {\n decimals: number;\n symbol: string;\n name: string;\n logo?: string;\n transFee?: number;\n standard: string;\n }) {\n invariant(decimals >= 0 && decimals < 255 && Number.isInteger(decimals), \"DECIMALS\");\n\n this.decimals = decimals;\n this.symbol = symbol;\n this.name = name ?? \"\";\n this.logo = logo ?? \"\";\n this.transFee = transFee ?? 0;\n this.standard = standard;\n }\n\n /**\n * Returns whether this currency is functionally equivalent to the other currency\n * @param other the other currency\n */\n public abstract equals(other: BaseCurrency): boolean;\n}\n","/* eslint-disable @typescript-eslint/prefer-as-const */\n\nimport invariant from \"tiny-invariant\";\nimport { validateAndParseAddress } from \"../utils/validateAndParseAddress\";\nimport { BaseCurrency } from \"./baseCurrency\";\n\ninterface ConstructorArgs {\n address: string;\n decimals: number;\n symbol: string;\n name: string;\n logo?: string;\n transFee?: number;\n standard: string;\n}\n\n/**\n * Represents an ICP token with a unique address and some metadata.\n */\nexport class Token extends BaseCurrency {\n public readonly isNative: false = false;\n\n public readonly isToken: true = true;\n\n /**\n * The contract address on the chain on which this token lives\n */\n public readonly address: string;\n\n public constructor({ address, decimals, symbol, name, logo, transFee, standard }: ConstructorArgs) {\n super({\n decimals,\n symbol,\n name,\n logo,\n transFee,\n standard,\n });\n\n this.address = validateAndParseAddress(address);\n }\n\n /**\n * Returns true if the two tokens are equivalent, i.e. have the same address.\n * @param other other token to compare\n */\n public equals(other: Token): boolean {\n return other.isToken && this.address === other.address;\n }\n\n /**\n * Returns true if the address of this token sorts before the address of the other token\n * @param other other token to compare\n * @throws if the tokens have the same address\n * @throws if the tokens are on different chains\n */\n public sortsBefore(other: Token): boolean {\n invariant(this.address !== other.address, \"ADDRESSES\");\n return this.address.toLowerCase() < other.address.toLowerCase();\n }\n\n /**\n * Return this token, which does not need to be wrapped\n */\n public get wrapped(): Token {\n return this;\n }\n}\n","import { isValidPrincipal } from \"@icpswap/utils\";\nimport { getAddress } from \"@ethersproject/address\";\n\n/**\n * Validates an address and returns the address\n * @param address the principal address\n */\nexport function validateAndParseAddress(address: string): string {\n if (isValidPrincipal(address)) return address;\n throw new Error(`${address} is not a valid address.`);\n}\n\nexport function validateAndParseERC20Address(address: string): string {\n try {\n return getAddress(address);\n } catch (error) {\n throw new Error(`${address} is not a valid address.`);\n }\n}\n","import JSBI from \"jsbi\";\nimport { NEGATIVE_ONE, ZERO } from \"../internalConstants\";\n\nexport abstract class LiquidityMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n public static addDelta(x: JSBI, y: JSBI): JSBI {\n if (JSBI.lessThan(y, ZERO)) {\n return JSBI.subtract(x, JSBI.multiply(y, NEGATIVE_ONE));\n } else {\n return JSBI.add(x, y);\n }\n }\n}\n","import JSBI from \"jsbi\";\nimport { FeeAmount } from \"../constants\";\nimport { NEGATIVE_ONE, ZERO } from \"../internalConstants\";\nimport { FullMath } from \"./fullMath\";\nimport { SqrtPriceMath } from \"./sqrtPriceMath\";\n\nconst MAX_FEE = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(6));\n\nexport abstract class SwapMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n public static computeSwapStep(\n sqrtRatioCurrentX96: JSBI,\n sqrtRatioTargetX96: JSBI,\n liquidity: JSBI,\n amountRemaining: JSBI,\n feePips: FeeAmount\n ): [JSBI, JSBI, JSBI, JSBI] {\n const returnValues: Partial<{\n sqrtRatioNextX96: JSBI;\n amountIn: JSBI;\n amountOut: JSBI;\n feeAmount: JSBI;\n }> = {};\n\n const zeroForOne = JSBI.greaterThanOrEqual(sqrtRatioCurrentX96, sqrtRatioTargetX96);\n const exactIn = JSBI.greaterThanOrEqual(amountRemaining, ZERO);\n\n if (exactIn) {\n const amountRemainingLessFee = JSBI.divide(\n JSBI.multiply(amountRemaining, JSBI.subtract(MAX_FEE, JSBI.BigInt(feePips))),\n MAX_FEE\n );\n returnValues.amountIn = zeroForOne\n ? SqrtPriceMath.getAmount0Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, true)\n : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, true);\n if (JSBI.greaterThanOrEqual(amountRemainingLessFee, returnValues.amountIn!)) {\n returnValues.sqrtRatioNextX96 = sqrtRatioTargetX96;\n } else {\n returnValues.sqrtRatioNextX96 = SqrtPriceMath.getNextSqrtPriceFromInput(\n sqrtRatioCurrentX96,\n liquidity,\n amountRemainingLessFee,\n zeroForOne\n );\n }\n } else {\n returnValues.amountOut = zeroForOne\n ? SqrtPriceMath.getAmount1Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, false)\n : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, false);\n if (JSBI.greaterThanOrEqual(JSBI.multiply(amountRemaining, NEGATIVE_ONE), returnValues.amountOut)) {\n returnValues.sqrtRatioNextX96 = sqrtRatioTargetX96;\n } else {\n returnValues.sqrtRatioNextX96 = SqrtPriceMath.getNextSqrtPriceFromOutput(\n sqrtRatioCurrentX96,\n liquidity,\n JSBI.multiply(amountRemaining, NEGATIVE_ONE),\n zeroForOne\n );\n }\n }\n\n const max = JSBI.equal(sqrtRatioTargetX96, returnValues.sqrtRatioNextX96);\n\n if (zeroForOne) {\n returnValues.amountIn =\n max && exactIn\n ? returnValues.amountIn\n : SqrtPriceMath.getAmount0Delta(returnValues.sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, true);\n returnValues.amountOut =\n max && !exactIn\n ? returnValues.amountOut\n : SqrtPriceMath.getAmount1Delta(returnValues.sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, false);\n } else {\n returnValues.amountIn =\n max && exactIn\n ? returnValues.amountIn\n : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, returnValues.sqrtRatioNextX96, liquidity, true);\n returnValues.amountOut =\n max && !exactIn\n ? returnValues.amountOut\n : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, returnValues.sqrtRatioNextX96, liquidity, false);\n }\n\n if (!exactIn && JSBI.greaterThan(returnValues.amountOut!, JSBI.multiply(amountRemaining, NEGATIVE_ONE))) {\n returnValues.amountOut = JSBI.multiply(amountRemaining, NEGATIVE_ONE);\n }\n\n if (exactIn && JSBI.notEqual(returnValues.sqrtRatioNextX96, sqrtRatioTargetX96)) {\n // we didn't reach the target, so take the remainder of the maximum input as fee\n returnValues.feeAmount = JSBI.subtract(amountRemaining, returnValues.amountIn!);\n } else {\n returnValues.feeAmount = FullMath.mulDivRoundingUp(\n returnValues.amountIn!,\n JSBI.BigInt(feePips),\n JSBI.subtract(MAX_FEE, JSBI.BigInt(feePips))\n );\n }\n\n return [returnValues.sqrtRatioNextX96!, returnValues.amountIn!, returnValues.amountOut!, returnValues.feeAmount!];\n }\n}\n","import { BigintIsh } from \"../core\";\n\n/**\n * Provides information about ticks\n */\nexport interface TickDataProvider {\n /**\n * Return information corresponding to a specific tick\n * @param tick the tick to load\n */\n getTick(tick: number): Promise<{ liquidityNet: BigintIsh }>;\n\n /**\n * Return the next tick that is initialized within a single word\n * @param tick The current tick\n * @param lte Whether the next tick should be lte the current tick\n * @param tickSpacing The tick spacing of the pool\n */\n nextInitializedTickWithinOneWord(\n tick: number,\n lte: boolean,\n tickSpacing: number\n ): Promise<[number, boolean]>;\n}\n\n/**\n * This tick data provider does not know how to fetch any tick data. It throws whenever it is required. Useful if you\n * do not need to load tick data for your use case.\n */\nexport class NoTickDataProvider implements TickDataProvider {\n private static ERROR_MESSAGE = \"No tick data provider was given\";\n async getTick(_tick: number): Promise<{ liquidityNet: BigintIsh }> {\n throw new Error(NoTickDataProvider.ERROR_MESSAGE);\n }\n\n async nextInitializedTickWithinOneWord(\n _tick: number,\n _lte: boolean,\n _tickSpacing: number\n ): Promise<[number, boolean]> {\n throw new Error(NoTickDataProvider.ERROR_MESSAGE);\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { Tick } from \"../entities/tick\";\nimport { ZERO } from \"../internalConstants\";\nimport { isSorted } from \"./isSorted\";\n\nfunction tickComparator(a: Tick, b: Tick) {\n return a.index - b.index;\n}\n\n/**\n * Utility methods for interacting with sorted lists of ticks\n */\nexport abstract class TickList {\n /**\n * Cannot be constructed\n */\n private constructor() {}\n\n public static validateList(ticks: Tick[], tickSpacing: number) {\n invariant(tickSpacing > 0, \"TICK_SPACING_NONZERO\");\n // ensure ticks are spaced appropriately\n invariant(\n ticks.every(({ index }) => Math.abs(index) % tickSpacing === 0),\n \"TICK_SPACING\"\n );\n\n // ensure tick liquidity deltas sum to 0\n invariant(\n JSBI.equal(\n ticks.reduce((accumulator, { liquidityNet }) => JSBI.add(accumulator, liquidityNet), ZERO),\n ZERO\n ),\n \"ZERO_NET\"\n );\n\n invariant(isSorted(ticks, tickComparator), \"SORTED\");\n }\n\n public static isBelowSmallest(ticks: readonly Tick[], tick: number): boolean {\n invariant(ticks.length > 0, \"LENGTH\");\n return tick < ticks[0].index;\n }\n\n public static isAtOrAboveLargest(ticks: readonly Tick[], tick: number): boolean {\n invariant(ticks.length > 0, \"LENGTH\");\n return tick >= ticks[ticks.length - 1].index;\n }\n\n public static getTick(ticks: readonly Tick[], index: number): Tick {\n const tick = ticks[this.binarySearch(ticks, index)];\n invariant(tick.index === index, \"NOT_CONTAINED\");\n return tick;\n }\n\n /**\n * Finds the largest tick in the list of ticks that is less than or equal to tick\n * @param ticks list of ticks\n * @param tick tick to find the largest tick that is less than or equal to tick\n * @private\n */\n private static binarySearch(ticks: readonly Tick[], tick: number): number {\n invariant(!this.isBelowSmallest(ticks, tick), \"BELOW_SMALLEST\");\n\n let l = 0;\n let r = ticks.length - 1;\n let i;\n while (true) {\n i = Math.floor((l + r) / 2);\n\n if (ticks[i].index <= tick && (i === ticks.length - 1 || ticks[i + 1].index > tick)) {\n return i;\n }\n\n if (ticks[i].index < tick) {\n l = i + 1;\n } else {\n r = i - 1;\n }\n }\n }\n\n public static nextInitializedTick(ticks: readonly Tick[], tick: number, lte: boolean): Tick {\n if (lte) {\n invariant(!TickList.isBelowSmallest(ticks, tick), \"BELOW_SMALLEST\");\n if (TickList.isAtOrAboveLargest(ticks, tick)) {\n return ticks[ticks.length - 1];\n }\n const index = this.binarySearch(ticks, tick);\n return ticks[index];\n } else {\n invariant(!this.isAtOrAboveLargest(ticks, tick), \"AT_OR_ABOVE_LARGEST\");\n if (this.isBelowSmallest(ticks, tick)) {\n return ticks[0];\n }\n const index = this.binarySearch(ticks, tick);\n return ticks[index + 1];\n }\n }\n\n public static nextInitializedTickWithinOneWord(\n ticks: readonly Tick[],\n tick: number,\n lte: boolean,\n tickSpacing: number\n ): [number, boolean] {\n const compressed = Math.floor(tick / tickSpacing); // matches rounding in the code\n\n if (lte) {\n const wordPos = compressed >> 8;\n const minimum = (wordPos << 8) * tickSpacing;\n\n if (TickList.isBelowSmallest(ticks, tick)) {\n return [minimum, false];\n }\n\n const index = TickList.nextInitializedTick(ticks, tick, lte).index;\n const nextInitializedTick = Math.max(minimum, index);\n return [nextInitializedTick, nextInitializedTick === index];\n } else {\n const wordPos = (compressed + 1) >> 8;\n const maximum = (((wordPos + 1) << 8) - 1) * tickSpacing;\n\n if (this.isAtOrAboveLargest(ticks, tick)) {\n return [maximum, false];\n }\n\n const index = this.nextInitializedTick(ticks, tick, lte).index;\n const nextInitializedTick = Math.min(maximum, index);\n return [nextInitializedTick, nextInitializedTick === index];\n }\n }\n}\n","/**\n * Determines if a tick list is sorted\n * @param list The tick list\n * @param comparator The comparator\n * @returns true if sorted\n */\nexport function isSorted(list: Array, comparator: (a: T, b: T) => number): boolean {\n for (let i = 0; i < list.length - 1; i++) {\n if (comparator(list[i], list[i + 1]) > 0) {\n return false;\n }\n }\n return true;\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { BigintIsh } from \"../core\";\nimport { TickMath } from \"../utils/tickMath\";\n\nexport interface TickConstructorArgs {\n index: number;\n liquidityGross: BigintIsh;\n liquidityNet: BigintIsh;\n}\n\nexport class Tick {\n public readonly index: number;\n\n public readonly liquidityGross: JSBI;\n\n public readonly liquidityNet: JSBI;\n\n constructor({ index, liquidityGross, liquidityNet }: TickConstructorArgs) {\n invariant(index >= TickMath.MIN_TICK && index <= TickMath.MAX_TICK, \"TICK\");\n this.index = index;\n this.liquidityGross = JSBI.BigInt(liquidityGross);\n this.liquidityNet = JSBI.BigInt(liquidityNet);\n }\n}\n","import { BigintIsh } from \"../core\";\nimport { TickList } from \"../utils/tickList\";\nimport { Tick, TickConstructorArgs } from \"./tick\";\nimport { TickDataProvider } from \"./tickDataProvider\";\n\n/**\n * A data provider for ticks that is backed by an in-memory array of ticks.\n */\nexport class TickListDataProvider implements TickDataProvider {\n private ticks: readonly Tick[];\n\n constructor(ticks: (Tick | TickConstructorArgs)[], tickSpacing: number) {\n const ticksMapped: Tick[] = ticks.map((t) =>\n t instanceof Tick ? t : new Tick(t)\n );\n TickList.validateList(ticksMapped, tickSpacing);\n this.ticks = ticksMapped;\n }\n\n async getTick(\n tick: number\n ): Promise<{ liquidityNet: BigintIsh; liquidityGross: BigintIsh }> {\n return TickList.getTick(this.ticks, tick);\n }\n\n async nextInitializedTickWithinOneWord(\n tick: number,\n lte: boolean,\n tickSpacing: number\n ): Promise<[number, boolean]> {\n return TickList.nextInitializedTickWithinOneWord(\n this.ticks,\n tick,\n lte,\n tickSpacing\n );\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { BigintIsh, Price, Token, CurrencyAmount } from \"../core\";\nimport { FeeAmount, TICK_SPACINGS } from \"../constants\";\nimport { NEGATIVE_ONE, ONE, Q192, ZERO } from \"../internalConstants\";\nimport { computePoolAddress } from \"../utils/computePoolAddress\";\nimport { LiquidityMath } from \"../utils/liquidityMath\";\nimport { SwapMath } from \"../utils/swapMath\";\nimport { TickMath } from \"../utils/tickMath\";\nimport { Tick, TickConstructorArgs } from \"./tick\";\nimport { NoTickDataProvider, TickDataProvider } from \"./tickDataProvider\";\nimport { TickListDataProvider } from \"./tickListDataProvider\";\n\ninterface StepComputations {\n sqrtPriceStartX96: JSBI;\n tickNext: number;\n initialized: boolean;\n sqrtPriceNextX96: JSBI;\n amountIn: JSBI;\n amountOut: JSBI;\n feeAmount: JSBI;\n}\n\n/**\n * By default, pools will not allow operations that require ticks.\n */\nconst NO_TICK_DATA_PROVIDER_DEFAULT = new NoTickDataProvider();\n\n/**\n * Represents a V3 pool\n */\nexport class Pool {\n public readonly id: string;\n\n public readonly token0: Token;\n\n public readonly token1: Token;\n\n public readonly fee: FeeAmount;\n\n public readonly sqrtRatioX96: JSBI;\n\n public readonly liquidity: JSBI;\n\n public readonly tickCurrent: number;\n\n public readonly tickDataProvider: TickDataProvider;\n\n private _token0Price?: Price;\n\n private _token1Price?: Price;\n\n public static getAddress(tokenA: Token, tokenB: Token, fee: FeeAmount): string {\n return computePoolAddress({\n fee,\n tokenA,\n tokenB,\n });\n }\n\n /**\n * Construct a pool\n * @param tokenA One of the tokens in the pool\n * @param tokenB The other token in the pool\n * @param fee The fee in hundredths of a bips of the input amount of every swap that is collected by the pool\n * @param sqrtRatioX96 The sqrt of the current ratio of amounts of token1 to token0\n * @param liquidity The current value of in range liquidity\n * @param tickCurrent The current tick of the pool\n * @param ticks The current state of the pool ticks or a data provider that can return tick data\n */\n public constructor(\n id: string,\n tokenA: Token,\n tokenB: Token,\n fee: FeeAmount,\n sqrtRatioX96: BigintIsh,\n liquidity: BigintIsh,\n tickCurrent: number,\n ticks: TickDataProvider | (Tick | TickConstructorArgs)[] = NO_TICK_DATA_PROVIDER_DEFAULT,\n ) {\n invariant(Number.isInteger(fee) && fee < 1_000_000, \"FEE\");\n\n // const tickCurrentSqrtRatioX96 = TickMath.getSqrtRatioAtTick(tickCurrent);\n // const nextTickSqrtRatioX96 = TickMath.getSqrtRatioAtTick(tickCurrent + 1);\n\n // invariant(\n // JSBI.greaterThanOrEqual(\n // JSBI.BigInt(sqrtRatioX96),\n // tickCurrentSqrtRatioX96\n // ) &&\n // JSBI.lessThanOrEqual(JSBI.BigInt(sqrtRatioX96), nextTickSqrtRatioX96),\n // \"PRICE_BOUNDS\"\n // );\n // always create a copy of the list since we want the pool's tick list to be immutable\n [this.token0, this.token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA];\n this.id = id;\n this.fee = fee;\n this.sqrtRatioX96 = JSBI.BigInt(sqrtRatioX96);\n this.liquidity = JSBI.BigInt(liquidity);\n this.tickCurrent = tickCurrent;\n this.tickDataProvider = Array.isArray(ticks) ? new TickListDataProvider(ticks, TICK_SPACINGS[fee]) : ticks;\n }\n\n /**\n * Returns true if the token is either token0 or token1\n * @param token The token to check\n * @returns True if token is either token0 or token\n */\n public involvesToken(token: Token): boolean {\n return token.equals(this.token0) || token.equals(this.token1);\n }\n\n /**\n * Returns the current mid price of the pool in terms of token0, i.e. the ratio of token1 over token0\n */\n public get token0Price(): Price {\n if (!this._token0Price) {\n this._token0Price = new Price(\n this.token0,\n this.token1,\n Q192,\n JSBI.multiply(this.sqrtRatioX96, this.sqrtRatioX96),\n );\n }\n\n return this._token0Price;\n }\n\n /**\n * Returns the current mid price of the pool in terms of token1, i.e. the ratio of token0 over token1\n */\n public get token1Price(): Price {\n if (!this._token1Price) {\n this._token1Price = new Price(\n this.token1,\n this.token0,\n JSBI.multiply(this.sqrtRatioX96, this.sqrtRatioX96),\n Q192,\n );\n }\n\n return this._token1Price;\n }\n\n /**\n * Return the price of the given token in terms of the other token in the pool.\n * @param token The token to return price of\n * @returns The price of the given token, in terms of the other.\n */\n public priceOf(token: Token): Price {\n invariant(this.involvesToken(token), \"TOKEN\");\n return token.equals(this.token0) ? this.token0Price : this.token1Price;\n }\n\n /**\n * Given an input amount of a token, return the computed output amount, and a pool with state updated after the trade\n * @param inputAmount The input amount for which to quote the output amount\n * @param sqrtPriceLimitX96 The Q64.96 sqrt price limit\n * @returns The output amount and the pool with updated state\n */\n public async getOutputAmount(\n inputAmount: CurrencyAmount,\n sqrtPriceLimitX96?: JSBI,\n ): Promise<[CurrencyAmount, Pool]> {\n invariant(this.involvesToken(inputAmount.currency), \"TOKEN\");\n\n const zeroForOne = inputAmount.currency.equals(this.token0);\n\n const {\n amountCalculated: outputAmount,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n } = await this.swap(zeroForOne, inputAmount.quotient, sqrtPriceLimitX96);\n const outputToken = zeroForOne ? this.token1 : this.token0;\n return [\n CurrencyAmount.fromRawAmount(outputToken, JSBI.multiply(outputAmount, NEGATIVE_ONE)),\n new Pool(\n this.id,\n this.token0,\n this.token1,\n this.fee,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n this.tickDataProvider,\n ),\n ];\n }\n\n /**\n * Given a desired output amount of a token, return the computed input amount and a pool with state updated after the trade\n * @param outputAmount the output amount for which to quote the input amount\n * @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\n * @returns The input amount and the pool with updated state\n */\n public async getInputAmount(\n outputAmount: CurrencyAmount,\n sqrtPriceLimitX96?: JSBI,\n ): Promise<[CurrencyAmount, Pool]> {\n invariant(outputAmount.currency.isToken && this.involvesToken(outputAmount.currency), \"TOKEN\");\n\n const zeroForOne = outputAmount.currency.equals(this.token1);\n\n const {\n amountCalculated: inputAmount,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n } = await this.swap(zeroForOne, JSBI.multiply(outputAmount.quotient, NEGATIVE_ONE), sqrtPriceLimitX96);\n const inputToken = zeroForOne ? this.token0 : this.token1;\n return [\n CurrencyAmount.fromRawAmount(inputToken, inputAmount),\n new Pool(\n this.id,\n this.token0,\n this.token1,\n this.fee,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n this.tickDataProvider,\n ),\n ];\n }\n\n /**\n * Executes a swap\n * @param zeroForOne Whether the amount in is token0 or token1\n * @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\n * @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\n * @returns amountCalculated\n * @returns sqrtRatioX96\n * @returns liquidity\n * @returns tickCurrent\n */\n private async swap(\n zeroForOne: boolean,\n amountSpecified: JSBI,\n _sqrtPriceLimitX96?: JSBI,\n ): Promise<{\n amountCalculated: JSBI;\n sqrtRatioX96: JSBI;\n liquidity: JSBI;\n tickCurrent: number;\n }> {\n let sqrtPriceLimitX96 = _sqrtPriceLimitX96;\n\n if (!sqrtPriceLimitX96)\n sqrtPriceLimitX96 = zeroForOne\n ? JSBI.add(TickMath.MIN_SQRT_RATIO, ONE)\n : JSBI.subtract(TickMath.MAX_SQRT_RATIO, ONE);\n\n if (zeroForOne) {\n invariant(JSBI.greaterThan(sqrtPriceLimitX96, TickMath.MIN_SQRT_RATIO), \"RATIO_MIN\");\n invariant(JSBI.lessThan(sqrtPriceLimitX96, this.sqrtRatioX96), \"RATIO_CURRENT\");\n } else {\n invariant(JSBI.lessThan(sqrtPriceLimitX96, TickMath.MAX_SQRT_RATIO), \"RATIO_MAX\");\n invariant(JSBI.greaterThan(sqrtPriceLimitX96, this.sqrtRatioX96), \"RATIO_CURRENT\");\n }\n\n const exactInput = JSBI.greaterThanOrEqual(amountSpecified, ZERO);\n\n // keep track of swap state\n\n const state = {\n amountSpecifiedRemaining: amountSpecified,\n amountCalculated: ZERO,\n sqrtPriceX96: this.sqrtRatioX96,\n tick: this.tickCurrent,\n liquidity: this.liquidity,\n };\n\n // start swap while loop\n while (JSBI.notEqual(state.amountSpecifiedRemaining, ZERO) && state.sqrtPriceX96 !== sqrtPriceLimitX96) {\n const step: Partial = {};\n step.sqrtPriceStartX96 = state.sqrtPriceX96;\n\n // because each iteration of the while loop rounds, we can't optimize this code (relative to the smart contract)\n // by simply traversing to the next available tick, we instead need to exactly replicate\n // tickBitmap.nextInitializedTickWithinOneWord\n [step.tickNext, step.initialized] = await this.tickDataProvider.nextInitializedTickWithinOneWord(\n state.tick,\n zeroForOne,\n this.tickSpacing,\n );\n\n if (step.tickNext < TickMath.MIN_TICK) {\n step.tickNext = TickMath.MIN_TICK;\n } else if (step.tickNext > TickMath.MAX_TICK) {\n step.tickNext = TickMath.MAX_TICK;\n }\n\n step.sqrtPriceNextX96 = TickMath.getSqrtRatioAtTick(step.tickNext);\n [state.sqrtPriceX96, step.amountIn, step.amountOut, step.feeAmount] = SwapMath.computeSwapStep(\n state.sqrtPriceX96,\n (\n zeroForOne\n ? JSBI.lessThan(step.sqrtPriceNextX96, sqrtPriceLimitX96)\n : JSBI.greaterThan(step.sqrtPriceNextX96, sqrtPriceLimitX96)\n )\n ? sqrtPriceLimitX96\n : step.sqrtPriceNextX96,\n state.liquidity,\n state.amountSpecifiedRemaining,\n this.fee,\n );\n\n if (exactInput) {\n state.amountSpecifiedRemaining = JSBI.subtract(\n state.amountSpecifiedRemaining,\n JSBI.add(step.amountIn, step.feeAmount),\n );\n state.amountCalculated = JSBI.subtract(state.amountCalculated, step.amountOut);\n } else {\n state.amountSpecifiedRemaining = JSBI.add(state.amountSpecifiedRemaining, step.amountOut);\n state.amountCalculated = JSBI.add(state.amountCalculated, JSBI.add(step.amountIn, step.feeAmount));\n }\n\n // TODO\n if (JSBI.equal(state.sqrtPriceX96, step.sqrtPriceNextX96)) {\n // if the tick is initialized, run the tick transition\n if (step.initialized) {\n let liquidityNet = JSBI.BigInt((await this.tickDataProvider.getTick(step.tickNext)).liquidityNet);\n // if we're moving leftward, we interpret liquidityNet as the opposite sign\n // safe because liquidityNet cannot be type(int128).min\n if (zeroForOne) liquidityNet = JSBI.multiply(liquidityNet, NEGATIVE_ONE);\n\n state.liquidity = LiquidityMath.addDelta(state.liquidity, liquidityNet);\n }\n\n state.tick = zeroForOne ? step.tickNext - 1 : step.tickNext;\n } else if (state.sqrtPriceX96 !== step.sqrtPriceStartX96) {\n // recompute unless we're on a lower tick boundary (i.e. already transitioned ticks), and haven't moved\n state.tick = TickMath.getTickAtSqrtRatio(state.sqrtPriceX96);\n }\n }\n\n return {\n amountCalculated: state.amountCalculated,\n sqrtRatioX96: state.sqrtPriceX96,\n liquidity: state.liquidity,\n tickCurrent: state.tick,\n };\n }\n\n public get tickSpacing(): number {\n return TICK_SPACINGS[this.fee];\n }\n}\n","import { Token } from \"../core\";\nimport { FeeAmount } from \"../constants\";\n\n/**\n * Computes a pool address\n * @param token0 The first token of the pair, irrespective of sort order\n * @param token1 The second token of the pair, irrespective of sort order\n * @param fee The fee tier of the pool\n * @returns The pool address\n */\nexport function computePoolAddress({\n tokenA,\n tokenB,\n fee,\n}: {\n tokenA: Token;\n tokenB: Token;\n fee: FeeAmount;\n}): string {\n const [token0, token1] = tokenA.sortsBefore(tokenB)\n ? [tokenA, tokenB]\n : [tokenB, tokenA]; // does safety checks\n\n return `${token0.address}_${token1.address}_${fee}`;\n}\n\nexport function computePoolAddressFromTokenAddress(\n token0Address: string,\n token1Address: string,\n fee: number\n): string | undefined {\n if (!token0Address || !token1Address || !fee) return undefined;\n return `${token0Address}_${token1Address}_${fee}`;\n}\n","import { BigintIsh } from \"../core\";\nimport JSBI from \"jsbi\";\nimport { Q96 } from \"../internalConstants\";\n\n/**\n * Returns an imprecise maximum amount of liquidity received for a given amount of token 0.\n * This function is available to accommodate LiquidityAmounts#getLiquidityForAmount0 in the v3 periphery,\n * which could be more precise by at least 32 bits by dividing by Q64 instead of Q96 in the intermediate step,\n * and shifting the subtracted ratio left by 32 bits. This imprecise calculation will likely be replaced in a future\n * v3 router contract.\n * @param sqrtRatioAX96 The price at the lower boundary\n * @param sqrtRatioBX96 The price at the upper boundary\n * @param amount0 The token0 amount\n * @returns liquidity for amount0, imprecise\n */\nfunction maxLiquidityForAmount0Imprecise(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n amount0: BigintIsh\n): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n const intermediate = JSBI.divide(\n JSBI.multiply(sqrtRatioAX96, sqrtRatioBX96),\n Q96\n );\n return JSBI.divide(\n JSBI.multiply(JSBI.BigInt(amount0), intermediate),\n JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)\n );\n}\n\n/**\n * Returns a precise maximum amount of liquidity received for a given amount of token 0 by dividing by Q64 instead of Q96 in the intermediate step,\n * and shifting the subtracted ratio left by 32 bits.\n * @param sqrtRatioAX96 The price at the lower boundary\n * @param sqrtRatioBX96 The price at the upper boundary\n * @param amount0 The token0 amount\n * @returns liquidity for amount0, precise\n */\nfunction maxLiquidityForAmount0Precise(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n amount0: BigintIsh\n): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n const numerator = JSBI.multiply(\n JSBI.multiply(JSBI.BigInt(amount0), sqrtRatioAX96),\n sqrtRatioBX96\n );\n const denominator = JSBI.multiply(\n Q96,\n JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)\n );\n\n return JSBI.divide(numerator, denominator);\n}\n\n/**\n * Computes the maximum amount of liquidity received for a given amount of token1\n * @param sqrtRatioAX96 The price at the lower tick boundary\n * @param sqrtRatioBX96 The price at the upper tick boundary\n * @param amount1 The token1 amount\n * @returns liquidity for amount1\n */\nfunction maxLiquidityForAmount1(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n amount1: BigintIsh\n): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n return JSBI.divide(\n JSBI.multiply(JSBI.BigInt(amount1), Q96),\n JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)\n );\n}\n\n/**\n * Computes the maximum amount of liquidity received for a given amount of token0, token1,\n * and the prices at the tick boundaries.\n * @param sqrtRatioCurrentX96 the current price\n * @param sqrtRatioAX96 price at lower boundary\n * @param sqrtRatioBX96 price at upper boundary\n * @param amount0 token0 amount\n * @param amount1 token1 amount\n * @param useFullPrecision if false, liquidity will be maximized according to what the router can calculate,\n * not what core can theoretically support\n */\nexport function maxLiquidityForAmounts(\n sqrtRatioCurrentX96: JSBI,\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n amount0: BigintIsh,\n amount1: BigintIsh,\n useFullPrecision: boolean\n): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n const maxLiquidityForAmount0 = useFullPrecision\n ? maxLiquidityForAmount0Precise\n : maxLiquidityForAmount0Imprecise;\n\n if (JSBI.lessThanOrEqual(sqrtRatioCurrentX96, sqrtRatioAX96)) {\n return maxLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0);\n } else if (JSBI.lessThan(sqrtRatioCurrentX96, sqrtRatioBX96)) {\n const liquidity0 = maxLiquidityForAmount0(\n sqrtRatioCurrentX96,\n sqrtRatioBX96,\n amount0\n );\n const liquidity1 = maxLiquidityForAmount1(\n sqrtRatioAX96,\n sqrtRatioCurrentX96,\n amount1\n );\n return JSBI.lessThan(liquidity0, liquidity1) ? liquidity0 : liquidity1;\n } else {\n return maxLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1);\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { BigintIsh, MaxUint256, Percent, Price, CurrencyAmount, Token } from \"../core\";\nimport { ZERO } from \"../internalConstants\";\nimport { maxLiquidityForAmounts } from \"../utils/maxLiquidityForAmounts\";\nimport { tickToPrice } from \"../utils/priceTickConversions\";\nimport { SqrtPriceMath } from \"../utils/sqrtPriceMath\";\nimport { TickMath } from \"../utils/tickMath\";\nimport { encodeSqrtRatioX96 } from \"../utils/encodeSqrtRatioX96\";\nimport { Pool } from \"./pool\";\n\ninterface PositionConstructorArgs {\n pool: Pool;\n tickLower: number;\n tickUpper: number;\n liquidity: BigintIsh;\n}\n\n/**\n * Represents a position on a ICPSwap V3 Pool\n */\nexport class Position {\n public readonly pool: Pool;\n\n public readonly tickLower: number;\n\n public readonly tickUpper: number;\n\n public readonly liquidity: JSBI;\n\n // cached resuts for the getters\n private _token0Amount: CurrencyAmount | null = null;\n\n private _token1Amount: CurrencyAmount | null = null;\n\n private _mintAmounts: Readonly<{ amount0: JSBI; amount1: JSBI }> | null = null;\n\n /**\n * Constructs a position for a given pool with the given liquidity\n * @param pool For which pool the liquidity is assigned\n * @param liquidity The amount of liquidity that is in the position\n * @param tickLower The lower tick of the position\n * @param tickUpper The upper tick of the position\n */\n public constructor({ pool, liquidity, tickLower, tickUpper }: PositionConstructorArgs) {\n invariant(tickLower < tickUpper, \"TICK_ORDER\");\n invariant(tickLower >= TickMath.MIN_TICK && tickLower % pool.tickSpacing === 0, \"TICK_LOWER\");\n invariant(tickUpper <= TickMath.MAX_TICK && tickUpper % pool.tickSpacing === 0, \"TICK_UPPER\");\n\n this.pool = pool;\n this.tickLower = tickLower;\n this.tickUpper = tickUpper;\n this.liquidity = JSBI.BigInt(liquidity);\n }\n\n /**\n * Returns the price of token0 at the lower tick\n */\n public get token0PriceLower(): Price {\n return tickToPrice(this.pool.token0, this.pool.token1, this.tickLower);\n }\n\n /**\n * Returns the price of token0 at the upper tick\n */\n public get token0PriceUpper(): Price {\n return tickToPrice(this.pool.token0, this.pool.token1, this.tickUpper);\n }\n\n /**\n * Returns the amount of token0 that this position's liquidity could be burned for at the current pool price\n */\n public get amount0(): CurrencyAmount {\n if (this._token0Amount === null) {\n if (this.pool.tickCurrent < this.tickLower) {\n this._token0Amount = CurrencyAmount.fromRawAmount(\n this.pool.token0,\n SqrtPriceMath.getAmount0Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n false,\n ),\n );\n } else if (this.pool.tickCurrent < this.tickUpper) {\n this._token0Amount = CurrencyAmount.fromRawAmount(\n this.pool.token0,\n SqrtPriceMath.getAmount0Delta(\n this.pool.sqrtRatioX96,\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n false,\n ),\n );\n } else {\n this._token0Amount = CurrencyAmount.fromRawAmount(this.pool.token0, ZERO);\n }\n }\n return this._token0Amount;\n }\n\n /**\n * Returns the amount of token1 that this position's liquidity could be burned for at the current pool price\n */\n public get amount1(): CurrencyAmount {\n if (this._token1Amount === null) {\n if (this.pool.tickCurrent < this.tickLower) {\n this._token1Amount = CurrencyAmount.fromRawAmount(this.pool.token1, ZERO);\n } else if (this.pool.tickCurrent < this.tickUpper) {\n this._token1Amount = CurrencyAmount.fromRawAmount(\n this.pool.token1,\n SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n this.pool.sqrtRatioX96,\n this.liquidity,\n false,\n ),\n );\n } else {\n this._token1Amount = CurrencyAmount.fromRawAmount(\n this.pool.token1,\n SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n false,\n ),\n );\n }\n }\n return this._token1Amount;\n }\n\n /**\n * Returns the lower and upper sqrt ratios if the price 'slips' up to slippage tolerance percentage\n * @param slippageTolerance The amount by which the price can 'slip' before the transaction will revert\n * @returns The sqrt ratios after slippage\n */\n private ratiosAfterSlippage(slippageTolerance: Percent): {\n sqrtRatioX96Lower: JSBI;\n sqrtRatioX96Upper: JSBI;\n } {\n const priceLower = this.pool.token0Price.asFraction.multiply(new Percent(1).subtract(slippageTolerance));\n const priceUpper = this.pool.token0Price.asFraction.multiply(slippageTolerance.add(1));\n let sqrtRatioX96Lower = encodeSqrtRatioX96(priceLower.numerator, priceLower.denominator);\n if (JSBI.lessThanOrEqual(sqrtRatioX96Lower, TickMath.MIN_SQRT_RATIO)) {\n sqrtRatioX96Lower = JSBI.add(TickMath.MIN_SQRT_RATIO, JSBI.BigInt(1));\n }\n let sqrtRatioX96Upper = encodeSqrtRatioX96(priceUpper.numerator, priceUpper.denominator);\n if (JSBI.greaterThanOrEqual(sqrtRatioX96Upper, TickMath.MAX_SQRT_RATIO)) {\n sqrtRatioX96Upper = JSBI.subtract(TickMath.MAX_SQRT_RATIO, JSBI.BigInt(1));\n }\n return {\n sqrtRatioX96Lower,\n sqrtRatioX96Upper,\n };\n }\n\n /**\n * Returns the minimum amounts that must be sent in order to safely mint the amount of liquidity held by the position\n * with the given slippage tolerance\n * @param slippageTolerance Tolerance of unfavorable slippage from the current price\n * @returns The amounts, with slippage\n */\n public mintAmountsWithSlippage(slippageTolerance: Percent): Readonly<{ amount0: JSBI; amount1: JSBI }> {\n // get lower/upper prices\n const { sqrtRatioX96Upper, sqrtRatioX96Lower } = this.ratiosAfterSlippage(slippageTolerance);\n\n // construct counterfactual pools\n const poolLower = new Pool(\n this.pool.id,\n this.pool.token0,\n this.pool.token1,\n this.pool.fee,\n sqrtRatioX96Lower,\n 0 /* liquidity doesn't matter */,\n TickMath.getTickAtSqrtRatio(sqrtRatioX96Lower),\n );\n const poolUpper = new Pool(\n this.pool.id,\n this.pool.token0,\n this.pool.token1,\n this.pool.fee,\n sqrtRatioX96Upper,\n 0 /* liquidity doesn't matter */,\n TickMath.getTickAtSqrtRatio(sqrtRatioX96Upper),\n );\n\n // because the router is imprecise, we need to calculate the position that will be created (assuming no slippage)\n const positionThatWillBeCreated = Position.fromAmounts({\n pool: this.pool,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n ...this.mintAmounts, // the mint amounts are what will be passed as calldata\n useFullPrecision: false,\n });\n\n // we want the smaller amounts...\n // ...which occurs at the upper price for amount0...\n const { amount0 } = new Position({\n pool: poolUpper,\n liquidity: positionThatWillBeCreated.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n }).mintAmounts;\n // ...and the lower for amount1\n const { amount1 } = new Position({\n pool: poolLower,\n liquidity: positionThatWillBeCreated.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n }).mintAmounts;\n\n return { amount0, amount1 };\n }\n\n /**\n * Returns the minimum amounts that should be requested in order to safely burn the amount of liquidity held by the\n * position with the given slippage tolerance\n * @param slippageTolerance tolerance of unfavorable slippage from the current price\n * @returns The amounts, with slippage\n */\n public burnAmountsWithSlippage(slippageTolerance: Percent): Readonly<{ amount0: JSBI; amount1: JSBI }> {\n // get lower/upper prices\n const { sqrtRatioX96Upper, sqrtRatioX96Lower } = this.ratiosAfterSlippage(slippageTolerance);\n\n // construct counterfactual pools\n const poolLower = new Pool(\n this.pool.id,\n this.pool.token0,\n this.pool.token1,\n this.pool.fee,\n sqrtRatioX96Lower,\n 0 /* liquidity doesn't matter */,\n TickMath.getTickAtSqrtRatio(sqrtRatioX96Lower),\n );\n const poolUpper = new Pool(\n this.pool.id,\n this.pool.token0,\n this.pool.token1,\n this.pool.fee,\n sqrtRatioX96Upper,\n 0 /* liquidity doesn't matter */,\n TickMath.getTickAtSqrtRatio(sqrtRatioX96Upper),\n );\n\n // we want the smaller amounts...\n // ...which occurs at the upper price for amount0...\n const amount0 = new Position({\n pool: poolUpper,\n liquidity: this.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n }).amount0;\n // ...and the lower for amount1\n const amount1 = new Position({\n pool: poolLower,\n liquidity: this.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n }).amount1;\n\n return { amount0: amount0.quotient, amount1: amount1.quotient };\n }\n\n /**\n * Returns the minimum amounts that must be sent in order to mint the amount of liquidity held by the position at\n * the current price for the pool\n */\n public get mintAmounts(): Readonly<{ amount0: JSBI; amount1: JSBI }> {\n if (this._mintAmounts === null) {\n if (this.pool.tickCurrent < this.tickLower) {\n return {\n amount0: SqrtPriceMath.getAmount0Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n true,\n ),\n amount1: ZERO,\n };\n }\n if (this.pool.tickCurrent < this.tickUpper) {\n return {\n amount0: SqrtPriceMath.getAmount0Delta(\n this.pool.sqrtRatioX96,\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n true,\n ),\n amount1: SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n this.pool.sqrtRatioX96,\n this.liquidity,\n true,\n ),\n };\n }\n return {\n amount0: ZERO,\n amount1: SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n true,\n ),\n };\n }\n return this._mintAmounts;\n }\n\n /**\n * Computes the maximum amount of liquidity received for a given amount of token0, token1,\n * and the prices at the tick boundaries.\n * @param pool The pool for which the position should be created\n * @param tickLower The lower tick of the position\n * @param tickUpper The upper tick of the position\n * @param amount0 token0 amount\n * @param amount1 token1 amount\n * @param useFullPrecision If false, liquidity will be maximized according to what the router can calculate,\n * not what core can theoretically support\n * @returns The amount of liquidity for the position\n */\n public static fromAmounts({\n pool,\n tickLower,\n tickUpper,\n amount0,\n amount1,\n useFullPrecision,\n }: {\n pool: Pool;\n tickLower: number;\n tickUpper: number;\n amount0: BigintIsh;\n amount1: BigintIsh;\n useFullPrecision: boolean;\n }) {\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n return new Position({\n pool,\n tickLower,\n tickUpper,\n liquidity: maxLiquidityForAmounts(\n pool.sqrtRatioX96,\n sqrtRatioAX96,\n sqrtRatioBX96,\n amount0,\n amount1,\n useFullPrecision,\n ),\n });\n }\n\n /**\n * Computes a position with the maximum amount of liquidity received for a given amount of token0, assuming an unlimited amount of token1\n * @param pool The pool for which the position is created\n * @param tickLower The lower tick\n * @param tickUpper The upper tick\n * @param amount0 The desired amount of token0\n * @param useFullPrecision If true, liquidity will be maximized according to what the router can calculate,\n * not what core can theoretically support\n * @returns The position\n */\n public static fromAmount0({\n pool,\n tickLower,\n tickUpper,\n amount0,\n useFullPrecision,\n }: {\n pool: Pool;\n tickLower: number;\n tickUpper: number;\n amount0: BigintIsh;\n useFullPrecision: boolean;\n }) {\n return Position.fromAmounts({\n pool,\n tickLower,\n tickUpper,\n amount0,\n amount1: MaxUint256,\n useFullPrecision,\n });\n }\n\n /**\n * Computes a position with the maximum amount of liquidity received for a given amount of token1, assuming an unlimited amount of token0\n * @param pool The pool for which the position is created\n * @param tickLower The lower tick\n * @param tickUpper The upper tick\n * @param amount1 The desired amount of token1\n * @returns The position\n */\n public static fromAmount1({\n pool,\n tickLower,\n tickUpper,\n amount1,\n }: {\n pool: Pool;\n tickLower: number;\n tickUpper: number;\n amount1: BigintIsh;\n }) {\n // this function always uses full precision,\n return Position.fromAmounts({\n pool,\n tickLower,\n tickUpper,\n amount0: MaxUint256,\n amount1,\n useFullPrecision: true,\n });\n }\n}\n","import JSBI from \"jsbi\";\n\n// constants used internally but not expected to be used externally\nexport const NEGATIVE_ONE = JSBI.BigInt(-1);\nexport const ZERO = JSBI.BigInt(0);\nexport const ONE = JSBI.BigInt(1);\n\n// used in liquidity amount math\nexport const Q96 = JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(96));\nexport const Q192 = JSBI.exponentiate(Q96, JSBI.BigInt(2));\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\n\nexport const MAX_SAFE_INTEGER = JSBI.BigInt(Number.MAX_SAFE_INTEGER);\n\nconst ZERO = JSBI.BigInt(0);\nconst ONE = JSBI.BigInt(1);\nconst TWO = JSBI.BigInt(2);\n\n/**\n * Computes floor(sqrt(value))\n * @param value the value for which to compute the square root, rounded down\n */\nexport function sqrt(value: JSBI): JSBI {\n invariant(JSBI.greaterThanOrEqual(value, ZERO), \"NEGATIVE\");\n\n // rely on built in sqrt if possible\n if (JSBI.lessThan(value, MAX_SAFE_INTEGER)) {\n return JSBI.BigInt(Math.floor(Math.sqrt(JSBI.toNumber(value))));\n }\n\n let z: JSBI;\n let x: JSBI;\n z = value;\n x = JSBI.add(JSBI.divide(value, TWO), ONE);\n while (JSBI.lessThan(x, z)) {\n z = x;\n x = JSBI.divide(JSBI.add(JSBI.divide(value, x), x), TWO);\n }\n return z;\n}\n","import JSBI from \"jsbi\";\nimport { BigintIsh, sqrt } from \"../core\";\n\n/**\n * Returns the sqrt ratio as a Q64.96 corresponding to a given ratio of amount1 and amount0\n * @param amount1 The numerator amount i.e., the amount of token1\n * @param amount0 The denominator amount i.e., the amount of token0\n * @returns The sqrt ratio\n */\n\nexport function encodeSqrtRatioX96(\n amount1: BigintIsh,\n amount0: BigintIsh\n): JSBI {\n const numerator = JSBI.leftShift(JSBI.BigInt(amount1), JSBI.BigInt(192));\n const denominator = JSBI.BigInt(amount0);\n const ratioX192 = JSBI.divide(numerator, denominator);\n return sqrt(ratioX192);\n}\n","import JSBI from \"jsbi\";\nimport { ONE, ZERO } from \"../internalConstants\";\n\nexport abstract class FullMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n public static mulDivRoundingUp(a: JSBI, b: JSBI, denominator: JSBI): JSBI {\n const product = JSBI.multiply(a, b);\n let result = JSBI.divide(product, denominator);\n if (JSBI.notEqual(JSBI.remainder(product, denominator), ZERO)) result = JSBI.add(result, ONE);\n return result;\n }\n}\n","import invariant from \"tiny-invariant\";\n\nimport { TickMath } from \"./tickMath\";\n\n/**\n * Returns the closest tick that is nearest a given tick and usable for the given tick spacing\n * @param tick the target tick\n * @param tickSpacing the spacing of the pool\n */\nexport function nearestUsableTick(tick: number, tickSpacing: number) {\n invariant(Number.isInteger(tick) && Number.isInteger(tickSpacing), \"INTEGERS\");\n invariant(tickSpacing > 0, \"TICK_SPACING\");\n invariant(tick >= TickMath.MIN_TICK && tick <= TickMath.MAX_TICK, \"TICK_BOUND\");\n const rounded = Math.round(tick / tickSpacing) * tickSpacing;\n if (rounded < TickMath.MIN_TICK) return rounded + tickSpacing;\n if (rounded > TickMath.MAX_TICK) return rounded - tickSpacing;\n return rounded;\n}\n\nexport function availableTick(tick: number) {\n if (tick > TickMath.MAX_TICK) return TickMath.MAX_TICK;\n if (tick < TickMath.MIN_TICK) return TickMath.MIN_TICK;\n\n return tick;\n}\n","import { Price, Token } from \"../core\";\nimport JSBI from \"jsbi\";\nimport { Q192 } from \"../internalConstants\";\nimport { encodeSqrtRatioX96 } from \"./encodeSqrtRatioX96\";\nimport { TickMath } from \"./tickMath\";\n\n/**\n * Returns a price object corresponding to the input tick and the base/quote token\n * Inputs must be tokens because the address order is used to interpret the price represented by the tick\n * @param baseToken the base token of the price\n * @param quoteToken the quote token of the price\n * @param tick the tick for which to return the price\n */\nexport function tickToPrice(\n baseToken: Token,\n quoteToken: Token,\n tick: number\n): Price {\n const sqrtRatioX96 = TickMath.getSqrtRatioAtTick(tick);\n\n const ratioX192 = JSBI.multiply(sqrtRatioX96, sqrtRatioX96);\n\n return baseToken.sortsBefore(quoteToken)\n ? new Price(baseToken, quoteToken, Q192, ratioX192)\n : new Price(baseToken, quoteToken, ratioX192, Q192);\n}\n\n/**\n * Returns the first tick for which the given price is greater than or equal to the tick price\n * @param price for which to return the closest tick that represents a price less than or equal to the input price,\n * i.e. the price of the returned tick is less than or equal to the input price\n */\nexport function priceToClosestTick(price: Price): number {\n const sorted = price.baseCurrency.sortsBefore(price.quoteCurrency);\n\n const sqrtRatioX96 = sorted\n ? encodeSqrtRatioX96(price.numerator, price.denominator)\n : encodeSqrtRatioX96(price.denominator, price.numerator);\n\n let tick = TickMath.getTickAtSqrtRatio(sqrtRatioX96);\n const nextTickPrice = tickToPrice(\n price.baseCurrency,\n price.quoteCurrency,\n tick + 1\n );\n if (sorted) {\n if (!price.lessThan(nextTickPrice)) {\n tick++;\n }\n } else {\n if (!price.greaterThan(nextTickPrice)) {\n tick++;\n }\n }\n return tick;\n}\n","import { MaxUint256 } from \"../core/constants\";\nimport JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { ONE, ZERO, Q96 } from \"../internalConstants\";\nimport { FullMath } from \"./fullMath\";\n\nconst MaxUint160 = JSBI.subtract(\n JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(160)),\n ONE\n);\n\nfunction multiplyIn256(x: JSBI, y: JSBI): JSBI {\n const product = JSBI.multiply(x, y);\n return JSBI.bitwiseAnd(product, MaxUint256);\n}\n\nfunction addIn256(x: JSBI, y: JSBI): JSBI {\n const sum = JSBI.add(x, y);\n return JSBI.bitwiseAnd(sum, MaxUint256);\n}\n\nexport abstract class SqrtPriceMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n public static getAmount0Delta(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n liquidity: JSBI,\n roundUp: boolean\n ): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n const numerator1 = JSBI.leftShift(liquidity, JSBI.BigInt(96));\n const numerator2 = JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96);\n\n return roundUp\n ? FullMath.mulDivRoundingUp(\n FullMath.mulDivRoundingUp(numerator1, numerator2, sqrtRatioBX96),\n ONE,\n sqrtRatioAX96\n )\n : JSBI.divide(\n JSBI.divide(JSBI.multiply(numerator1, numerator2), sqrtRatioBX96),\n sqrtRatioAX96\n );\n }\n\n public static getAmount1Delta(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n liquidity: JSBI,\n roundUp: boolean\n ): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n return roundUp\n ? FullMath.mulDivRoundingUp(\n liquidity,\n JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96),\n Q96\n )\n : JSBI.divide(\n JSBI.multiply(liquidity, JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)),\n Q96\n );\n }\n\n public static getNextSqrtPriceFromInput(\n sqrtPX96: JSBI,\n liquidity: JSBI,\n amountIn: JSBI,\n zeroForOne: boolean\n ): JSBI {\n invariant(\n JSBI.greaterThan(sqrtPX96, ZERO),\n \"Get Next Sqrt Price From Input\"\n );\n invariant(\n JSBI.greaterThan(liquidity, ZERO),\n \"Get Next Sqrt Price From Input\"\n );\n\n return zeroForOne\n ? this.getNextSqrtPriceFromAmount0RoundingUp(\n sqrtPX96,\n liquidity,\n amountIn,\n true\n )\n : this.getNextSqrtPriceFromAmount1RoundingDown(\n sqrtPX96,\n liquidity,\n amountIn,\n true\n );\n }\n\n public static getNextSqrtPriceFromOutput(\n sqrtPX96: JSBI,\n liquidity: JSBI,\n amountOut: JSBI,\n zeroForOne: boolean\n ): JSBI {\n invariant(JSBI.greaterThan(sqrtPX96, ZERO), \"getNextSqrtPriceFromOutput\");\n invariant(JSBI.greaterThan(liquidity, ZERO), \"getNextSqrtPriceFromOutput\");\n\n return zeroForOne\n ? this.getNextSqrtPriceFromAmount1RoundingDown(\n sqrtPX96,\n liquidity,\n amountOut,\n false\n )\n : this.getNextSqrtPriceFromAmount0RoundingUp(\n sqrtPX96,\n liquidity,\n amountOut,\n false\n );\n }\n\n private static getNextSqrtPriceFromAmount0RoundingUp(\n sqrtPX96: JSBI,\n liquidity: JSBI,\n amount: JSBI,\n add: boolean\n ): JSBI {\n if (JSBI.equal(amount, ZERO)) return sqrtPX96;\n const numerator1 = JSBI.leftShift(liquidity, JSBI.BigInt(96));\n\n if (add) {\n let product = multiplyIn256(amount, sqrtPX96);\n if (JSBI.equal(JSBI.divide(product, amount), sqrtPX96)) {\n const denominator = addIn256(numerator1, product);\n if (JSBI.greaterThanOrEqual(denominator, numerator1)) {\n return FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator);\n }\n }\n\n return FullMath.mulDivRoundingUp(\n numerator1,\n ONE,\n JSBI.add(JSBI.divide(numerator1, sqrtPX96), amount)\n );\n } else {\n let product = multiplyIn256(amount, sqrtPX96);\n\n invariant(\n JSBI.equal(JSBI.divide(product, amount), sqrtPX96),\n \"getNextSqrtPriceFromAmount0RoundingUp\"\n );\n invariant(\n JSBI.greaterThan(numerator1, product),\n \"getNextSqrtPriceFromAmount0RoundingUp\"\n );\n const denominator = JSBI.subtract(numerator1, product);\n return FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator);\n }\n }\n\n private static getNextSqrtPriceFromAmount1RoundingDown(\n sqrtPX96: JSBI,\n liquidity: JSBI,\n amount: JSBI,\n add: boolean\n ): JSBI {\n if (add) {\n const quotient = JSBI.lessThanOrEqual(amount, MaxUint160)\n ? JSBI.divide(JSBI.leftShift(amount, JSBI.BigInt(96)), liquidity)\n : JSBI.divide(JSBI.multiply(amount, Q96), liquidity);\n\n return JSBI.add(sqrtPX96, quotient);\n } else {\n const quotient = FullMath.mulDivRoundingUp(amount, Q96, liquidity);\n\n invariant(\n JSBI.greaterThan(sqrtPX96, quotient),\n \"getNextSqrtPriceFromAmount1RoundingDown\"\n );\n return JSBI.subtract(sqrtPX96, quotient);\n }\n }\n}\n","import { MaxUint256 } from \"../core/constants\";\nimport JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { ZERO } from \"../internalConstants\";\n\nconst TWO = JSBI.BigInt(2);\nconst POWERS_OF_2 = [128, 64, 32, 16, 8, 4, 2, 1].map(\n (pow: number): [number, JSBI] => [\n pow,\n JSBI.exponentiate(TWO, JSBI.BigInt(pow)),\n ]\n);\n\nexport function mostSignificantBit(x: JSBI): number {\n invariant(JSBI.greaterThan(x, ZERO), \"ZERO\");\n invariant(JSBI.lessThanOrEqual(x, MaxUint256), \"MAX\");\n\n let msb: number = 0;\n for (const [power, min] of POWERS_OF_2) {\n if (JSBI.greaterThanOrEqual(x, min)) {\n x = JSBI.signedRightShift(x, JSBI.BigInt(power));\n msb += power;\n }\n }\n return msb;\n}\n","import { MaxUint256 } from \"../core/constants\";\nimport JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { ONE, ZERO } from \"../internalConstants\";\nimport { mostSignificantBit } from \"./mostSignificantBit\";\n\nfunction mulShift(val: JSBI, mulBy: string): JSBI {\n return JSBI.signedRightShift(\n JSBI.multiply(val, JSBI.BigInt(mulBy)),\n JSBI.BigInt(128)\n );\n}\n\nconst Q32 = JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(32));\n\nexport abstract class TickMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n /**\n * The minimum tick that can be used on any pool.\n */\n public static MIN_TICK: number = -887272;\n /**\n * The maximum tick that can be used on any pool.\n */\n public static MAX_TICK: number = -TickMath.MIN_TICK;\n\n /**\n * The sqrt ratio corresponding to the minimum tick that could be used on any pool.\n */\n public static MIN_SQRT_RATIO: JSBI = JSBI.BigInt(\"4295128739\");\n /**\n * The sqrt ratio corresponding to the maximum tick that could be used on any pool.\n */\n public static MAX_SQRT_RATIO: JSBI = JSBI.BigInt(\n \"1461446703485210103287273052203988822378723970342\"\n );\n\n /**\n * Returns the sqrt ratio as a Q64.96 for the given tick. The sqrt ratio is computed as sqrt(1.0001)^tick\n * @param tick the tick for which to compute the sqrt ratio\n */\n public static getSqrtRatioAtTick(tick: number): JSBI {\n invariant(\n tick >= TickMath.MIN_TICK &&\n tick <= TickMath.MAX_TICK &&\n Number.isInteger(tick),\n \"TICK\"\n );\n const absTick: number = tick < 0 ? tick * -1 : tick;\n\n let ratio: JSBI =\n (absTick & 0x1) != 0\n ? JSBI.BigInt(\"0xfffcb933bd6fad37aa2d162d1a594001\")\n : JSBI.BigInt(\"0x100000000000000000000000000000000\");\n if ((absTick & 0x2) != 0)\n ratio = mulShift(ratio, \"0xfff97272373d413259a46990580e213a\");\n if ((absTick & 0x4) != 0)\n ratio = mulShift(ratio, \"0xfff2e50f5f656932ef12357cf3c7fdcc\");\n if ((absTick & 0x8) != 0)\n ratio = mulShift(ratio, \"0xffe5caca7e10e4e61c3624eaa0941cd0\");\n if ((absTick & 0x10) != 0)\n ratio = mulShift(ratio, \"0xffcb9843d60f6159c9db58835c926644\");\n if ((absTick & 0x20) != 0)\n ratio = mulShift(ratio, \"0xff973b41fa98c081472e6896dfb254c0\");\n if ((absTick & 0x40) != 0)\n ratio = mulShift(ratio, \"0xff2ea16466c96a3843ec78b326b52861\");\n if ((absTick & 0x80) != 0)\n ratio = mulShift(ratio, \"0xfe5dee046a99a2a811c461f1969c3053\");\n if ((absTick & 0x100) != 0)\n ratio = mulShift(ratio, \"0xfcbe86c7900a88aedcffc83b479aa3a4\");\n if ((absTick & 0x200) != 0)\n ratio = mulShift(ratio, \"0xf987a7253ac413176f2b074cf7815e54\");\n if ((absTick & 0x400) != 0)\n ratio = mulShift(ratio, \"0xf3392b0822b70005940c7a398e4b70f3\");\n if ((absTick & 0x800) != 0)\n ratio = mulShift(ratio, \"0xe7159475a2c29b7443b29c7fa6e889d9\");\n if ((absTick & 0x1000) != 0)\n ratio = mulShift(ratio, \"0xd097f3bdfd2022b8845ad8f792aa5825\");\n if ((absTick & 0x2000) != 0)\n ratio = mulShift(ratio, \"0xa9f746462d870fdf8a65dc1f90e061e5\");\n if ((absTick & 0x4000) != 0)\n ratio = mulShift(ratio, \"0x70d869a156d2a1b890bb3df62baf32f7\");\n if ((absTick & 0x8000) != 0)\n ratio = mulShift(ratio, \"0x31be135f97d08fd981231505542fcfa6\");\n if ((absTick & 0x10000) != 0)\n ratio = mulShift(ratio, \"0x9aa508b5b7a84e1c677de54f3e99bc9\");\n if ((absTick & 0x20000) != 0)\n ratio = mulShift(ratio, \"0x5d6af8dedb81196699c329225ee604\");\n if ((absTick & 0x40000) != 0)\n ratio = mulShift(ratio, \"0x2216e584f5fa1ea926041bedfe98\");\n if ((absTick & 0x80000) != 0)\n ratio = mulShift(ratio, \"0x48a170391f7dc42444e8fa2\");\n\n if (tick > 0) ratio = JSBI.divide(MaxUint256, ratio);\n\n // back to Q96\n return JSBI.greaterThan(JSBI.remainder(ratio, Q32), ZERO)\n ? JSBI.add(JSBI.divide(ratio, Q32), ONE)\n : JSBI.divide(ratio, Q32);\n }\n\n /**\n * Returns the tick corresponding to a given sqrt ratio, s.t. #getSqrtRatioAtTick(tick) <= sqrtRatioX96\n * and #getSqrtRatioAtTick(tick + 1) > sqrtRatioX96\n * @param sqrtRatioX96 the sqrt ratio as a Q64.96 for which to compute the tick\n */\n public static getTickAtSqrtRatio(sqrtRatioX96: JSBI): number {\n invariant(\n JSBI.greaterThanOrEqual(sqrtRatioX96, TickMath.MIN_SQRT_RATIO) &&\n JSBI.lessThan(sqrtRatioX96, TickMath.MAX_SQRT_RATIO),\n \"SQRT_RATIO\"\n );\n\n const sqrtRatioX128 = JSBI.leftShift(sqrtRatioX96, JSBI.BigInt(32));\n\n const msb = mostSignificantBit(sqrtRatioX128);\n\n let r: JSBI;\n if (JSBI.greaterThanOrEqual(JSBI.BigInt(msb), JSBI.BigInt(128))) {\n r = JSBI.signedRightShift(sqrtRatioX128, JSBI.BigInt(msb - 127));\n } else {\n r = JSBI.leftShift(sqrtRatioX128, JSBI.BigInt(127 - msb));\n }\n\n let log_2: JSBI = JSBI.leftShift(\n JSBI.subtract(JSBI.BigInt(msb), JSBI.BigInt(128)),\n JSBI.BigInt(64)\n );\n\n for (let i = 0; i < 14; i++) {\n r = JSBI.signedRightShift(JSBI.multiply(r, r), JSBI.BigInt(127));\n const f = JSBI.signedRightShift(r, JSBI.BigInt(128));\n log_2 = JSBI.bitwiseOr(log_2, JSBI.leftShift(f, JSBI.BigInt(63 - i)));\n r = JSBI.signedRightShift(r, f);\n }\n\n const log_sqrt10001 = JSBI.multiply(\n log_2,\n JSBI.BigInt(\"255738958999603826347141\")\n );\n\n const tickLow = JSBI.toNumber(\n JSBI.signedRightShift(\n JSBI.subtract(\n log_sqrt10001,\n JSBI.BigInt(\"3402992956809132418596140100660247210\")\n ),\n JSBI.BigInt(128)\n )\n );\n const tickHigh = JSBI.toNumber(\n JSBI.signedRightShift(\n JSBI.add(\n log_sqrt10001,\n JSBI.BigInt(\"291339464771989622907027621153398088495\")\n ),\n JSBI.BigInt(128)\n )\n );\n\n return tickLow === tickHigh\n ? tickLow\n : JSBI.lessThanOrEqual(\n TickMath.getSqrtRatioAtTick(tickHigh),\n sqrtRatioX96\n )\n ? tickHigh\n : tickLow;\n }\n}\n","import { BigNumber } from \"bignumber.js\";\nimport { Override, ActorIdentity, StatusResult, PaginationResult } from \"@icpswap/types\";\nimport { ActorSubclass } from \"@dfinity/agent\";\nimport { Principal } from \"@dfinity/principal\";\nimport type { TokenTransaction } from \"@icpswap/types\";\nimport {\n TokenHolder,\n BalanceRequest as _BalanceRequest,\n TokenTransferRequest as _TransferRequest,\n SetFeeToRequest as _SetFeeToRequest,\n TransactionRequest as _TransactionRequest,\n Transaction,\n TokenAllowanceRequest,\n TokenApproveRequest,\n Metadata,\n} from \"./types\";\n\nexport type BaseTokenRequestNoParams = {\n canisterId: string;\n};\n\nexport type BaseTokenRequest = {\n canisterId: string;\n params: T;\n};\n\nexport type BaseTokenIdentityRequest = {\n canisterId: string;\n params: T;\n identity: ActorIdentity;\n};\n\nexport type BaseTokenResult = Promise>;\n\nexport interface TotalHoldersRequest {\n canisterId: string;\n}\n\nexport type TotalHoldersResult = BaseTokenResult;\n\nexport type HoldersRequest = BaseTokenRequest<{\n offset: bigint;\n limit: bigint;\n}>;\nexport type HoldersResult = BaseTokenResult>;\n\nexport type SupplyRequest = { canisterId: string };\nexport type SupplyResult = Promise>;\n\nexport type BalanceRequest = BaseTokenRequest<_BalanceRequest>;\nexport type BalanceResult = Promise>;\n\nexport type TransferRequest = BaseTokenIdentityRequest<_TransferRequest>;\nexport type TransferResult = BaseTokenResult;\n\nexport type GetFeeRequest = BaseTokenRequestNoParams;\nexport type GetFeeResult = BaseTokenResult;\nexport type SetFeeRequest = BaseTokenIdentityRequest;\nexport type SetFeeResult = BaseTokenResult;\nexport type SetFeeToRequest = BaseTokenIdentityRequest<_SetFeeToRequest>;\nexport type SetFeeToResult = BaseTokenResult;\n\nexport type TransactionRequest = BaseTokenRequest<\n Override<\n _TransactionRequest,\n {\n capId?: string;\n getCapRootId?: (canisterId: string) => Promise;\n getCapUserTransactions?: (\n canisterId: string,\n principal: Principal,\n witness: boolean,\n offset: number,\n ) => Promise<{\n totalElements: number;\n offset: number;\n limit: number;\n content: TokenTransaction[];\n }>;\n getCapTransactions?: (\n canisterId: string,\n witness: boolean,\n offset: number,\n ) => Promise<{\n totalElements: number;\n offset: number;\n limit: number;\n content: TokenTransaction[];\n }>;\n witness?: boolean;\n }\n >\n>;\nexport type TransactionResult = BaseTokenResult>;\n\nexport type ApproveRequest = BaseTokenIdentityRequest;\nexport type ApproveResult = BaseTokenResult;\nexport type AllowanceRequest = BaseTokenRequest;\nexport type AllowanceResult = BaseTokenResult;\n\nexport type MetadataRequest = BaseTokenRequestNoParams;\nexport type MetadataResult = BaseTokenResult;\n\nexport type SetLogoRequest = BaseTokenIdentityRequest;\nexport type SetLogoResult = BaseTokenResult;\nexport type LogoRequest = BaseTokenRequestNoParams;\nexport type LogoResult = BaseTokenResult;\n\nexport type ActualReceivedByTransferRequest = {\n amount: BigNumber;\n fee: BigNumber;\n canisterId: string;\n};\nexport type ActualReceivedByTransferResult = BigNumber;\n\nexport abstract class BaseTokenAdapter {\n public readonly actor: (canister?: string, identity?: ActorIdentity) => Promise>;\n\n constructor({ actor }: { actor: (canister?: string, identity?: ActorIdentity) => Promise> }) {\n this.actor = actor;\n }\n\n public abstract totalHolders({ canisterId }: TotalHoldersRequest): TotalHoldersResult;\n\n public abstract holders({ canisterId, params }: HoldersRequest): HoldersResult;\n\n public abstract supply({ canisterId }: SupplyRequest): SupplyResult;\n\n public abstract balance({ canisterId, params }: BalanceRequest): BalanceResult;\n\n public abstract transfer(request: TransferRequest): TransferResult;\n\n public abstract setFee(request: SetFeeRequest): SetFeeResult;\n\n public abstract setFeeTo(request: SetFeeToRequest): SetFeeToResult;\n\n public abstract transactions(request: TransactionRequest): TransactionResult;\n\n public abstract approve(request: ApproveRequest): ApproveResult;\n\n public abstract allowance(request: AllowanceRequest): AllowanceResult;\n\n public abstract metadata(request: MetadataRequest): MetadataResult;\n\n public abstract actualReceivedByTransfer(request: ActualReceivedByTransferRequest): ActualReceivedByTransferResult;\n\n public abstract getMintingAccount({\n canisterId,\n }: {\n canisterId: string;\n }): BaseTokenResult<{ owner: string; sub: number[] | undefined }>;\n}\n","import { resultFormat } from \"@icpswap/utils\";\nimport { PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { dip20, dip20BalanceActor, dip20SupplyActor } from \"@icpswap/actor\";\nimport { Principal } from \"@dfinity/principal\";\nimport { DIP20, type DIP20TokenInfo } from \"@icpswap/candid\";\nimport { TokenHolder, Transaction, DIP20Metadata, Metadata } from \"./types\";\nimport {\n BaseTokenAdapter,\n HoldersRequest,\n TotalHoldersRequest,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n SetFeeRequest,\n SetFeeToRequest,\n GetFeeRequest,\n TransactionRequest,\n ApproveRequest,\n AllowanceRequest,\n MetadataRequest,\n SetLogoRequest,\n ActualReceivedByTransferRequest,\n BaseTokenResult,\n} from \"./BaseTokenAdapter\";\n\nexport class DIP20TokenAdapter extends BaseTokenAdapter {\n public async holders({ canisterId, params }: HoldersRequest) {\n const totalHolder = (await this.totalHolders({ canisterId })).data;\n\n if (totalHolder) {\n const _holders = (await (await this.actor(canisterId)).getHolders(params.offset, params.limit)) as Array<\n [Principal, bigint]\n >;\n\n const holders = _holders.map((holder) => {\n return {\n balance: holder[1],\n account: holder[0].toString(),\n };\n }) as TokenHolder[];\n\n return {\n status: ResultStatus.OK,\n message: \"\",\n data: {\n content: holders,\n totalElements: Number(totalHolder),\n limit: Number(params.limit),\n offset: Number(params.offset),\n } as PaginationResult,\n };\n }\n\n return {\n status: ResultStatus.OK,\n data: {\n content: [] as TokenHolder[],\n totalElements: 0,\n limit: 10,\n offset: 0,\n } as PaginationResult,\n message: \"\",\n };\n }\n\n public async totalHolders({ canisterId }: TotalHoldersRequest) {\n let tokenInfo: null | DIP20TokenInfo = null;\n\n try {\n tokenInfo = (await (await this.actor(canisterId)).getTokenInfo()) as DIP20TokenInfo;\n return resultFormat(tokenInfo.holderNumber);\n } catch (error) {\n console.error(error);\n }\n\n return resultFormat(undefined);\n }\n\n public async supply({ canisterId }: SupplyRequest) {\n try {\n return resultFormat(await (await this.actor(canisterId)).totalSupply());\n } catch (error) {\n console.error(error);\n return resultFormat(await (await dip20SupplyActor(canisterId)).totalSupply());\n }\n }\n\n public async balance({ canisterId, params }: BalanceRequest) {\n if (params.user.principal) {\n // DIP20 not support subaccount balance\n if (params.subaccount) {\n return resultFormat(BigInt(0));\n }\n\n let balance = BigInt(0);\n\n try {\n balance = (await (await this.actor(canisterId)).balanceOf(params.user.principal)) as bigint;\n } catch (error) {\n console.error(error);\n balance = (await (await dip20BalanceActor(canisterId)).balanceOf(params.user.principal)) as bigint;\n }\n\n return resultFormat(balance);\n }\n\n return resultFormat(BigInt(0));\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.principal) throw Error(\"no user principal\");\n\n const result = await (await this.actor(canisterId, identity)).transfer(params.to.principal, params.amount);\n return resultFormat(result);\n }\n\n public async getFee({ canisterId }: GetFeeRequest) {\n const metadata = await (await this.actor(canisterId)).getMetadata();\n return resultFormat(metadata.fee);\n }\n\n public async setFee({ canisterId, identity, params }: SetFeeRequest) {\n return resultFormat(await (await this.actor(canisterId, identity)).setFee(params));\n }\n\n public async setFeeTo({ canisterId, identity, params }: SetFeeToRequest) {\n if (!params.principal) throw Error(\"no principal\");\n return resultFormat(await (await this.actor(canisterId, identity)).setFeeTo(params.principal));\n }\n\n public async transactions({ canisterId, params }: TransactionRequest) {\n return resultFormat>({\n Ok: {\n content: [],\n totalElements: BigInt(0),\n offset: BigInt(0),\n limit: BigInt(10),\n },\n });\n }\n\n public async approve({ canisterId, params, identity }: ApproveRequest) {\n // 10 times approve amount to fix dip20 insufficient allowance amount\n // TODO: A better way to fix it\n return resultFormat(\n await (await this.actor(canisterId, identity)).approve(params.spender, params.allowance * BigInt(10)),\n );\n }\n\n public async allowance({ canisterId, params }: AllowanceRequest) {\n if (!params.owner.principal) {\n throw Error(\"no principal\");\n }\n\n return resultFormat(await (await this.actor(canisterId)).allowance(params.owner.principal, params.spender));\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n const metadata = (await (await this.actor(canisterId)).getMetadata()) as DIP20Metadata;\n\n return {\n status: ResultStatus.OK,\n data: {\n decimals: metadata.decimals,\n metadata: [],\n name: metadata.name,\n symbol: metadata.symbol,\n logo: metadata.logo,\n fee: metadata.fee,\n } as Metadata,\n message: \"\",\n };\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async getMintingAccount({\n canisterId,\n }: {\n canisterId: string;\n }): BaseTokenResult<{ owner: string; sub: number[] | undefined }> {\n return {\n status: ResultStatus.OK,\n data: undefined,\n message: \"\",\n };\n }\n}\n\nexport const DIP20Adapter = new DIP20TokenAdapter({\n actor: dip20,\n});\n","import { dip20 } from \"@icpswap/actor\";\nimport { DIP20TokenAdapter } from \"./DIP20Adapter\";\n\nexport class DIP20WICPTokenAdapter extends DIP20TokenAdapter {}\n\nexport const DIP20WICPAdapter = new DIP20WICPTokenAdapter({\n actor: dip20,\n});\n","import { dip20 } from \"@icpswap/actor\";\nimport { DIP20TokenAdapter } from \"./DIP20Adapter\";\n\nexport class DIP20XTCTokenAdapter extends DIP20TokenAdapter {}\n\nexport const DIP20XTCAdapter = new DIP20XTCTokenAdapter({\n actor: dip20,\n});\n","import { resultFormat, availableArgsNull, principalToAccount, isOkSubAccount, isBigIntMemo } from \"@icpswap/utils\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\nimport { PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { ext } from \"@icpswap/actor\";\nimport { EXTToken, TokenUser } from \"@icpswap/candid\";\nimport { TokenHolder, Transaction, Metadata } from \"./types\";\nimport {\n BaseTokenAdapter,\n HoldersRequest,\n TotalHoldersRequest,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n SetFeeRequest,\n SetFeeToRequest,\n TransactionRequest,\n ApproveRequest,\n AllowanceRequest,\n MetadataRequest,\n SetLogoRequest,\n ActualReceivedByTransferRequest,\n BaseTokenResult,\n} from \"./BaseTokenAdapter\";\n\nexport class EXTTokenAdapter extends BaseTokenAdapter {\n public async holders({ canisterId, params }: HoldersRequest) {\n return resultFormat>(\n await (\n await this.actor(canisterId)\n ).holders({\n offset: [params.offset],\n limit: [params.limit],\n }),\n );\n }\n\n public async totalHolders({ canisterId }: TotalHoldersRequest) {\n return resultFormat(await (await this.actor(canisterId)).totalHolders());\n }\n\n public async supply({ canisterId }: SupplyRequest) {\n return resultFormat(await (await this.actor(canisterId)).supply());\n }\n\n public async balance({ canisterId, params }: BalanceRequest) {\n if (!params.user.address && !params.user.principal) throw Error(\"no user address or principal\");\n\n let address = \"\";\n\n if (params.user.principal) {\n const sub = params.subaccount ? SubAccount.fromBytes(Uint8Array.from(params.subaccount)) : undefined;\n address = principalToAccount(params.user.principal.toString(), isOkSubAccount(sub) ? sub : undefined);\n } else if (params.user.address) {\n address = params.user.address;\n }\n\n return resultFormat(\n await (\n await this.actor(canisterId)\n ).balance({\n token: params.token,\n user: { address },\n }),\n );\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.address && !params.to.principal) throw Error(\"No to address or principal\");\n if (!params.from.address && !params.from.principal) throw Error(\"No from address or principal\");\n if (isBigIntMemo(params.memo)) throw Error(\"Can't support bigint (memo)\");\n\n const subaccount = params.subaccount ? SubAccount.fromBytes(Uint8Array.from(params.subaccount)) : undefined;\n\n return resultFormat(\n await (\n await this.actor(canisterId, identity)\n ).transfer({\n token: params.token ?? \"\",\n to: params.to.principal\n ? params.subaccount\n ? {\n address: principalToAccount(\n params.to.principal.toString(),\n isOkSubAccount(subaccount) ? subaccount : undefined,\n ),\n }\n : { address: principalToAccount(params.to.principal.toString()) }\n : { address: params.to.address as string },\n from: params.from.principal\n ? { address: principalToAccount(params.from.principal.toString()) }\n : { address: params.from.address as string },\n memo: params.memo ? params.memo : [],\n subaccount: availableArgsNull(undefined),\n nonce: availableArgsNull(params.nonce),\n amount: params.amount,\n notify: params.notify ?? true,\n }),\n );\n }\n\n public async setFee({ canisterId, identity, params }: SetFeeRequest) {\n return resultFormat(await (await this.actor(canisterId, identity)).setFee(params));\n }\n\n public async setFeeTo({ canisterId, identity, params }: SetFeeToRequest) {\n if (!params.address) throw Error(\"no user address\");\n\n return resultFormat(await (await this.actor(canisterId, identity)).setFeeTo({ address: params.address }));\n }\n\n public async transactions({ canisterId, params }: TransactionRequest) {\n let cap_id = params.capId;\n\n if (!cap_id) {\n const extensions = await this.extensions({ canisterId });\n\n if (extensions.includes(\"@ext/cap\")) {\n cap_id = (await params.getCapRootId(canisterId))?.toString();\n }\n }\n\n if (cap_id) {\n if (!params.offset && params.offset !== 0) throw Error(\"no cap offset\");\n\n if (params.user?.principal) {\n return resultFormat>(\n await params.getCapUserTransactions(cap_id, params.user?.principal, params.witness ?? false, params.offset),\n );\n }\n\n return resultFormat>(\n await params.getCapTransactions(cap_id, params.witness ?? false, params.offset),\n );\n }\n\n return resultFormat>(\n await (\n await this.actor(canisterId)\n ).transactions({\n hash: availableArgsNull(params.hash),\n user: availableArgsNull(params.user?.address ? { address: params.user.address } : undefined),\n offset: availableArgsNull(params.offset ? BigInt(params.offset) : null),\n limit: availableArgsNull(params.limit ? BigInt(params.limit) : null),\n index: availableArgsNull(params.index ? BigInt(params.index) : null),\n }),\n );\n }\n\n public async approve({ canisterId, params, identity }: ApproveRequest) {\n return resultFormat(\n await (\n await this.actor(canisterId, identity)\n ).approve({\n subaccount: params.subaccount ? [Array.from(params.subaccount)] : [],\n spender: params.spender,\n allowance: BigInt(Number.MAX_VALUE),\n }),\n );\n }\n\n public async allowance({ canisterId, params }: AllowanceRequest) {\n if (!params.owner.address && !params.owner.principal) throw Error(\"no owner address or principal\");\n\n return resultFormat(\n await (\n await this.actor(canisterId)\n ).allowance({\n owner: params.owner.address ? { address: params.owner.address } : { principal: params.owner.principal! },\n subaccount: params.subaccount ? [Array.from(params.subaccount)] : [],\n spender: params.spender,\n }),\n );\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n const metadata = resultFormat<{\n fungible: Metadata;\n }>(await (await this.actor(canisterId)).metadata()).data?.fungible;\n const logo = resultFormat(await (await this.actor(canisterId)).logo()).data;\n const fee = resultFormat(await (await this.actor(canisterId)).getFee()).data;\n\n return {\n status: ResultStatus.OK,\n data: {\n ...metadata,\n logo,\n fee,\n } as Metadata,\n message: \"\",\n };\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async extensions({ canisterId }: { canisterId: string }) {\n return await (await this.actor(canisterId)).extensions();\n }\n\n public async getMintingAccount({\n canisterId,\n }: {\n canisterId: string;\n }): BaseTokenResult<{ owner: string; sub: number[] | undefined }> {\n return {\n status: ResultStatus.OK,\n data: undefined,\n message: \"\",\n };\n }\n}\n\nexport const EXTAdapter = new EXTTokenAdapter({\n actor: ext,\n});\n","import { resultFormat, availableArgsNull, isBigIntMemo } from \"@icpswap/utils\";\nimport { ledgerService } from \"@icpswap/actor\";\nimport { Ledger } from \"@icpswap/candid\";\nimport { ActorIdentity, PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { TokenHolder, Transaction, Metadata } from \"./types\";\nimport {\n BaseTokenAdapter,\n BalanceRequest,\n TransferRequest,\n MetadataRequest,\n ActualReceivedByTransferRequest,\n ApproveRequest,\n AllowanceRequest,\n} from \"./BaseTokenAdapter\";\nimport { icrc1Adapter } from \"./ICRC1\";\nimport { icrc2Adapter } from \"./ICRC2\";\n\nexport class ICPAdapter extends BaseTokenAdapter {\n public async holders() {\n return {\n status: ResultStatus.OK,\n data: {\n content: [] as TokenHolder[],\n totalElements: 0,\n limit: 10,\n offset: 0,\n } as PaginationResult,\n message: \"\",\n };\n }\n\n public async totalHolders() {\n return resultFormat(undefined);\n }\n\n public async supply() {\n return resultFormat(await (await this.actor()).icrc1_total_supply());\n }\n\n public async balance({ params }: BalanceRequest) {\n if (params.user.address) {\n return resultFormat(\n (\n await (\n await this.actor()\n ).account_balance({\n account: Array.from(Uint8Array.from(Buffer.from(params.user.address, \"hex\"))),\n })\n ).e8s,\n );\n }\n if (params.user.principal) {\n return resultFormat(\n await (\n await this.actor()\n ).icrc1_balance_of({\n owner: params.user.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n }),\n );\n }\n\n return resultFormat(BigInt(0));\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.address && !params.to.principal) throw Error(\"No transfer to\");\n\n if (params.to.address) {\n if (params.memo && !isBigIntMemo(params.memo)) throw Error(\"Only bigint support (memo)\");\n\n const result = await (\n await this.actor(canisterId, identity)\n ).transfer({\n to: Array.from(Uint8Array.from(Buffer.from(params.to.address, \"hex\"))),\n memo: (params.memo as bigint) ?? BigInt(0),\n amount: { e8s: params.amount },\n created_at_time: availableArgsNull<{ timestamp_nanos: bigint }>(\n params.create_at_time ? { timestamp_nanos: params.create_at_time } : undefined,\n ),\n from_subaccount: availableArgsNull(params.from_sub_account),\n fee: { e8s: BigInt(10000) },\n });\n\n return resultFormat(result);\n }\n if (params.to.principal) {\n const result = await (\n await this.actor(canisterId, identity)\n ).icrc1_transfer({\n to: {\n owner: params.to.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n },\n memo: typeof params.memo === \"bigint\" ? [] : availableArgsNull(params.memo),\n amount: params.amount,\n created_at_time: availableArgsNull(params.create_at_time),\n from_subaccount: availableArgsNull>(\n params.from_sub_account ? params.from_sub_account : undefined,\n ),\n fee: availableArgsNull(null),\n });\n\n return resultFormat(result);\n }\n\n return resultFormat(undefined);\n }\n\n public async getFee() {\n return resultFormat(await (await (await this.actor()).transfer_fee({})).transfer_fee.e8s);\n }\n\n public async setFee() {\n return resultFormat({ err: \"no setFee\" });\n }\n\n public async setFeeTo() {\n return resultFormat({ err: \"no setFeeTo\" });\n }\n\n public async transactions() {\n return resultFormat>({\n content: [],\n totalElements: BigInt(0),\n offset: BigInt(0),\n limit: BigInt(10),\n });\n }\n\n public async approve({ canisterId, params, identity }: ApproveRequest) {\n return icrc2Adapter.approve({ canisterId, params, identity });\n }\n\n public async allowance({ canisterId, params }: AllowanceRequest) {\n return icrc2Adapter.allowance({ canisterId, params });\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n const symbol = (await (await this.actor(canisterId)).symbol()).symbol;\n const decimals = (await (await this.actor()).decimals()).decimals;\n const name = \"Internet Computer\";\n const fee = resultFormat(await (await (await this.actor()).transfer_fee({})).transfer_fee.e8s).data;\n\n return {\n status: ResultStatus.OK,\n data: {\n decimals,\n metadata: [],\n name,\n symbol,\n fee: fee ?? BigInt(1000),\n logo: \"\",\n } as Metadata,\n message: \"\",\n };\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async getMintingAccount({ canisterId }: { canisterId: string }) {\n return await icrc1Adapter.getMintingAccount({ canisterId });\n }\n}\n\nexport const icpAdapter = new ICPAdapter({\n // @ts-ignore\n actor: async (canisterId?: string, identity?: ActorIdentity) => await ledgerService(identity),\n});\n","import { resultFormat, availableArgsNull, isBigIntMemo } from \"@icpswap/utils\";\nimport { PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { icrc1, icrcArchive } from \"@icpswap/actor\";\nimport { ICRC1_SERVICE, MetadataValue, GetTransactionsResponse, ArchivedTransaction } from \"@icpswap/candid\";\n\nimport { TokenHolder, Transaction, Metadata } from \"./types\";\nimport {\n BaseTokenAdapter,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n GetFeeRequest,\n TransactionRequest,\n MetadataRequest,\n ActualReceivedByTransferRequest,\n} from \"./BaseTokenAdapter\";\nimport { icrcTransactionFormat } from \"./utils\";\n\nexport class ICRC1Adapter extends BaseTokenAdapter {\n public async holders() {\n return {\n status: ResultStatus.OK,\n data: {\n content: [] as TokenHolder[],\n totalElements: 0,\n limit: 10,\n offset: 0,\n } as PaginationResult,\n message: \"\",\n };\n }\n\n public async totalHolders() {\n return resultFormat(undefined);\n }\n\n public async supply({ canisterId }: SupplyRequest) {\n return resultFormat(await (await this.actor(canisterId)).icrc1_total_supply());\n }\n\n public async balance({ canisterId, params }: BalanceRequest) {\n if (params.user.principal) {\n return resultFormat(\n await (\n await this.actor(canisterId)\n ).icrc1_balance_of({\n owner: params.user.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n }),\n );\n }\n\n return resultFormat(BigInt(0));\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.principal) throw Error(\"no user principal address\");\n if (isBigIntMemo(params.memo)) throw Error(\"Can't support bigint (memo)\");\n\n const result = await (\n await this.actor(canisterId, identity)\n ).icrc1_transfer({\n to: {\n owner: params.to.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n },\n memo: availableArgsNull(params.memo),\n amount: params.amount,\n created_at_time: availableArgsNull(params.create_at_time),\n from_subaccount: availableArgsNull>(params.from_sub_account ? params.from_sub_account : undefined),\n fee: availableArgsNull(params.fee),\n });\n\n return resultFormat(result);\n }\n\n public async getFee({ canisterId }: GetFeeRequest) {\n return resultFormat(await (await this.actor(canisterId)).icrc1_fee());\n }\n\n public async setFee() {\n return resultFormat({ err: \"no setFee\" });\n }\n\n public async setFeeTo() {\n return resultFormat({ err: \"no setFeeTo\" });\n }\n\n public async transactions({ canisterId, params }: TransactionRequest) {\n if (params.offset === undefined || params.limit === undefined) throw Error(\"no offset or limit\");\n\n // To get the total length\n const init_result = resultFormat(\n await (await this.actor(canisterId)).get_transactions({ start: BigInt(0), length: BigInt(10) }),\n ).data;\n\n if (init_result) {\n const { log_length } = init_result;\n\n // The start index of the transactions\n let start_index = Number(log_length) - 1 - params.offset - params.limit;\n\n if (start_index < 0) start_index = 0;\n\n const _result = resultFormat(\n await (\n await this.actor(canisterId)\n ).get_transactions({\n start: BigInt(start_index),\n length: BigInt(params.limit),\n }),\n ).data;\n\n if (_result) {\n const { archived_transactions, transactions: token_canister_transactions } = _result;\n\n let archivedTransactions: ArchivedTransaction[] = [];\n\n if (archived_transactions.length > 0) {\n archivedTransactions = (\n await Promise.all(\n archived_transactions.map(async (ele) => {\n return (\n await (\n await icrcArchive(ele.callback[0].toString())\n ).get_transactions({\n start: ele.start,\n length: ele.length,\n })\n ).transactions;\n }),\n )\n )\n .flat()\n .sort((a, b) => {\n if (a.timestamp < b.timestamp) return -1;\n if (a.timestamp > b.timestamp) return 1;\n return 0;\n });\n }\n\n const transactions = archivedTransactions\n .concat(token_canister_transactions)\n .sort((a, b) => {\n if (a.timestamp < b.timestamp) return -1;\n if (a.timestamp > b.timestamp) return 1;\n return 0;\n })\n .map((ele, index) =>\n // @ts-ignore\n icrcTransactionFormat(ele, BigInt(start_index) + BigInt(index)),\n );\n\n return resultFormat>({\n content: transactions.reverse(),\n totalElements: log_length,\n offset: BigInt(params.offset),\n limit: BigInt(params.limit),\n });\n }\n }\n\n return resultFormat>(undefined);\n }\n\n public async approve() {\n return resultFormat({ err: \"no approve\" });\n }\n\n public async allowance() {\n return resultFormat({ err: \"no allowance\" });\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n const metadata = resultFormat>(\n await (await this.actor(canisterId)).icrc1_metadata(),\n ).data;\n\n if (!metadata) {\n return {\n status: ResultStatus.ERROR,\n data: undefined,\n message: \"\",\n };\n }\n\n let name = \"\";\n let symbol = \"\";\n let decimals = BigInt(0);\n let fee = BigInt(0);\n let logo = \"\";\n\n for (let i = 0; i < metadata.length; i++) {\n const ele = metadata[i];\n if (ele[0] === \"icrc1:name\") {\n const val = ele[1] as { Text: string };\n name = val.Text;\n } else if (ele[0] === \"icrc1:symbol\") {\n const val = ele[1] as { Text: string };\n symbol = val.Text;\n } else if (ele[0] === \"icrc1:decimals\") {\n const val = ele[1] as { Nat: bigint };\n decimals = val.Nat;\n } else if (ele[0] === \"icrc1:fee\") {\n const val = ele[1] as { Nat: bigint };\n fee = val.Nat;\n } else if (ele[0] === \"icrc1:logo\") {\n const val = ele[1] as { Text: string };\n logo = val.Text;\n }\n }\n\n return {\n status: ResultStatus.OK,\n data: {\n decimals: Number(decimals),\n name,\n symbol,\n fee,\n logo,\n } as Metadata,\n message: \"\",\n };\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async getMintingAccount({ canisterId }: { canisterId: string }) {\n const result = (await (await this.actor(canisterId)).icrc1_minting_account())[0];\n return resultFormat<{ owner: string; sub: number[] | undefined }>(\n result\n ? { owner: result.owner.toString(), sub: result.subaccount[0] ? [...result.subaccount[0]] : undefined }\n : undefined,\n );\n }\n}\n\nexport const icrc1Adapter = new ICRC1Adapter({\n actor: icrc1,\n});\n","import { enumToString, isOkSubAccount } from \"@icpswap/utils\";\nimport { ICRCTransaction } from \"@icpswap/candid\";\nimport { AccountIdentifier, SubAccount } from \"@dfinity/ledger-icp\";\nimport { Transaction as TokenTransaction } from \"./types\";\n\nexport function icrcTransactionFormat(transaction: ICRCTransaction, index: bigint) {\n const memo = transaction.transfer[0]?.memo.length\n ? transaction.transfer[0]?.memo\n : transaction.burn[0]?.memo.length\n ? transaction.burn[0]?.memo\n : transaction.mint[0]?.memo.length\n ? transaction.mint[0]?.memo\n : undefined;\n\n const from_owner = transaction.transfer[0]?.from.owner ?? transaction.burn[0]?.from.owner;\n const _from_sub = transaction.transfer[0]?.from.subaccount[0] ?? transaction.burn[0]?.from.subaccount[0];\n const to_owner = transaction.transfer[0]?.to.owner ?? transaction.mint[0]?.to.owner;\n const _to_sub = transaction.transfer[0]?.to.subaccount[0] ?? transaction.mint[0]?.to.subaccount[0];\n\n const from_sub = _from_sub ? SubAccount.fromBytes(Uint8Array.from(_from_sub)) : undefined;\n const from_account = from_owner\n ? AccountIdentifier.fromPrincipal({\n principal: from_owner,\n subAccount: isOkSubAccount(from_sub) ? from_sub : undefined,\n })\n : undefined;\n\n const to_sub = _to_sub ? SubAccount.fromBytes(Uint8Array.from(_to_sub)) : undefined;\n const to_account = to_owner\n ? AccountIdentifier.fromPrincipal({\n principal: to_owner,\n subAccount: isOkSubAccount(to_sub) ? to_sub : undefined,\n })\n : undefined;\n\n const feeArray = transaction.transfer[0]?.fee;\n\n return {\n timestamp: transaction.timestamp,\n hash: \"\",\n fee: feeArray ? feeArray[0] : undefined,\n from_owner: from_owner?.toString() ?? \"\",\n from_sub: _from_sub,\n from_account: from_account?.toHex() ?? \"\",\n to_owner: to_owner?.toString() ?? \"\",\n to_sub: _to_sub,\n to_account: to_account?.toHex() ?? \"\",\n transType: enumToString(\n transaction.transfer[0]\n ? { Transfer: null }\n : transaction.burn[0]\n ? { Burn: null }\n : transaction.mint[0]\n ? { Mint: null }\n : { Approve: null },\n ),\n amount: transaction.transfer[0]?.amount ?? transaction.burn[0]?.amount ?? transaction.mint[0]?.amount,\n index,\n memo: memo ? [...memo[0]] : [],\n status: \"\",\n } as TokenTransaction;\n}\n","import { resultFormat, availableArgsNull, isBigIntMemo } from \"@icpswap/utils\";\nimport { PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { icrc2 } from \"@icpswap/actor\";\nimport { ICRC2 } from \"@icpswap/candid\";\nimport {\n BaseTokenAdapter,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n GetFeeRequest,\n TransactionRequest,\n ApproveRequest,\n AllowanceRequest,\n MetadataRequest,\n ActualReceivedByTransferRequest,\n} from \"./BaseTokenAdapter\";\nimport { TokenHolder } from \"./types\";\nimport { icrc1Adapter } from \"./ICRC1\";\n\nexport class ICRC2Adapter extends BaseTokenAdapter {\n public async holders() {\n return {\n status: ResultStatus.OK,\n data: {\n content: [] as TokenHolder[],\n totalElements: 0,\n limit: 10,\n offset: 0,\n } as PaginationResult,\n message: \"\",\n };\n }\n\n public async totalHolders() {\n return resultFormat(undefined);\n }\n\n public async supply({ canisterId }: SupplyRequest) {\n return resultFormat(await (await this.actor(canisterId)).icrc1_total_supply());\n }\n\n public async balance({ canisterId, params }: BalanceRequest) {\n if (params.user.principal) {\n return await icrc1Adapter.balance({ canisterId, params });\n }\n\n return resultFormat(BigInt(0));\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.principal) throw Error(\"no user principal address\");\n if (isBigIntMemo(params.memo)) throw Error(\"Can't support bigint (memo)\");\n\n return await icrc1Adapter.transfer({\n canisterId,\n identity,\n params,\n });\n }\n\n public async getFee({ canisterId }: GetFeeRequest) {\n return await icrc1Adapter.getFee({ canisterId });\n }\n\n public async setFee() {\n return resultFormat({ err: \"no setFee\" });\n }\n\n public async setFeeTo() {\n return resultFormat({ err: \"no setFeeTo\" });\n }\n\n public async transactions({ canisterId, params }: TransactionRequest) {\n return await icrc1Adapter.transactions({ canisterId, params });\n }\n\n public async approve({ canisterId, params, identity }: ApproveRequest) {\n return resultFormat(\n await (\n await this.actor(canisterId, identity)\n ).icrc2_approve({\n spender: {\n owner: params.spender,\n subaccount: availableArgsNull(params.spenderSub ? params.spenderSub : undefined),\n },\n fee: availableArgsNull(params.fee),\n created_at_time: [],\n amount: params.allowance,\n memo: [],\n expected_allowance: availableArgsNull(params.expected_allowance),\n expires_at: availableArgsNull(params.expires_at),\n from_subaccount: availableArgsNull(params.subaccount ? params.subaccount : undefined),\n }),\n );\n }\n\n public async allowance({ canisterId, params }: AllowanceRequest) {\n if (!params.owner.principal) throw Error(\"no principal\");\n\n const result = await (\n await this.actor(canisterId)\n ).icrc2_allowance({\n spender: {\n owner: params.spender,\n subaccount: availableArgsNull>(params.spenderSub ? params.spenderSub : undefined),\n },\n account: {\n owner: params.owner.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n },\n });\n\n return resultFormat(result.allowance);\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n return await icrc1Adapter.metadata({ canisterId });\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async getMintingAccount({ canisterId }: { canisterId: string }) {\n return await icrc1Adapter.getMintingAccount({ canisterId });\n }\n}\n\nexport const icrc2Adapter = new ICRC2Adapter({\n actor: icrc2,\n});\n","import { ActorIdentity, Override } from \"@icpswap/types\";\nimport {\n HoldersRequest,\n TotalHoldersRequest,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n SetFeeRequest,\n SetFeeToRequest,\n TransactionRequest,\n ApproveRequest,\n AllowanceRequest,\n MetadataRequest,\n SetLogoRequest,\n ActualReceivedByTransferRequest,\n} from \"./BaseTokenAdapter\";\nimport { EXTAdapter, EXTTokenAdapter } from \"./EXTAdapter\";\nimport { DIP20Adapter, DIP20TokenAdapter } from \"./DIP20Adapter\";\nimport { DIP20WICPAdapter, DIP20WICPTokenAdapter } from \"./DIP20WICPAdapter\";\nimport { DIP20XTCAdapter, DIP20XTCTokenAdapter } from \"./DIP20XTCAdapter\";\nimport { icrc1Adapter, ICRC1Adapter } from \"./ICRC1\";\nimport { icrc2Adapter, ICRC2Adapter } from \"./ICRC2\";\nimport { icpAdapter, ICPAdapter } from \"./ICP\";\nimport { TOKEN_STANDARD } from \"./types\";\n\nexport type AdapterRequest = T;\n\nexport type AdapterIdentityRequest = Override;\n\nexport type RegisterProps = { canisterId: string; standard: TOKEN_STANDARD }[];\n\nexport class TokenAdapter {\n public canisterAdapters = new Map();\n\n public adapters = new Map<\n TOKEN_STANDARD,\n | DIP20XTCTokenAdapter\n | DIP20WICPTokenAdapter\n | DIP20TokenAdapter\n | EXTTokenAdapter\n | ICRC1Adapter\n | ICRC2Adapter\n | ICPAdapter\n >();\n\n public initialAdapter(\n name: TOKEN_STANDARD,\n adapter:\n | DIP20XTCTokenAdapter\n | DIP20WICPTokenAdapter\n | DIP20TokenAdapter\n | EXTTokenAdapter\n | ICRC1Adapter\n | ICRC2Adapter\n | ICPAdapter,\n ) {\n if (this.adapters.get(name)) throw Error(\"This adapter is already initialed\");\n this.adapters.set(name, adapter);\n }\n\n public register(standards: RegisterProps) {\n standards.forEach(({ standard, canisterId }) => {\n this.canisterAdapters.set(canisterId, standard);\n });\n }\n\n public getAll() {\n return this.canisterAdapters;\n }\n\n public getAdapter(canisterId: string) {\n let standard = this.canisterAdapters.get(canisterId);\n if (!standard) {\n console.error(`Can't not found adapter ===> ${canisterId}`);\n standard = TOKEN_STANDARD.EXT;\n }\n return this.getAdapterByName(standard);\n }\n\n public getAdapterByName(adapterName: TOKEN_STANDARD | undefined) {\n if (!adapterName || !this.adapters.get(adapterName)) throw Error(`Can't not found adapter ${adapterName}`);\n return this.adapters.get(adapterName);\n }\n\n public async totalHolders({ canisterId }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.totalHolders({ canisterId });\n }\n\n public async holders({ params, canisterId }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.holders({\n canisterId,\n params,\n });\n }\n\n public async supply({ canisterId }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.supply({\n canisterId,\n });\n }\n\n public async balance({ canisterId, params }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n\n return await adapter!.balance({\n canisterId,\n params,\n });\n }\n\n public async transfer({ canisterId, params, identity }: AdapterIdentityRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.transfer({\n canisterId,\n params,\n identity,\n });\n }\n\n public async setFee({ canisterId, identity, params }: AdapterIdentityRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.setFee({\n canisterId,\n identity,\n params,\n });\n }\n\n public async setFeeTo({ canisterId, identity, params }: AdapterIdentityRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.setFeeTo({\n canisterId,\n identity,\n params,\n });\n }\n\n public async transactions({ canisterId, params }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.transactions({\n canisterId,\n params,\n });\n }\n\n public async approve({ canisterId, identity, params }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.approve({\n canisterId,\n params,\n identity,\n });\n }\n\n public async allowance({ canisterId, params }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.allowance({\n canisterId,\n params,\n });\n }\n\n public async metadata({ canisterId }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.metadata({\n canisterId,\n });\n }\n\n public actualReceivedByTransfer(request: ActualReceivedByTransferRequest) {\n const adapter = this.getAdapter(request.canisterId);\n return adapter!.actualReceivedByTransfer(request);\n }\n\n public async getMintingAccount({ canisterId }: { canisterId: string }) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.getMintingAccount({\n canisterId,\n });\n }\n}\n\nexport const tokenAdapter = new TokenAdapter();\n\nexport const registerTokens = (standards: RegisterProps) => tokenAdapter.register(standards);\n\ntokenAdapter.initialAdapter(TOKEN_STANDARD.EXT, EXTAdapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.DIP20, DIP20Adapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.DIP20_XTC, DIP20XTCAdapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.DIP20_WICP, DIP20WICPAdapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.ICRC1, icrc1Adapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.ICRC2, icrc2Adapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.ICP, icpAdapter);\n\nexport {\n EXTAdapter,\n DIP20Adapter,\n DIP20XTCAdapter,\n DIP20WICPAdapter,\n ICRC1Adapter,\n ICRC2Adapter,\n icrc1Adapter,\n icrc2Adapter,\n icpAdapter,\n ICPAdapter,\n TOKEN_STANDARD,\n};\n\nexport * from \"./token-standard-verification\";\nexport * from \"./utils\";\n","import type { Principal } from \"@dfinity/principal\";\nimport { Null, Override } from \"@icpswap/types\";\n\nexport type { TokenHolder, TokenHolderArgs } from \"@icpswap/candid\";\n\nexport interface Transaction {\n fee: bigint | undefined;\n status: string;\n transType: string;\n from_owner: string;\n from_sub: number[] | undefined;\n from_account: string;\n to_owner: string;\n to_sub: number[] | undefined;\n to_account: string;\n hash: string;\n memo: [] | [Array];\n timestamp: bigint;\n index: bigint;\n amount: bigint;\n}\n\nexport type TransactionRequest = {\n hash?: string;\n user?: User;\n offset?: number;\n limit?: number;\n index?: number;\n};\n\nexport type User = { principal?: Principal; address?: string };\n\nexport type SetFeeToRequest = User;\n\nexport type BalanceRequest = {\n token: string;\n user: User;\n subaccount?: number[];\n};\n\nexport type TransferRequest = {\n to: User;\n token?: string;\n notify?: boolean;\n from: User;\n memo?: number[] | bigint;\n subaccount?: number[];\n nonce?: bigint;\n amount: bigint;\n create_at_time?: bigint;\n from_sub_account?: number[];\n fee?: bigint;\n};\n\nexport type TokenTransferRequest = TransferRequest;\n\nexport type TokenAllowanceRequest = {\n owner: User;\n subaccount?: number[] | Null;\n spender: Principal;\n spenderSub?: number[] | Null;\n};\n\nexport type Metadata = {\n decimals: number;\n name: string;\n symbol: string;\n logo: string;\n fee: bigint;\n};\n\nexport type ApproveRequest = {\n subaccount?: number[];\n allowance: bigint;\n spender: Principal;\n spenderSub?: number[];\n fee?: bigint;\n expires_at?: bigint;\n expected_allowance?: bigint;\n};\n\nexport type TokenApproveRequest = Override;\n\nexport type { DIP20Metadata } from \"@icpswap/candid\";\n\nexport enum TOKEN_STANDARD {\n EXT = \"EXT\",\n DIP20 = \"DIP20\",\n ICP = \"ICP\",\n DIP20_WICP = \"DIP20-WICP\",\n DIP20_XTC = \"DIP20-XTC\",\n ICRC1 = \"ICRC1\",\n ICRC2 = \"ICRC2\",\n}\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo, TOKEN_STANDARD } from \"@icpswap/types\";\nimport { WICP_CANISTER_ID } from \"@icpswap/constants\";\n\nexport const WRAPPED_ICP_TOKEN_INFO: TokenInfo = {\n standardType: TOKEN_STANDARD.EXT,\n name: \"Wrapped ICP\",\n decimals: 8,\n symbol: \"WICP\",\n canisterId: WICP_CANISTER_ID,\n totalSupply: BigInt(100000000000000000),\n transFee: BigInt(0),\n logo: `/images/tokens/${WICP_CANISTER_ID}.jpeg`,\n};\n\nexport const WRAPPED_ICP = new Token({\n address: WRAPPED_ICP_TOKEN_INFO.canisterId,\n decimals: WRAPPED_ICP_TOKEN_INFO.decimals,\n symbol: WRAPPED_ICP_TOKEN_INFO.symbol,\n name: WRAPPED_ICP_TOKEN_INFO.name,\n logo: WRAPPED_ICP_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.EXT,\n transFee: Number(WRAPPED_ICP_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo, TOKEN_STANDARD } from \"@icpswap/types\";\nimport { LEDGER_CANISTER_ID } from \"@icpswap/constants\";\n\nexport const ICP_TOKEN_INFO: TokenInfo = {\n symbol: \"ICP\",\n name: \"Internet Computer\",\n decimals: 8,\n canisterId: LEDGER_CANISTER_ID,\n transFee: BigInt(10000),\n totalSupply: BigInt(200000000000000),\n standardType: TOKEN_STANDARD.ICRC2,\n logo: `/images/tokens/${LEDGER_CANISTER_ID}.svg`,\n};\n\nexport const ICP = new Token({\n address: ICP_TOKEN_INFO.canisterId,\n decimals: ICP_TOKEN_INFO.decimals,\n symbol: ICP_TOKEN_INFO.symbol,\n name: ICP_TOKEN_INFO.name,\n logo: ICP_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ICP_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo, TOKEN_STANDARD } from \"@icpswap/types\";\nimport { ICS_CANISTER_ID } from \"@icpswap/constants\";\n\nexport const ICS_TOKEN_INFO: TokenInfo = {\n symbol: \"ICS\",\n name: \"ICPSwap Token\",\n decimals: 8,\n canisterId: ICS_CANISTER_ID,\n transFee: BigInt(1000000),\n totalSupply: BigInt(200000000000000),\n standardType: TOKEN_STANDARD.ICRC1,\n logo: `/images/tokens/${ICS_CANISTER_ID}.png`,\n};\n\nexport const ICS = new Token({\n address: ICS_TOKEN_INFO.canisterId,\n decimals: ICS_TOKEN_INFO.decimals,\n symbol: ICS_TOKEN_INFO.symbol,\n name: ICS_TOKEN_INFO.name,\n logo: ICS_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.ICRC1,\n transFee: Number(ICS_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo, TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport const GHOST_TOKEN_ID = \"4c4fd-caaaa-aaaaq-aaa3a-cai\";\n\nexport const GHOST_TOKEN_INFO: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC1,\n name: \"GHOST\",\n decimals: 8,\n symbol: \"GHOST\",\n canisterId: GHOST_TOKEN_ID,\n totalSupply: BigInt(100000000000000000),\n transFee: BigInt(100000000),\n logo: `/images/tokens/${GHOST_TOKEN_ID}.png`,\n};\n\nexport const GHOST = new Token({\n address: GHOST_TOKEN_INFO.canisterId,\n decimals: GHOST_TOKEN_INFO.decimals,\n symbol: GHOST_TOKEN_INFO.symbol,\n name: GHOST_TOKEN_INFO.name,\n logo: GHOST_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.ICRC1,\n transFee: Number(GHOST_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo, TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport const ck_BTC_TOKEN_INFO: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"ckBTC\",\n decimals: 8,\n symbol: \"ckBTC\",\n canisterId: \"mxzaz-hqaaa-aaaar-qaada-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10),\n logo: \"/images/tokens/mxzaz-hqaaa-aaaar-qaada-cai.svg\",\n};\n\nexport const ckBTC = new Token({\n address: ck_BTC_TOKEN_INFO.canisterId,\n decimals: ck_BTC_TOKEN_INFO.decimals,\n symbol: ck_BTC_TOKEN_INFO.symbol,\n name: ck_BTC_TOKEN_INFO.name,\n logo: ck_BTC_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.ICRC1,\n transFee: Number(ck_BTC_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo, TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport const ckUSDCTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"ckUSDC\",\n decimals: 6,\n symbol: \"ckUSDC\",\n canisterId: \"xevnm-gaaaa-aaaar-qafnq-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10),\n logo: `/images/tokens/xevnm-gaaaa-aaaar-qafnq-cai.svg`,\n};\n\nexport const ckUSDC = new Token({\n address: ckUSDCTokenInfo.canisterId,\n decimals: ckUSDCTokenInfo.decimals,\n symbol: ckUSDCTokenInfo.symbol,\n name: ckUSDCTokenInfo.name,\n logo: ckUSDCTokenInfo.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ckUSDCTokenInfo.transFee),\n});\n\nexport const ckSepoliaUSDCTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"Chain key Sepolia USD\",\n decimals: 6,\n symbol: \"ckSepoliaUSDC\",\n canisterId: \"yfumr-cyaaa-aaaar-qaela-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(4000),\n logo: `/images/tokens/yfumr-cyaaa-aaaar-qaela-cai.png`,\n};\n\nexport const ckSepoliaUSDC = new Token({\n address: ckSepoliaUSDCTokenInfo.canisterId,\n decimals: ckSepoliaUSDCTokenInfo.decimals,\n symbol: ckSepoliaUSDCTokenInfo.symbol,\n name: ckSepoliaUSDCTokenInfo.name,\n logo: ckSepoliaUSDCTokenInfo.logo,\n standard: ckSepoliaUSDCTokenInfo.standardType,\n transFee: Number(ckSepoliaUSDCTokenInfo.transFee),\n});\n","import { ERC20Token } from \"@icpswap/swap-sdk\";\n\nexport const USDC = new ERC20Token({\n address: \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n name: \"USDC\",\n symbol: \"USDC\",\n decimals: 6,\n logo: \"/images/tokens/yfumr-cyaaa-aaaar-qaela-cai-erc20.png\",\n});\n\nexport const SepoliaUSDC = new ERC20Token({\n address: \"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238\",\n name: \"USDC(Sepolia)\",\n symbol: \"USDC(Sepolia)\",\n decimals: 6,\n logo: \"/images/tokens/yfumr-cyaaa-aaaar-qaela-cai-erc20.png\",\n});\n","import { ERC20Token } from \"@icpswap/swap-sdk\";\n\nexport const LINK = new ERC20Token({\n address: \"0x514910771AF9Ca656af840dff83E8264EcF986CA\",\n name: \"LINK\",\n symbol: \"LINK\",\n decimals: 18,\n logo: \"/images/tokens/g4tto-rqaaa-aaaar-qageq-cai-erc20.png\",\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo, TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport const ckETHTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"Chain key Ethereum\",\n decimals: 18,\n symbol: \"ckETH\",\n canisterId: \"ss2fx-dyaaa-aaaar-qacoq-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10_000_000_000),\n logo: `/images/tokens/ss2fx-dyaaa-aaaar-qacoq-cai.svg`,\n};\n\nexport const ckETH = new Token({\n address: ckETHTokenInfo.canisterId,\n decimals: ckETHTokenInfo.decimals,\n symbol: ckETHTokenInfo.symbol,\n name: ckETHTokenInfo.name,\n logo: ckETHTokenInfo.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ckETHTokenInfo.transFee),\n});\n\nexport const ckSepoliaETHTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"Chain key Sepolia Ethereum\",\n decimals: 18,\n symbol: \"ckSepoliaETH\",\n canisterId: \"apia6-jaaaa-aaaar-qabma-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10_000_000_000),\n logo: `/images/tokens/apia6-jaaaa-aaaar-qabma-cai.png`,\n};\n\nexport const ckSepoliaETH = new Token({\n address: ckSepoliaETHTokenInfo.canisterId,\n decimals: ckSepoliaETHTokenInfo.decimals,\n symbol: ckSepoliaETHTokenInfo.symbol,\n name: ckSepoliaETHTokenInfo.name,\n logo: ckSepoliaETHTokenInfo.logo,\n standard: ckSepoliaETHTokenInfo.standardType,\n transFee: Number(ckSepoliaETHTokenInfo.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo, TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport const ckLinkTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"ckLINK\",\n decimals: 18,\n symbol: \"ckLINK\",\n canisterId: \"g4tto-rqaaa-aaaar-qageq-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(100000000000000),\n logo: `/images/tokens/g4tto-rqaaa-aaaar-qageq-cai.png`,\n};\n\nexport const ckLink = new Token({\n address: ckLinkTokenInfo.canisterId,\n decimals: ckLinkTokenInfo.decimals,\n symbol: ckLinkTokenInfo.symbol,\n name: ckLinkTokenInfo.name,\n logo: ckLinkTokenInfo.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ckLinkTokenInfo.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport const BOB = new Token({\n address: \"7pail-xaaaa-aaaas-aabmq-cai\",\n decimals: 8,\n symbol: \"BOB\",\n name: \"BOB\",\n logo: \"/images/tokens/7pail-xaaaa-aaaas-aabmq-cai.png\",\n standard: TOKEN_STANDARD.ICRC2,\n transFee: 1000000,\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo, TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport const ckUSDTTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"ckUSDT\",\n decimals: 6,\n symbol: \"ckUSDT\",\n canisterId: \"cngnf-vqaaa-aaaar-qag4q-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10),\n logo: `/images/tokens/cngnf-vqaaa-aaaar-qag4q-cai.svg`,\n};\n\nexport const ckUSDT = new Token({\n address: ckUSDTTokenInfo.canisterId,\n decimals: ckUSDTTokenInfo.decimals,\n symbol: ckUSDTTokenInfo.symbol,\n name: ckUSDTTokenInfo.name,\n logo: ckUSDTTokenInfo.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ckUSDTTokenInfo.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport const ALICE = new Token({\n address: \"oj6if-riaaa-aaaaq-aaeha-cai\",\n decimals: 8,\n symbol: \"ALICE\",\n name: \"ALICE\",\n logo: \"/images/tokens/oj6if-riaaa-aaaaq-aaeha-cai.png\",\n standard: TOKEN_STANDARD.ICRC2,\n transFee: 100000000,\n});\n","export enum ResultStatus {\n ERROR = \"err\",\n OK = \"ok\",\n}\n\nexport type ApiResult = undefined | T;\n\nexport type Null = null | undefined;\n\nexport type Override = Omit & S;\n\nexport type ActorIdentity = true;\n\nexport type StatusResult = {\n readonly status: ResultStatus;\n readonly data?: T;\n readonly message: string;\n};\n\nexport type CallResult = {\n readonly result: ApiResult;\n readonly loading: boolean;\n};\n\nexport type PaginationResult = {\n totalElements: number;\n offset: number;\n limit: number;\n content: T[];\n};\n","export type {\n CreateStakingPoolArgs,\n StakingPoolInfo,\n StakingPoolCycle,\n StakingPoolUserInfo,\n StakingPoolTransaction,\n StakingPoolGlobalData,\n StakingPoolControllerPoolInfo,\n StakeIndexPoolInfo,\n StakeAprInfo,\n StakeUserStakeInfo,\n StakeGlobalDataInfo,\n} from \"@icpswap/candid\";\n\nexport enum StakingState {\n LIVE = \"LIVE\",\n NOT_STARTED = \"NOT_STARTED\",\n FINISHED = \"FINISHED\",\n}\n","export enum TOKEN_STANDARD {\n EXT = \"EXT\",\n DIP20 = \"DIP20\",\n ICP = \"ICP\",\n DIP20_WICP = \"DIP20-WICP\",\n DIP20_XTC = \"DIP20-XTC\",\n ICRC1 = \"ICRC1\",\n ICRC2 = \"ICRC2\",\n}\n\nexport interface TokenTransaction {\n fee: bigint | undefined;\n status: string;\n transType: string;\n from_owner: string;\n from_sub: number[] | undefined;\n from_account: string;\n to_owner: string;\n to_sub: number[] | undefined;\n to_account: string;\n hash: string;\n memo: [] | [Array];\n timestamp: bigint;\n index: bigint;\n amount: bigint;\n}\n\nexport type TokenTransType = { burn: null } | { mint: null } | { approve: null } | { transfer: null };\n\nexport type {\n WrapUser,\n WrapTransaction,\n WrapMintArgs,\n WrapWithdrawArgs,\n TokenApproveArgs,\n TokenHolder,\n TokenHolderArgs,\n TokenTransactionArgs,\n TokenTransferArgs,\n TokenTransferResult,\n TokenTransaction as CandidTokenTransaction,\n} from \"@icpswap/candid\";\n\nexport type TokenInfo = {\n decimals: number;\n name: string;\n standardType: TOKEN_STANDARD;\n symbol: string;\n canisterId: string;\n logo: string;\n totalSupply: bigint;\n transFee: bigint;\n};\n\nexport type StorageTokenInfo = {\n decimals: number;\n name: string;\n standardType: TOKEN_STANDARD;\n symbol: string;\n canisterId: string;\n logo: string;\n totalSupply: string;\n transFee: string;\n};\n","import { ReactNode } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { ChevronRight } from \"react-feather\";\n\nimport { Link } from \"./Link\";\nimport { Typography, Box } from \"./Mui\";\nimport { Flex } from \"./Grid\";\n\nexport interface BreadcrumbsProps {\n prevLink: string;\n prevLabel: ReactNode;\n currentLabel: ReactNode;\n fontSize?: string;\n}\n\nexport function Breadcrumbs({ prevLabel, currentLabel, prevLink, fontSize = \"12px\" }: BreadcrumbsProps) {\n const history = useHistory();\n\n const handleClick = () => {\n if (prevLink === \"back\") {\n history.goBack();\n return;\n }\n history.push(prevLink);\n };\n\n return (\n \n \n {prevLabel}\n \n\n \n\n \n {currentLabel}\n \n \n );\n}\n\nfunction Breadcrumb({ fontSize = \"12px\", current, label }: { fontSize?: string; current: boolean; label: ReactNode }) {\n return (\n \n {label}\n \n );\n}\n\ninterface BreadcrumbProps {\n link?: string;\n label: ReactNode;\n}\n\nexport interface BreadcrumbsV1Props {\n links: BreadcrumbProps[];\n fontSize?: string;\n}\n\nexport function BreadcrumbsV1({ links, fontSize = \"12px\" }: BreadcrumbsV1Props) {\n return (\n \n {links.map(({ label, link }, index) => (\n \n {link ? (\n \n \n \n ) : (\n \n )}\n\n {index !== links.length - 1 ? : null}\n \n ))}\n \n );\n}\n","import { ReactNode } from \"react\";\n\nimport { Box, BoxProps } from \"../Mui\";\n\nexport interface FlexProps {\n width?: string;\n align?: BoxProps[\"alignItems\"];\n justify?: BoxProps[\"justifyContent\"];\n padding?: string;\n border?: string;\n borderRadius?: string;\n children: ReactNode;\n margin?: string;\n gap?: BoxProps[\"gap\"];\n vertical?: boolean;\n sx?: BoxProps[\"sx\"];\n fullWidth?: boolean;\n className?: string;\n wrap?: BoxProps[\"flexWrap\"];\n onClick?: BoxProps[\"onClick\"];\n onMouseEnter?: BoxProps[\"onMouseEnter\"];\n onMouseLeave?: BoxProps[\"onMouseLeave\"];\n}\n\nexport function Flex({\n vertical,\n gap,\n children,\n width,\n align,\n justify,\n padding,\n border,\n borderRadius,\n margin,\n sx,\n fullWidth,\n className,\n wrap,\n onClick,\n onMouseEnter,\n onMouseLeave,\n}: FlexProps) {\n return (\n \n {children}\n \n );\n}\n","import { Avatar, AvatarProps } from \"../Mui\";\n\nexport function Image(props: AvatarProps) {\n return (\n \n  \n \n );\n}\n","import { Link as ReactLink } from \"react-router-dom\";\n\nimport { useTheme } from \"./Mui\";\n\nexport interface LinkProps {\n to?: string;\n link?: string;\n color?: \"secondary\" | \"primary\";\n children: React.ReactNode;\n width?: string;\n height?: string;\n display?: \"flex\" | \"block\" | \"inline-block\" | \"inline\";\n}\n\nexport function Link({ to, link, color, children, width, height, display }: LinkProps) {\n const theme = useTheme();\n\n return (\n <>\n {to ? (\n \n {children}\n \n ) : link ? (\n \n {children}\n \n ) : (\n children\n )}\n \n );\n}\n","import { makeStyles, Theme, LinearProgress } from \"../Mui\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: \"fixed\",\n top: 0,\n left: 0,\n zIndex: 1301,\n width: \"100%\",\n \"& > * + *\": {\n marginTop: theme.spacing(2),\n },\n },\n}));\n\nexport function LinearLoader() {\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n","import { CircularProgress, Box, makeStyles, Theme } from \"../Mui\";\nimport { Flex } from \"../Grid\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n loadingContainer: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n },\n mask: {\n position: \"absolute\",\n left: 0,\n width: \"100%\",\n height: \"100%\",\n background: theme.palette.loading.background,\n opacity: 0.7,\n },\n };\n});\n\ninterface LoadingProps {\n loading: boolean;\n circularSize?: number;\n maskBorderRadius?: string;\n}\n\nexport function Loading({ loading, circularSize = 40, maskBorderRadius }: LoadingProps) {\n const classes = useStyles();\n\n return loading ? (\n \n \n \n \n ) : null;\n}\n","import { ReactNode } from \"react\";\n\nimport { Box, useTheme, keyframes } from \"../Mui\";\n\nconst loadingAnimation = keyframes`\n 0% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n`;\n\nexport function LoadingSingleRow() {\n const theme = useTheme();\n\n return (\n div\": {\n animation: `${loadingAnimation} 1.5s infinite`,\n animationFillMode: \"both\",\n background: `linear-gradient(\n to left,\n ${theme.palette.background.level2} 25%,\n ${theme.palette.background.level3} 50%,\n ${theme.palette.background.level4} 75%\n )`,\n backgroundSize: \"400%\",\n borderRadius: \"12px\",\n height: \" 2.4em\",\n willChange: \"background-position\",\n },\n \"& > div:nth-of-type(4n + 1)\": {\n gridColumn: \"1 / 3\",\n },\n \" & > div:nth-of-type(4n)\": {\n gridColumn: \"3 / 4\",\n marginBottom: \"16px\",\n },\n }}\n >\n
\n
\n \n );\n}\n\nexport interface LoadingRowProps {\n children: ReactNode;\n}\n\nexport function LoadingRow({ children }: LoadingRowProps) {\n const theme = useTheme();\n\n return (\n div\": {\n animation: `${loadingAnimation} 1.5s infinite`,\n animationFillMode: \"both\",\n background: `linear-gradient(\n to left,\n ${theme.palette.background.level2} 25%,\n ${theme.palette.background.level3} 50%,\n ${theme.palette.background.level4} 75%\n )`,\n backgroundSize: \"400%\",\n borderRadius: \"12px\",\n height: \" 2.4em\",\n willChange: \"background-position\",\n },\n \"& > div:nth-of-type(4n + 1)\": {\n gridColumn: \"1 / 3\",\n },\n \" & > div:nth-of-type(4n)\": {\n gridColumn: \"3 / 4\",\n marginBottom: \"16px\",\n },\n }}\n >\n {children}\n \n );\n}\n","import LoadingImage from \"assets/images/loading.png\";\n\nimport { Box, makeStyles, Theme } from \"../Mui\";\nimport { Flex } from \"../Grid\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n loadingContainer: {\n position: \"relative\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n minHeight: \"300px\",\n overflow: \"hidden\",\n },\n mask: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n background: theme.palette.loading.background,\n opacity: 0.3,\n },\n };\n});\n\nexport interface ImageLoadingProps {\n loading: boolean;\n mask?: boolean;\n}\n\nexport function ImageLoading({ loading, mask = false }: ImageLoadingProps) {\n const classes = useStyles();\n\n return loading ? (\n \n \n \"\"\n \n ) : null;\n}\n","import React, { useMemo } from \"react\";\n\nimport { Box, BoxProps, useTheme } from \"./Mui\";\n\nexport type MainCardBorder = \"level1\" | \"level2\" | \"level3\" | \"level4\";\n\nexport interface MainCardProps {\n border?: MainCardBorder;\n children: React.ReactNode;\n level?: number;\n onClick?: (event: any) => void;\n padding?: string;\n sx?: BoxProps[\"sx\"];\n borderRadius?: string;\n className?: string;\n id?: string;\n}\n\nexport function MainCard({\n id,\n border,\n level,\n onClick,\n padding,\n children,\n sx,\n borderRadius,\n className,\n}: MainCardProps) {\n const theme = useTheme();\n\n const cardStyles = useMemo(() => {\n const _border =\n border === \"level1\"\n ? theme.palette.background.level1\n : border === \"level2\"\n ? theme.palette.background.level2\n : border === \"level3\"\n ? theme.palette.background.level3\n : border === \"level4\"\n ? theme.palette.background.level4\n : undefined;\n\n switch (level) {\n case 1:\n return {\n background: theme.palette.background.level1,\n ...(_border ? { border: `1px solid ${_border}` } : {}),\n };\n case 2:\n return {\n background: theme.palette.background.level2,\n ...(border ? { border: \"2px solid rgba(255, 255, 255, 0.04)\" } : {}),\n };\n case 3:\n return {\n background: theme.palette.background.level3,\n ...(_border ? { border: `1px solid ${_border}` } : {}),\n };\n case 4:\n return {\n background: theme.palette.background.level4,\n ...(_border ? { border: `1px solid ${_border}` } : {}),\n };\n case 5:\n return {\n background: \"#273051\",\n border: \"0.5px solid #404558\",\n };\n default:\n return {\n background: theme.palette.background.level3,\n ...(_border ? { border: `1px solid ${_border}` } : {}),\n };\n }\n }, [level, border]);\n\n return (\n \n {children}\n \n );\n}\n","import { Theme } from \"@mui/material/styles\";\nimport useMuiTheme from \"@mui/styles/useTheme\";\n\nexport { default as Box, type BoxProps } from \"@mui/material/Box\";\nexport { default as Typography, type TypographyProps } from \"@mui/material/Typography\";\nexport { default as Grid, type GridProps } from \"@mui/material/Grid\";\nexport { default as SvgIcon, type SvgIconProps } from \"@mui/material/SvgIcon\";\nexport { default as Button, type ButtonProps } from \"@mui/material/Button\";\nexport { default as TextField, type TextFieldProps } from \"@mui/material/TextField\";\nexport { default as Fade, type FadeProps } from \"@mui/material/Fade\";\nexport { default as Collapse, type CollapseProps } from \"@mui/material/Collapse\";\nexport { default as Checkbox, type CheckboxProps } from \"@mui/material/Checkbox\";\nexport { default as MenuList, type MenuListProps } from \"@mui/material/MenuList\";\nexport { default as MenuItem } from \"@mui/material/MenuItem\";\nexport { default as Popper } from \"@mui/material/Popper\";\nexport { default as useMediaQuery } from \"@mui/material/useMediaQuery\";\nexport { default as CircularProgress } from \"@mui/material/CircularProgress\";\nexport { default as InputAdornment } from \"@mui/material/InputAdornment\";\nexport { default as Avatar, type AvatarProps } from \"@mui/material/Avatar\";\nexport { default as Link } from \"@mui/material/Link\";\nexport { default as makeStyles } from \"@mui/styles/makeStyles\";\nexport { default as Tooltip, tooltipClasses } from \"@mui/material/Tooltip\";\nexport { default as Chip } from \"@mui/material/Chip\";\nexport { default as Menu } from \"@mui/material/Menu\";\nexport { default as Pagination } from \"@mui/material/Pagination\";\nexport { default as LinearProgress } from \"@mui/material/LinearProgress\";\nexport { default as Dialog } from \"@mui/material/Dialog\";\nexport { default as DialogContent } from \"@mui/material/DialogContent\";\nexport { default as DialogTitle } from \"@mui/material/DialogTitle\";\nexport { default as Slider } from \"@mui/material/Slider\";\n\nexport { styled } from \"@mui/styles\";\nexport { keyframes } from \"@emotion/react\";\n\nexport function useTheme() {\n return useMuiTheme() as Theme;\n}\n\nexport type { Theme };\n","import { Box, Typography } from \"./Mui\";\n\nexport interface NoDataProps {\n tip?: string;\n noTips?: boolean;\n}\n\nexport function NoData({ tip, noTips = false }: NoDataProps) {\n return (\n \n \"\"\n\n {noTips === true ? null : tip ? (\n \n {tip}\n \n ) : (\n No result found\n )}\n \n );\n}\n","import React, { useState } from \"react\";\nimport { ClickAwayListener } from \"@mui/base\";\nimport { Search } from \"react-feather\";\n\nimport { MenuProps } from \"./types\";\nimport { Theme, useTheme, Box, Checkbox, Popper, TextField, InputAdornment } from \"../Mui\";\nimport { NoData } from \"../NoData\";\n\nexport interface DropDownMenuProps {\n value?: any;\n onChange?: (value: any) => void;\n required?: boolean;\n menus: MenuProps[];\n CustomNoData?: React.ReactNode;\n multiple?: boolean;\n menuMaxHeight?: string;\n search?: boolean;\n onSearch?: (search: string | undefined) => void;\n customLabel?: boolean;\n menuFilter?: (menu: MenuProps) => boolean;\n minMenuWidth?: string;\n anchor: any | undefined;\n onClose: () => void;\n onMenuClick: () => void;\n menuWidth?: number;\n}\n\nexport function DropDownMenu({\n value,\n onChange,\n menus,\n CustomNoData,\n multiple = false,\n menuMaxHeight,\n onSearch,\n search: hasSearch,\n customLabel,\n menuFilter,\n minMenuWidth = \"120px\",\n onClose,\n menuWidth,\n onMenuClick,\n anchor,\n}: DropDownMenuProps) {\n const theme = useTheme() as Theme;\n const [search, setSearch] = useState(undefined);\n\n const handleClose = () => {\n setSearch(undefined);\n onClose();\n if (onSearch) onSearch(undefined);\n };\n\n const handleMenuItemClick = (menu: MenuProps) => {\n if (!multiple) {\n setSearch(undefined);\n onMenuClick();\n if (onSearch) onSearch(undefined);\n if (onChange) onChange(menu.value);\n } else {\n const oldSelected = value ? [...value] : [];\n\n if (value?.includes(menu.value)) {\n const index = oldSelected.findIndex((item) => item === menu.value);\n\n if (index !== -1) {\n oldSelected.splice(index, 1);\n if (onChange) onChange(oldSelected);\n }\n } else {\n const newSelected = [...oldSelected, menu.value];\n if (onChange) onChange(newSelected);\n }\n }\n };\n\n const handleCheckboxChange = (checked: boolean, selectedValue: any) => {\n if (onChange) {\n const oldSelected = value ? [...value] : [];\n\n if (checked) {\n const newSelected = [...oldSelected, selectedValue];\n onChange(newSelected);\n } else {\n const index = oldSelected.findIndex((item) => item === selectedValue);\n\n if (index !== -1) {\n oldSelected.splice(index, 1);\n onChange(oldSelected);\n }\n }\n }\n };\n\n const handleSearchChange = (value: string) => {\n setSearch(value);\n if (onSearch) onSearch(value);\n };\n\n return (\n \n \n \n {hasSearch ? (\n \n handleSearchChange(value)}\n value={search}\n slotProps={{\n input: {\n disableUnderline: true,\n startAdornment: (\n \n \n \n ),\n },\n }}\n fullWidth\n />\n \n ) : null}\n\n \n {menus.map((menu, index) => {\n const isFiltered = menuFilter && menuFilter(menu);\n\n return customLabel ? (\n handleMenuItemClick(menu)}\n sx={{ ...(isFiltered ? { display: \"none\" } : {}) }}\n >\n {menu.label}\n \n ) : (\n handleMenuItemClick(menu)}\n >\n {multiple && (\n \n , checked: boolean) =>\n handleCheckboxChange(checked, menu.value)\n }\n checked={value?.includes(menu.value)}\n />\n \n )}\n\n {menu.label}\n \n );\n })}\n\n {menus.length === 0 ? CustomNoData || : null}\n \n \n \n \n );\n}\n","import React, { useState, useRef, ReactNode } from \"react\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { nonNullArgs } from \"@icpswap/utils\";\n\nimport { makeStyles, Theme, Typography, Box } from \"../Mui\";\n\nimport { MenuProps } from \"./types\";\n\ninterface StyleProps {\n contained: boolean;\n fullHeight?: boolean;\n filled?: boolean;\n padding?: string;\n}\n\nconst useStyles = ({ contained, fullHeight, filled, padding }: StyleProps) => {\n return makeStyles((theme: Theme) => {\n return {\n inputBox: {\n display: \"flex\",\n alignItems: \"center\",\n background: filled ? theme.palette.background.level4 : theme.palette.background.level1,\n borderRadius: filled ? \"8px\" : \"12px\",\n padding: padding !== undefined ? padding : contained ? `9px 16px` : `${fullHeight ? \"0px\" : \"12px\"} 16px`,\n width: \"100%\",\n \"& input\": {\n color: theme.palette.text.primary,\n },\n \"&.none-background\": {\n background: \"transparent\",\n },\n },\n };\n });\n};\n\nexport interface PanelProps {\n label?: string;\n value?: any;\n onChange?: (value: any) => void;\n required?: boolean;\n maxWidth?: number;\n fullHeight?: boolean;\n contained?: boolean;\n placeholder?: string;\n filled?: boolean;\n showClean?: boolean;\n showBackground?: boolean;\n minMenuWidth?: string;\n valueColor?: string;\n padding?: string;\n menu: MenuProps | undefined | null;\n onClick?: (event: any) => void;\n open: boolean;\n panel?: (menu: MenuProps | null | undefined) => ReactNode;\n}\n\nexport function SelectPanel({\n label,\n value,\n onChange,\n required,\n maxWidth,\n fullHeight,\n contained = true,\n filled,\n showClean = true,\n showBackground = true,\n valueColor,\n padding,\n menu,\n placeholder,\n onClick,\n open,\n panel,\n}: PanelProps) {\n const classes = useStyles({ contained, fullHeight, filled, padding })();\n const outerBoxRef = useRef(null);\n\n const [showClose, setShowClose] = useState(false);\n\n const handleMouseEnter = () => {\n if (showClean === false) return;\n setShowClose(true);\n };\n\n const handleMouseLeave = () => {\n setShowClose(false);\n };\n\n const handleEmptyValue = (event: React.MouseEvent) => {\n event.stopPropagation();\n if (onChange) onChange(undefined);\n };\n\n return (\n \n {contained && label && (\n \n {required && (\n \n *\n \n )}\n\n \n {label}\n \n \n )}\n\n \n \n {nonNullArgs(value) || (panel && panel(menu)) ? (\n \n {panel ? panel(menu) : menu?.selectLabel ?? menu?.label}\n \n ) : (\n {placeholder}\n )}\n \n\n \n {showClose && !!value ? (\n \n ) : (\n \n )}\n \n \n \n );\n}\n","import React, { useEffect, useState, useRef, useMemo, ReactNode } from \"react\";\n\nimport { Box } from \"../Mui\";\nimport { SelectPanel } from \"./Panel\";\nimport { DropDownMenu } from \"./DropDownMenu\";\nimport { MenuProps } from \"./types\";\n\nexport interface SelectProps {\n label?: string;\n value?: any;\n onChange?: (value: any) => void;\n required?: boolean;\n menus?: MenuProps[];\n maxWidth?: number;\n fullHeight?: boolean;\n disabled?: boolean;\n contained?: boolean;\n CustomNoData?: React.ReactNode;\n placeholder?: string;\n multiple?: boolean;\n menuMaxHeight?: string;\n search?: boolean;\n onSearch?: (search: string | undefined) => void;\n customLabel?: boolean;\n border?: boolean;\n menuFilter?: (menu: MenuProps) => boolean;\n filled?: boolean;\n showClean?: boolean;\n showBackground?: boolean;\n minMenuWidth?: string;\n valueColor?: string;\n panelPadding?: string;\n panel?: (menu: MenuProps | null | undefined) => ReactNode;\n}\n\nexport function Select({\n label,\n value,\n onChange,\n required,\n menus = [],\n maxWidth,\n fullHeight,\n disabled,\n contained = true,\n CustomNoData,\n multiple = false,\n menuMaxHeight,\n onSearch,\n search: hasSearch,\n customLabel,\n menuFilter,\n filled,\n showClean = true,\n showBackground = true,\n minMenuWidth = \"120px\",\n valueColor,\n placeholder,\n panelPadding,\n panel,\n}: SelectProps) {\n const [anchorEl, setAnchorEl] = useState(null);\n const wrapperRef = useRef(null);\n const [menuWidth, setMenuWidth] = useState(undefined);\n\n useEffect(() => {\n const width = wrapperRef?.current?.clientWidth;\n setMenuWidth(width ?? undefined);\n }, [wrapperRef]);\n\n const handleOuterBoxClick = (event: any) => {\n if (disabled) return;\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const selectedMenu = useMemo(() => {\n return menus.filter((menu) => menu.value === value)[0];\n }, [menus, value]);\n\n return (\n <>\n \n \n \n\n \n \n );\n}\n","import { ReactNode, useCallback } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { mockALinkAndOpen } from \"@icpswap/utils\";\n\nimport { Typography, Box } from \"./Mui\";\nimport { Link } from \"./Link\";\n\nexport interface ALinkProps {\n children: ReactNode;\n link: string | undefined;\n color?: string;\n textDecorationColor?: \"primary\" | \"secondary\" | \"text.secondary\" | \"text.primary\";\n fontSize?: string;\n align?: \"right\";\n text?: boolean;\n}\n\nexport function ALink({\n children,\n link,\n textDecorationColor = \"text.secondary\",\n color = \"\",\n fontSize = \"14px\",\n align,\n text = true,\n}: ALinkProps) {\n return (\n \n {text ? (\n \n {children}\n \n ) : (\n children\n )}\n \n );\n}\n\nfunction ArrowIcon() {\n return (\n \n \n \n );\n}\n\nexport interface TextButtonProps {\n children?: ReactNode;\n onClick?: () => void;\n disabled?: boolean;\n link?: string;\n to?: string;\n sx?: any;\n arrow?: boolean;\n color?: \"primary\" | \"white\" | \"secondary\";\n textDecoration?: \"underline\" | \"none\";\n}\n\nexport function TextButton({\n children,\n onClick,\n disabled,\n link,\n to,\n sx,\n arrow,\n color = \"secondary\",\n textDecoration = \"none\",\n}: TextButtonProps) {\n const history = useHistory();\n\n const handleClick = useCallback(() => {\n if (disabled) return;\n\n if (link) {\n mockALinkAndOpen(link, \"text-button-open-new-window\");\n return;\n }\n\n if (to) {\n history.push(to);\n return;\n }\n\n if (onClick) onClick();\n }, [link, to, onClick, disabled]);\n\n return (\n \n {children}\n\n {arrow && (\n \n \n \n )}\n \n );\n}\n\nexport interface TextButtonV1Props {\n children: ReactNode;\n disabled?: boolean;\n link?: string;\n to?: string;\n sx?: any;\n arrow?: boolean;\n color?: \"primary\" | \"white\" | \"secondary\";\n textDecoration?: \"underline\" | \"none\";\n}\n\nexport function TextButtonV1({\n children,\n disabled,\n link,\n to,\n sx,\n arrow,\n color = \"secondary\",\n textDecoration = \"none\",\n}: TextButtonV1Props) {\n return (\n \n {\n if (disabled) {\n event.stopPropagation();\n }\n }}\n >\n {children}\n\n {arrow && }\n \n \n );\n}\n","import { SvgIcon, SvgIconProps } from \"../../components/Mui\";\n\nexport function SnsIcon(props: SvgIconProps) {\n return (\n \n \n \n );\n}\n","import { Avatar, Box, BoxProps } from \"./Mui\";\nimport { SnsIcon } from \"../assets/icons/SNS\";\n\nexport interface TokenImageProps {\n logo: string | undefined | null;\n size?: string;\n sns?: boolean;\n sx?: BoxProps[\"sx\"];\n}\n\nexport function TokenImage({ logo, size, sx, sns }: TokenImageProps) {\n return (\n \n \n  \n \n\n {sns ? (\n \n ) : null}\n \n );\n}\n","import { ReactNode, ReactElement } from \"react\";\nimport { HelpCircle } from \"react-feather\";\n\nimport { Typography, Tooltip as MuiToolTip, Box } from \"./Mui\";\n\nexport interface TooltipProps {\n background?: string;\n tips: ReactNode;\n iconSize?: string;\n iconColor?: string;\n maxWidth?: string;\n children?: ReactElement;\n}\n\nexport function Tooltip({\n tips,\n background,\n maxWidth,\n iconSize = \"16px\",\n children,\n iconColor = \"#8492C4\",\n}: TooltipProps) {\n return (\n \n {tips}\n \n }\n arrow\n >\n {children || (\n \n \n \n )}\n \n );\n}\n","import { useTranslation } from \"react-i18next\";\n\nimport { TypographyProps } from \"../Mui\";\nimport { SmallButton } from \"./SmallButton\";\n\nexport interface MaxButtonProps {\n onClick: TypographyProps[\"onClick\"];\n background?: string;\n color?: string;\n}\n\nexport function MaxButton({ onClick, background, color }: MaxButtonProps) {\n const { t } = useTranslation();\n\n return (\n \n {t(\"common.max\")}\n \n );\n}\n","import React from \"react\";\n\nimport { Typography, TypographyProps } from \"../Mui\";\n\nexport interface SmallButtonProps {\n children: React.ReactNode;\n onClick: TypographyProps[\"onClick\"];\n background?: string;\n color?: string;\n fontWeight?: number;\n}\n\nexport function SmallButton({ children, onClick, background, color, fontWeight }: SmallButtonProps) {\n return (\n \n {children}\n \n );\n}\n","export enum ChartView {\n TVL,\n VOL,\n PRICE,\n FEES,\n LIQUIDITY,\n TRANSACTIONS,\n DexScreener,\n APR,\n DexTools,\n}\n","import { ReactNode } from \"react\";\n\nimport { useTheme, Typography, BoxProps } from \"../Mui\";\nimport { Flex } from \"../Grid/Flex\";\n\nexport interface MenuItemProps {\n onMenuClick: (value: any) => void;\n active?: boolean;\n label?: ReactNode;\n icon?: ReactNode;\n value: any;\n children?: ReactNode;\n onMouseEnter?: BoxProps[\"onMouseEnter\"];\n onMouseLeave?: BoxProps[\"onMouseLeave\"];\n disabled?: boolean;\n}\n\nexport function MenuItem({\n value,\n active,\n label,\n icon,\n onMenuClick,\n children,\n disabled,\n onMouseEnter,\n onMouseLeave,\n}: MenuItemProps) {\n const theme = useTheme();\n\n return (\n onMenuClick(value)}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {label ? (\n \n {icon}\n \n {label}\n \n \n ) : null}\n\n {children}\n \n );\n}\n","import { ClickAwayListener } from \"@mui/base\";\nimport { ReactNode } from \"react\";\n\nimport { useTheme, Box, Popper, makeStyles } from \"../Mui\";\n\nconst useStyles = makeStyles(() => {\n return {\n popper: {\n zIndex: 1101,\n },\n };\n});\n\nexport interface MenuWrapperProps {\n open: boolean;\n onClickAway: () => void;\n anchor: any;\n placement?:\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"right-start\"\n | \"right-end\"\n | \"left-start\"\n | \"left-end\";\n children: ReactNode;\n border?: string;\n padding?: string;\n menuWidth?: string;\n}\n\nexport function MenuWrapper({\n open,\n menuWidth,\n onClickAway,\n border,\n padding,\n anchor,\n placement,\n children,\n}: MenuWrapperProps) {\n const classes = useStyles();\n const theme = useTheme();\n\n return (\n \n \n \n {children}\n \n \n \n );\n}\n","export function availableArgsNull(value: T | null | undefined): [T] | [] {\n return value ? [value] : [];\n}\n","export function enumToString(type: any): string {\n if (typeof type === \"string\") return type;\n\n if (typeof type === \"object\") {\n if (type) {\n return Object.keys(type)[0];\n }\n }\n\n return type as string;\n}\n","import { principalToAccount } from \"./principal\";\n\nexport function explorerLink(address: string) {\n if (address.length > 27) {\n const account = principalToAccount(address);\n return `https://dashboard.internetcomputer.org/account/${account}`;\n }\n\n return `https://dashboard.internetcomputer.org/canister/${address}`;\n}\n","import { Null, type NumberType } from \"@icpswap/types\";\nimport BigNumber from \"bignumber.js\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport { parseTokenAmount } from \"./tokenAmount\";\nimport { isNullArgs } from \"./isNullArgs\";\n\nexport function transactionsTypeFormat(type: any): string {\n if (typeof type === \"string\") return type;\n if (typeof type === \"object\") {\n if (type) {\n return Object.keys(type)[0];\n }\n }\n return type;\n}\n\nexport function openBase64ImageInNewWindow(base64String: string) {\n const image = new Image();\n image.src = base64String;\n\n const win = window.open(\"\");\n win?.document.write(image.outerHTML);\n}\n\nexport function cycleValueFormat(value: NumberType | Null, noUnit?: boolean): string {\n if (value === 0 || isNullArgs(value)) return noUnit ? `0` : `0 T`;\n\n return `${new BigNumber(parseTokenAmount(value, 12).toFixed(4)).toFormat()}${noUnit ? \"\" : \" T\"}`;\n}\n\nexport type User = { principal: Principal } | { address: string };\n\nexport function isPrincipalUser(user: User): user is { principal: Principal } {\n if (\"principal\" in user) return true;\n return false;\n}\n\nexport function isAddressUser(user: User): user is { address: string } {\n if (\"address\" in user) return true;\n return false;\n}\n\nexport function stringToArrayBuffer(string: string): Uint8Array {\n return new TextEncoder().encode(string);\n}\n\nexport function arrayBufferToString(arrayBuffer: Uint8Array): string {\n return new TextDecoder(\"utf-8\").decode(arrayBuffer);\n}\n\nexport function arrayBufferToHex(arrayBuffer: Uint8Array) {\n return Array.from([...arrayBuffer], function (byte) {\n return `0${(byte & 0xff).toString(16)}`.slice(-2);\n }).join(\"\");\n}\n\nexport function arrayBufferFromHex(hex: string) {\n let __hex = hex;\n\n if (__hex.substr(0, 2) === \"0x\") __hex = __hex.substr(2);\n\n const bytes: number[] = [];\n for (let c = 0; c < __hex.length; c += 2) bytes.push(parseInt(__hex.substr(c, 2), 16));\n return Uint8Array.from(bytes);\n}\n\nexport function valueofUser(user: User) {\n if (isPrincipalUser(user)) {\n return user.principal;\n }\n return user.address;\n}\n\nexport function splitArr(arr: T[], length: number) {\n const total_length = arr.length;\n\n if (length >= total_length) {\n return [arr];\n }\n\n const resultLength = Math.ceil(total_length / length);\n const result: Array = [];\n\n for (let i = 0; i < resultLength; i++) {\n result.push(arr.slice(i * length, i * length + length));\n }\n\n return result;\n}\n","import { SubAccount } from \"@dfinity/ledger-icp\";\n\n// TODO\nexport function isOkSubAccount(\n sub: SubAccount | Error | undefined\n): sub is SubAccount | undefined {\n if (sub && sub instanceof Error) return false;\n return true;\n}\n\nexport function isSubAccount(sub: any): sub is SubAccount {\n if (sub && sub instanceof SubAccount) return true;\n return false;\n}\n","export function isAvailablePageArgs(offset: number, limit: number): boolean {\n return (!!offset || offset === 0) && !!limit;\n}\n","export function isBigIntMemo(\n memo: bigint | number[] | undefined\n): memo is bigint {\n if (typeof memo === \"bigint\") return true;\n return false;\n}\n","/** Is null or undefined */\nexport function isNullArgs(argument: T | undefined | null): argument is undefined | null {\n return argument === null || argument === undefined;\n}\n\n/** Not null and not undefined */\nexport function nonNullArgs(argument: T | undefined | null): argument is T {\n return !isNullArgs(argument);\n}\n","import { Principal } from \"@dfinity/principal\";\n\nexport function isPrincipal(principal: any): principal is Principal {\n return !!principal && principal._isPrincipal;\n}\n","export const ICP_ADDRESS_LENGTH = 64;\n\nexport function isValidAccount(address: string): boolean {\n return (\n /^[0-9a-fA-F]+$/.test(address) && ICP_ADDRESS_LENGTH === address.length\n );\n}\n","import { Principal } from \"@dfinity/principal\";\n\nexport function isValidPrincipal(principal: string): boolean {\n try {\n return principal === Principal.fromText(principal).toText();\n } catch (e) {\n return false;\n }\n}\n","export function mockALinkAndOpen(url: string, id: string): void {\n let a = document.createElement(\"a\");\n a.setAttribute(\"href\", url);\n a.setAttribute(\"target\", \"_blank\");\n a.setAttribute(\"id\", id);\n if (!document.getElementById(id)) {\n document.body.appendChild(a);\n }\n a.click();\n}\n","import { Null } from \"@icpswap/types\";\n\nimport { BigNumber } from \"./bignumber\";\nimport { toSignificant, toSignificantWithGroupSeparator } from \"./toSignificant\";\nimport { isNullArgs, nonNullArgs } from \"./isNullArgs\";\n\nfunction removeUselessZeroes(number: string) {\n const regexp = /(?:\\.0*|(\\.\\d+?)0+)$/;\n return number.replace(regexp, \"$1\");\n}\n\n// Function to transform decimal trailing zeroes to exponent\nfunction decimalTrailingZeroesToExponent(formattedCurrency: string, maximumDecimalTrailingZeroes: number): string {\n const decimalTrailingZeroesPattern = new RegExp(`(\\\\.|,)(0{${maximumDecimalTrailingZeroes + 1},})(?=[1-9]?)`);\n return formattedCurrency.replace(\n decimalTrailingZeroesPattern,\n (_match, separator, decimalTrailingZeroes) => `${separator}0{${decimalTrailingZeroes.length}}`,\n );\n // return formattedCurrency.replace(\n // decimalTrailingZeroesPattern,\n // (_match, separator, decimalTrailingZeroes) => `${separator}0${toSubscript(decimalTrailingZeroes.length)}`,\n // );\n}\n\n// const subscriptNumbers: string[] = [\"₀\", \"₁\", \"₂\", \"₃\", \"₄\", \"₅\", \"₆\", \"₇\", \"₈\", \"₉\"];\n// function toSubscript(number: number): string {\n// return number\n// .toString()\n// .split(\"\")\n// .map((digit) => subscriptNumbers[parseInt(digit, 10)])\n// .join(\"\");\n// }\n\nexport interface FormatDollarAmountOptions {\n digits?: number;\n min?: number;\n max?: number;\n}\n\n// using a currency library here in case we want to add more in future\nexport const formatDollarAmount = (num: number | string | undefined, options?: FormatDollarAmountOptions) => {\n const { digits = 2, min = 0.01, max = 1000 } = options ?? {};\n\n if (isNullArgs(num)) return \"-\";\n if (new BigNumber(num).isEqualTo(0)) return \"$0.00\";\n\n if (new BigNumber(num).isLessThan(min)) {\n return `<$${min}`;\n }\n\n if (new BigNumber(num).isLessThan(max)) {\n return `$${new BigNumber(num).toFixed(digits)}`;\n }\n\n return `$${Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n compactDisplay: \"short\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(Number(num))}`;\n};\n\nexport interface FormatDollarTokenPriceOptions {\n digits?: number;\n min?: number;\n decimalTrailingZero?: number;\n}\n\n// using a currency library here in case we want to add more in future\nexport const formatDollarTokenPrice = (num: number | string | Null, options?: FormatDollarTokenPriceOptions) => {\n const { digits = 3, min, decimalTrailingZero = 3 } = options ?? {};\n\n const __num = num;\n\n if (isNullArgs(num)) return \"-\";\n if (new BigNumber(__num).isEqualTo(0)) return \"$0.00\";\n\n if (nonNullArgs(min) && new BigNumber(__num).isLessThan(min)) {\n return `<$${min}`;\n }\n\n if (new BigNumber(__num).isLessThan(1)) {\n if (new BigNumber(__num).isLessThan(1 / 10 ** decimalTrailingZero)) {\n return `$${decimalTrailingZeroesToExponent(toSignificant(__num, decimalTrailingZero), decimalTrailingZero - 1)}`;\n }\n\n return `$${toSignificant(__num, digits)}`;\n }\n\n return `$${new BigNumber(__num).toFormat(2)}`;\n};\n\nexport interface FormatAmountOptions {\n digits?: number;\n min?: number;\n max?: number;\n fullNumber?: boolean;\n fullDigits?: number;\n}\n\n// using a currency library here in case we want to add more in future\nexport const formatAmount = (num: number | string | Null, options?: FormatAmountOptions) => {\n const { digits = 5, min = 0.00001, max = 1000, fullNumber, fullDigits = 5 } = options ?? {};\n\n if (isNullArgs(num)) return \"-\";\n if (new BigNumber(num).isEqualTo(0)) return \"0.00\";\n\n if (fullNumber) {\n return new BigNumber(num).toFormat(fullDigits);\n }\n\n if (new BigNumber(num).isLessThan(min)) {\n return `<${min}`;\n }\n\n if (new BigNumber(num).isLessThan(max)) {\n return removeUselessZeroes(new BigNumber(num).toFixed(digits));\n }\n\n return Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n compactDisplay: \"short\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(Number(num));\n};\n\nexport interface FormatTokenPriceProps {\n digits?: number;\n digitsIfLessThanOne?: number;\n min?: number;\n max?: number;\n}\n\n// using a currency library here in case we want to add more in future\nexport function formatTokenPrice(num: number | string | Null, options?: FormatTokenPriceProps) {\n const { digits = 6, min = 0.00001, digitsIfLessThanOne = 5, max = 1000000 } = options ?? {};\n\n if (isNullArgs(num)) return \"-\";\n if (new BigNumber(num).isEqualTo(0)) return \"0.00\";\n\n if (new BigNumber(num).isLessThan(min)) {\n return `<${min}`;\n }\n\n if (new BigNumber(num).isLessThan(1)) {\n return removeUselessZeroes(new BigNumber(num).toFixed(digitsIfLessThanOne));\n }\n\n if (new BigNumber(num).isLessThan(max)) {\n return toSignificantWithGroupSeparator(num, digits);\n }\n\n return new BigNumber(num).toFixed(0);\n}\n\nexport interface FormatIcpAmountOptions {\n digits?: number;\n min?: number;\n max?: number;\n}\n\n// using a currency library here in case we want to add more in future\nexport const formatIcpAmount = (num: number | string | Null, options?: FormatIcpAmountOptions) => {\n const { digits = 2, min = 0.01, max = 1000 } = options ?? {};\n\n if (isNullArgs(num)) return \"-\";\n if (new BigNumber(num).isEqualTo(0)) return \"0.00\";\n\n if (new BigNumber(num).isLessThan(min)) {\n return `<${min}`;\n }\n\n if (new BigNumber(num).isLessThan(max)) {\n return new BigNumber(num).toFormat(digits);\n }\n\n return Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n compactDisplay: \"short\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(Number(num));\n};\n\n// Format the number of liquidity token amount\nexport function formatLiquidityAmount(num: number | string | Null) {\n if (isNullArgs(num)) return \"-\";\n if (new BigNumber(num).isEqualTo(0)) return \"0.00\";\n\n if (new BigNumber(num).isLessThan(1)) {\n return toSignificantWithGroupSeparator(num, 3);\n }\n\n const __num = new BigNumber(num).toFormat(5);\n\n const regexp = /(?:\\.0*|(\\.\\d+?)0+)$/;\n\n return __num.replace(regexp, \"$1\");\n}\n\nexport function percentToNum(val: string) {\n return new BigNumber(val.replace(\"%\", \"\")).dividedBy(100).toNumber();\n}\n\nexport function numToPercent(num: string | number | BigNumber, digits?: number) {\n return digits || digits === 0\n ? `${new BigNumber(num).multipliedBy(100).toFixed(digits)}%`\n : `${new BigNumber(num).multipliedBy(100).toString()}%`;\n}\n","import BigNumber from \"bignumber.js\";\n\nexport function numberToString(num: number | bigint | BigNumber): string {\n if (num === 0 || num === BigInt(0)) return \"0\";\n if (num)\n return new BigNumber(typeof num === \"bigint\" ? String(num) : num).toFormat({\n groupSeparator: \"\",\n });\n return \"\";\n}\n\n/** Only Integer number */\nexport function bigNumberToString(num: BigNumber): string {\n return num.toFormat({\n groupSeparator: \"\",\n });\n}\n","import invariant from \"tiny-invariant\";\n\nexport function pageArgsFormat(\n pageNum: number,\n pageSize: number\n): [number, number] {\n invariant(pageNum > 0, \"Invalid pageNum\");\n invariant(pageSize > 0, \"Invalid pageSize\");\n\n const pageStart = (pageNum - 1) * pageSize;\n const pageEnd = pageStart + pageSize;\n return [pageStart, pageEnd];\n}\n","import { AccountIdentifier, SubAccount } from \"@dfinity/ledger-icp\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport { isSubAccount } from \"./ic\";\nimport { isValidPrincipal } from \"./isValidPrincipal\";\n\nexport function principalToAccount(principal: string, subAccount?: SubAccount | string): string {\n if (!principal) return principal;\n\n if (subAccount && !isSubAccount(subAccount) && !isValidPrincipal(subAccount)) {\n throw Error(\"Wrong sub account\");\n }\n\n const sub = subAccount\n ? isSubAccount(subAccount)\n ? subAccount\n : isValidPrincipal(subAccount)\n ? SubAccount.fromPrincipal(Principal.fromText(subAccount))\n : undefined\n : undefined;\n\n return AccountIdentifier.fromPrincipal({\n principal: Principal.fromText(principal),\n subAccount: sub,\n }).toHex();\n}\n\nexport function principalToSubaccount(principal: string): Uint8Array {\n return SubAccount.fromPrincipal(Principal.fromText(principal)).toUint8Array();\n}\n","import { StatusResult, ResultStatus } from \"@icpswap/types\";\nimport isObject from \"lodash/isObject\";\n\nexport function isResultKey(key: string) {\n return isResultErrKey(key) || isResultOkKey(key);\n}\n\nexport function isResultErrKey(key: string) {\n return key === ResultStatus.ERROR || key === \"Err\";\n}\n\nexport function isResultOkKey(key: string) {\n return key === ResultStatus.OK || key === \"Ok\";\n}\n\nexport function resultFormat(result: any): StatusResult {\n if (result === null || result === undefined) {\n return {\n status: ResultStatus.ERROR,\n message: \"\",\n data: undefined,\n };\n }\n\n const key = Object.keys(result);\n\n if (\n result &&\n isObject(result as object) &&\n key &&\n key[0] &&\n isResultKey(key[0])\n ) {\n let message = \"\";\n\n if (isResultErrKey(key[0]) && isObject(result[key[0]])) {\n const messageKey = Object.keys(result[key[0]])[0];\n const value = result[key[0]][messageKey];\n\n // TODO: for token\n if (messageKey === \"Other\") {\n message = value;\n } else {\n if (typeof value === \"object\") {\n message = `${messageKey}: ${JSON.stringify(value).replace(\n /\\\"/g,\n \"\"\n )}`;\n } else {\n message = `${messageKey}: ${value}`;\n }\n }\n } else if (typeof result[key[0]] === \"string\") {\n message = result[key[0]];\n }\n\n return {\n status: isResultErrKey(key[0]) ? ResultStatus.ERROR : ResultStatus.OK,\n data: isResultOkKey(key[0]) ? (result[key[0]] as T) : undefined,\n message,\n };\n }\n\n return {\n status: ResultStatus.OK,\n data: result as T,\n message: \"\",\n };\n}\n","export function shorten(str = \"\", length = 4) {\n if (str.length <= length * 2) return `${str.slice(0, length)}...`;\n return `${str.slice(0, length)}...${str.slice(str.length - length)}`;\n}\n\nexport function shortenString(str: string, limit?: number): string {\n if (!str) return str;\n if (limit) {\n return str.length > limit ? `${str.slice(0, limit).trim()}...` : str;\n }\n return shorten(str);\n}\n","import _Decimal from \"decimal.js-light\";\nimport _Big from \"big.js\";\nimport toFormat from \"toformat\";\n\nenum Rounding {\n ROUND_DOWN,\n ROUND_HALF_UP,\n ROUND_UP,\n}\n\nconst Decimal = toFormat(_Decimal);\n\nconst toSignificantRounding = {\n [Rounding.ROUND_DOWN]: Decimal.ROUND_DOWN,\n [Rounding.ROUND_HALF_UP]: Decimal.ROUND_HALF_UP,\n [Rounding.ROUND_UP]: Decimal.ROUND_UP,\n};\n\nexport function toSignificant(\n num: number | string,\n significantDigits = 6,\n format: object = { groupSeparator: \"\" },\n rounding: Rounding = Rounding.ROUND_DOWN,\n): string {\n Decimal.set({\n precision: significantDigits + 1,\n rounding: toSignificantRounding[rounding],\n });\n\n const quotient = new Decimal(num).toSignificantDigits(significantDigits);\n return quotient.toFormat(quotient.decimalPlaces(), format);\n}\n\nexport function toSignificantWithGroupSeparator(num: number | string, significantDigits = 6): string {\n Decimal.set({\n precision: significantDigits + 1,\n rounding: toSignificantRounding[Rounding.ROUND_DOWN],\n });\n\n const quotient = new Decimal(num).toSignificantDigits(significantDigits);\n return quotient.toFormat(quotient.decimalPlaces(), { groupSeparator: \",\" });\n}\n","import BigNumber from \"bignumber.js\";\nimport type { NumberType } from \"@icpswap/types\";\n\nexport function formatTokenAmount(amount: NumberType | null | undefined, decimals: number | bigint = 8): BigNumber {\n let _amount = amount;\n let _decimals = decimals;\n\n if (_amount !== 0 && !_amount) return new BigNumber(0);\n if (typeof _amount === \"bigint\") _amount = Number(_amount);\n if (typeof decimals === \"bigint\") _decimals = Number(_decimals);\n if (Number.isNaN(Number(amount))) return new BigNumber(_amount);\n\n return new BigNumber(new BigNumber(_amount).multipliedBy(10 ** Number(_decimals)).toFixed(0));\n}\n\nexport function parseTokenAmount(amount: NumberType | null | undefined, decimals: number | bigint = 8): BigNumber {\n let _amount = amount;\n let _decimals = decimals;\n\n if (_amount !== 0 && !_amount) return new BigNumber(0);\n if (typeof _amount === \"bigint\") _amount = Number(_amount);\n if (typeof _decimals === \"bigint\") _decimals = Number(_decimals);\n if (Number.isNaN(Number(_amount))) return new BigNumber(String(_amount));\n\n return new BigNumber(String(_amount)).dividedBy(10 ** Number(_decimals));\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"158\":\"d8da60ff\",\"189\":\"40bced7e\",\"320\":\"b35c18d0\",\"537\":\"3448b32e\",\"695\":\"1c3f76cf\",\"834\":\"eaa878b2\",\"873\":\"5605e87b\",\"885\":\"5e16b0cb\",\"903\":\"5b49c827\",\"904\":\"59b95f4b\",\"968\":\"8c108a8b\",\"1057\":\"e5d4d645\",\"1148\":\"2284f1b4\",\"1197\":\"30d4714c\",\"1519\":\"c29af979\",\"1675\":\"8db053b1\",\"1681\":\"41352aa2\",\"1720\":\"16647a49\",\"1737\":\"aaf41e26\",\"1750\":\"3b39d478\",\"1950\":\"581b4b2e\",\"2008\":\"1ebe8b60\",\"2047\":\"740df8a0\",\"2105\":\"50398855\",\"2151\":\"031f3144\",\"2186\":\"9acc592d\",\"2256\":\"0c92ac56\",\"2364\":\"c20f2894\",\"2404\":\"e02a2589\",\"2683\":\"4fdbed3a\",\"2732\":\"dd21bfa3\",\"2745\":\"97eb4a9b\",\"2806\":\"18a0a96f\",\"2879\":\"f67bd4bd\",\"2941\":\"930ccbc1\",\"3053\":\"16fdb8b8\",\"3089\":\"96505dc3\",\"3134\":\"89993c8c\",\"3226\":\"6f3b9d23\",\"3472\":\"d31c3deb\",\"3704\":\"42db845b\",\"3782\":\"eaa29470\",\"4087\":\"3476d6b7\",\"4166\":\"0bec0e27\",\"4244\":\"043f293a\",\"4256\":\"71cb8b49\",\"4277\":\"47c2760a\",\"4463\":\"79181578\",\"4550\":\"a31bfc11\",\"4551\":\"1f75754e\",\"4823\":\"eb3921f6\",\"4926\":\"c8287935\",\"4938\":\"0a957c42\",\"4975\":\"31663c89\",\"5032\":\"d2a3bac8\",\"5192\":\"4c4e800b\",\"5291\":\"9765af8f\",\"5303\":\"f84f0fca\",\"5350\":\"7e2b57fc\",\"5389\":\"ddd39ea8\",\"5407\":\"04648f18\",\"5447\":\"fc37a7ab\",\"5587\":\"cadc2bf4\",\"5726\":\"57bad074\",\"5809\":\"d16a36a9\",\"5856\":\"5d153c4e\",\"5933\":\"ad8457a3\",\"6100\":\"61cbfe0e\",\"6235\":\"f236dce2\",\"6242\":\"3312c2f8\",\"6299\":\"5cabbb09\",\"6300\":\"03943ce8\",\"6492\":\"6a4aa38e\",\"6497\":\"a4bfdaeb\",\"6527\":\"c39af00b\",\"6543\":\"33bf200f\",\"6973\":\"7abfb36c\",\"7003\":\"8834aba3\",\"7017\":\"663dfd9c\",\"7221\":\"0d36aa4b\",\"7290\":\"a786954f\",\"7379\":\"715df839\",\"7382\":\"5f26977c\",\"7665\":\"ce0c0540\",\"7768\":\"676862bb\",\"7925\":\"b6230b55\",\"8128\":\"821f11b2\",\"8355\":\"aac4558b\",\"8380\":\"c7e5d0d8\",\"8424\":\"04a2b5a3\",\"8511\":\"709b5a1b\",\"8691\":\"b43229e8\",\"8782\":\"5a2f7b3f\",\"8804\":\"19dd7a97\",\"8852\":\"301a0c90\",\"8883\":\"5bad7785\",\"9002\":\"19af66f3\",\"9083\":\"8e4193d0\",\"9109\":\"70e0da56\",\"9280\":\"96b6662b\",\"9616\":\"2cff60f4\",\"9802\":\"f90a9fc9\",\"9906\":\"90b49fac\",\"9932\":\"90679705\",\"9956\":\"c8c74d50\",\"9958\":\"4dea355f\",\"9959\":\"caef63f6\",\"9973\":\"e0af110a\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"4087\":\"e371f8e3\",\"5447\":\"e371f8e3\",\"9083\":\"e371f8e3\"}[chunkId] + \".chunk.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"@icpswap/swap:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","(() => {\n if (typeof __webpack_require__ !== 'undefined') {\n var oldGetScript = __webpack_require__.u;\n var oldLoadScript = __webpack_require__.e;\n var queryMap = {};\n var countMap = {};\n var getRetryDelay = function (retryAttempt) {\n return 2 ** (retryAttempt - 1) * 500;\n };\n __webpack_require__.u = function (chunkId) {\n var result = oldGetScript(chunkId);\n return (\n result +\n (queryMap.hasOwnProperty(chunkId) ? '?' + queryMap[chunkId] : '')\n );\n };\n __webpack_require__.e = function (chunkId) {\n var result = oldLoadScript(chunkId);\n return result.catch(function (error) {\n var retries = countMap.hasOwnProperty(chunkId) ? countMap[chunkId] : 3;\n if (retries < 1) {\n var realSrc = oldGetScript(chunkId);\n error.message =\n 'Loading chunk ' +\n chunkId +\n ' failed after 3 retries.\\n(' +\n realSrc +\n ')';\n error.request = realSrc;\n throw error;\n }\n return new Promise(function (resolve) {\n var retryAttempt = 3 - retries + 1;\n setTimeout(function () {\n var retryAttemptString = '&retry-attempt=' + retryAttempt;\n var cacheBust = (function () {\n return 'cache-bust=' + Date.now();\n })();\n +retryAttemptString;\n queryMap[chunkId] = cacheBust;\n countMap[chunkId] = retries - 1;\n resolve(__webpack_require__.e(chunkId));\n }, getRetryDelay(retryAttempt));\n });\n });\n };\n }\n})();\n","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"4087\":1,\"5447\":1,\"9083\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_icpswap_swap\"] = self[\"webpackChunk_icpswap_swap\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7021,5844,7862,763], () => (__webpack_require__(27782)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["idlFactory","_ref","IDL","Mode","Variant","RestrictedTo","Vec","Principal","DepositsRestrictedTo","ReadOnly","Null","GeneralAvailability","UpgradeArgs","Record","kyt_principal","Opt","mode","retrieve_btc_min_amount","Nat64","max_time_in_queue_nanos","min_confirmations","Nat32","kyt_fee","BtcNetwork","Mainnet","Regtest","Testnet","InitArgs","ecdsa_key_name","Text","ledger_id","btc_network","Account","Upgrade","Init","owner","subaccount","Nat8","Utxo","height","value","outpoint","txid","vout","ReimbursementReason","CallFailed","TaintedDestination","kyt_provider","BitcoinAddress","p2wsh_v0","p2tr_v1","p2sh","p2wpkh_v0","p2pkh","Event","received_utxos","to_account","mint_txid","utxos","schedule_deposit_reimbursement","burn_block_index","account","amount","reason","sent_transaction","fee","change_output","requests","submitted_at","distributed_kyt_fee","block_index","init","upgrade","retrieve_btc_kyt_failed","uuid","address","accepted_retrieve_btc_request","received_at","checked_utxo","clean","Bool","utxo","removed_retrieve_btc_request","confirmed_transaction","replaced_transaction","old_txid","new_txid","ignored_utxo","reimbursed_failed_deposit","mint_block_index","MinterInfo","RetrieveBtcArgs","RetrieveBtcOk","RetrieveBtcError","MalformedAddress","GenericError","error_message","error_code","TemporarilyUnavailable","AlreadyProcessing","AmountTooLow","InsufficientFunds","balance","RetrieveBtcStatus","Signing","Confirmed","Sending","Unknown","Submitted","Pending","RetrieveBtcWithApprovalArgs","from_subaccount","RetrieveBtcWithApprovalError","InsufficientAllowance","allowance","UtxoStatus","ValueTooSmall","Tainted","Minted","minted_amount","Checked","UpdateBalanceError","NoNewUtxos","required_confirmations","current_confirmations","Service","estimate_withdrawal_fee","Func","minter_fee","bitcoin_fee","get_btc_address","get_deposit_fee","get_events","start","length","get_minter_info","get_withdrawal_account","retrieve_btc","Ok","Err","retrieve_btc_status","retrieve_btc_with_approval","update_balance","ckBtcMinter","identity","actor","create","canisterId","ckBTC_MINTER_ID","ckBTCActor","async","icrc2","ckBTC_ID","Token","standard","CreatePoolArgs","Nat","sqrtPriceX96","token0","token1","PoolData","key","tickSpacing","Int","Error","CommonError","InternalError","UnsupportedToken","Result_1","ok","err","CycleInfo","available","Result_2","GetPoolArgs","Result","createPool","deletePool","getAccessControlState","owners","clients","getAvailabilityState","whiteList","getCycleInfo","getPool","getPools","getRemovedPools","removePool","setAvailable","setClients","setOwnerToPool","setOwners","setWhiteList","swapFactory_update_call","actorName","ActorName","SwapFactory","SwapFactoryInterfaceFactory_update_call","DialogCloseIcon","props","_jsxs","SvgIcon","viewBox","children","_jsx","opacity","d","useStyles","makeStyles","copy","display","cursor","forwardRef","ref","content","hide","classes","openTips","useTips","copyToClipboard","TIP_SUCCESS","useImperativeHandle","Box","className","onClick","TokenItem","onUpdateTokenAdditional","searchWord","showBalance","onTokenHide","isActive","isDisabled","hidden","theme","useTheme","principal","useAccountPrincipal","matchDownSM","useMediaQuery","breakpoints","down","getBalanceId","useMemo","token","useToken","result","loading","useTokenBalance","interfacePrice","useUSDPriceById","taggedTokens","updateTaggedTokens","deleteTaggedTokens","useTaggedTokenManager","tokenBalanceAmount","undefined","parseTokenAmount","decimals","toString","useEffect","isTagged","includes","isHidden","isValidPrincipal","symbol","toLocaleLowerCase","name","sx","padding","gridTemplateColumns","gap","alignItems","background","palette","level4","handleItemClick","Grid","container","TokenImage","logo","size","tokenId","item","xs","overflow","width","Typography","color","whiteSpace","textOverflow","fontSize","fontWeight","margin","TokenStandardLabel","borderRadius","justifyContent","DotLoading","align","maxWidth","formatAmount","nonNullArgs","formatDollarAmount","BigNumber","multipliedBy","PlusCircle","themeOption","textSecondary","event","stopPropagation","BASE_TOKENS","ICP","ICS","ckUSDC","ckBTC","ckETH","ckUSDT","BOB","ALICE","BaseToken","onTokenClick","handleClick","useCallback","Flex","border","level3","BaseTokens","_ref2","wrap","map","base_token","wrapper","Selector","open","onChange","onClose","disabledCurrencyIds","activeCurrencyIds","t","useTranslation","isDark","isDarkTheme","searchKeyword","setSearchKeyword","useState","importTokenCanceled","setImportTokenCanceled","hiddenCanisterIds","setHiddenCanisterIds","snsAllTokensInfo","useFetchSnsAllTokensInfo","globalTokenList","useGlobalTokenList","yourTokens","Set","DEFAULT_DISPLAYED_TOKENS","e","concat","snsTokens","noneSnsTokens","filter","forEach","snsTokenInfo","find","canister_ids","ledger_canister_id","root_canister_id","push","handleTokenClick","handleSearchToken","debouncedSearch","useDebouncedChangeHandler","showImportToken","handleTokenHidden","index","indexOf","prevState","newCanisterIds","splice","allTokenCanisterIds","noData","_Fragment","SwapModal","title","dialogProps","backgroundColor","level2","colors","lightGray200","position","lineHeight","FilledTextField","contained","level1","placeholderSize","fullWidth","placeholder","textFieldProps","slotProps","input","startAdornment","InputAdornment","SearchIcon","maxLength","NoData","ImportToken","onCancel","mt","AvatarImage","_props$sx","Avatar","useSNSTokenRootId","UITokenImage","sns","Image","ConnectorImage","connector","useConnector","imageUrl","_ConnectorConfigs$fin","ConnectorConfigs","src","button","ImportTokenTip","onOk","updateTokenStandard","useUpdateTokenStandard","noStandard","setNoStandard","setLoading","handleImport","getTokenStandard","isNullArgs","registerTokens","textAlign","CircularProgress","WarningIcon","fill","xmlns","clipPath","id","transform","ConfirmImport","_token$logo","onImportSuccessfully","riskWarning","setRiskWarning","openSuccessTip","useSuccessTip","error","Modal","marginRight","vertical","component","TextButton","link","INFO_URL","top","Checkbox","checked","target","Button","variant","disabled","handleConfirm","step","setStep","onNo","FilledTextFieldLabel","label","required","labelSize","Value","_ref3","_menus$filter$0$label","_menus$filter$","select","menus","helperText","menu","marginTop","_ref4","_props$fontSize","_props$fontSize2","_props$placeholderSiz","_props$placeholderSiz2","_textFieldProps$slotP","fullHeight","CustomNoData","menuDisabled","multiline","onFocus","inputPadding","inputBox","normal","border0","minHeight","text","primary","borderColor","anchorEl","setAnchorEl","inputRef","useRef","outerBoxRef","menuWidth","setMenuWidth","focus","_inputRef$current2","current","_outerBoxRef$current","clientWidth","_inputRef$current","currentTarget","flex","justify","TextField","disableUnderline","_ref6","autoComplete","spellCheck","KeyboardArrowDownIcon","Boolean","Menu","handleClose","anchorOrigin","horizontal","PaperProps","style","MenuItem","_ref5","handleMenuItemClick","Loadable","Component","Suspense","fallback","LinearLoader","Maintenance","flexDirection","MaintenanceSVG","alt","wordBreak","useMuiTheme","ReclaimTips","message","onReclaimClick","tipKey","poolId","history","useHistory","closeStep","useCloseStep","to","msg","replace","TokenPair","token0Logo","token1Id","token0Id","token0Symbol","token1Logo","token1Symbol","isTokenHide","tokenInfo","search","PairMenuItem","useTokenLogo","SelectPair","onPairChange","hasSearch","filled","showBackground","showClean","panelPadding","defaultPanel","customPanel","allPair","setValue","setSearch","allTokensOfSwap","useStateSwapAllTokens","swapPools","useAllSwapPools","ele","additional","JSON","stringify","unshift","Select","minMenuWidth","menuMaxHeight","onSearch","menuFilter","parse","panel","fromText","__principal__","TokenMenuItem","generateLogoUrl","SelectToken","onTokenChange","minWidth","maxHeight","StepViewButton","useStepManager","TokenPoolPrice","tokenA","tokenB","priceB","priceA","wrapperSx","dividedBy","toNumber","formatDollarTokenPrice","createContext","allTokenUSDMap","ButtonConnector","showConnector","useConnectManager","isConnected","useConnectorStateConnected","startIcon","root","left","zIndex","spacing","backdrop","FullscreenLoading","maskClosable","onMaskClick","dispatch","useAppDispatch","setOpen","loadingInitial","useAppSelector","state","Backdrop","closeLoading","LoadingImage","loadingContainer","paddingTop","mask","ListLoading","alignContent","dot","animationDuration","animationIterationCount","dot1","animationName","dot2","dot3","Wrapper","InfoWrapper","ViewMore","secondary","AddIcon","fillRule","clipRule","ArrowIcon","SelectedToken","selectedTokenIds","setToken","selectorOpen","setSelectorOpen","handleSelectToken","CurrencySelector","FindPositionsModal","openTip","setError","setTokenA","setTokenB","updateStoreUserPositionPool","useUpdateUserPositionPools","poolData","positionIds","getUserPositionIds","updateUserPositionPoolId","TextFieldNumberComponent","other","NumericFormat","type","inputMode","getInputRef","onValueChange","values","NumberTextField","_otherProps$slotProps","_otherProps$slotProps2","numericProps","otherProps","inputComponent","inputProps","decimalScale","allowNegative","thousandSeparator","NumberFilledTextField","_otherProps$textField","_otherProps$textField2","_otherProps$textField3","_numericProps$allowNe","_numericProps$thousan","TabPanel","tabs","active","fontNormal","activeWithSearch","bg0","bg1","padding0","padding1","location","useLocation","activeButtonKey","setActiveButtonKey","tab","path","pathname","darkLevel1","mockALinkAndOpen","loadPage","textPrimary","darkLevel3","userSelect","CollapseText","description","AlertCircle","handleToggle","Collapse","appear","in","trackBorder","customization","darkTextSecondary","trackActiveBorder","darkSecondaryMain","switchBase","dark","light","lightPrimaryMain","thumb","boxShadow","track","transition","transitions","focusVisible","_Switch","Switch","focusVisibleClassName","disableRipple","ImportToNns","useTokenImportToNns","Link","importTokenToNnsUrl","AddressFormat","copyRef","Copy","shorten","handleCopy","_copyRef$current","IsSneedOwner","isSneed","tooltip","Tooltip","tips","ObserverWrapper","beforeClass","afterClass","scrollInViewport","scrollOutViewport","eleRef","inViewport","setInViewport","observer","IntersectionObserver","entries","entry","isIntersecting","rootMargin","threshold","observe","disconnect","ScrollTop","heightShowScrollTop","scrollTopTarget","showScrollTop","setShowScrollTop","scrollTopPositionLeft","setScrollTopPositionLeft","handleScrollTop","document","querySelector","offsetTop","window","scrollTo","behavior","onScroll","documentElement","scrollTop","addEventListener","removeEventListener","boundingClientRect","getBoundingClientRect","right","bottom","warningText","warning","usePrincipalStandard","useAccountStandard","TokenTransferModal","_token$transFee","onTransferSuccess","transferTo","useAccount","principalString","useAccountPrincipalString","openFullLoading","closeFullLoading","useFullscreenLoading","refreshTotalBalance","setRefreshTotalBalance","useContext","WalletContext","tokenUSDPrice","initialValues","setValues","handleFieldChange","field","actualTransferAmount","_values$amount2","minus","transFee","isGreaterThan","errorMessage","getErrorMessage","_values$amount","isValidAccount","addressHelpText","endAdornment","toSignificantWithGroupSeparator","toFixed","toFormat","MaxButton","status","tokenTransfer","formatTokenAmount","from","_getLocaleMessage","MessageTypes","success","WRAPPED_ICP","getLocaleMessage","console","StandardText","TOKEN_STANDARD","DIP20","DIP20_WICP","DIP20_XTC","EXT","ICRC1","ICRC2","StandardLabelBg","InfoLayout","InfoNavBar","routes","i18n","linearGradient","borderBottom","navItem","more","pathName","matchUpLG","up","matchDownMD","RoutesNumber","route","split","handlerOpenTo","val","onMouseEnter","handleMouseEnter","onMouseLeave","handleMouseLeave","MenuWrapper","anchor","placement","onClickAway","_route$path","onMenuClick","handleMenuClick","titleContainer","detailItem","marginBottom","closeButton","primaryMain","closeButton1","confirmText","cancelText","onConfirm","showConfirm","showCancel","showClose","confirmDisabled","contentPadding","down760","Dialog","isElement","DialogTitle","DialogContent","_props$dialogProps","React","capitalise","charAt","toUpperCase","slice","originKeyExtractor","isDefined","focusable","flexShrink","CheckIcon","ErrorIcon","InfoIcon","default","info","TransitionStatus","Transition","constructor","super","initialStatus","this","appearStatus","EXITED","ENTERING","ENTERED","unmountOnExit","mountOnEnter","UNMOUNTED","nextCallback","getDerivedStateFromProps","nextIn","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","EXITING","componentWillUnmount","cancelNextCallback","getTimeouts","timeout","enter","exit","mounting","arguments","performEnter","performExit","setState","node","nodeRef","isAppearing","timeouts","onEnter","safeSetState","onEntering","onTransitionEnd","onEntered","onExit","onExiting","onExited","cancel","nextState","callback","setNextCallback","handler","doesNotHaveTimeoutOrListener","addEndListener","setTimeout","render","_id","_in","_mountOnEnter","_unmountOnExit","_appear","_enter","_exit","_timeout","_addEndListener","_onEnter","_onEntering","_onEntered","_onExit","_onExiting","_onExited","_nodeRef","childProps","noop","defaultProps","setRef","useForkRef","refA","refB","refValue","getTransitionProps","_style$transitionDura","duration","transitionDuration","easing","transitionTimingFunction","delay","transitionDelay","defaultEasing","easeInOut","easeOut","easeIn","sharp","formatMs","milliseconds","Math","round","createTransition","options","Array","isArray","animatedProp","formattedDuration","formattedDelay","join","ownerWindow","doc","ownerDocument","defaultView","setTranslateValue","direction","rect","containerWindow","fakeTransform","computedStyle","getComputedStyle","getPropertyValue","offsetX","offsetY","transformValues","parseInt","innerWidth","innerHeight","getTranslateValue","webkitTransform","Slide","inProp","handleRefIntermediary","handleRef","updatePosition","handleResize","func","wait","debounced","_len","args","_key","clearTimeout","later","apply","clear","debounce","TransitionComponent","handleEnter","snackId","reflow","transitionProps","webkitTransition","handleExit","handleExited","visibility","defaults","maxSnack","persist","hideIconVariant","disableWindowBlurListener","autoHideDuration","iconVariant","defaultIconVariants","merge","getAutoHideDuration","optionsDuration","propsDuration","isNumberOrNull","numberish","getTransitionDuration","is","types","some","getAutoHeightDuration","constant","ComponentClasses","entered","collapsedSize","timer","wrapperRef","autoTransitionDuration","getWrapperSize","clientHeight","handleEntered","wrapperSize","duration2","next","clsx","pointerEvents","toSnackbarAnchorOrigin","createChainedFunction","funcs","reduce","acc","argums","useEnhancedEffect","useEventCallback","fn","SnackbarProps","timerAutoHide","setAutoHideTimer","autoHideDurationParam","handlePause","handleResume","ClickAwayListener","flexWrap","flexGrow","letterSpacing","paddingRight","iconWrapper","messageContent","extraContent","paddingLeft","action","marginLeft","close","line","successDark","danger","MaterialDesignContent","forwardedRef","componentOrFunctionAction","tick","setTick","icon","isLoading","SnackbarContent","role","memo","wrappedRoot","SnackbarItem","styles","collapsed","setCollapsed","snack","handleExitedScreen","col","allClasses","containerClasses","containerRoot","containerAnchorOriginTopCenter","containerAnchorOriginBottomCenter","containerAnchorOriginTopRight","containerAnchorOriginBottomRight","containerAnchorOriginTopLeft","containerAnchorOriginBottomLeft","Object","keys","obj","keepSnackbarClassKeys","TransitionProps","componentOrFunctionContent","otherSnack","callbacks","cbName","Snackbar","requestClose","indents","dense","collapseWrapper","boxSizing","rootDense","center","SnackbarContainer","combinedClassname","SnackbarProvider","_this","enqueueSnackbar","opts","preventDuplicate","hasSpecifiedKey","Date","getTime","random","merger","compareFunction","inQueue","queue","findIndex","inView","snacks","handleDisplaySnack","handleDismissOldest","processQueue","popped","ignore","handleEnteredSnack","handleCloseSnack","shouldCloseAll","closeSnackbar","toBeClosed","handleExitedSnack","newState","contextValue","domRoot","Components","categ","category","existingOfCategory","snackbars","origin","nomineeSnack","SnackbarContext","Provider","createPortal","PageSizeList","count","onPageChange","onPageSizeChange","defaultPageSize","flexEnd","showPageSize","pageNum","setPageNum","pageSize","setPageSize","MainCard","level","PaginationComponent","ceil","Number","page","shape","paginationChange","ExpandMoreRoundedIcon","keepMounted","transformOrigin","pageSizeChange","CanisterIdsJson","require","temp_canister_ids","canisterIds","canister","network","getCanisterId","canisterName","CANISTER_NAMES","TOKEN_CANISTER_CONTROLLER","TOKEN_SERVICE","SWAP_POSITION_MANAGER","WICP","NETWORK","IC","FILE","NFTCanisterController","SwapNFTCanister","V3NFTCanister","V3TradeStat","NFTTrade","FileCanister","V1StakingController","SingleSmartChef","SwapStaker","VOTE","FileActor","SwapRecord","SwapGraphPool","TokenList","V3SwapFactory","V3SwapPool","V3SwapNFT","PassCodeManager","ClaimStorage","VotingFileCanister","FarmController","StakingTokenController","StakeIndex","NodeIndex","GlobalIndex","fileCanisterId","WICPCanisterId","SwapNFTCanisterId","NFTTradeTokenCanisterId","V3SwapNFTCanisterId","VotingFileCanisterId","FarmControllerId","PassCodeManagerId","Actor","setActorCanisterIds","setHost","host","ALL_CANISTER_IDS","ckBTC_DASHBOARD","DISSOLVE_FEE","MINTER_ID","ChainId","MAINNET","SEPOLIA","MINTER_CANISTER_ID","chain","ckERC20LedgerDashboardLink","getMinterDashboard","EXPLORER_TX_LINK","EXPLORER_TX_LINKS","EXPLORER_ADDRESS_LINK","EXPLORER_BLOCK_LINKS","EXPLORER_MAPS","WithdrawalState","CYCLES_MINTING_CANISTER_ID","ResultStatus","IdentityKitConnector","Connector","NFID","IdentityKitId","InternetIdentity","NFIDW","PLUG","Plug","DefaultChartView","ChartView","DexTools","NONE_PRICE_SYMBOL","DEFAULT_PERCENT_SYMBOL","NONE_TOKEN_SYMBOL","REACT_GA_TRACKING_ID","NFT_UPLOAD_FILES","CurrencyAmountFormatDecimals","APP_URL","DAYJS_FORMAT","AnonymousPrincipal","SAFE_INTEGER_LENGTH","MAX_VALUE","SAFE_DECIMALS_LENGTH","MAX_SWAP_INPUT_LENGTH","ICPSwapSubnet","ICPSwapStableBlockRate","MAX_IDENTITY_KIT_TIME_LIVE","BigInt","OFFICIAL_CANISTER_IDS","V2Ids","OLD_CANISTER_IDS","SOCIAL_LINKS","NFTTradeFee","MAX_NFT_MINT_SUPPLY","hostMap","LOCAL","process","isIC","Bound","FIELD","DEFAULT_FEE","FeeAmount","LOW","MEDIUM","HIGH","BURN_FIELD","DEFAULT_SWAP_SLIPPAGE","DEFAULT_MINT_SLIPPAGE","DEFAULT_BURN_SLIPPAGE","SLIPPAGE_TOLERANCE","MAX_SLIPPAGE_TOLERANCE","getDefaultSlippageTolerance","_SLIPPAGE_TOLERANCE$f","slippageToPercent","slippage","Percent","DEFAULT_TRANSACTIONS_DEADLINE","DEFAULT_MULTIPLE_APPROVE","ZOOM_LEVEL_INITIAL_MIN_MAX","min","max","ADD_LIQUIDITY_REFRESH_KEY","INCREASE_LIQUIDITY_REFRESH_KEY","SWAP_FIELD","DEFAULT_SWAP_INPUT_ID","DEFAULT_SWAP_OUTPUT_ID","SWAP_REFRESH_KEY","LIQUIDITY_OWNER_REFRESH_KEY","SWAP_CHART_CURRENT_PRICE_COLOR","SWAP_CHART_RANGE_PRICE_COLOR","SWAP_CHART_RANGE_LEFT_COLOR","SWAP_CHART_RANGE_RIGHT_COLOR","SWAP_CHART_RANGE_AREA_COLOR","icrc_standards","TRADING_VIEW_DESCRIPTIONS","PRICE","DexScreener","WRAPPED_ICP_METADATA","standardType","metadata","WRAPPED_ICP_TOKEN_INFO","totalSupply","XTC","CAT","MOD","BoomDAO","DISPLAY_IN_WALLET_FOREVER","NO_HIDDEN_TOKENS","STOIC","ICPSwap","INFINITY","ME","Metamask","Oisy","DEFAULT_CHAIN_ID","SUPPORTED_CHAINS","chainIdToNetwork","getExplorerAddress","minterId","getIcDashboard","useAllBridgeTokens","__minterInfo","minterInfo","useChainKeyMinterInfo","supportedERC20Tokens","_ref$supported_ckerc","supported_ckerc20_tokens","useBridgeTokenBalance","refresh","ChainKeyETHMinterInfo","_minterInfo$supported","ethBalance","useETHBalance","erc20TokenBalance","useERC20Balance","erc20_contract_address","tokenBalance","useStoreTokenBalance","ckBridgeChain","icp","eth","useTokenSymbol","bridgeChain","isEndedState","useBtcDepositAddress","setAddress","storeUserDepositAddress","useUserBTCDepositAddress","updateUserBTCAddress","useUpdateUserBTCDepositAddress","resultFormat","availableArgsNull","data","call","useRefreshBtcBalanceCallback","useBtcTransactions","useCallsData","fetch","json","useFetchUserTxStates","txs","useUserTxs","updateUserTx","useUpdateUserTx","setInterval","i","res","clearInterval","useBtcCurrentBlock","block","useIntervalFetch","useCopySuccess","COLORS","NOT_START","LIVE","FINISHED","CLOSED","DEFAULT","useStateColors","usePools","filterState","stakeTokenId","rewardTokenId","offset","limit","pools","setPools","isAvailablePageArgs","getStateValueByFilterState","FilterState","YOUR","_poolsResult$content","poolsResult","getUserStakePools","infos","Promise","all","getStakingPoolFromController","pool","stakingPool","flat","getStakePools","useUserUnusedTokenByPool","stakingTokenId","reload","setData","getTokenBalance","SubAccount","fromPrincipal","toUint8Array","getAllTokenPools","getPaginationAllData","getStakingPools","useIntervalUserPoolInfo","getStakingTokenUserInfo","useIntervalStakingPoolInfo","forceUpdate","setForceUpdate","update","getStakingTokenPool","useInterval","useSwapTransfer","openErrorTip","useErrorTip","_principal$toString","useSwapApprove","multipleApprove","useMultipleApproveManager","allowedBalance","spender","multipleApproveAmount","approve","useMultiplePositions","tokenIds","tokens","useTokens","poolKeys","_e$","_e$2","arg","_pools$index","positionInfos","Position","liquidity","tickLower","tickUpper","usePositionsValue","allTokenInfos","useInfoAllTokens","positions","vals","_allTokenInfos$find","_allTokenInfos$find2","token0Amount","amount0","toExact","token1Amount","amount1","token0Price","priceUSD","token1Price","plus","useMultiPoolPositionsValue","useMultiPoolPositionsTotalValue","_totalValue2","totalValue","_allTokenInfos$find3","_allTokenInfos$find4","_totalValue","usePositionsTotalValue","useWithdrawPCMBalanceCallback","closeTip","code","__amount","tokenTransFee","loadingKey","destroyPassCode","OK","withdrawPCMBalance","_result$message","useSortedPositions","sort","feesValue","positionValue","PositionSort","Default","FeesValue","a","b","allKeys","keyA","keyB","valueA","valueB","PositionValue","getTokenInsufficient","subAccountBalance","unusedBalance","isLessThan","isUseTransfer","useSwapPositionsMultipleFarm","farms","setPositions","prev","curr","positionId","farm","getSwapPosition","useUserPassCodes","usePassCode","useSwapTokenFeeCost","tokenInsufficient","useLiquidityLocksImage","principalId","governanceId","allSnsTokensInfo","useStateSnsAllTokensInfo","governance_canister_id","useSnsTokenInfoByGovernance","useSwapWithdraw","openExternalTip","withdraw","useSwapWithdrawByTokenId","tokenFee","uesTokenPairWithIcp","infoAllPools","useNodeInfoAllPools","infoPool","element","getTokenActualTransferRawAmount","rawAmount","getTokenActualDepositRawAmount","usePoolCanisterId","token0CanisterId","token1CanisterId","String","updatePoolCanisterId","usePoolCanisterIdManager","getPoolCanisterId","useSwapDeposit","useTransfer","isUseTransferByStandard","ERROR","_status","_message","deposit","depositFrom","usePoolBalanceMaxSpend","subBalance","isEqualTo","CurrencyAmount","fromRawAmount","useBalanceMaxSpend","__allowance","allowanceCanisterId","useAllowance","innerAllowance","useAllBalanceMaxSpend","maxBalanceSpend","maxPoolBalanceSpent","currency","equals","add","getMultiPoolsMetadata","transformedPoolKeys","currencyA","currencyB","feeAmount","wrapped","sortsBefore","poolBaseInfo","getSwapPool","getSwapPoolMetadata","POOL_METADATA_UPDATE_INTERVAL","transformedKeyToKey","transformedKey","withoutVerify","sortedPoolKeys","__token0","__token1","poolsMetadata","poolKey","metadataResult","getPool_update_call","poolResult","then","PoolState","INVALID","LOADING","NOT_EXISTS","EXISTS","NOT_CHECK","Pool","numberToString","usePool","useTokenSwapPools","allPools","useSwapPools","useTokensHasPairWithBaseToken","tokenPools","hasPairWithBaseToken","usePoolByPoolId","setPool","poolInfo","usePosition","userPosition","poolState","checking","usePositionWithPool","usePositionFees","usePositionFee","tokensOwed0","tokensOwed1","useReclaimCallback","closeAllSteps","useCloseAllSteps","sortedInsert","items","maxSize","comparator","invariant","isFull","lo","hi","mid","pop","Route","output","_midPrice","wrappedInput","involvesToken","tokenPath","currentInputToken","nextToken","midPrice","price","nextInput","multiply","Price","denominator","numerator","tradeComparator","inputAmount","outputAmount","equalTo","swaps","total","cur","lessThan","Trade","_inputAmount","inputCurrency","totalInputFromRoutes","_outputAmount","outputCurrency","totalOutputFromRoutes","executionPrice","_executionPrice","quotient","priceImpact","_priceImpact","spotOutputAmount","quote","subtract","divide","exactIn","amountIn","fromRoute","TradeType","EXACT_INPUT","exactOut","amountOut","EXACT_OUTPUT","tradeType","amounts","getOutputAmount","fromFractionalAmount","getInputAmount","fromRoutes","populatedRoutes","createUncheckedTrade","constructorArguments","assign","createUncheckedTradeWithMultipleRoutes","every","numPools","poolAddressSet","getAddress","minimumAmountOut","slippageTolerance","ZERO","slippageAdjustedAmountOut","Fraction","ONE","invert","maximumAmountIn","slippageAdjustedAmountIn","worstExecutionPrice","bestTradeExactIn","pools_1","currencyAmountIn_1","currencyOut_1","currencyAmountIn","currencyOut","maxNumResults","maxHops","currentPools","nextAmountIn","bestTrades","tokenOut","isInsufficientInputAmountError","isToken","poolsExcludingThisPool","bestTradeExactOut","currencyIn_1","currencyAmountOut_1","currencyIn","currencyAmountOut","nextAmountOut","tokenIn","isInsufficientReservesError","allCurrencyCombinations","t0","t1","allCurrencyCombinationsWithAllFees","list","tuple","noLiquidity","computeAllRoutes","currentPath","allPaths","startCurrencyIn","pathPool","poolEquals","poolA","poolB","outputToken","useAllRoutes","poolsLoading","singleHopOnly","useIsSingleHop","TradeState","useBestTrade","inputToken","typedValue","actualSwapValue","routesLoading","zeroForOne","_routes$","params","greaterThan","_route$pools$","_route$input","_route$input$wrapped","_route$output","_route$output$wrapped","_route$input2","_route$pools$2","useSwapPoolAvailable","exactInputLoading","_quotesResults","useQuoteExactInput","quotesResults","trade","bestRoute","currentBest","tryParseAmount","VALID","NO_ROUTE_FOUND","swapPool","getUserPositionIdsByPrincipal","useCallKeysIndexManager","callKey","callAllIndex","callKeys","_updateCallKeyIndex","callIndex","updateCallKeys","stateCallIndex","useStateCallsData","valid","useOldData","_useCallResult","callResults","updateCallResult","useUpdateCallResult","callKeyIndex","updateCallKeyIndex","stateIndex","store","getState","getCallIndex","sortedToken","sortToken","getSwapTokenArgs","subnet","_token0","_token1","createSwapPool","usePositionDetailsFromId","feeGrowthInside0LastX128","feeGrowthInside1LastX128","getPositionDetailsFromId","_args","amountOutMinimum","getPoolTokenAmounts","_getSwapPoolAllBalance","balance0","balance1","usePoolIdsFromKey","ids","setIds","queries","usePoolsTokenAmountsFromKey","setAmounts","results","useUserSwapTransactions","storageIds","useInfoUserStorageIds","storageId","getInfoUserStorageIds","userStorage","get","getSwapPoolAvailable","icpAdapter","transfer","tokenAdapter","new_message","useTokenSupply","supply","getTokenSupply","getTokenMetadata","getTokenInfo","_getTokenStandard","TokenDefaultLogo","useERC20TokenByChainKeyId","chainKeyMinterInfo","tokenAddress","chainKeyInfo","useTokenFromActiveNetwork","icrc_standard","icrc1Adapter","icrc1","icrc1_supported_standards","getIcrcStandard","dip20_standard","DIP20Adapter","getDIP20Standard","ext_standard","EXTAdapter","getExtStandard","ImportedTokens","isSnsToken","useIsSnsToken","tokenStandard","useTokenStandard","standards","tokenCache","ICP_TOKEN_INFO","spenderSub","ownerSub","getAdapterByName","useApprove","resolve","TxReceipt","InsufficientBalance","ErrorOperationStyle","Unauthorized","LedgerTrap","ErrorTo","Other","BlockUsed","AmountTooSmall","Metadata","TokenInfo","holderNumber","deployTime","historySize","cycles","feeTo","balanceOf","cleanOutOldAllowances","filterAllowancesArray","Tuple","getASize","getAgeAllowanceLimit","getAllowanceSize","getAllowancesArray","getMaxAllowances","getMetadata","getResultArrayIndex","getSpendersSize","getTokenFee","getUserApprovals","setAgeAllowanceLimit","setFee","setLogo","setMaxAllowances","setName","setOwner","transferFrom","ORG_ID","ogy","OGY_IDL","BALANCE_ADAPTER_IDS","isNeedBalanceAdapter","subAccount","isPrincipal","balanceAdapter","sub","fromBytes","isOkSubAccount","AccountIdentifier","toHex","principalToAccount","user","useLatestDataCall","useCurrencyBalance","storeResult","setStoreResult","isNaN","IdbKeyVal","dbName","storeName","version","db","_openDbStore","__awaiter","openDB","database","oldVersion","newVersion","transaction","createObjectStore","objectStoreNames","contains","objectStore","catch","isLessThanCurrentVersion","deleteDB","_db","_storeName","set","put","_setValue","_a","_getValue","remove","delete","_removeValue","getAll","_getAllValues","storage","DB_VERSION","initializedDb","getStorageTokenInfo","storageInfo","setStorageTokenInfo","isStorageInfoValid","__getTokenInfo","baseTokenInfo","TokenInfoState","useTokensInfo","tokenInfos","setTokenInfos","loadings","setLoadings","tokenIdsKey","fetch_token_info","tokeInfo","getStorageInfoErrored","mounted","calls","getPromisesAwait","useTokenInfo","UseCurrencyState","queryLoading","_getTokenStandard2","GlobalContext","useGlobalContext","useRefreshTrigger","refreshTriggers","useRefreshTriggerManager","setRefreshTriggers","force","interval","_call","useSneedLedger","locksIds","useLiquidityLockIds","_locksIds$find","alias","useIsSneedOwner","sneedLedger","stepKey","newStepKey","useStepCalls","updateCallStep","useUpdateCallStep","_calls","reset","retry","_err","currentStep","errorStep","TipTypes","TIP_ERROR","TIP_LOADING","useSnackbar","messageKey","openCallback","closeCallback","useLoadingTip","isOpen","openLoading","useICPPrice","icpTokenInfo","useInfoToken","useUSDPrice","graphToken","useUSDValue","currencyAmount","useCurrentBlockTimestamp","multicall","useInterfaceMulticall","supportedActiveChain","useSupportedActiveChain","getCurrentBlockTimestamp","useActiveChain","chainId","useWeb3React","setBalance","web3","Web3","givenProvider","getBalance","useWeb3CallsData","contractAddress","contract","useERC20Contract","useFetchBlockNumber","useSwr","blockNumber","getBlockNumber","refreshInterval","useBlockNumber","useSWRImmutable","useFetchFinalizedBlock","getBlock","number","useFinalizedBlockNumber","DEFAULT_NETWORKS","GOERLI","constructSameAddressMap","additionalNetworks","OPTIMISM","ARBITRUM_ONE","POLYGON","POLYGON_MUMBAI","AVALANCHE","BASE","BNB","CELO","BLAST","DEFAULT_ADDRESSES","v3CoreFactoryAddress","multicallAddress","quoterAddress","v3MigratorAddress","nonfungiblePositionManagerAddress","MAINNET_ADDRESSES","v1MixedRouteQuoterAddress","GOERLI_ADDRESSES","OPTIMISM_ADDRESSES","ARBITRUM_ONE_ADDRESSES","tickLensAddress","POLYGON_ADDRESSES","CELO_ADDRESSES","CHAIN_TO_ADDRESSES_MAP","CELO_ALFAJORES","swapRouter02Address","OPTIMISM_GOERLI","OPTIMISM_SEPOLIA","ARBITRUM_GOERLI","ARBITRUM_SEPOLIA","BASE_GOERLI","ZORA","ZORA_SEPOLIA","ROOTSTOCK","MULTICALL_ADDRESSES","providers","WeakMap","useEthersWeb3Provider","client","useClient","transport","provider","Web3Provider","mainnet","clientToWeb3js","abi","MulticallABI","UniswapInterfaceMulticallJson","useContract","addressOrAddressMap","ABI","withSignerIfPossible","ethersProvider","_provider$network","_provider$network2","getContract","useEthMinterHelperContract","EthHelperABI","ERC20ABI","useERC20TokenAllowance","tokenAllowance","isSyncing","ApprovalState","useApproval","amountToApprove","useIsPendingApproval","approvalState","pendingApproval","PENDING","NOT_APPROVED","APPROVED","UNKNOWN","useApprovalStateForSpender","tokenContract","logFailure","warn","useExact","estimatedGas","estimateGas","MaxUint256","gasLimit","calculateGasMargin","response","spenderAddress","useTokenName","useTokenDecimals","ERC20Token","MissingI18nInterpolationError","resources","translation","enUS","initReactI18next","defaultNS","lng","fallbackLng","interpolation","escapeValue","react","transSupportBasicHtmlNodes","missingInterpolationHandler","tags","file","function","on","_lngs","_ns","_res","language","REACT_APP_IS_INTERFACE","TokenLocales","insufficient_cycles_balance","invalid_value","has_been_initialized","no_sufficient_balance","unsupported_operator","no_balance","no_enough_balance","permission_deined","not_mint_token_list","token_exists","invaild_token_symbol","insufficient_ics_balance","mint_token_error","handling_fee_error","SwapLocales","NFTLocals","NFT_claim_paused","NFT_claim_email_code_error","NFT_was_claimed","NFT_claim_exceeded","NFT_token_not_exist","permission_denied","can_not_find_token","StakingLocals","WICPLocales","error_to_address","amount_too_small","used_block_height","block_error","insufficient_funds","unexpected_error","VoteMessages","XTCMessages","InvalidTokenContract","NotSufficientLiquidity","MessageMaps","_MessageMaps$message","hostname","match","GoogleAnalytics","ReactGA","RISK_STORAGE_NAME","RiskStatementModal","onRead","isRead","setIsRead","Trans","components","highlight","i18nKey","handleRead","setItem","setRiskStorage","RiskStatement","riskStatementShow","setRickStatementShow","storageRisk","getItem","getRiskStorage","_path","_path2","_path3","_path4","_path5","_path6","_path7","_path8","_path9","_path10","_path11","_path12","_path13","_path14","_path15","_path16","_path17","_path18","_path19","_path20","_path21","_path22","_path23","_path24","_path25","_path26","_path27","_path28","_path29","_path30","_path31","_path32","_path33","_path34","_path35","_path36","_path37","_path38","_path39","_path40","_path41","_path42","_path43","_path44","_path45","_path46","_path47","_path48","_defs","_extends","bind","n","r","hasOwnProperty","SvgBoundaryError","svgRef","titleId","stroke","strokeWidth","strokeLinecap","strokeLinejoin","x1","y1","x2","y2","gradientUnits","stopColor","ForwardRef","CloseIcon","GlobalTips","Background","V3Event","handleToTwitter","Logo","logoDark","LogoSection","ButtonBase","AddressSection","handleToExplorer","AccountSection","explorerLink","ProfileSection","lg","main","LogoutConfirmModal","disableElevation","LogOutSection","onLogout","logoutConfirmOpen","setLogoutConfirmOpen","BalanceAndValue","infoToken","formatIcpAmount","anchorRef","prevOpen","handleToWallet","ChevronDown","Popper","disablePortal","popperOptions","modifiers","Fade","Paper","subMenus","x","y","rx","xmlnsXlink","patternContentUnits","xlinkHref","cx","cy","routeKey","SubMenuPopper","_route$subMenus","subMenuKey","subRoute","Icon","ExceedRoutesPopper","subMenuOpenKey","setSubMenuOpenKey","subMenuTarget","setSubMenuTarget","handleSubMenuMouseLeave","handleSubMenuClose","handleSubMenuMouseEnter","ExceedRoutes","Routes","handleMenuMouseLeave","mainRoute","handleRouteClick","_route$path2","_route$path3","handleMenuMouseEnter","NavBar","SvgLogo1","SvgArrowDown","onRouteClick","collapseKey","setCollapseKey","ArrowDownIcon","MobileNavbar","exceedOpen","setExceedOpen","_route$link","noExceedRoutes","exceedRoutes","XCircle","Header","drawerOpen","setDrawerOpen","DensityMediumIcon","handleToggleDrawer","Navbar","Drawer","SnsTips","levels","NetworkStateIcon","SubnetState","nodeMachines","fetch_result","useNodeMachinesOfSubnet","useSubnetBlockRate","totalNodeMachines","nodes","blockRateLevel","block_rate","rate","borderTop","ArrowUpRight","borderBottomLeftRadius","borderBottomRightRadius","leavingScreen","mainContent","paddingBottom","MainLayout","show","setShow","globalTipShow","setGlobalTipShow","snsTipShow","setSnsTipShow","isSwapPro","Layout","Fallback","eventId","errorString","test","BoundaryErrorImage","handleCopyError","_error$toString","ErrorBoundary","Sentry","loadingWrapper","animation","ConnectorComponent","connect","initialedConnector","setInitialedConnector","isSafari","WalletConnector","_window$ic","_window$ic2","ic","infinityWallet","plug","walletBox","walletWrapper","walletComingSoon","highlight0","highlight1","wallet","getAllClaimEvents","getClaimEvents","Tokens","ckSepoliaUSDC","ckSepoliaETH","GreenCircleLoading","thickness","Arrow","SuccessIcon","filterUnits","colorInterpolationFilters","floodOpacity","stdDeviation","in2","operator","ActionIcon","activeStep","showErrorHint","_StepDetails","openedSteps","setOpenedSteps","isStepOpened","skipError","borderTopLeftRadius","borderTopRightRadius","newOpenedSteps","handleStepClick","borderLeft","borderRight","errorActions","ele1","StepItem","useStepDetails","StepDetails","GlobalSteps","useOpenedSteps","timeOfMessages","useHandleActorError","onError","last_time","now","INTERVAL","isNewMessage","onSubmit","auth","walletType","isCurrentAccount","waitRandom","ms","CanceledError","RetryableError","RETRY_OPTIONS_BY_CHAIN_ID","minWait","maxWait","DEFAULT_RETRY_OPTIONS","Updater","pendingTransactions","onCheck","onReceipt","lastBlockNumber","removeTransaction","useTransactionRemover","blockTimestamp","getReceipt","hash","_RETRY_OPTIONS_BY_CHA","rejectCancelled","completed","promise","reject","getTransactionReceipt","receipt","tx","deadline","addedTime","cancels","lastCheckedBlockNumber","blocksSinceCheck","minutesPending","shouldCheck","toSerializableReceipt","blockHash","transactionHash","transactionIndex","transactions","isPendingTx","checkedTransaction","finalizeTransaction","LibUpdater","wagmiConfig","createConfig","chains","sepolia","transports","http","DisableIframe","sameOrigin","setSameOrigin","_top","self","GlobalFetch","useFetchInfoAllTokens","useFetchBridgeTokens","CONNECTIONS","injectedConnection","getConnection","c","connection","SELECTABLE_WALLETS","ConnectionType","COINBASE_WALLET","WALLET_CONNECT","INJECTED","_metamask$connectEage","_metamask$activate","metamask","connectEagerly","isMobile","activate","connectors","orderedConnectionTypes","web3Connectors","hooks","Web3ReactProvider","withRouter","paper","primaryLight","primary200","primaryDark","primary800","secondaryLight","secondary200","secondaryMain","secondary800","successLight","success200","successMain","errorLight","errorMain","orangeLight","orangeMain","orangeDark","warningLight","warningMain","warningDark","grey50","grey100","grey200","grey300","grey500","grey600","grey700","grey900","darkPaper","darkBackground","darkLevel2","darkLevel4","darkLevel5","darkTextPrimary","darkTextTertiary","darkTextFourth","darkTextFifth","disable","lightTextTitle","lightTextPrimary","lightTextSecondary","lightTextTertiary","lightTextFourth","lightTextFifth","lightLevel2","lightLevel4","lightLevel5","lightGray50","lightGray200BorderColor","darkPrimaryLight","darkPrimaryMain","darkPrimaryDark","darkPrimary200","darkPrimary800","dark400","darkSecondaryLight","darkSecondaryDark","darkSecondary200","darkSecondary800","defaultGradientStart","defaultGradientEnd","border1","apr","color0","MuiTheme","createTheme","componentStyleOverrides","globalButtonBackground","defaultGradient","menuHoverBackground","menuSelectedBack","CircularProgressKeyframes0","keyframes","CircularProgressKeyframes1","MuiTypography","styleOverrides","MuiButton","textTransform","containedPrimary","containedSecondary","MuiPaper","elevation","backgroundImage","rounded","MuiCardHeader","textDark","MuiCardContent","MuiCardActions","MuiAlert","outlined","MuiButtonBase","menuBackground","menuSelected","MuiListItemIcon","MuiListItemText","MuiInputBase","MuiOutlinedInput","inputAdornedStart","notchedOutline","MuiSlider","mark","valueLabel","MuiAutocomplete","popper","MuiDivider","divider","MuiSelect","MuiCheckbox","MuiAvatar","MuiChip","MuiTimelineContent","MuiTreeItem","MuiTimelineDot","MuiInternalDateTimePickerTabs","MuiTabs","flexContainer","MuiDialog","MuiTable","MuiTableCell","textTertiary","MuiTooltip","MuiPagination","nav","MuiTableContainer","MuiStepper","MuiBreadcrumbs","textDecoration","MuiSwitch","MuiGrid","MuiPopover","MuiList","MuiCircularProgress","themePalette","common","black","orange","grey","heading","tertiary","textLight","orangeWarning","theme_primary","theme_secondary","textSize","backgroundDefault","level5","gray200","avatar","gray200BgColor","bgcolor","themeTypography","fontFamily","h6","h5","h4","h3","h2","h1","subtitle1","subtitle2","caption","body1","body2","customInput","menuCaption","subMenuCaption","commonAvatar","smallAvatar","mediumAvatar","largeAvatar","sm","md","rtlLayout","mixins","overflowEllipsis","overflowEllipsis2","typography","radius","PageNotFound","Wallet","lazy","Farms","Farm","CreateFarm","Staking","StakingDetails","StakingTokenCreate","Swap","SwapLimit","SwapTransaction","SwapPro","Liquidity","AddLiquidity","IncreaseLiquidity","DecreaseLiquidity","SwapReclaim","SwapFindMisTransferToken","SwapRevokeApprove","PCMReclaim","NFTView","WalletNFTView","NFTMint","NFTCanisterList","NFTCanisterCreate","NFTCanisterDetails","NFTCollectMarket","NFTMarketCollections","Voting","VotingProject","VotingProposal","VotingCreateProposal","VoteCreateProject","TokenClaimIndex","TokenClaimTransactions","CreateTokenClaim","Wrap","SNSLaunches","SNSLaunch","routeConfigs","infoRoutes","maintenancePages","MainRoutes","allPath","exact","Redirect","AuthRoutes","App","infoAllTokens","setInfoAllTokens","useFetchXDR2USD","useFetchICPPrices","useFetchAllSwapTokens","cleanLogState","useCleanLogState","onExternalDisconnect","getConnector","onLockStateChange","isLocked","usePlugExternalDisconnect","connectorModalOpen","fetchGlobalTokensLoading","useFetchGlobalTokenList","isInitialStandardLoading","AllPools","tokensLoading","setTokensLoading","updated","setUpdated","setAllPools","updateAllSwapPools","useUpdateAllSwapPools","getSwapPools","_allSwapPools$map","_allTokenPools$map","allSwapPools","allTokenPools","allClaimEvents","allTokenStandards","stakingToken","rewardToken","tokenCid","allCanisterIds","updateCanisters","updateTokens","tokenStandards","useTokenStandards","allStandards","useInitialTokenStandard","queryClient","QueryClient","handleRefreshTriggers","_prevState$key","WagmiProvider","config","QueryClientProvider","StyledEngineProvider","injectFirst","TransactionsUpdater","ThemeProvider","ActorInitial","CssBaseline","NavigationScroll","AppWithProvider","I18nextProvider","IdentityKitProvider","authType","IdentityKitAuthType","DELEGATION","signers","signerClientOptions","maxTimeToLive","targets","dayjs","utc","weekOfYear","anonymizeIp","customBrowserType","testMode","debug","isStagingEnv","REACT_APP_STAGING","dsn","environment","enabled","tracesSampleRate","_process$env$REACT_AP","REACT_APP_SENTRY_TRACES_SAMPLE_RATE","beforeSend","_error$message","_error$message2","_error$message3","_error$message4","stack","DOMException","shouldRejectError","extra","integrations","BrowserTracing","startTransactionOnLocationChange","startTransactionOnPageLoad","onerror","url","row","_error","getElementById","createRoot","PersistGate","persistor","BrowserRouter","navigator","serviceWorker","ready","registration","unregister","Overview","SwapPools","SwapPoolDetails","SwapTokenDetails","TokenDetails","TokenHolders","Stake","StakeDetails","FarmDetails","TokenClaim","NFTs","NFTDetails","NFTInfo","MarketPlace","Tools","ToolsBurn","ToolsValuation","ToolsSwapTransactions","ToolsPositions","ToolsUserBalances","ToolsLockedPositions","ToolsPositionTransactions","infoRoutesConfigs","INFO_OVERVIEW","INFO_SWAP","INFO_SWAP_POOLS","INFO_SWAP_POOL_DETAILS","INFO_SWAP_TOKEN_DETAILS","INFO_TOKENS","INFO_TOKENS_DETAILS","INFO_TOKENS_HOLDERS","INFO_STAKE","INFO_STAKE_DETAILS","INFO_FARM","INFO_FARM_DETAILS","INFO_WRAP","INFO_CLAIM","INFO_CLAIM_TRANSACTIONS","INFO_NFTS","INFO_NFTS_CANISTER","INFO_NFTS_INFO","INFO_MARKETPLACE","INFO_TOOLS","INFO_TOOLS_BURN","INFO_TOOLS_VALUATION","INFO_TOOLS_SWAP_TRANSACTIONS","INFO_TOOLS_POSITIONS","INFO_TOOLS_USER_BALANCES","INFO_TOOLS_LOCKED_POSITIONS","INFO_TOOLS_POSITION_TRANSACTIONS","KEY","getAllCanisters","allCanisters","storageAllCanisters","setAllCanisters","getAllTokens","allTokens","storageAllTokens","AllTokens","setAllTokens","login","createAction","logout","updateConnected","updateWalletConnector","NF_IDConnector","agent","createActor","_this$agent","interfaceFactory","HttpAgent","ic_host","isMeWebview","isUnLocked","session","getStoreWalletUnlocked","updateAuth","connected","_updateLockStatus","updateLockStatus","locked","useDisconnect","icConnector","useInitialConnect","_connectManager$conne","connectManager","expired","nonAsyncFunctionBeforeConnect","setConnector","connectorStateConnected","authDisconnect","walletConnectorOpen","identityKitConnect","identityKitDisconnect","useAuth","connectorOutside","isInitializing","useIsInitializing","useAgent","useIdentityKitInitialConnect","updateCallIndex","changeTheme","updateLocal","updateHideUnavailableClaim","updateXDR2USD","updateICPPriceList","updateUserLocale","updateTokenList","updateAllSwapTokens","updateBridgeTokens","getExchangeRate","pair","exchangeRate","get_exchange_rate","useXDR2USD","getXDR2USD","use100ICPPriceInfo","icp_xdr_conversion_rates","get100ICPPriceInfo","global","tokenList","useICPPriceList","ICPPriceList","useICPAmountUSDValue","ICPPrice","useICP2CyclesManager","_ICPPriceList$xdr","_ICPPriceList","xdr","xdr_usd","xdr_usdt","icpPrices","priceList","times","timestamp","useTokensFromList","allTokensFromList","rank","useTokenIsInTokenList","allSwapTokens","getAllTokensOfSwap","swapTokens","getLimitedInfinityCall","_token$logo$","allBridgeTokens","useDispatch","useSelector","initialState","locale","hideUnavailableClaim","createReducer","builder","addCase","payload","ckBTCAddresses","retrieveState","sortBalance","SortBalanceEnum","ALL","newTaggedTokens","updateCK_BTCAddresses","updateRetrieveState","states","old_state","_states","updateWalletSortType","updateSortBalance","hasBeenClaimTestToken","swapTokenList","userLocale","poolStandardUpdated","walletConnector","bridgeTokens","_ref7","INPUT","OUTPUT","independentField","poolCanisterIds","swapOutAmount","decreaseLiquidityAmount","typeInput","selectCurrency","currencyId","otherField","switchCurrencies","clearSwapState","updatePoolCanisterIds","updateSwapOutAmount","updateDecreaseLiquidityAmount","leftRangeValue","rightRangeValue","startPrice","CURRENCY_A","updateFiled","updateFullRange","updateLeftRange","updateRightRange","updateStartPrice","resetMintState","userExpertMode","userSingleHop","userSelectedToken","userSlippage","swap","mint","burn","userTransactionsDeadline","showClosedPosition","userPositionPools","swapProAutoRefresh","keepTokenInPools","updateUserExpertMode","updateUserSelectedToken","updateUserSingleHop","updateUserTransactionsDeadline","updateUserSlippage","removeTaggedTokens","_token","updateShowClosedPosition","_ref8","updateUserPositionPools","_ref9","allPoolIds","updateUserMultipleApprove","_ref10","updateSwapProAutoRefresh","_ref11","updateKeepTokenInPools","_ref12","LIQUIDITY_PERCENT","updateTypedInput","resetBurnState","userSelectedCanisters","importedNFTs","updateUserSelectedCanisters","deleteUserSelectedCanisters","importNFT","deleteNFT","password","allTokenIds","updateTokenStandards","updateAllTokenIds","steps","opened","closeAll","updateStepDetails","updateKey","updateData","updateSnsAllTokensInfo","placeOrderPositionId","updatePlaceOrderPositionId","withdrawTx","erc20Transactions","updateTX","allTx","updateWithdrawTX","_payload$tx$hash","otherStates","newStates","updateErc20TX","customizationReducer","loadingReducer","walletReducer","globalReducer","SwapReducer","swapCache","SwapCacheReducer","swapLiquidity","SwapLiquidityReducer","swapBurn","SwapBurn","nft","NFTReducer","AuthReducer","callReducer","StepReducer","tokenCacheReducer","TransactionsReducer","limitOrder","LimitOrderReducer","SnsReducer","rootPersistConfig","stateReconciler","autoMergeLevel2","blacklist","migrate","_state$_persist","_state$_persist2","_state$_persist3","_state$_persist4","_state$swapCache","_persist","SessionPersistConfig","sessionStorage","rootReducer","combineReducers","allReducer","persistReducer","sessionReducer","PersistReducer","configureStore","reducer","middleware","getDefaultMiddleware","thunk","serializableCheck","persistStore","allTokensInfo","getSnsAllTokensInfo","getStepDetails","openCall","closeCall","useStepContentManager","_getStepDetails","_prevStep$activeStep","prevStep","_getStepDetails2","getStepData","useUpdateStepData","useExpertModeManager","expertMode","toggleSetExpertMode","updateMultipleApprove","useSlippageManager","useSlippageToleranceToPercent","percentSlippage","useStoreUserPositionPools","poolIds","useInitialUserPositionPools","storeUserPositionPools","updateStoreUserPositionPools","initialLoading","setInitialLoading","positionPools","useUserPositionPools","useSwapProAutoRefreshManager","autoRefresh","useSwapKeepTokenInPools","useSwapKeepTokenInPoolsManager","useSwapHandlers","onCurrencySelection","onSwitchTokens","debouncedSwitchTokens","onUserInput","useSwapState","useCleanSwapState","useSwapInfo","_Trade$pool2","_Trade$state","userSlippageTolerance","inputCurrencyId","outputCurrencyId","inputTokenState","outputTokenState","isExactIn","inputCurrencyBalance","outputCurrencyBalance","currencyBalances","parsedAmount","otherCurrency","debouncedTypedValue","useDebounce","_Trade$pool","__inputTokenSubBalance","__outputTokenSubBalance","inputTokenSubBalance","outputTokenSubBalance","useUserUnusedBalance","inputTokenUnusedBalance","outputTokenUnusedBalance","allowanceTokenId","maxInputAmount","inputError","inputNumberCheck","inputTokenBalance","outputTokenBalance","useLoadDefaultParams","useParsedQueryString","getSwapOutAmount","useUpdateSwapOutAmount","getDecreaseLiquidityAmount","useUpdateDecreaseLiquidityAmount","__standards","useTokenStandardIsRegistered","useTransactionAdder","nonce","addTransaction","useAllTransactions","_state$chainId","cancelled","isTransactionRecent","usePendingApprovalAmount","allTransactions","txHash","TransactionType","APPROVAL","useHasPendingApproval","_usePendingApprovalAm","_usePendingApprovalAm2","gt","transactionSlice","createSlice","reducers","_transactions$chainId","_transactions$chainId2","clearAllTransactions","_transactions$chainId3","_transactions$chainId4","confirmedTime","cancelTransaction","_transactions$chainId5","cancelHash","_transactions$chainId6","actions","useUpdateTaggedTokenCallback","useDeleteTaggedTokenCallback","_Object$values$","txIdString","byteArray","reverse","byte","useWalletSortManager","sortType","useSortBalanceManager","PositionFilterState","LEDGER_CANISTER_ID","getDelegationIds","stateCanisterIds","delegationIds","InternetIdentityConnector","getPrincipal","whitelist","providerUrl","dev","AuthClient","idleOptions","disableDefaultIdleCallback","_this$identity","getIdentity","_this$client","isAuthenticated","fetchRootKey","_this$client3","_this$client2","identityProvider","onSuccess","iiExpireTime","localStorage","_this$client4","StoicConnector","StoicIdentity","load","toText","PlugConnector","requestConnect","ICPSwapConnector","keyType","EXPIRE_TIME","InfinityConnector","EXPIRE_TIME_STORAGE_NAME","MetamaskConnector","isAuthorized","MsqClient","requestLogin","requestLogout","httpAgent","expireTime","OisyConnector","signer","signerAgent","_await$this$signerAge","createSync","SignerAgent","Signer","PostMessageTransport","windowOpenerFeatures","establishTimeout","disconnectTimeout","detectNonClickEstablishment","anonymous","accounts","isAnonymous","replaceAccount","closeChannel","connectorType","_this$connector","MeConnector","_this$connector2","_this$connector3","astrox_webview","astrox","AstroXWebViewHandler","_astrox$identity2","_astrox$identity","boolean","delegationTargets","customDomain","useFrame","body","signerProviderUrl","walletProviderUrl","MeExpireTime","_this$identity3","_this$identity2","meExpireTime","principalToBytes32","encodePrincipalToEthAddress","prototype","toJSON","EXPONENTIAL_AT","ROUNDING_MODE","ROUND_DOWN","isICPSwapOfficial","stringToArrayBuffer","string","TextEncoder","encode","arrayBufferToString","arrayBuffer","TextDecoder","decode","toDoubleNumber","newString","counter","time","diff","hour","sec","timeParser","date","seconds","getSeconds","userAgent","BaseNFTAdapter","ICPSwapAdapter","NFTCanister","canisterAdapters","Map","adapters","initialAdapter","adapter","register","getAdapter","adapterName","AdapterName","BaseNFTsTradeAdapter","ICPSwapTradeAdapter","buy","sale","revoke","NFTTradeCanister","TradeAdapterName","NFTsTrade","from32bits","to32bits","num","ArrayBuffer","DataView","setUint32","Uint8Array","toHexString","encodeTokenIdentifier","Buffer","array","fromUint8Array","decodeTokenId","tid","p","getStateValue","StakingState","NOT_STARTED","__state","maxAmountFormat","encodePositionKey","decodePositionKey","arr","positionIndex","token0Fee","token1Fee","PositionState","getStateColor","OutOfRange","InRange","LEVEL0","LEVEL1","tryParsePrice","baseToken","quoteToken","_fraction$length","whole","fraction","withoutDecimals","JSBI","tryParseTick","sqrtRatioX96","encodeSqrtRatioX96","TickMath","MAX_SQRT_RATIO","MAX_TICK","MIN_SQRT_RATIO","MIN_TICK","priceToClosestTick","nearestUsableTick","TICK_SPACINGS","typedValueParsed","groupSeparator","feeAmountToPercentage","div","integer","decimal","getBackendLimitTick","tickCurrent","priceToClosestUseableTick","sorted","__orderPriceTick","useableTick","abs","availableTick","inputValueFormat","inputValue","toSignificant","actualAmountToPool","mul","initializeConnector","MetaMask","isAddress","AddressZero","Contract","getSigner","connectUnchecked","getProviderOrSigner","Config","Media","mediaType","TokenMetadata","configs","mediaLinks","introduction","BoolResult","NatResult","Result_3","addAdmin","cycleAvailable","cycleBalance","edit","getAdminList","getList","getLogo","removeAdmin","updateLogo","Result_4","Subaccount","minting_account","min_burn_amount","max_supply","total_supply","Page","totalElements","HeaderField","HttpRequest","method","headers","HttpResponse","status_code","Nat16","add_token","getAdmins","get_logo","get_task_state","get_token","get_token_list","http_request","setAdmins","set_task_state","set_token_index","set_token_logo","set_token_logo_blob","set_token_standard","sync_token","update_token","cachedCanisterIds","errorCallbacks","log","__host","serviceClass","createActorError","actorOptions","createBaseActor","AnonymousAgent","_actor","_fields","beforeSubmit","checkResult","isObject","__error","_b","_c","trim","_d","setAgent","setLog","TokenListInterfaceFactory","allTokenOfSwap","AllTokenOfSwapInterfaceFactory","allowed_principals","access_controls_enabled","sns_subnet_ids","SnsWasm","wasm","canister_type","Int32","AddWasmRequest","SnsWasmError","Hash","AddWasmResponse","NeuronBasketConstructionParameters","dissolve_delay_interval_seconds","Canister","DappCanisters","canisters","LinearScalingCoefficient","slope_numerator","intercept_icp_e8s","from_direct_participation_icp_e8s","slope_denominator","to_direct_participation_icp_e8s","IdealMatchedParticipationFunction","serialized_representation","NeuronsFundParticipationConstraints","coefficient_intervals","max_neurons_fund_participation_icp_e8s","min_direct_participation_threshold_icp_e8s","ideal_matched_participation_function","CfNeuron","has_created_neuron_recipes","nns_neuron_id","amount_icp_e8s","CfParticipant","hotkey_principal","cf_neurons","NeuronsFundParticipants","participants","TreasuryDistribution","total_e8s","NeuronDistribution","controller","dissolve_delay_seconds","stake_e8s","vesting_period_seconds","DeveloperDistribution","developer_neurons","AirdropDistribution","airdrop_neurons","SwapDistribution","initial_swap_amount_e8s","FractionalDeveloperVotingPower","treasury_distribution","developer_distribution","airdrop_distribution","swap_distribution","InitialTokenDistribution","Countries","iso_codes","SnsInitPayload","max_dissolve_delay_seconds","max_dissolve_delay_bonus_percentage","nns_proposal_id","neurons_fund_participation","min_participant_icp_e8s","neuron_basket_construction_parameters","fallback_controller_principal_ids","token_symbol","final_reward_rate_basis_points","max_icp_e8s","neuron_minimum_stake_e8s","confirmation_text","swap_start_timestamp_seconds","swap_due_timestamp_seconds","initial_voting_period_seconds","neuron_minimum_dissolve_delay_to_vote_seconds","max_neuron_age_seconds_for_age_bonus","min_participants","initial_reward_rate_basis_points","wait_for_quiet_deadline_increase_seconds","transaction_fee_e8s","dapp_canisters","neurons_fund_participation_constraints","neurons_fund_participants","max_age_bonus_percentage","initial_token_distribution","reward_rate_transition_duration_seconds","token_logo","token_name","max_participant_icp_e8s","min_direct_participation_icp_e8s","proposal_reject_cost_e8s","restricted_countries","min_icp_e8s","max_direct_participation_icp_e8s","DeployNewSnsRequest","sns_init_payload","DappCanistersTransferResult","restored_dapp_canisters","nns_controlled_dapp_canisters","sns_controlled_dapp_canisters","SnsCanisterIds","ledger","governance","DeployNewSnsResponse","dapp_canisters_transfer_result","subnet_id","GetAllowedPrincipalsResponse","GetDeployedSnsByProposalIdRequest","proposal_id","DeployedSns","index_canister_id","swap_canister_id","GetDeployedSnsByProposalIdResult","GetDeployedSnsByProposalIdResponse","get_deployed_sns_by_proposal_id_result","SnsVersion","archive_wasm_hash","root_wasm_hash","swap_wasm_hash","ledger_wasm_hash","governance_wasm_hash","index_wasm_hash","GetNextSnsVersionRequest","current_version","GetNextSnsVersionResponse","next_version","GetSnsSubnetIdsResponse","GetWasmRequest","GetWasmResponse","SnsUpgrade","InsertUpgradePathEntriesRequest","upgrade_path","sns_governance_canister_id","InsertUpgradePathEntriesResponse","ListDeployedSnsesResponse","instances","ListUpgradeStepsRequest","starting_at","PrettySnsVersion","ListUpgradeStep","pretty_version","ListUpgradeStepsResponse","UpdateAllowedPrincipalsRequest","added_principals","removed_principals","UpdateAllowedPrincipalsResult","AllowedPrincipals","UpdateAllowedPrincipalsResponse","update_allowed_principals_result","UpdateSnsSubnetListRequest","sns_subnet_ids_to_add","sns_subnet_ids_to_remove","UpdateSnsSubnetListResponse","add_wasm","deploy_new_sns","get_allowed_principals","get_deployed_sns_by_proposal_id","get_latest_sns_version_pretty","get_next_sns_version","get_sns_subnet_ids","get_wasm","insert_upgrade_path_entries","list_deployed_snses","list_upgrade_steps","update_allowed_principals","update_sns_subnet_list","sns_wasm","SNS_WASM_INTERFACE_FACTORY","cf_participants","sns_root_canister_id","sns_token_e8s","nns_governance_canister_id","icp_ledger_canister_id","sns_ledger_canister_id","should_auto_finalize","ErrorRefundIcpRequest","source_principal_id","block_height","error_type","ErrorRefundIcpResponse","CanisterCallError","FailedUpdate","dapp_canister_id","SetDappControllersResponse","failed_updates","Possibility","SetDappControllersCallResult","possibility","SweepResult","failure","skipped","invalid","global_failures","GovernanceError","Response","governance_error","Possibility_1","SettleCommunityFundParticipationResult","Ok_1","neurons_fund_participation_icp_e8s","neurons_fund_neurons_count","Possibility_2","SettleNeuronsFundParticipationResult","Possibility_3","SetModeCallResult","FinalizeSwapResponse","set_dapp_controllers_call_result","create_sns_neuron_recipes_result","settle_community_fund_participation_result","settle_neurons_fund_participation_result","set_mode_call_result","sweep_icp_result","claim_neuron_result","sweep_sns_result","GetAutoFinalizationStatusResponse","auto_finalize_swap_response","has_auto_finalize_been_attempted","is_auto_finalize_enabled","GetBuyerStateRequest","principal_id","TransferableAmount","transfer_fee_paid_e8s","transfer_start_timestamp_seconds","amount_e8s","amount_transferred_e8s","transfer_success_timestamp_seconds","BuyerState","GetBuyerStateResponse","buyer_state","GetBuyersTotalResponse","buyers_total","CanisterStatusType","stopped","stopping","running","DefiniteCanisterSettingsArgs","freezing_threshold","controllers","memory_allocation","compute_allocation","CanisterStatusResultV2","memory_size","settings","idle_cycles_burned_per_day","module_hash","GetDerivedStateResponse","sns_tokens_per_icp","Float64","buyer_total_icp_e8s","cf_participant_count","direct_participation_icp_e8s","direct_participant_count","cf_neuron_count","GetInitResponse","GetLifecycleResponse","decentralization_sale_open_timestamp_seconds","lifecycle","decentralization_swap_termination_timestamp_seconds","Icrc1Account","Ticket","creation_time","ticket_id","Ok_2","ticket","Err_1","GetOpenTicketResponse","Params","sale_delay_seconds","GetSaleParametersResponse","NeuronId","NeuronAttributes","followees","CfInvestment","DirectInvestment","buyer_principal","Investor","CommunityFund","Direct","SnsNeuronRecipe","claimed_status","neuron_attributes","investor","neuron_recipes","next_ticket_id","finalize_swap_in_progress","already_tried_to_auto_finalize","purge_old_tickets_last_completion_timestamp_nanoseconds","purge_old_tickets_next_principal","buyers","open_sns_token_swap_proposal_id","DerivedState","Float32","GetStateResponse","derived","ListCommunityFundParticipantsRequest","ListDirectParticipantsRequest","Participant","participation","participant_id","ListDirectParticipantsResponse","ListSnsNeuronRecipesRequest","ListSnsNeuronRecipesResponse","sns_neuron_recipes","NewSaleTicketRequest","InvalidUserAmount","min_amount_icp_e8s_included","max_amount_icp_e8s_included","Err_2","invalid_user_amount","existing_ticket","NewSaleTicketResponse","OpenRequest","RefreshBuyerTokensRequest","buyer","RefreshBuyerTokensResponse","icp_accepted_participation_e8s","icp_ledger_account_balance_e8s","error_refund_icp","finalize_swap","get_auto_finalization_status","get_buyer_state","get_buyers_total","get_canister_status","get_derived_state","get_init","get_lifecycle","get_open_ticket","get_sale_parameters","get_state","list_community_fund_participants","list_direct_participants","list_sns_neuron_recipes","new_sale_ticket","notify_payment_failure","refresh_buyer_tokens","restore_dapp_controllers","sns_swap","SNS_SWAP_INTERFACE_FACTORY","Timers","last_spawned_timestamp_seconds","last_reset_timestamp_seconds","requires_periodic_tasks","Version","Versions","versions","CachedUpgradeSteps","upgrade_steps","response_timestamp_seconds","requested_timestamp_seconds","Topic","DappCanisterManagement","DaoCommunitySettings","ApplicationBusinessLogic","CriticalDappOperations","TreasuryAssetManagement","Governance","SnsFrameworkManagement","GenericNervousSystemFunction","topic","validator_canister_id","target_canister_id","validator_method_name","target_method_name","FunctionType","NativeNervousSystemFunction","NervousSystemFunction","function_type","GovernanceCachedMetrics","not_dissolving_neurons_e8s_buckets","garbage_collectable_neurons_count","neurons_with_invalid_stake_count","not_dissolving_neurons_count_buckets","neurons_with_less_than_6_months_dissolve_delay_count","dissolved_neurons_count","total_staked_e8s","total_supply_governance_tokens","not_dissolving_neurons_count","dissolved_neurons_e8s","neurons_with_less_than_6_months_dissolve_delay_e8s","dissolving_neurons_count_buckets","dissolving_neurons_count","dissolving_neurons_e8s_buckets","timestamp_seconds","MaturityModulation","current_basis_points","updated_at_timestamp_seconds","TargetVersionSet","old_target_version","new_target_version","is_advanced_automatically","UpgradeStepsReset","human_readable","UpgradeOutcome","Success","Timeout","ExternalFailure","InvalidState","ProposalId","UpgradeStarted","expected_version","UpgradeSnsToNextVersionProposal","BehindTargetVersion","UpgradeStepsRefreshed","TargetVersionReset","UpgradeJournalEntry","UpgradeJournal","Followees","DefaultFollowees","NeuronPermissionList","permissions","VotingRewardsParameters","round_duration_seconds","NervousSystemParameters","default_followees","max_followees_per_function","automatically_advance_target_version","neuron_claimer_permissions","max_neuron_age_for_age_bonus","reject_cost_e8s","max_proposals_to_keep_per_action","max_number_of_neurons","max_number_of_proposals_with_ballots","neuron_grantable_permissions","voting_rewards_parameters","maturity_modulation_disabled","max_number_of_principals_per_neuron","RewardEvent","rounds_since_last_distribution","actual_timestamp_seconds","end_timestamp_seconds","total_available_e8s_equivalent","distributed_e8s_equivalent","settled_proposals","PendingVersion","mark_failed_at_seconds","checking_upgrade_lock","target_version","Decimal","e8s","ValuationFactors","xdrs_per_icp","icps_per_token","Valuation","valuation_factors","MintSnsTokensActionAuxiliary","valuation","AdvanceSnsTargetVersionActionAuxiliary","ActionAuxiliary","TransferSnsTreasuryFunds","MintSnsTokens","AdvanceSnsTargetVersion","Ballot","vote","cast_timestamp_seconds","voting_power","Percentage","basis_points","Tally","no","yes","ManageDappCanisterSettings","wasm_memory_threshold","reserved_cycles_limit","log_visibility","wasm_memory_limit","SetTopicsForCustomProposals","custom_function_id_to_topic","RegisterDappCanisters","from_treasury","to_principal","to_subaccount","ChunkedCanisterWasm","wasm_module_hash","chunk_hashes_list","store_canister_id","UpgradeSnsControlledCanister","new_canister_wasm","canister_id","chunked_canister_wasm","canister_upgrade_arg","DeregisterDappCanisters","new_controllers","new_target","ManageSnsMetadata","ExecuteGenericNervousSystemFunction","function_id","ManageLedgerParameters","transfer_fee","Motion","motion_text","Action","ManageNervousSystemParameters","AddGenericNervousSystemFunction","RemoveGenericNervousSystemFunction","UpgradeSnsToNextVersion","Unspecified","Proposal","summary","WaitForQuietState","current_deadline_timestamp_seconds","ProposalData","payload_text_rendering","failure_reason","action_auxiliary","ballots","minimum_yes_proportion_of_total","reward_event_round","failed_timestamp_seconds","reward_event_end_timestamp_seconds","proposal_creation_timestamp_seconds","latest_tally","decided_timestamp_seconds","proposal","proposer","wait_for_quiet_state","minimum_yes_proportion_of_exercised","is_eligible_for_rewards","executed_timestamp_seconds","Split","Follow","DisburseMaturity","percentage_to_disburse","ChangeAutoStakeMaturity","requested_setting_for_auto_stake_maturity","IncreaseDissolveDelay","additional_dissolve_delay_seconds","SetDissolveTimestamp","dissolve_timestamp_seconds","Operation","StopDissolving","StartDissolving","Configure","operation","RegisterVote","FinalizeDisburseMaturity","amount_to_be_disbursed_e8s","MemoAndController","By","ClaimOrRefresh","by","RemoveNeuronPermissions","permissions_to_remove","AddNeuronPermissions","permissions_to_add","MergeMaturity","percentage_to_merge","Amount","Disburse","Command_2","SyncCommand","MakeProposal","ClaimOrRefreshNeuron","NeuronInFlightCommand","command","NeuronPermission","permission_type","DissolveState","DissolveDelaySeconds","WhenDissolvedTimestampSeconds","DisburseMaturityInProgress","timestamp_of_disbursement_seconds","account_to_disburse_to","finalize_disbursement_timestamp_seconds","Neuron","staked_maturity_e8s_equivalent","maturity_e8s_equivalent","cached_neuron_stake_e8s","created_timestamp_seconds","source_nns_neuron_id","auto_stake_maturity","aging_since_timestamp_seconds","dissolve_state","voting_power_percentage_multiplier","disburse_maturity_in_progress","neuron_fees_e8s","Principals","timers","cached_upgrade_steps","id_to_nervous_system_functions","metrics","maturity_modulation","upgrade_journal","parameters","is_finalizing_disburse_maturity","deployed_version","sns_initialization_parameters","latest_reward_event","pending_version","proposals","in_flight_commands","sns_metadata","neurons","genesis_timestamp_seconds","principals","NeuronsFund","nns_neuron_hotkeys","nns_neuron_controller","NeuronIds","neuron_ids","NeuronRecipe","participant","neuron_id","NeuronRecipes","ClaimSwapNeuronsRequest","SwapNeuron","ClaimedSwapNeurons","swap_neurons","ClaimSwapNeuronsResult","ClaimSwapNeuronsResponse","claim_swap_neurons_result","GetMaturityModulationResponse","GetMetadataResponse","GetModeResponse","GetNeuron","GetNeuronResponse","GetProposal","GetProposalResponse","QueryStats","response_payload_bytes_total","num_instructions_total","num_calls_total","request_payload_bytes_total","query_stats","GetRunningSnsVersionResponse","GetSnsInitializationParametersResponse","GetTimersResponse","GetUpgradeJournalRequest","GetUpgradeJournalResponse","upgrade_journal_entry_count","ListNervousSystemFunctionsResponse","reserved_ids","functions","ListNeurons","of_principal","start_page_at","ListNeuronsResponse","ListProposals","include_reward_status","before_proposal","exclude_type","include_status","ListProposalsResponse","include_ballots_by_caller","ListTopicsRequest","TopicInfo","native_functions","is_critical","custom_functions","ListTopicsResponse","uncategorized_functions","topics","StakeMaturity","percentage_to_stake","Command","ManageNeuron","SplitResponse","created_neuron_id","DisburseMaturityResponse","amount_disbursed_e8s","amount_deducted_e8s","ClaimOrRefreshResponse","refreshed_neuron_id","StakeMaturityResponse","maturity_e8s","staked_maturity_e8s","MergeMaturityResponse","merged_maturity_e8s","new_stake_e8s","DisburseResponse","transfer_block_height","Command_1","RemoveNeuronPermission","AddNeuronPermission","ManageNeuronResponse","SetMode","claim_swap_neurons","fail_stuck_upgrade_in_progress","get_build_metadata","get_latest_reward_event","get_maturity_modulation","get_metadata","get_mode","get_nervous_system_parameters","get_neuron","get_proposal","get_root_canister_status","get_running_sns_version","get_sns_initialization_parameters","get_timers","get_upgrade_journal","list_nervous_system_functions","list_neurons","list_proposals","list_topics","manage_neuron","reset_timers","set_mode","sns_governance","SNS_GOVERNANCE_INTERFACE_FACTORY","decreaseLiquidity","claim","addLiquidity","increaseLiquidity","Transaction","liquidityTotal","recipient","token0ChangeAmount","sender","liquidityChange","token1Standard","token1ChangeAmount","token1Decimals","token0Standard","amountUSD","amountToken0","amountToken1","poolFee","token0Decimals","PublicPoolOverView","token0TotalVolume","volumeUSD1d","volumeUSD7d","token1Volume24H","totalVolumeUSD","sqrtPrice","feeTier","token1TotalVolume","volumeUSD","feesUSD","token0Volume24H","txCount","PublicTokenOverview","priceUSDChange","Address","addOwner","addQuoteToken","allPoolStorage","allTokenStorage","allUserStorage","batchInsert","getAllPools","getControllers","getDataQueueSize","getLastDataTime","getOwners","getPoolQueueSize","getPoolsForToken","getQuoteTokens","getSyncLock","getSyncStatus","getTokenQueueSize","getTotalVolumeAndUser","getUserQueueSize","insert","poolMapping","poolStorage","setPoolSyncStatus","setQuoteTokens","setTokenSyncStatus","setUserSyncStatus","syncOverview","tokenMapping","tokenStorage","userMapping","node_index","NodeIndexInterfaceFactory","token0InAmount","tickLimit","token1InAmount","transferPosition","SwapRecordInfo__1","feeAmountTotal","token0AmountTotal","feeTire","token1AmountTotal","PoolTvlData","tvlUSD","SwapRecordInfo","SwapErrorInfo","PoolBaseInfo","TokenPrice","priceICP","arbitrary_data","StreamingCallbackHttpResponse","CallbackStrategy","StreamingStrategy","Callback","streaming_strategy","addClient","baseLastStorage","baseStorage","batchPush","batchUpdatePoolTvl","batchUpdateTokenPrice7dVolumeUSD","cleanErrorData","getAllowTokens","getClients","getDataQueue","getErrorData","getPoolLastPrice","getPoolLastPriceTime","getPoolTvl","getStorageCount","getSyncError","getTokenPriceMetadata","getTransferPositionStorageCount","removeTokenMetadata","retryErrorData","transferPositionLastStorage","transferPositionStorage","updateMiniProportion","updateTokenMetadata","RecordPage","addOwners","getBaseRecord","getByPool","getByToken","getTxCount","baseIndex","BaseIndexInterfaceFactory","BaseIndex","BaseStorageInterfaceFactory","TvlOverview","tvlUSDChange","PublicProtocolData","getAllPoolTvl","getAllTokenTvl","getPoolLastTvl","getProtocolData","getSyncState","getSyncTime","getTokenLastTvl","getTvlSyncState","globalLastStorageCanister","globalStorageCanister","syncGlobal","syncTvl","syncTvlStatus","tvlLastStorageCanister","tvlStorageCanister","NatResult__1","PublicSwapChartDayData","getChartData","NatResult__2","TvlChartDayData","getPoolChartTvl","getTokenChartTvl","globalIndex","GlobalIndexInterfaceFactory","globalStorage","GlobalStorageInterfaceFactory","globalTVL","GlobalTVLInterfaceFactory","PublicPoolChartDayData","getPoolChartData","getPoolTransactions","PoolStorageInterfaceFactory","PoolInfo","PublicTokenChartDayData","PublicTokenPricesData","low","high","getToken","getTokenChartData","getTokenPricesData","getTokenTransactions","TokenStorageInterfaceFactory","UserStorageInterfaceFactory","getFirstBlock","getTx","positionTransactionsStorage","PositionTransactionsStorageFactory","Rec","Blob","Block","created_at_time","kind","append_blocks","get_blocks","blocks","get_transaction","get_transactions","remaining_capacity","Memo","Timestamp","TxIndex","TransferError","BadBurn","Duplicate","duplicate_of","BadFee","expected_fee","CreatedInFuture","ledger_time","TooOld","TransferResult","GetTransactionsRequest","Burn","Mint","Transfer","ArchivedTransactionRange","GetTransactionsResponse","first_index","log_length","archived_transactions","icrc1_balance_of","icrc1_decimals","icrc1_fee","icrc1_metadata","icrc1_minting_account","icrc1_name","icrc1_symbol","icrc1_total_supply","icrc1_logo","icrc1_transfer","MetadataValue","ChangeFeeCollector","SetTo","Unset","FeatureFlags","maximum_number_of_accounts","accounts_overflow_trim_quantity","change_fee_collector","max_memo_length","feature_flags","ArchiveOptions","num_blocks_to_archive","max_transactions_per_response","trigger_threshold","max_message_size_bytes","cycles_for_archive_creation","node_max_memory_size_bytes","controller_id","initial_balances","fee_collector_account","archive_options","GetBlocksRequest","BlockRange","ArchivedRange","GetBlocksResponse","certificate","chain_length","archived_blocks","DataCertificate","hash_tree","Approve","expected_allowance","expires_at","TransactionRange","ArchivedRange_1","StandardRecord","TransferArg","AllowanceArgs","Allowance","ApproveArgs","ApproveError","AllowanceChanged","current_allowance","Expired","TransferFromArgs","spender_subaccount","TransferFromError","get_data_certificate","icrc2_allowance","icrc2_approve","icrc2_transfer_from","icrcArchive","ICRCArchiveInterfaceFactory","ICRC1InterfaceFactory","ICRC2InterfaceFactory","TxError","TransactionId","BurnError","BurnResult","TransactionStatus","FAILED","SUCCEEDED","EventDetail","CanisterCreated","CanisterCalled","method_name","TransferFrom","caller","EventsConnection","next_offset","next_canister_id","canisterCalled","canisterCreated","Time","TxRecord","op","MintError","MintResult","Stats","transfers_count","mints_count","transfers_from_count","canisters_created_count","burns_count","approvals_count","proxy_calls_count","history_events","ResultCall","return","CreateResult","ResultSend","events","getTransaction","getTransactions","halt","nameErc20","stats","transferErc20","wallet_balance","wallet_call","wallet_create_canister","wallet_create_wallet","wallet_send","getHolders","setFeeTo","xtc","XTCInterfaceFactory","dip20","DIP20InterfaceFactory","dip20BalanceActor","DIP20BalanceInterfaceFactory","dip20SupplyActor","DIP20SupplyInterfaceFactory","Balance","User","AllowanceRequest","Balance__1","TokenIdentifier","CommonError__1","InvalidToken","ApproveRequest","BalanceRequest","BalanceResponse","Result_7","Extension","HoldersRequest","Holder","Page_1","Result_6","Result_5","fungible","ownerAccount","nonfungible","MintRequest","TransferResponse","CannotNotify","Rejected","AccountIdentifier__1","User__1","TransactionRequest","TransType","transType","TransferRequest","notify","extensions","getFee","holders","registry","totalHolders","Result_10","Page_2","Result_9","Result_8","BlockHeight","blockHeight","WithdrawRequest","BlockHeight__1","WrapRequest","WrapType","unwrap","WrapRecord","wrapType","wrappedTx","ext","EXTTokenInterfaceFactory","wrapICP","WrapICPInterfaceFactory","Duration","secs","nanos","send_whitelist","transaction_window","initial_values","BinaryAccountBalanceArgs","AccountBalanceArgs","ArchiveInfo","Archives","archives","Decimals","Name","GetBlocksArgs","TimeStamp","timestamp_nanos","CandidOperation","allowance_e8s","CandidTransaction","icrc1_memo","CandidBlock","parent_hash","GetBlocksError","BadFirstBlockIndex","requested_index","first_valid_index","ArchivedBlocksRange","QueryBlocksResponse","first_block_index","ArchivedEncodedBlocksRange","QueryEncodedBlocksResponse","SendArgs","Symbol","TransferArgs","TransferError_1","TxTooOld","allowed_window_nanos","TxDuplicate","TxCreatedInFuture","TransferFee","account_balance","account_balance_dfx","query_blocks","query_encoded_blocks","send_dfx","ledgerService","LedgerInterfaceFactory","KVPair","k","v","CanisterInfo","cid","creator","linkMap","ownerName","createTime","mintSupply","royalties","image","ResponseResult_5","CanisterRequest","TextResult","ResponseResult","PageResponse","ResponseResult_2","ResponseResult_4","ResponseResult_3","ResponseResult_1","canisterInfo","deleteTradeStatCanister","feeInfo","findCanister","findCanisterConfig","findTop5Canister","findUserCanister","initLogo","setCanisterConfig","setFeeInfo","ApproveAllRequest","TokenIdentifier__1","AccountIdentifier__2","KVPair__1","ResponseResult_6","TokenIndex","Chunk","TokenIndex__1","IcsMetadata","Remark","TransferRecord","StreamingCallbackToken__1","StreamingCallbackToken","IcsMintRequest","IcsMintRequests","Listing","BuyRequest","nftCid","tokenIndex","OrderInfo","minter","filePath","fileType","seller","artistName","TxInfoResponse","txFee","settleAmountStatus","royaltiesFeeStatus","royaltiesFee","txFeeStatus","txStatus","settleAmount","StatResponse","totalVolume","listSize","totalTurnover","avgPrice","maxPrice","minPrice","RevokeRequest","SaleRequest","cancelOrder","checkPayment","findCanisterId","findCanisterRecommend","findOrderPage","findRecommend","findTokenOrderPage","findTokenTxPage","findTxPage","findUserTxPage","getOrder","getStat","getTradeState","removeList","setCanisterId","setTradeState","unlock","TradeStatResp","List","SendBatchRequest","users","BalanceResponseV2","ClaimRequest","email","TokenMetadataV2","cId","mintTime","attributes","nftType","PageResponse_1","TxType","handsel","TransferRecordV2","tokenName","txType","NftHolderInfo","bronze","gold","iron","platinum","silver","roseGold","NftStatInfo","holderAmount","userMintAmount","officialMintAmount","totalMintAmount","EmailCode","EmailCodeRequest","emailCode","MintRequestV2","MintRequestsV2","EmailState","claimCount","emailCodeCount","TransferResponseV2","airdrop","allowState","allowable","bearer","findSeriesType","findTokenList","findTokenMarket","findTokenTxRecord","findTxRecord","getNftHolderInfo","getNftStat","initEmailCode","mintNFT","mintNFTs","mint_batch","ownerNFTCount","queryEmailState","setClaimState","setSeriesType","swapMint","tokenHolds","AssetHandle","SubAccount__1","AssetId","ChunkId","AssetType","direct","ListRequest","nat","blob","nat8","MetadataContainer","thumbnail","asset","PaymentType","nfts","Payment","expires","payer","purchase","SalePricingGroup","end","pricing","SaleRemaining","retain","send","Sale","groups","quantity","remaining","SaleDetailGroup","SaleDetails","SaleTransaction","MetadataLegacy","HttpStreamingCallbackToken","sha256","content_encoding","HttpStreamingCallbackResponse","HttpStreamingStrategy","SaleSettings","startTime","totalToSell","sold","bulkPricing","whitelistTime","salePrice","acceptCycles","addAsset","addThumbnail","adminKillHeartbeat","adminRefund","adminStartHeartbeat","allSettlements","availableCycles","details","ext_addAssetCanister","ext_admin","ext_assetAdd","ext_assetExists","ext_assetFits","ext_assetStream","ext_balance","ext_bearer","ext_capInit","ext_expired","ext_extensions","ext_marketplaceList","ext_marketplaceListings","ext_marketplacePurchase","ext_marketplaceSettle","ext_marketplaceStats","ext_marketplaceTransactions","ext_metadata","ext_mint","ext_payments","ext_removeAdmin","ext_saleClose","ext_saleCurrent","ext_saleEnd","ext_saleOpen","ext_salePause","ext_salePurchase","ext_saleResume","ext_saleSettings","ext_saleSettle","ext_saleTransactions","ext_saleUpdate","ext_setAdmin","ext_setCollectionMetadata","ext_setMarketplaceOpen","ext_setOwner","ext_setRoyalty","ext_transfer","extdata_supply","failedSales","getMinter","getRegistry","getTokens","heartbeat_assetCanisters","heartbeat_capEvents","heartbeat_disbursements","heartbeat_external","heartbeat_isRunning","heartbeat_paymentSettlements","heartbeat_pending","heartbeat_start","heartbeat_stop","http_request_streaming_callback","http_request_update","isHeartbeatRunning","listings","lock","reserve","retreive","saleTransactions","salesSettings","setMinter","settle","settlements","tokens_ext","V3NFTCanisterControllerInterfaceFactory","NFTCanisterInterfaceFactory","V3TradeCanisterInterfaceFactory","NFTTradeStat","V3TradeStatInterfaceFactory","NFT_V1","V1NFTCanisterInterfaceFactory","ext_nft","ExtNFTInterfaceFactory","AssetClass","Cryptocurrency","FiatCurrency","Asset","class","ExchangeRateError","AnonymousPrincipalNotAllowed","CryptoQuoteAssetNotFound","FailedToAcceptCycles","ForexBaseAssetNotFound","CryptoBaseAssetNotFound","StablecoinRateTooFewRates","ForexAssetsNotFound","InconsistentRatesReceived","RateLimited","StablecoinRateZeroRate","ForexInvalidTimestamp","NotEnoughCycles","ForexQuoteAssetNotFound","StablecoinRateNotFound","ExchangeRate__1","quote_symbol","quote_class","base_symbol","base_class","add_asset","force_update_rate","get_assets","get_exchange_rates","ExchangeRateInterfaceFactory","BlockTag","Safe","Finalized","Latest","UpgradeArg","deposit_with_subaccount_helper_contract_address","next_transaction_nonce","evm_rpc_id","ledger_suite_orchestrator_id","erc20_helper_contract_address","last_erc20_scraped_block_number","ethereum_contract_address","minimum_withdrawal_amount","last_deposit_with_subaccount_scraped_block_number","ethereum_block_height","EthereumNetwork","Sepolia","InitArg","ethereum_network","last_scraped_block_number","AddCkErc20Token","ckerc20_ledger_id","chain_id","ckerc20_token_symbol","Eip1559TransactionPriceArg","Eip1559TransactionPrice","max_priority_fee_per_gas","max_fee_per_gas","max_transaction_fee","gas_limit","LogVisibility","public","DefiniteCanisterSettings","CanisterStatusResponse","reserved_cycles","EventSource","transaction_hash","log_index","UnsignedTransaction","destination","access_list","storage_keys","ReimbursementIndex","CkErc20","cketh_ledger_burn_index","ckerc20_ledger_burn_index","CkEth","ledger_burn_index","TransactionReceipt","effective_gas_price","Failure","block_hash","block_number","gas_used","SkippedBlock","contract_address","AcceptedErc20Deposit","from_address","SignedTransaction","raw_transaction","withdrawal_id","AddedCkErc20Token","SyncedDepositWithSubaccountToBlock","QuarantinedDeposit","event_source","SyncedToBlock","AcceptedDeposit","ReplacedTransaction","QuarantinedReimbursement","MintedCkEth","ReimbursedEthWithdrawal","reimbursed_amount","reimbursed_in_block","FailedErc20WithdrawalRequest","ReimbursedErc20Withdrawal","burn_in_block","MintedCkErc20","CreatedTransaction","InvalidDeposit","SyncedErc20ToBlock","AcceptedErc20WithdrawalRequest","withdrawal_amount","created_at","AcceptedEthWithdrawalRequest","FinalizedTransaction","transaction_receipt","CkErc20Token","GasFeeEstimate","eth_balance","eth_helper_contract_address","last_observed_block_number","last_gas_fee_estimate","cketh_ledger_id","smart_contract_address","last_eth_scraped_block_number","erc20_balances","minter_address","EthTransaction","TxFinalizedStatus","effective_transaction_fee","Reimbursed","PendingReimbursement","RetrieveEthStatus","NotFound","TxFinalized","TxSent","TxCreated","WithdrawErc20Arg","from_cketh_subaccount","from_ckerc20_subaccount","RetrieveErc20Request","ckerc20_block_index","cketh_block_index","LedgerError","failed_burn_amount","minimum_burn_amount","WithdrawErc20Error","TokenNotSupported","supported_tokens","CkErc20LedgerError","CkEthLedgerError","RecipientAddressBlocked","WithdrawalArg","RetrieveEthRequest","WithdrawalError","min_withdrawal_amount","WithdrawalSearchParameter","ByRecipient","BySenderAccount","ByWithdrawalId","WithdrawalStatus","WithdrawalDetail","recipient_address","add_ckerc20_token","eip_1559_transaction_price","total_event_count","is_address_blocked","retrieve_eth_status","withdraw_erc20","withdraw_eth","withdrawal_status","chainKeyETHMinter","ChainKeyMinterInterfaceFactory","AliasResult","is_public","governance_id","addPrincipalAlias","addSharedPrincipal","getAllPrincipalAliases","getPrincipalAlias","getPrincipalAliasByLedger","getPrincipalAliasByLedgers","queryPrincipalAliasPage","syncSNSProject","liquidityLocks","LiquidityLocks","LiquidityLocksInterfaceFactory","TokenBalance","WalletBalance","totalBalance","UserWalletInfo","UserWallet","UploadRequests","userWallets","getUSDPrice","getUserTokens","queryUserTokens","uploadUserWallet","userTokenHelper","ToolInterfaceFactory","DepositArgs","WithdrawArgs","destoryPasscode","getFactoryCid","getTokenCid","passcodePrice","factoryCid","requestPasscode","LimitOrder","QueryResult","records","storages","Result_17","approved","Result_16","batch_id","Result_15","remark","Result_14","Result_13","Result_12","Result_11","QueryPositionResult","approveForAll","checkOperator","chunkSize","clearChunk","commit_batch","content_type","chunk_ids","create_batch","create_chunk","chunk_id","findRemovedTokenList","findTokenListByPool","getAllowances","getCanisterInfo","getTokenId","getTradeCanisterId","icsMetadata","initNFTCanisterInfo","isApproveForAll","isApproveForToken","maxFileSize","removeAllApproval","removeApproval","setTradeCanisterId","spenderRemoveApproval","tokenURI","Passcode","PoolInstaller","weight","subnetType","PoolUpgradeTaskStep","isDone","PoolUpgradeTask","turnOnAvailable","backup","isSent","retryCount","stop","moduleHashBefore","moduleHashAfter","turnOffAvailable","infoCid","trustedCanisterManagerCid","governanceCid","passcodeManagerCid","backupCid","feeReceiverCid","FailedPoolInfo","task","errorMsg","Icrc21ConsentMessageMetadata","utc_offset_minutes","Int16","Icrc21ConsentMessageSpec","device_spec","GenericDisplay","LineDisplay","characters_per_line","lines_per_page","Icrc21ConsentMessageRequest","user_preferences","Icrc21ConsentMessage","LineDisplayMessage","pages","lines","GenericDisplayMessage","Icrc21ConsentInfo","consent_message","Icrc21ErrorInfo","Icrc21Error","InsufficientPayment","UnsupportedCanisterCall","ConsentMessageUnavailable","Icrc21ConsentMessageResponse","Icrc28TrustedOriginsResponse","trusted_origins","UpgradePoolArgs","addPasscode","addPoolControllers","addPoolInstallers","addPoolInstallersValidate","batchAddPoolControllers","batchClearRemovedPool","batchRemovePoolControllers","batchRemovePools","batchSetPoolAdmins","batchSetPoolAvailable","batchSetPoolIcrc28TrustedOrigins","batchSetPoolLimitOrderAvailable","clearPoolUpgradeTaskHis","clearRemovedPool","clearUpgradeFailedPoolList","deletePasscode","getCurrentUpgradeTask","getGovernanceCid","getInitArgs","getInstallerModuleHash","getNextPoolVersion","getPasscodesByPrincipal","getPendingUpgradePoolList","getPoolInstallers","getPoolUpgradeTaskHis","getPoolUpgradeTaskHisList","getPrincipalPasscodes","getUpgradeFailedPoolList","getVersion","icrc10_supported_standards","icrc21_canister_call_consent_message","icrc28_trusted_origins","removePoolControllers","removePoolInstaller","removePoolInstallerValidate","retryAllFailedUpgrades","setIcrc28TrustedOrigins","setInstallerModuleHash","setInstallerModuleHashValidate","setPoolAdmins","setPoolAvailable","setUpgradePoolList","upgradePoolTokenStandard","LimitOrderArgs","AccountBalance","Page_5","Result_30","Result_29","tokenIncome","totalTokensOwed0","totalTokensOwed1","ClaimArgs","Result_28","DecreaseLiquidityArgs","DepositAndMintArgs","fee0","fee1","positionOwner","amount0Desired","amount1Desired","Result_27","Result_26","feeGrowthGlobal1X128","feeGrowthGlobal0X128","Result_25","LimitOrderKey","LimitOrderValue","userPositionId","Result_24","Result_23","lowerLimitOrders","upperLimitOrders","GetPositionArgs","PositionInfo","Result_22","PositionInfoWithId","Page_4","Result_21","Result_20","TVLToken0","TVLToken1","PushError","Result_19","errors","Result_18","TickLiquidityInfo","tickIndex","price0Decimal","liquidityNet","price0","price1","liquidityGross","price1Decimal","Page_3","TickInfoWithId","initialized","feeGrowthOutside1X128","secondsPerLiquidityOutsideX128","secondsOutside","feeGrowthOutside0X128","tickCumulativeOutside","swapFee0Repurchase","swapFeeReceiver","swapFee1Repurchase","TransferLog","daysFrom19700101","fromSubaccount","toSubaccount","upperLimitOrdersIds","lowerLimitOrderIds","UserPositionInfo","UserPositionInfoWithTokenAmount","UserPositionInfoWithId","IncreaseLiquidityArgs","PoolMetadata","maxLiquidityPerTick","nextPositionId","MintArgs","SwapArgs","WithdrawToSubaccountArgs","addLimitOrder","allTokenBalance","approvePosition","batchRefreshIncome","checkOwnerOfUserPosition","depositAllAndMint","getClaimLog","getFeeGrowthGlobal","getLimitOrderAvailabilityState","getLimitOrderStack","getLimitOrders","getMistransferBalance","getPosition","getPositions","getSortedUserLimitOrders","getSwapRecordState","getTickBitmaps","getTickInfos","getTicks","getTokenAmountState","getTokenMeta","getTransferLogs","getUserByPositionId","getUserLimitOrders","getUserPosition","getUserPositionWithTokenAmount","getUserPositions","getUserPositionsByPrincipal","getUserUnusedBalance","quoteForAll","refreshIncome","removeErrorTransferLog","removeLimitOrder","setLimitOrderAvailable","sumTick","upgradeTokenStandard","withdrawMistransferBalance","withdrawToSubaccount","addPoolId","getUserPools","initUserPoolMap","removePoolId","removePoolIdWithoutCheck","updatePoolIds","PoolAprIndex","aprAvg1D","aprAvg7D","aprAvg30D","PositionDataIndex","snapshotTime","token0FeeAmount","token1FeeDayAmount","fees","token1USDPrice","dayId","token1FeeAmount","token0FeeDayAmount","token0USDPrice","PriceIndex","priceLow7D","priceHigh24H","priceHigh30D","priceHigh7D","priceLow24H","priceLow30D","TaskPositionStatus","lastSyncDay4Position","syncErrorMsgs","syncPoolSize","taskStatus","currentSyncPool","pendingSyncPoolSize","step1","step2","step3","step4","step5","currentPoolPositionSize","currentDay","syncPositionDataLock","nowTime","TaskPriceStatus","currentHour","lastSyncHour4PoolPrice","syncPoolPriceLock","TaskStatus","lastSyncDay4PoolData","totalPoolSize","syncPoolDataLock","pendingSyncPriceSize","totalTokenListSize","pendingSyncPoolDataSize","pendingSyncPositionSize","ICPSwapPoolDataIndex","volumeToken0","volumeToken1","token0LockedAmount","token1LedgerId","token0LedgerId","token1LockedAmount","hourId","getPoolAprIndex","getPositionIndexs","getPriceIndex","getStatPrice","getStatus","getTaskState","queryPoolAprLine","queryPoolDataIndexPage","queryPoolPriceLine","queryPositionAprLine","queryPositionDataIndexPage","queryPositionFeesLine","queryPositionValueLine","queryPriceIndexPage","setTaskState","syncPoolAndTokenList","syncPoolPriceData","syncPositionData","swapNFT","SwapNFTInterfaceFactory","swapFactory","SwapFactoryInterfaceFactory","SwapPoolInterfaceFactory","swapPosition","PositionIndexInterfaceFactory","positionCharts","PositionCharts","PositionChartsFactory","TokenDataIndex","marketAmount","ledgerId","transactionAmount","lockedAmount","tokenDatas","getTokenData","queryTokenDatas","uploadTokenData","tokenAnalysis","TokenAnalysisFactory","TokenAnalysis","passCodeManager","PassCodeManagerInterfaceFactory","limitTransaction","LimitTransactionInterfaceFactory","LimitTransaction","CreateFarmArgs","secondPerCycle","endTime","rewardAmount","refunder","priceInsideLimit","token0AmountLimit","token1AmountLimit","farmIndexCid","addFarmControllers","getAllFarms","removeFarmControllers","setFarmAdmins","token0DecimalsConst","token1DecimalsConst","rewardTokenDecimalsConst","timeConst","Deposit","initTime","lastDistributeTime","holder","DistributeRecord","rewardTotal","rewardGained","FarmStatus","FarmInfo","totalRewardHarvested","numberOfStakes","totalRewardBalance","poolToken0","poolToken1","totalRewardUnharvested","totalReward","userNumberOfStakes","InitFarmArgs","nodeIndexCid","farmFactoryCid","positionNumLimit","poolToken0Amount","totalLiquidity","poolToken1Amount","poolToken0Symbol","poolToken1Symbol","poolToken1Decimals","poolToken0Decimals","totalRewardFee","rewardPerCycle","rewardTokenFee","totalCycleCount","currentCycleCount","rewardTokenDecimals","distribute","unstake","stake","harvest","StakeRecord","TokenAmount","TVL","clearErrorLog","finishManually","getAPRConst","getAPRRecord","getAvgAPR","getDeposit","getDistributeRecord","getErrorLog","getFarmInfo","getLimitInfo","getLiquidityInfo","getPoolMeta","getPoolTokenMeta","getPositionIds","getRewardInfo","getRewardMeta","getRewardTokenBalance","getStakeRecord","getTVL","getUserDeposits","getUserRewardBalance","getUserRewardBalances","getUserTVL","restartManually","sendRewardManually","setLimitInfo","withdrawRewardFee","AddFarmIndexArgs","farmCid","poolCid","FarmRewardInfo","poolToken0TVL","poolToken1TVL","SearchCondition","farmAmount","principalAmount","addFarmIndex","getAllFarmUsers","getAllPoolFarms","getAllRewardTokenFarms","getAllUserFarms","getFarmRewardTokenInfo","getFarmRewardTokenInfos","getFarmUsers","getFarms","getFarmsByConditions","getFarmsByPool","getFarmsByRewardToken","getLiveFarmsByPools","getPrincipalRecord","getRewardInfoByStatus","getTotalAmount","getUserFarms","syncHisData","updateFarmStatus","updateFarmTVL","updateUserInfo","farmController","FarmControllerInterfaceFactory","FarmInterfaceFactory","farmIndex","FarmIndex","FarmIndexInterfaceFactory","InitRequest","stakingTokenSymbol","rewardTokenSymbol","rewardPerTime","stakingTokenFee","stakingTokenDecimals","bonusEndTime","TokenGlobalDataInfo","stakingAmount","rewardTokenPrice","rewardTokenCanisterId","stakingTokenCanisterId","stakingTokenPrice","stakingTokenAmount","rewardTokenAmount","StakingPoolInfo","GlobalDataInfo","valueOfStaking","valueOfRewarded","totalStaker","valueOfRewardsInProgress","totalPools","userIndexCid","addStakingPoolControllers","createStakingPool","deleteStakingPool","findPoolStatInfo","findStakingPoolPage","findStakingPoolPageV2","getGlobalData","getOperationInfo","getPoolStatInfo","getStakingPool","removeStakingPoolControllers","setRewardFee","setStakingPoolAdmins","setStakingPoolTime","setUpdateGlobalDataState","setUserIndexCanister","stopStakingPool","stopTimer","unclaimdRewardFee","liquidate","TransTokenType","stakeToken","stakingStandard","transTokenType","errMsg","rewardStandard","PublicUserInfo","pendingReward","lastRewardTime","stakeAmount","rewardTokenBalance","rewardDebt","lastStakeTime","stakeTokenBalance","LiquidationStatus","pending","liquidation","liquidated","PublicStakingPoolInfo","totalDeposit","totalUnstaked","totalHarvest","liquidationStatus","rewardFee","accPerShare","totalStaked","UpdateStakingPool","findRewardRecordPage","findStakingRecordPage","findTransferRecord","findUserInfo","getPoolInfo","getUserInfo","refundRewardToken","refundUserToken","removeTransferRecord","updateStakingPool","APRInfo","day","stakingTokenPriceUSD","rewardTokenPriceUSD","UserPool","userInfo","UserStakedToken","computeStakingPool","queryAPR","queryIndexInfo","queryPool","queryStakingPool","queryUserStakedTokens","syncStakingPool","updateUser","stakingPoolController","StakingPoolControllerInterfaceFactory","TokenPool","TokenPoolInterfaceFactory","stakeIndex","StakeIndexInterfaceFactor","ClaimEventInfo","claimEventCreator","claimedTokenAmount","claimEventId","tokenDecimals","claimEventStatus","tokenSymbol","totalUserAmount","totalTokenAmount","claimedUserAmount","claimCanisterId","claimEventName","ClaimRecordInfo","claimAmount","claimStatus","claimTime","claimUser","ClaimQuota","quota","findAllEvents","findCreateEvents","findEventRecords","findUserEventRecords","findUserEvents","getControllerAddress","getEvent","getStorageCanister","importQuota","setStatus","setStorageCanister","updateEvent","addEvent","addEventRecords","deleteEvent","findAllEventRecords","getCanisterPrincipal","userClaim","tokenClaimController","ClaimController","ClaimControllerInterfaceFactory","tokenClaimStorage","ClaimStorageInterfaceFactory","ProjectInfo","projectCid","managerAddress","tokenStand","findProjectPage","getFileCanister","getProject","setFileCanister","ProposalCreateInfo","createUser","beginTime","userAmount","ProposalInfo","storageCanisterId","createAddress","project","UserVoteRecord","voteTime","usedProof","UserVotePowersInfo","availablePowers","usedPowers","ProjectInfo__1","deleteAdmin","deleteProposal","findPage","findRecordPage","findVotePower","getProposal","getVotePowerCount","isProjectAdmin","setProject","setVotePower","updateProposal","votingController","VotingController","VoteControllerInterfaceFactory","votingCanister","VoteProjectInterfaceFactory","votingFile","VoteFileInterfaceFactory","WICP_CANISTER_ID","ICS_CANISTER_ID","NativeCurrencyName","FREE_LIQUIDITY_NAME","NONE_SUB_HEX","withdrawErc20Token","minter_id","useWithdrawErc20TokenStatus","withdrawErc20TokenStatus","getChainKeyMinterInfo","useChainKeyTransactionPrice","getChainKeyTransactionPrice","getNodeInfoAllPools","getNodeInfoAllTokens","useNodeInfoAllTokens","useInfoPoolStorageIds","getInfoPoolStorageIds","getInfoTokenStorageIds","useInfoTokenStorageIds","getSinglePoolMultiPositions","positionInfo","useExtraBlackHolePositionInfos","useMultiPositionInfosByIds","useAllLiquidityLocks","setResult","lockIds","ledgerIds","useMultiPositionInfos","__prev","concatValue","extraBlackHolePositions","multiPositions","useExtraBlackHoleLiquidityLocks","allPositions","useListDeployedSNSs","getListDeployedSNSs","getSnsTokensInfo","sns_all_tokens_info_call_rounds","fetch_index","fetch_done","_","call_index","meta","useStakingPools","useStakePools","getStakingPoolGlobalData","useStakingTokenPool","useStakingPoolCycles","getStakingPoolCycles","stakingPoolClaim","stakingPoolDeposit","stakingPoolDepositFrom","stakingPoolHarvest","stakingTokenStake","stakingPoolWithdraw","isStakeToken","stakingPoolUnstake","useStakingPoolTransactions","getStakingPoolTransactions","useStakingPoolClaimTransactions","getStakingPoolClaimTransactions","useStakePoolStatInfo","getStakePoolStatInfo","useStakeAprChartData","start_time","end_time","getStakeAprChartData","useUserStakedTokens","getUserStakedTokens","useSwapPool","useSwapPoolMetadata","getSwapPoolAllTickInfos","poolId_1","getSwapTickInfos","useLiquidityTickInfos","quote_result","collect","getPositionFee","getSwapPoolAllBalance","_this2","getSwapNFTTokenURI","getSwapPositions","useSwapPositions","getSwapAllTicks","canisterId_1","_this6","getPaginationAllDataLimit","getSwapTicks","useSwapAllTicks","useSwapCyclesInfo","getSwapCyclesInfo","getUserPositionsPools","getSwapUserPositions","useSwapUserPositions","useSwapPositionOwner","getSwapPositionOwner","allResult","getPassCode","usePCMMetadata","requestPassCode","useUserPCMBalance","useEvent","claimToken","createClaimEvent","setClaimEventReady","setClaimEventState","setClaimEventData","useClaimEvents","getUserClaimEvents","useUserClaimEvents","useClaimEventTransactions","getClaimEventTransactions","useUserClaimEventTransactions","getUserClaimEventTransactions","getTokensFromList","useTokenListTokenInfo","indexRef","resultsRef","_result","totalPage","pageArgsFormat","__result","debouncedValue","setDebouncedValue","debouncedMs","inner","setInner","onChangeInner","newValue","__callback","callback_1","limit_1","call_rounds","start_index","fetch_data","substr","parseArrays","ignoreQueryPrefix","parsedQueryString","calls_1","__calls","splitArr","LOWEST","Rounding","isNative","isInteger","validateAndParseERC20Address","toLowerCase","Big","_Big","added","subtracted","multiplied","divided","significantDigits","format","rounding","decimalPlaces","DP","_Decimal","toSignificantRounding","ROUND_HALF_UP","ROUND_UP","RoundingMode","toFixedRounding","RoundDown","RoundHalfUp","RoundUp","tryParseFraction","fractionish","remainder","otherParsed","precision","toSignificantDigits","RM","asFraction","ONE_HUNDRED","toPercent","isPercent","baseCurrency","quoteCurrency","quoteAmount","baseAmount","scalar","adjustedForDecimals","BaseCurrency","validateAndParseAddress","LiquidityMath","addDelta","NEGATIVE_ONE","MAX_FEE","SwapMath","computeSwapStep","sqrtRatioCurrentX96","sqrtRatioTargetX96","amountRemaining","feePips","returnValues","amountRemainingLessFee","SqrtPriceMath","getAmount0Delta","getAmount1Delta","sqrtRatioNextX96","getNextSqrtPriceFromInput","getNextSqrtPriceFromOutput","FullMath","mulDivRoundingUp","NoTickDataProvider","getTick","_tick","ERROR_MESSAGE","nextInitializedTickWithinOneWord","_lte","_tickSpacing","tickComparator","TickList","validateList","ticks","accumulator","isSorted","isBelowSmallest","isAtOrAboveLargest","binarySearch","l","floor","nextInitializedTick","lte","compressed","minimum","maximum","Tick","TickListDataProvider","ticksMapped","NO_TICK_DATA_PROVIDER_DEFAULT","computePoolAddress","tickDataProvider","_token0Price","Q192","_token1Price","priceOf","sqrtPriceLimitX96","amountCalculated","amountSpecified","_sqrtPriceLimitX96","exactInput","amountSpecifiedRemaining","sqrtPriceStartX96","tickNext","sqrtPriceNextX96","getSqrtRatioAtTick","getTickAtSqrtRatio","maxLiquidityForAmount0Imprecise","sqrtRatioAX96","sqrtRatioBX96","intermediate","Q96","maxLiquidityForAmount0Precise","maxLiquidityForAmount1","maxLiquidityForAmounts","useFullPrecision","maxLiquidityForAmount0","liquidity0","liquidity1","_token0Amount","_token1Amount","_mintAmounts","token0PriceLower","tickToPrice","token0PriceUpper","ratiosAfterSlippage","priceLower","priceUpper","sqrtRatioX96Lower","sqrtRatioX96Upper","mintAmountsWithSlippage","poolLower","poolUpper","positionThatWillBeCreated","fromAmounts","mintAmounts","burnAmountsWithSlippage","fromAmount0","fromAmount1","MAX_SAFE_INTEGER","TWO","sqrt","z","product","ratioX192","nextTickPrice","MaxUint160","multiplyIn256","roundUp","numerator1","numerator2","sqrtPX96","getNextSqrtPriceFromAmount0RoundingUp","getNextSqrtPriceFromAmount1RoundingDown","sum","addIn256","POWERS_OF_2","pow","mulShift","mulBy","Q32","absTick","ratio","sqrtRatioX128","msb","power","mostSignificantBit","log_2","f","log_sqrt10001","tickLow","tickHigh","BaseTokenAdapter","DIP20TokenAdapter","totalHolder","_this3","_this4","_this5","_this7","_this8","_this9","_this10","_this11","actualReceivedByTransfer","_ref13","getMintingAccount","_ref14","DIP20WICPTokenAdapter","DIP20WICPAdapter","DIP20XTCTokenAdapter","DIP20XTCAdapter","EXTTokenAdapter","isBigIntMemo","cap_id","capId","getCapRootId","getCapUserTransactions","_e","witness","getCapTransactions","_f","_g","_this12","ICPAdapter","create_at_time","from_sub_account","icrc2Adapter","ICRC1Adapter","init_result","token_canister_transactions","archivedTransactions","from_owner","_h","_j","_from_sub","_l","_k","_m","to_owner","_p","_o","_q","_to_sub","_s","_r","_t","from_sub","from_account","to_sub","feeArray","_u","_v","_w","_x","_y","enumToString","_2","_0","_z","_1","_3","icrcTransactionFormat","ICRC2Adapter","request","ICS_TOKEN_INFO","GHOST_TOKEN_ID","GHOST_TOKEN_INFO","ck_BTC_TOKEN_INFO","ckUSDCTokenInfo","ckSepoliaUSDCTokenInfo","ckETHTokenInfo","ckSepoliaETHTokenInfo","ckLinkTokenInfo","ckUSDTTokenInfo","Breadcrumbs","prevLabel","currentLabel","prevLink","goBack","ChevronRight","Breadcrumb","BreadcrumbsV1","links","gridAutoRows","ReactLink","href","rel","LinearProgress","Loading","circularSize","maskBorderRadius","loadingAnimation","LoadingRow","gridColumnGap","gridRowGap","animationFillMode","backgroundSize","willChange","gridColumn","ImageLoading","cardStyles","_border","tip","noTips","DropDownMenu","multiple","customLabel","oldSelected","newSelected","handleSearchChange","Search","isFiltered","handleCheckboxChange","selectedValue","SelectPanel","valueColor","setShowClose","selectLabel","rotate","selectedMenu","ALink","textDecorationColor","arrow","TextButtonV1","SnsIcon","iconSize","iconColor","MuiToolTip","PopperProps","HelpCircle","SmallButton","openBase64ImageInNewWindow","base64String","win","write","outerHTML","cycleValueFormat","noUnit","isPrincipalUser","valueofUser","total_length","resultLength","isSubAccount","argument","_isPrincipal","ICP_ADDRESS_LENGTH","createElement","setAttribute","appendChild","click","removeUselessZeroes","digits","Intl","NumberFormat","notation","compactDisplay","minimumFractionDigits","maximumFractionDigits","decimalTrailingZero","__num","formattedCurrency","maximumDecimalTrailingZeroes","decimalTrailingZeroesPattern","RegExp","_match","separator","decimalTrailingZeroes","decimalTrailingZeroesToExponent","fullNumber","fullDigits","formatTokenPrice","digitsIfLessThanOne","formatLiquidityAmount","percentToNum","numToPercent","pageStart","isResultErrKey","isResultOkKey","isResultKey","str","shortenString","_amount","_decimals","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","m","amdO","deferred","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","ns","def","getOwnPropertyNames","definition","o","defineProperty","enumerable","chunkId","promises","u","miniCssF","g","globalThis","Function","hmd","prop","inProgress","dataWebpackPrefix","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","onScriptComplete","onload","doneFns","parentNode","removeChild","head","toStringTag","nmd","paths","oldGetScript","oldLoadScript","queryMap","countMap","retries","realSrc","retryAttempt","cacheBust","getRetryDelay","loadStylesheet","fullhref","existingLinkTags","dataHref","tag","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","insertBefore","nextSibling","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}