{"version":3,"file":"static/js/main.a8d42133.js","mappings":";6BAAiEA,EAAOC,QAA0I,SAASC,GAAG,SAASC,EAAEC,GAAG,GAAGC,EAAED,GAAG,OAAOC,EAAED,GAAGH,QAAQ,IAAIK,EAAED,EAAED,GAAG,CAACH,QAAQ,CAAC,EAAEM,GAAGH,EAAEI,QAAO,GAAI,OAAON,EAAEE,GAAGK,KAAKH,EAAEL,QAAQK,EAAEA,EAAEL,QAAQE,GAAGG,EAAEE,QAAO,EAAGF,EAAEL,OAAO,CAAC,IAAII,EAAE,CAAC,EAAE,OAAOF,EAAEO,EAAER,EAAEC,EAAEQ,EAAEN,EAAEF,EAAES,EAAE,QAAQT,EAAE,EAAE,CAAzM,CAA2M,CAAC,SAASD,EAAEC,EAAEE,GAAG,aAAa,SAASD,EAAEF,GAAG,OAAOA,GAAGA,EAAEW,WAAWX,EAAE,CAACY,QAAQZ,EAAE,CAAC,IAAII,EAAES,OAAOC,QAAQ,SAASd,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEc,UAAUC,OAAOf,IAAI,CAAC,IAAIE,EAAEY,UAAUd,GAAG,IAAI,IAAIC,KAAKC,EAAEU,OAAOI,UAAUC,eAAeX,KAAKJ,EAAED,KAAKF,EAAEE,GAAGC,EAAED,GAAG,CAAC,OAAOF,CAAC,EAASmB,GAAGjB,EAARC,EAAE,IAAWA,EAAE,IAAIiB,EAAElB,EAAEiB,GAAUE,EAAEnB,EAAPC,EAAE,IAAiBmB,EAAEpB,EAAPC,EAAE,IAAiBO,EAAER,EAAPC,EAAE,IAAkBoB,EAAErB,EAARC,EAAE,KAAmBqB,EAAEtB,EAARC,EAAE,KAAmBsB,EAAEvB,EAARC,EAAE,KAAWuB,EAAE,GAAGC,GAAE,EAAGC,EAAE,CAACC,OAAO,IAAIC,MAAM,EAAEC,OAAO,OAAOC,SAAS,IAAIC,SAAQ,EAAGC,MAAK,EAAGC,WAAW,mBAAmBC,cAAc,GAAGC,cAAc,GAAGC,yBAAwB,GAAIC,EAAE,WAAyE,GAAxDxB,UAAUC,OAAO,QAAG,IAASD,UAAU,IAAIA,UAAU,KAAUY,GAAE,GAAIA,EAAE,OAAOD,GAAE,EAAGF,EAAEZ,SAASc,EAAEE,IAAG,EAAGL,EAAEX,SAASc,EAAEE,EAAEM,MAAMR,CAAC,EAAEc,EAAE,WAAWd,GAAE,EAAGD,EAAEb,WAAW2B,GAAG,EAAEE,EAAE,WAAWf,EAAEgB,SAAQ,SAAS1C,EAAEC,GAAGD,EAAE2C,KAAKC,gBAAgB,YAAY5C,EAAE2C,KAAKC,gBAAgB,mBAAmB5C,EAAE2C,KAAKC,gBAAgB,qBAAqB5C,EAAE2C,KAAKC,gBAAgB,iBAAiB,GAAE,EAAEC,EAAE,SAAS7C,GAAG,OAAW,IAAJA,GAAQ,WAAWA,GAAGU,EAAEE,QAAQkC,UAAU,UAAU9C,GAAGU,EAAEE,QAAQmC,SAAS,WAAW/C,GAAGU,EAAEE,QAAQoC,UAAU,mBAAmBhD,IAAS,IAANA,GAAQ,EAAEiD,EAAE,SAASjD,GAAG4B,EAAExB,EAAEwB,EAAE5B,GAAG0B,GAAE,EAAGD,EAAEb,WAAW,IAAIX,EAAEiD,SAASC,MAAMC,OAAOC,KAAK,OAAOR,EAAEjB,EAAEK,UAAUhC,EAAEwC,KAAKb,EAAEU,yBAAyBhB,EAAEV,QAAQ0C,gBAAgBC,QAAQC,KAAK,qLAAqL5B,EAAEU,yBAAwB,GAAIY,SAASO,cAAc,QAAQC,aAAa,kBAAkB9B,EAAEG,QAAQmB,SAASO,cAAc,QAAQC,aAAa,oBAAoB9B,EAAEI,UAAUkB,SAASO,cAAc,QAAQC,aAAa,iBAAiB9B,EAAEE,OAAO,qBAAqBF,EAAEO,YAAY,CAAC,WAAW,eAAewB,QAAQT,SAASU,aAAa,EAAErB,GAAE,GAAI,SAASX,EAAEO,WAAWiB,OAAOS,iBAAiBjC,EAAEO,YAAW,WAAWI,GAAE,EAAG,IAAGW,SAASW,iBAAiBjC,EAAEO,YAAW,WAAWI,GAAE,EAAG,IAAGa,OAAOS,iBAAiB,UAAS,EAAGxC,EAAET,SAAS2B,EAAEX,EAAES,eAAc,IAAKe,OAAOS,iBAAiB,qBAAoB,EAAGxC,EAAET,SAAS2B,EAAEX,EAAES,eAAc,IAAKe,OAAOS,iBAAiB,UAAS,EAAGzC,EAAER,UAAS,YAAW,EAAGW,EAAEX,SAASc,EAAEE,EAAEM,KAAK,GAAEN,EAAEQ,gBAAgBR,EAAEU,yBAAyBhB,EAAEV,QAAQkD,MAAM,aAAatB,GAAGd,EAAE,EAAE1B,EAAED,QAAQ,CAACgE,KAAKd,EAAEe,QAAQzB,EAAE0B,YAAYzB,EAAE,EAAE,SAASxC,EAAEC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,SAASD,EAAEC,IAAG,SAAUA,GAAG,aAAa,SAASE,EAAEH,EAAEC,EAAEE,GAAG,SAASD,EAAED,GAAG,IAAIE,EAAEoB,EAAErB,EAAEgE,EAAE,OAAO3C,EAAE2C,OAAE,EAAOvC,EAAE1B,EAAEkE,EAAEnE,EAAEoE,MAAMlE,EAAEC,EAAE,CAAC,SAASkE,EAAErE,GAAG,OAAO2B,EAAE3B,EAAEyB,EAAE6C,WAAWC,EAAEtE,GAAGwC,EAAEvC,EAAEF,GAAGmE,CAAC,CAAC,SAAShD,EAAEnB,GAAG,IAAgBI,EAAEH,GAAZD,EAAE0B,GAAc,OAAOmB,EAAEN,EAAEnC,EAAEoB,GAAvBxB,EAAE2B,IAA0BvB,CAAC,CAAC,SAASK,EAAET,GAAG,IAAIG,EAAEH,EAAE0B,EAAQ,YAAO,IAASA,GAAGvB,GAAGF,GAAGE,EAAE,GAAG0C,GAAlC7C,EAAE2B,GAAsCH,CAAC,CAAC,SAAS+C,IAAI,IAAIvE,EAAEwC,IAAI,OAAO/B,EAAET,GAAGsB,EAAEtB,QAAQyB,EAAE6C,WAAWC,EAAEpD,EAAEnB,IAAI,CAAC,SAASsB,EAAEtB,GAAG,OAAOyB,OAAE,EAAOwB,GAAG1B,EAAErB,EAAEF,IAAIuB,EAAE2C,OAAE,EAAOC,EAAE,CAAC,SAASK,SAAI,IAAS/C,GAAGgD,aAAahD,GAAGE,EAAE,EAAEJ,EAAEG,EAAEwC,EAAEzC,OAAE,CAAM,CAAC,SAASf,IAAI,YAAO,IAASe,EAAE0C,EAAE7C,EAAEkB,IAAI,CAAC,SAAShC,IAAI,IAAIR,EAAEwC,IAAIrC,EAAEM,EAAET,GAAG,GAAGuB,EAAER,UAAUmD,EAAEQ,KAAKhD,EAAE1B,EAAEG,EAAE,CAAC,QAAG,IAASsB,EAAE,OAAO4C,EAAE3C,GAAG,GAAGmB,EAAE,OAAOpB,EAAE6C,WAAWC,EAAEtE,GAAGC,EAAEwB,EAAE,CAAC,YAAO,IAASD,IAAIA,EAAE6C,WAAWC,EAAEtE,IAAIkE,CAAC,CAAC,IAAI5C,EAAE2C,EAAE1C,EAAE2C,EAAE1C,EAAEC,EAAEC,EAAE,EAAEc,GAAE,EAAGI,GAAE,EAAGI,GAAE,EAAG,GAAG,mBAAmBjD,EAAE,MAAM,IAAI2E,UAAUtD,GAAG,OAAOpB,EAAEmB,EAAEnB,IAAI,EAAEG,EAAED,KAAKsC,IAAItC,EAAEyE,QAAwBpD,GAAhBqB,EAAE,YAAY1C,GAAMyB,EAAER,EAAEjB,EAAE0E,UAAU,EAAE5E,GAAGuB,EAAEyB,EAAE,aAAa9C,IAAIA,EAAE2E,SAAS7B,GAAGzC,EAAEuE,OAAOP,EAAEhE,EAAEwE,MAAMtE,EAAEF,CAAC,CAAC,SAASN,EAAEF,EAAEC,EAAEC,GAAG,IAAImE,GAAE,EAAGlD,GAAE,EAAG,GAAG,mBAAmBnB,EAAE,MAAM,IAAI2E,UAAUtD,GAAG,OAAOjB,EAAEF,KAAKmE,EAAE,YAAYnE,IAAIA,EAAE0E,QAAQP,EAAElD,EAAE,aAAajB,IAAIA,EAAE4E,SAAS3D,GAAGhB,EAAEH,EAAEC,EAAE,CAAC2E,QAAQP,EAAEQ,QAAQ5E,EAAE6E,SAAS3D,GAAG,CAAC,SAASf,EAAEJ,GAAG,IAAIC,EAAE,oBAAoBD,EAAE,YAAYS,EAAET,GAAG,QAAQA,IAAI,UAAUC,GAAG,YAAYA,EAAE,CAAC,SAASoE,EAAErE,GAAG,QAAQA,GAAG,WAAW,oBAAoBA,EAAE,YAAYS,EAAET,GAAG,CAAC,SAASmB,EAAEnB,GAAG,MAAM,WAAW,oBAAoBA,EAAE,YAAYS,EAAET,KAAKqE,EAAErE,IAAI2B,EAAEpB,KAAKP,IAAIsB,CAAC,CAAC,SAASF,EAAEpB,GAAG,GAAG,iBAAiBA,EAAE,OAAOA,EAAE,GAAGmB,EAAEnB,GAAG,OAAOuE,EAAE,GAAGnE,EAAEJ,GAAG,CAAC,IAAIC,EAAE,mBAAmBD,EAAEiF,QAAQjF,EAAEiF,UAAUjF,EAAEA,EAAEI,EAAEH,GAAGA,EAAE,GAAGA,CAAC,CAAC,GAAG,iBAAiBD,EAAE,OAAO,IAAIA,EAAEA,GAAGA,EAAEA,EAAEA,EAAEkF,QAAQV,EAAE,IAAI,IAAIrE,EAAEK,EAAE2E,KAAKnF,GAAG,OAAOG,GAAGoB,EAAE4D,KAAKnF,GAAGkE,EAAElE,EAAEoF,MAAM,GAAGjF,EAAE,EAAE,GAAGO,EAAEyE,KAAKnF,GAAGuE,GAAGvE,CAAC,CAAC,IAAIS,EAAE,mBAAmB4E,QAAQ,iBAAiBA,OAAOC,SAAS,SAAStF,GAAG,cAAcA,CAAC,EAAE,SAASA,GAAG,OAAOA,GAAG,mBAAmBqF,QAAQrF,EAAEuF,cAAcF,QAAQrF,IAAIqF,OAAOpE,UAAU,gBAAgBjB,CAAC,EAAEqB,EAAE,sBAAsBkD,EAAEiB,IAAIlE,EAAE,kBAAkBkD,EAAE,aAAa9D,EAAE,qBAAqBF,EAAE,aAAae,EAAE,cAAc2C,EAAEuB,SAASjE,EAAE,WAAW,oBAAoBvB,EAAE,YAAYQ,EAAER,KAAKA,GAAGA,EAAEY,SAASA,QAAQZ,EAAEkE,EAAE,WAAW,oBAAoBuB,KAAK,YAAYjF,EAAEiF,QAAQA,MAAMA,KAAK7E,SAASA,QAAQ6E,KAAKjE,EAAED,GAAG2C,GAAGwB,SAAS,cAATA,GAA6ChE,EAAjBd,OAAOI,UAAc2E,SAAShE,EAAEiE,KAAKC,IAAIvD,EAAEsD,KAAKE,IAAIvD,EAAE,WAAW,OAAOf,EAAEuE,KAAKC,KAAK,EAAEjG,EAAED,QAAQG,CAAE,GAAEK,KAAKN,EAAE,WAAW,OAAOyE,IAAI,CAAtB,GAA0B,EAAE,SAAS1E,EAAEC,IAAG,SAAUA,GAAG,aAAa,SAASE,EAAEH,EAAEC,EAAEE,GAAG,SAASC,EAAEH,GAAG,IAAIE,EAAEoB,EAAErB,EAAEgE,EAAE,OAAO3C,EAAE2C,OAAE,EAAO1B,EAAEvC,EAAEkE,EAAEnE,EAAEoE,MAAMlE,EAAEC,EAAE,CAAC,SAASkE,EAAErE,GAAG,OAAOwC,EAAExC,EAAEyB,EAAE6C,WAAWC,EAAEtE,GAAGwC,EAAErC,EAAEJ,GAAGmE,CAAC,CAAC,SAAS/C,EAAEpB,GAAG,IAAgBI,EAAEH,GAAZD,EAAE0B,GAAc,OAAOmB,EAAEjB,EAAExB,EAAEoB,GAAvBxB,EAAEwC,IAA0BpC,CAAC,CAAC,SAASiB,EAAErB,GAAG,IAAIG,EAAEH,EAAE0B,EAAQ,YAAO,IAASA,GAAGvB,GAAGF,GAAGE,EAAE,GAAG0C,GAAlC7C,EAAEwC,GAAsChB,CAAC,CAAC,SAAS+C,IAAI,IAAIvE,EAAEuC,IAAI,OAAOlB,EAAErB,GAAGsB,EAAEtB,QAAQyB,EAAE6C,WAAWC,EAAEnD,EAAEpB,IAAI,CAAC,SAASsB,EAAEtB,GAAG,OAAOyB,OAAE,EAAOwB,GAAG1B,EAAEnB,EAAEJ,IAAIuB,EAAE2C,OAAE,EAAOC,EAAE,CAAC,SAASK,SAAI,IAAS/C,GAAGgD,aAAahD,GAAGe,EAAE,EAAEjB,EAAEG,EAAEwC,EAAEzC,OAAE,CAAM,CAAC,SAASf,IAAI,YAAO,IAASe,EAAE0C,EAAE7C,EAAEiB,IAAI,CAAC,SAAS/B,IAAI,IAAIR,EAAEuC,IAAIpC,EAAEkB,EAAErB,GAAG,GAAGuB,EAAER,UAAUmD,EAAEQ,KAAKhD,EAAE1B,EAAEG,EAAE,CAAC,QAAG,IAASsB,EAAE,OAAO4C,EAAE3C,GAAG,GAAGmB,EAAE,OAAOpB,EAAE6C,WAAWC,EAAEtE,GAAGG,EAAEsB,EAAE,CAAC,YAAO,IAASD,IAAIA,EAAE6C,WAAWC,EAAEtE,IAAIkE,CAAC,CAAC,IAAI5C,EAAE2C,EAAE1C,EAAE2C,EAAE1C,EAAEC,EAAEc,EAAE,EAAEC,GAAE,EAAGI,GAAE,EAAGI,GAAE,EAAG,GAAG,mBAAmBjD,EAAE,MAAM,IAAI2E,UAAUlE,GAAG,OAAOR,EAAEkB,EAAElB,IAAI,EAAEC,EAAEC,KAAKsC,IAAItC,EAAEyE,QAAwBpD,GAAhBqB,EAAE,YAAY1C,GAAMwB,EAAER,EAAEhB,EAAE0E,UAAU,EAAE5E,GAAGuB,EAAEyB,EAAE,aAAa9C,IAAIA,EAAE2E,SAAS7B,GAAGzC,EAAEuE,OAAOP,EAAEhE,EAAEwE,MAAMtE,EAAEF,CAAC,CAAC,SAASN,EAAEF,GAAG,IAAIC,EAAE,oBAAoBD,EAAE,YAAYoB,EAAEpB,GAAG,QAAQA,IAAI,UAAUC,GAAG,YAAYA,EAAE,CAAC,SAASG,EAAEJ,GAAG,QAAQA,GAAG,WAAW,oBAAoBA,EAAE,YAAYoB,EAAEpB,GAAG,CAAC,SAASqE,EAAErE,GAAG,MAAM,WAAW,oBAAoBA,EAAE,YAAYoB,EAAEpB,KAAKI,EAAEJ,IAAI0B,EAAEnB,KAAKP,IAAIuE,CAAC,CAAC,SAASpD,EAAEnB,GAAG,GAAG,iBAAiBA,EAAE,OAAOA,EAAE,GAAGqE,EAAErE,GAAG,OAAOqB,EAAE,GAAGnB,EAAEF,GAAG,CAAC,IAAIC,EAAE,mBAAmBD,EAAEiF,QAAQjF,EAAEiF,UAAUjF,EAAEA,EAAEE,EAAED,GAAGA,EAAE,GAAGA,CAAC,CAAC,GAAG,iBAAiBD,EAAE,OAAO,IAAIA,EAAEA,GAAGA,EAAEA,EAAEA,EAAEkF,QAAQ5D,EAAE,IAAI,IAAInB,EAAEO,EAAEyE,KAAKnF,GAAG,OAAOG,GAAGK,EAAE2E,KAAKnF,GAAGuB,EAAEvB,EAAEoF,MAAM,GAAGjF,EAAE,EAAE,GAAGqE,EAAEW,KAAKnF,GAAGqB,GAAGrB,CAAC,CAAC,IAAIoB,EAAE,mBAAmBiE,QAAQ,iBAAiBA,OAAOC,SAAS,SAAStF,GAAG,cAAcA,CAAC,EAAE,SAASA,GAAG,OAAOA,GAAG,mBAAmBqF,QAAQrF,EAAEuF,cAAcF,QAAQrF,IAAIqF,OAAOpE,UAAU,gBAAgBjB,CAAC,EAAES,EAAE,sBAAsBY,EAAEmE,IAAIjB,EAAE,kBAAkBjD,EAAE,aAAakD,EAAE,qBAAqB9D,EAAE,aAAaF,EAAE,cAAce,EAAEkE,SAASvB,EAAE,WAAW,oBAAoBjE,EAAE,YAAYmB,EAAEnB,KAAKA,GAAGA,EAAEY,SAASA,QAAQZ,EAAEuB,EAAE,WAAW,oBAAoBkE,KAAK,YAAYtE,EAAEsE,QAAQA,MAAMA,KAAK7E,SAASA,QAAQ6E,KAAKvB,EAAED,GAAG1C,GAAGmE,SAAS,cAATA,GAA6CjE,EAAjBb,OAAOI,UAAc2E,SAASjE,EAAEkE,KAAKC,IAAIlE,EAAEiE,KAAKE,IAAIxD,EAAE,WAAW,OAAO4B,EAAE6B,KAAKC,KAAK,EAAEjG,EAAED,QAAQI,CAAE,GAAEI,KAAKN,EAAE,WAAW,OAAOyE,IAAI,CAAtB,GAA0B,EAAE,SAAS1E,EAAEC,GAAG,aAAa,SAASE,EAAEH,GAAG,IAAIC,OAAE,EAAOC,OAAE,EAAgB,IAAID,EAAE,EAAEA,EAAED,EAAEgB,OAAOf,GAAG,EAAE,CAAC,IAAGC,EAAEF,EAAEC,IAAKiG,SAAShG,EAAEgG,QAAQC,IAAI,OAAM,EAAG,GAAKjG,EAAEkG,UAAUjG,EAAED,EAAEkG,UAAU,OAAM,CAAE,CAAC,OAAM,CAAE,CAAC,SAASlG,IAAI,OAAOkD,OAAOiD,kBAAkBjD,OAAOkD,wBAAwBlD,OAAOmD,mBAAmB,CAAC,SAASnG,IAAI,QAAQF,GAAG,CAAC,SAASmE,EAAErE,EAAEC,GAAG,IAAIE,EAAEiD,OAAOF,SAAemB,EAAE,IAANnE,IAAM,CAAMiB,GAAGC,EAAEnB,EAAEoE,EAAEmC,QAAQrG,EAAEsG,gBAAgB,CAACC,WAAU,EAAGC,SAAQ,EAAGC,cAAa,GAAI,CAAC,SAASzF,EAAEnB,GAAGA,GAAGA,EAAE0C,SAAQ,SAAS1C,GAAG,IAAIC,EAAE4G,MAAM5F,UAAUmE,MAAM7E,KAAKP,EAAE8G,YAAY5G,EAAE2G,MAAM5F,UAAUmE,MAAM7E,KAAKP,EAAE4G,cAA4B,GAAGzG,EAAfF,EAAE8G,OAAO7G,IAAW,OAAOkB,GAAG,GAAE,CAACP,OAAOmG,eAAe/G,EAAE,aAAa,CAACgH,OAAM,IAAK,IAAI7F,EAAE,WAAW,EAAEnB,EAAEW,QAAQ,CAAC0C,YAAYlD,EAAE0D,MAAMO,EAAE,EAAE,SAASrE,EAAEC,GAAG,aAAa,SAASE,EAAEH,EAAEC,GAAG,KAAKD,aAAaC,GAAG,MAAM,IAAI0E,UAAU,oCAAoC,CAAC,SAASzE,IAAI,OAAOgH,UAAUC,WAAWD,UAAUE,QAAQhE,OAAOiE,OAAO,EAAE,CAACxG,OAAOmG,eAAe/G,EAAE,aAAa,CAACgH,OAAM,IAAK,IAAI7G,EAAE,WAAW,SAASJ,EAAEA,EAAEC,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEF,EAAEe,OAAOb,IAAI,CAAC,IAAID,EAAED,EAAEE,GAAGD,EAAEoH,WAAWpH,EAAEoH,aAAY,EAAGpH,EAAEqH,cAAa,EAAG,UAAUrH,IAAIA,EAAEsH,UAAS,GAAI3G,OAAOmG,eAAehH,EAAEE,EAAEuH,IAAIvH,EAAE,CAAC,CAAC,OAAO,SAASD,EAAEE,EAAED,GAAG,OAAOC,GAAGH,EAAEC,EAAEgB,UAAUd,GAAGD,GAAGF,EAAEC,EAAEC,GAAGD,CAAC,CAAC,CAA/O,GAAmPoE,EAAE,2TAA2TlD,EAAE,0kDAA0kDC,EAAE,sVAAsVX,EAAE,0kDAA0kDY,EAAE,WAAW,SAASrB,IAAIG,EAAEuE,KAAK1E,EAAE,CAAC,OAAOI,EAAEJ,EAAE,CAAC,CAACyH,IAAI,QAAQR,MAAM,WAAW,IAAIjH,EAAEE,IAAI,SAASmE,EAAEc,KAAKnF,KAAKmB,EAAEgE,KAAKnF,EAAE0H,OAAO,EAAE,IAAI,GAAG,CAACD,IAAI,SAASR,MAAM,WAAW,IAAIjH,EAAEE,IAAI,SAASkB,EAAE+D,KAAKnF,KAAKS,EAAE0E,KAAKnF,EAAE0H,OAAO,EAAE,IAAI,GAAG,CAACD,IAAI,SAASR,MAAM,WAAW,OAAOvC,KAAK5B,WAAW4B,KAAK3B,OAAO,KAAK/C,CAAC,CAAnS,GAAuSC,EAAEW,QAAQ,IAAIS,CAAC,EAAE,SAASrB,EAAEC,GAAG,aAAaY,OAAOmG,eAAe/G,EAAE,aAAa,CAACgH,OAAM,IAAK,IAAI9G,EAAE,SAASH,EAAEC,EAAEE,GAAG,IAAID,EAAEF,EAAE2C,KAAKgF,aAAa,iBAAiB1H,EAAED,EAAE4H,SAAS5H,EAAE2C,KAAKkF,UAAUC,IAAI,eAAe,oBAAoB5H,IAAI,UAAUA,IAAIC,GAAG,SAASD,IAAIF,EAAE2C,KAAKkF,UAAUE,OAAO,cAAc,EAAE7H,EAAE,SAASF,EAAEC,GAAG,IAAIC,EAAEkD,OAAO4E,YAAY5H,EAAEgD,OAAO6E,YAAYjI,EAAE0C,SAAQ,SAAS1C,EAAEqE,GAAGlE,EAAEH,EAAEI,EAAEF,EAAED,EAAE,GAAE,EAAEA,EAAEW,QAAQV,CAAC,EAAE,SAASF,EAAEC,EAAEE,GAAG,aAAa,SAASD,EAAEF,GAAG,OAAOA,GAAGA,EAAEW,WAAWX,EAAE,CAACY,QAAQZ,EAAE,CAACa,OAAOmG,eAAe/G,EAAE,aAAa,CAACgH,OAAM,IAAK,IAAY5C,EAAEnE,EAARC,EAAE,KAAWgB,EAAE,SAASnB,EAAEC,GAAG,OAAOD,EAAE0C,SAAQ,SAAS1C,EAAEG,GAAGH,EAAE2C,KAAKkF,UAAUC,IAAI,YAAY9H,EAAE4H,UAAS,EAAGvD,EAAEzD,SAASZ,EAAE2C,KAAK1C,EAAE4B,OAAO,IAAG7B,CAAC,EAAEC,EAAEW,QAAQO,CAAC,EAAE,SAASnB,EAAEC,EAAEE,GAAG,aAAa,SAASD,EAAEF,GAAG,OAAOA,GAAGA,EAAEW,WAAWX,EAAE,CAACY,QAAQZ,EAAE,CAACa,OAAOmG,eAAe/G,EAAE,aAAa,CAACgH,OAAM,IAAK,IAAY5C,EAAEnE,EAARC,EAAE,KAAWgB,EAAE,SAASnB,EAAEC,GAAG,IAAIE,EAAE,EAAED,EAAE,EAAEE,EAAEgD,OAAO6E,YAAY9G,EAAE,CAACU,OAAO7B,EAAE2H,aAAa,mBAAmBO,OAAOlI,EAAE2H,aAAa,mBAAmBQ,gBAAgBnI,EAAE2H,aAAa,8BAA8B,OAAOxG,EAAEU,SAASuG,MAAMjH,EAAEU,UAAU3B,EAAEuF,SAAStE,EAAEU,SAASV,EAAE+G,QAAQhF,SAASmF,iBAAiBlH,EAAE+G,UAAUlI,EAAEkD,SAASmF,iBAAiBlH,EAAE+G,QAAQ,IAAI/H,GAAE,EAAGkE,EAAEzD,SAASZ,GAAGsI,IAAInH,EAAEgH,iBAAiB,IAAI,aAAa,MAAM,IAAI,gBAAgBhI,GAAGH,EAAEuI,aAAa,EAAE,MAAM,IAAI,gBAAgBpI,GAAGH,EAAEuI,aAAa,MAAM,IAAI,aAAapI,GAAGC,EAAE,EAAE,MAAM,IAAI,gBAAgBD,GAAGC,EAAE,EAAEJ,EAAEuI,aAAa,MAAM,IAAI,gBAAgBpI,GAAGC,EAAE,EAAEJ,EAAEuI,aAAa,EAAE,MAAM,IAAI,UAAUpI,GAAGC,EAAE,MAAM,IAAI,aAAaD,GAAGH,EAAEuI,aAAanI,EAAE,MAAM,IAAI,aAAaD,GAAGH,EAAEuI,aAAa,EAAEnI,EAAE,OAAOe,EAAEgH,iBAAiBhH,EAAEU,QAAQuG,MAAMnI,KAAKC,EAAED,GAAGE,EAAED,CAAC,EAAED,EAAEW,QAAQO,CAAC,EAAE,SAASnB,EAAEC,GAAG,aAAaY,OAAOmG,eAAe/G,EAAE,aAAa,CAACgH,OAAM,IAAK,IAAI9G,EAAE,SAASH,GAAG,IAAI,IAAIC,EAAE,EAAEE,EAAE,EAAEH,IAAIoI,MAAMpI,EAAEwI,cAAcJ,MAAMpI,EAAEyI,YAAYxI,GAAGD,EAAEwI,YAAY,QAAQxI,EAAE0I,QAAQ1I,EAAE2I,WAAW,GAAGxI,GAAGH,EAAEyI,WAAW,QAAQzI,EAAE0I,QAAQ1I,EAAE4I,UAAU,GAAG5I,EAAEA,EAAE6I,aAAa,MAAM,CAACP,IAAInI,EAAE2I,KAAK7I,EAAE,EAAEA,EAAEW,QAAQT,CAAC,EAAE,SAASH,EAAEC,GAAG,aAAaY,OAAOmG,eAAe/G,EAAE,aAAa,CAACgH,OAAM,IAAK,IAAI9G,EAAE,SAASH,GAAG,OAAOA,EAAEA,GAAGkD,SAASmF,iBAAiB,cAAcxB,MAAM5F,UAAU8H,IAAIxI,KAAKP,GAAE,SAASA,GAAG,MAAM,CAAC2C,KAAK3C,EAAE,GAAE,EAAEC,EAAEW,QAAQT,CAAC,0BCQ51c,IAAI6I,EAAwBnI,OAAOmI,sBAC/B9H,EAAiBL,OAAOI,UAAUC,eAClC+H,EAAmBpI,OAAOI,UAAUiI,qBAsDxCpJ,EAAOC,QA5CP,WACC,IACC,IAAKc,OAAOC,OACX,OAAO,EAMR,IAAIqI,EAAQ,IAAIC,OAAO,OAEvB,GADAD,EAAM,GAAK,KACkC,MAAzCtI,OAAOwI,oBAAoBF,GAAO,GACrC,OAAO,EAKR,IADA,IAAIG,EAAQ,CAAC,EACJlJ,EAAI,EAAGA,EAAI,GAAIA,IACvBkJ,EAAM,IAAMF,OAAOG,aAAanJ,IAAMA,EAKvC,GAAwB,eAHXS,OAAOwI,oBAAoBC,GAAOP,KAAI,SAAU5I,GAC5D,OAAOmJ,EAAMnJ,EACd,IACWqJ,KAAK,IACf,OAAO,EAIR,IAAIC,EAAQ,CAAC,EAIb,MAHA,uBAAuBC,MAAM,IAAIhH,SAAQ,SAAUiH,GAClDF,EAAME,GAAUA,CACjB,IAEE,yBADE9I,OAAO+I,KAAK/I,OAAOC,OAAO,CAAC,EAAG2I,IAAQD,KAAK,GAMhD,CAAE,MAAOK,GAER,OAAO,CACR,CACD,CAEiBC,GAAoBjJ,OAAOC,OAAS,SAAUiJ,EAAQC,GAKtE,IAJA,IAAIC,EAEAC,EADAC,EAtDL,SAAkBC,GACjB,GAAY,OAARA,QAAwBC,IAARD,EACnB,MAAM,IAAIzF,UAAU,yDAGrB,OAAO9D,OAAOuJ,EACf,CAgDUE,CAASP,GAGT1I,EAAI,EAAGA,EAAIN,UAAUC,OAAQK,IAAK,CAG1C,IAAK,IAAIoG,KAFTwC,EAAOpJ,OAAOE,UAAUM,IAGnBH,EAAeX,KAAK0J,EAAMxC,KAC7B0C,EAAG1C,GAAOwC,EAAKxC,IAIjB,GAAIuB,EAAuB,CAC1BkB,EAAUlB,EAAsBiB,GAChC,IAAK,IAAI7J,EAAI,EAAGA,EAAI8J,EAAQlJ,OAAQZ,IAC/B6I,EAAiB1I,KAAK0J,EAAMC,EAAQ9J,MACvC+J,EAAGD,EAAQ9J,IAAM6J,EAAKC,EAAQ9J,IAGjC,CACD,CAEA,OAAO+J,CACR,8BChFA,IAAII,EAAuBC,EAAQ,KAEnC,SAASC,IAAiB,CAC1B,SAASC,IAA0B,CACnCA,EAAuBC,kBAAoBF,EAE3C3K,EAAOC,QAAU,WACf,SAAS6K,EAAKC,EAAOC,EAAUC,EAAeC,EAAUC,EAAcC,GACpE,GAAIA,IAAWX,EAAf,CAIA,IAAIV,EAAM,IAAIsB,MACZ,mLAKF,MADAtB,EAAIuB,KAAO,sBACLvB,CAPN,CAQF,CAEA,SAASwB,IACP,OAAOT,CACT,CAHAA,EAAKU,WAAaV,EAMlB,IAAIW,EAAiB,CACnBC,MAAOZ,EACPa,OAAQb,EACRc,KAAMd,EACNe,KAAMf,EACNgB,OAAQhB,EACRiB,OAAQjB,EACRkB,OAAQlB,EACRmB,OAAQnB,EAERoB,IAAKpB,EACLqB,QAASZ,EACTa,QAAStB,EACTuB,YAAavB,EACbwB,WAAYf,EACZ1I,KAAMiI,EACNyB,SAAUhB,EACViB,MAAOjB,EACPkB,UAAWlB,EACXmB,MAAOnB,EACPoB,MAAOpB,EAEPqB,eAAgBhC,EAChBC,kBAAmBF,GAKrB,OAFAc,EAAeoB,UAAYpB,EAEpBA,CACT,iBC/CEzL,EAAOC,QAAUyK,EAAQ,IAARA,yBCNnB1K,EAAOC,QAFoB,oECAmB,IAASE,EAApC,oBAATyF,MAAuBA,KAP/B5F,EAAOC,SAO8CE,EAP5BuK,EAAQ,IAQ5B,SAAP,GCTE,IAAIxK,EAAmB,CAAC,EAGxB,SAASG,EAAoBkE,GAG5B,GAAGrE,EAAiBqE,GACnB,OAAOrE,EAAiBqE,GAAUtE,QAGnC,IAAIK,EAASJ,EAAiBqE,GAAY,CACzCjE,EAAGiE,EACHG,GAAA,EACAzE,QAAS,CAAC,GAUX,OANAE,EAAQoE,GAAU9D,KAAKH,EAAOL,QAASK,EAAQA,EAAOL,QAASI,GAG/DC,EAAOoE,GAAA,EAGApE,EAAOL,OAAA,CA0Df,OArDAI,EAAoBK,EAAIP,EAGxBE,EAAoBM,EAAIT,EAGxBG,EAAoBmB,EAAI,SAASrB,EAASD,EAAMqE,GAC3ClE,EAAoBD,EAAED,EAASD,IAClCa,OAAOmG,eAAe/G,EAASD,EAAM,CAAEsH,YAAA,EAAkBsF,IAAKvI,GAAA,EAKhElE,EAAoBkE,EAAI,SAASpE,GACX,oBAAXoF,QAA0BA,OAAOwH,aAC1ChM,OAAOmG,eAAe/G,EAASoF,OAAOwH,YAAa,CAAE5F,MAAO,WAE7DpG,OAAOmG,eAAe/G,EAAS,aAAc,CAAEgH,OAAA,GAAO,EAQvD9G,EAAoBF,EAAI,SAASA,EAAOD,GAEvC,GADU,EAAPA,IAAUC,EAAQE,EAAoBF,IAC/B,EAAPD,EAAU,OAAOC,EACpB,GAAW,EAAPD,GAA8B,iBAAVC,GAAsBA,GAASA,EAAMU,WAAY,OAAOV,EAChF,IAAIoE,EAAKxD,OAAOiM,OAAO,MAGvB,GAFA3M,EAAoBkE,EAAEA,GACtBxD,OAAOmG,eAAe3C,EAAI,UAAW,CAAEiD,YAAA,EAAkBL,MAAOhH,IACtD,EAAPD,GAA4B,iBAATC,EAAmB,IAAI,IAAIG,KAAOH,EAAOE,EAAoBmB,EAAE+C,EAAIjE,EAAK,SAASJ,GAAO,OAAOC,EAAMD,EAAA,EAAQ+M,KAAK,KAAM3M,IAC9I,OAAOiE,CAAA,EAIRlE,EAAoBA,EAAI,SAASF,GAChC,IAAID,EAASC,GAAUA,EAAOU,WAC7B,WAAwB,OAAOV,EAAgBW,OAAA,EAC/C,WAA8B,OAAOX,CAAA,EAEtC,OADAE,EAAoBmB,EAAEtB,EAAQ,IAAKA,GAC5BA,CAAA,EAIRG,EAAoBD,EAAI,SAASD,EAAQD,GAAY,OAAOa,OAAOI,UAAUC,eAAeX,KAAKN,EAAQD,EAAA,EAGzGG,EAAoBO,EAAI,GAIjBP,EAAoBA,EAAoBkB,EAAI,GDxE9C,CCwE8C,eClFrDrB,EAAOD,QAAUE,CAAA,+BCGjB,IAAIoE,EAAiB,CACnB2I,OAAQ,SAAS/M,EAAGD,EAAGG,EAAIkE,GAEzB,OADQlE,EAAKH,GACFC,EAAIoE,EAAIrE,CAAA,EAErBiN,WAAY,SAAShN,EAAGD,EAAGG,EAAIkE,GAE7B,OADQlE,EAAKH,IACDC,GAAKoE,GAAKpE,EAAID,CAAA,EAE5BkN,YAAa,SAASjN,EAAGD,EAAGG,EAAIkE,GAE9B,QADQlE,EAAKH,IACAC,GAAKoE,IAAMpE,EAAI,GAAKD,CAAA,EAEnCmN,cAAe,SAASlN,EAAGD,EAAGG,EAAIkE,GAChC,IAAIjE,EAAID,EAAKH,EACb,OAAKC,GAAKoE,EAAI,GAAK,EACVjE,EAAI,EAAIH,EAAIA,EAAID,GAEfI,EAAI,KAAQH,GAAMA,EAAI,GAAK,GAAKD,CAAA,EAG5CoN,YAAa,SAASnN,EAAGD,EAAGG,EAAIkE,GAE9B,OADQlE,EAAKH,IACDC,GAAKoE,GAAKpE,EAAIA,EAAID,CAAA,EAEhCqN,aAAc,SAASpN,EAAGD,EAAGG,EAAIkE,GAE/B,OADQlE,EAAKH,KACAC,EAAIA,EAAIoE,EAAI,GAAKpE,EAAIA,EAAI,GAAKD,CAAA,EAE7CsN,eAAgB,SAASrN,EAAGD,EAAGG,EAAIkE,GACjC,IAAIjE,EAAID,EAAKH,EACb,OAAKC,GAAKoE,EAAI,GAAK,EACVjE,EAAI,EAAIH,EAAIA,EAAIA,EAAID,EAEpBI,EAAI,IAAMH,GAAK,GAAKA,EAAIA,EAAI,GAAKD,CAAA,EAG5CuN,YAAa,SAAStN,EAAGD,EAAGG,EAAIkE,GAE9B,OADQlE,EAAKH,IACDC,GAAKoE,GAAKpE,EAAIA,EAAIA,EAAID,CAAA,EAEpCwN,aAAc,SAASvN,EAAGD,EAAGG,EAAIkE,GAE/B,QADQlE,EAAKH,KACCC,EAAIA,EAAIoE,EAAI,GAAKpE,EAAIA,EAAIA,EAAI,GAAKD,CAAA,EAElDyN,eAAgB,SAASxN,EAAGD,EAAGG,EAAIkE,GACjC,IAAIjE,EAAID,EAAKH,EACb,OAAKC,GAAKoE,EAAI,GAAK,EACVjE,EAAI,EAAIH,EAAIA,EAAIA,EAAIA,EAAID,GAEvBI,EAAI,IAAMH,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAAKD,CAAA,EAGjD0N,YAAa,SAASzN,EAAGD,EAAGG,EAAIkE,GAE9B,OADQlE,EAAKH,IACDC,GAAKoE,GAAKpE,EAAIA,EAAIA,EAAIA,EAAID,CAAA,EAExC2N,aAAc,SAAS1N,EAAGD,EAAGG,EAAIkE,GAE/B,OADQlE,EAAKH,KACAC,EAAIA,EAAIoE,EAAI,GAAKpE,EAAIA,EAAIA,EAAIA,EAAI,GAAKD,CAAA,EAErD4N,eAAgB,SAAS3N,EAAGD,EAAGG,EAAIkE,GACjC,IAAIjE,EAAID,EAAKH,EACb,OAAKC,GAAKoE,EAAI,GAAK,EACVjE,EAAI,EAAIH,EAAIA,EAAIA,EAAIA,EAAIA,EAAID,EAE5BI,EAAI,IAAMH,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,GAAKD,CAAA,EAGpD6N,WAAY,SAAS5N,EAAGD,EAAGG,EAAIkE,GAC7B,IAAIjE,EAAID,EAAKH,EACb,OAAQI,EAAIyF,KAAKiI,IAAI7N,EAAIoE,GAAKwB,KAAKkI,GAAK,IAAM3N,EAAIJ,CAAA,EAEpDgO,YAAa,SAAS/N,EAAGD,EAAGG,EAAIkE,GAE9B,OADQlE,EAAKH,GACF6F,KAAKoI,IAAIhO,EAAIoE,GAAKwB,KAAKkI,GAAK,IAAM/N,CAAA,EAE/CkO,cAAe,SAASjO,EAAGD,EAAGG,EAAIkE,GAEhC,QADQlE,EAAKH,GACD,GAAK6F,KAAKiI,IAAIjI,KAAKkI,GAAK9N,EAAIoE,GAAK,GAAKrE,CAAA,EAEpDmO,WAAY,SAASlO,EAAGD,EAAGG,EAAIkE,GAE7B,OAAW,GAAHpE,EAAQD,GADRG,EAAKH,GACW6F,KAAKuI,IAAI,EAAG,IAAMnO,EAAEoE,EAAI,IAAMrE,CAAA,EAExDqO,YAAa,SAASpO,EAAGD,EAAGG,EAAIkE,GAC9B,IAAIjE,EAAID,EAAKH,EACb,OAAQC,GAAGoE,EAAKrE,EAAEI,EAAIA,GAA+B,EAAzByF,KAAKuI,IAAI,GAAI,GAAKnO,EAAEoE,IAAUrE,CAAA,EAE5DsO,cAAe,SAASrO,EAAGD,EAAGG,EAAIkE,GAChC,IAAIjE,EAAID,EAAKH,EACb,OAAU,IAANC,EACKD,EAELC,IAAMoE,EACDrE,EAAII,GAERH,GAAKoE,EAAI,GAAK,EACVjE,EAAI,EAAIyF,KAAKuI,IAAI,EAAG,IAAMnO,EAAI,IAAMD,EAEpCI,EAAI,GAA+B,EAAzByF,KAAKuI,IAAI,GAAI,KAAOnO,IAAUD,CAAA,EAGnDuO,WAAY,SAAStO,EAAGD,EAAGG,EAAIkE,GAE7B,QADQlE,EAAKH,IACA6F,KAAK2I,KAAK,GAAKvO,GAAKoE,GAAKpE,GAAK,GAAKD,CAAA,EAElDyO,YAAa,SAASxO,EAAGD,EAAGG,EAAIkE,GAE9B,OADQlE,EAAKH,GACF6F,KAAK2I,KAAK,GAAKvO,EAAIA,EAAIoE,EAAI,GAAKpE,GAAKD,CAAA,EAElD0O,cAAe,SAASzO,EAAGD,EAAGG,EAAIkE,GAChC,IAAIjE,EAAID,EAAKH,EACb,OAAKC,GAAKoE,EAAI,GAAK,GACTjE,EAAI,GAAKyF,KAAK2I,KAAK,EAAIvO,EAAIA,GAAK,GAAKD,EAEtCI,EAAI,GAAKyF,KAAK2I,KAAK,GAAKvO,GAAK,GAAKA,GAAK,GAAKD,CAAA,EAGvD2O,cAAe,SAAS1O,EAAGD,EAAGG,EAAIkE,GAChC,IACIjE,EAAGF,EAAGiB,EADNV,EAAIN,EAAKH,EAKb,OAHAmB,EAAI,QAGM,IAANlB,EACKD,EACe,IAAZC,GAAKoE,GACRrE,EAAIS,IALbP,EAAI,KAQFA,EAAQ,GAAJmE,IAPNjE,EAAIK,GASIoF,KAAK+I,IAAInO,IACfL,EAAIK,EACJU,EAAIjB,EAAI,GAERiB,EAAIjB,GAAK,EAAI2F,KAAKkI,IAAMlI,KAAKgJ,KAAKpO,EAAIL,IAE/BA,EAAIyF,KAAKuI,IAAI,EAAG,IAAMnO,GAAK,IAAM4F,KAAKoI,KAAKhO,EAAIoE,EAAIlD,IAAM,EAAI0E,KAAKkI,IAAM7N,GAAMF,EAAA,EAEzF8O,eAAgB,SAAS7O,EAAGD,EAAGG,EAAIkE,GACjC,IACIjE,EAAGF,EAAGiB,EADNV,EAAIN,EAAKH,EAKb,OAHAmB,EAAI,QAGM,IAANlB,EACKD,EACe,IAAZC,GAAKoE,GACRrE,EAAIS,IALbP,EAAI,KAQFA,EAAQ,GAAJmE,IAPNjE,EAAIK,GASIoF,KAAK+I,IAAInO,IACfL,EAAIK,EACJU,EAAIjB,EAAI,GAERiB,EAAIjB,GAAK,EAAI2F,KAAKkI,IAAMlI,KAAKgJ,KAAKpO,EAAIL,GAEjCA,EAAIyF,KAAKuI,IAAI,GAAI,GAAKnO,GAAK4F,KAAKoI,KAAKhO,EAAIoE,EAAIlD,IAAM,EAAI0E,KAAKkI,IAAM7N,GAAKO,EAAIT,EAAA,EAEpF+O,iBAAkB,SAAS9O,EAAGD,EAAGG,EAAIkE,GACnC,IACIjE,EAAGF,EAAGiB,EADNV,EAAIN,EAAKH,EAKb,OAHAmB,EAAI,QAGM,IAANlB,EACKD,EACmB,IAAhBC,GAAKoE,EAAI,GACZrE,EAAIS,IALbP,EAAI,KAQFA,EAAImE,GAAK,GAAM,OAPjBjE,EAAIK,GASIoF,KAAK+I,IAAInO,IACfL,EAAIK,EACJU,EAAIjB,EAAI,GAERiB,EAAIjB,GAAK,EAAI2F,KAAKkI,IAAMlI,KAAKgJ,KAAKpO,EAAIL,GAEpCH,EAAI,EACSG,EAAIyF,KAAKuI,IAAI,EAAG,IAAMnO,GAAK,IAAM4F,KAAKoI,KAAKhO,EAAIoE,EAAIlD,IAAM,EAAI0E,KAAKkI,IAAM7N,IAA/E,GAAqFF,EAEtFI,EAAIyF,KAAKuI,IAAI,GAAI,IAAMnO,GAAK,IAAM4F,KAAKoI,KAAKhO,EAAIoE,EAAIlD,IAAM,EAAI0E,KAAKkI,IAAM7N,GAAK,GAAMO,EAAIT,EAAA,EAGnGgP,WAAY,SAAS/O,EAAGD,EAAGG,EAAIkE,EAAGjE,GAKhC,YAAO,IAHHA,IACFA,EAAI,UAFED,EAAKH,IAIDC,GAAKoE,GAAKpE,IAAMG,EAAI,GAAKH,EAAIG,GAAKJ,CAAA,EAEhDiP,YAAa,SAAShP,EAAGD,EAAGG,EAAIkE,EAAGjE,GAKjC,YAAO,IAHHA,IACFA,EAAI,UAFED,EAAKH,KAIAC,EAAIA,EAAIoE,EAAI,GAAKpE,IAAMG,EAAI,GAAKH,EAAIG,GAAK,GAAKJ,CAAA,EAE7DkP,cAAe,SAASjP,EAAGD,EAAGG,EAAIkE,EAAGjE,GACnC,IAAIF,EAAIC,EAAKH,EAIb,gBAHII,IACFA,EAAI,UAEDH,GAAKoE,EAAI,GAAK,EACVnE,EAAI,GAAKD,EAAIA,IAAqB,GAAdG,GAAK,QAAcH,EAAIG,IAAMJ,EAEjDE,EAAI,IAAMD,GAAK,GAAKA,IAAqB,GAAdG,GAAK,QAAcH,EAAIG,GAAK,GAAKJ,CAAA,EAGvEmP,aAAc,SAASlP,EAAGD,EAAGG,EAAIC,GAC/B,IAAIF,EAAIC,EAAKH,EAGb,OAAOE,EADHmE,EAAe+K,cAAchP,EAAIH,EAAG,EAAGC,EAAGE,GAC/BJ,CAAA,EAEjBoP,cAAe,SAASnP,EAAGD,EAAGG,EAAIkE,GAChC,IAAIjE,EAAID,EAAKH,EACb,OAAKC,GAAKoE,GAAK,EAAI,KACVjE,GAAK,OAASH,EAAIA,GAAKD,EACrBC,EAAI,EAAI,KACVG,GAAK,QAAUH,GAAK,IAAM,MAAQA,EAAI,KAAQD,EAC5CC,EAAI,IAAM,KACZG,GAAK,QAAUH,GAAK,KAAO,MAAQA,EAAI,OAAUD,EAEjDI,GAAK,QAAUH,GAAK,MAAQ,MAAQA,EAAI,SAAYD,CAAA,EAG/DqP,gBAAiB,SAASpP,EAAGD,EAAGG,EAAIC,GAClC,IAAIF,EAAIC,EAAKH,EAEb,OAAIC,EAAIG,EAAI,EAEC,GADPiE,EAAe8K,aAAiB,EAAJlP,EAAO,EAAGC,EAAGE,GAC5BJ,EAGN,GADPqE,EAAe+K,cAAkB,EAAJnP,EAAQG,EAAG,EAAGF,EAAGE,GAC7B,GAAJF,EAAUF,CAAA,GAKjCC,EAAOF,QAAUsE,CAAA,WAAApE,EAAA,2GCrPLoE,EAMPjE,kCC0DE,SAASgB,EAAYnB,EAAaD,GACvC,OAAOC,EAAO4F,KAAKyJ,UAAYtP,EAAMC,EAAA,ySDjE3BA,GAAAA,EAAAA,EAAA,mBAAAA,EAAAA,EAAA,mBAAAA,EAAAA,EAAA,kBAAAoE,IAAAA,EAAA,cAMPpE,GAAAA,EAAAA,EAAA,uBAAAA,EAAAA,EAAA,wBANO,CAMPG,IAAAA,EAAA,SAKgBoE,EAAA,WACnB,SAAAvE,EAAYD,EAAmCG,EAAoCkE,EAAWnE,IAAA,6FAAW,KAAAD,GAAAwB,EAAA,uBAAAA,EAAA,sBAAAA,EAAA,iBAAAA,EAAA,iBAAAA,EAAA,iBAAAA,EAAA,iBAAAA,EAAA,kBAAAA,EAAA,kBAAAA,EAAA,qBAAAA,EAAA,qBAAAA,EAAA,2BAAAA,EAAA,qBAAAA,EAAA,uBAAAA,EAAA,iCAAAA,EAAA,0BACvGiD,KAAK6K,WAAapP,EADqF,ICwDjFgB,EAAaV,EDxDoEY,EAMnGqD,KAAK6K,aAHPhL,EAHqGlD,EAGrGmO,OACAhL,EAJqGnD,EAIrGoO,iBACA/O,EALqGW,EAKrGqO,iBAEFhL,KAAKiL,QAAU3P,EACf0E,KAAK9C,EAAIyC,EACTK,KAAKlD,EAAItB,EACTwE,KAAKhD,EAAIN,EAAY,EAAG,IACxBsD,KAAKjD,EAAIL,EAAY,EAAG,IACxBsD,KAAKkL,OAASxO,EAAY,EAAG,IAC7BsD,KAAKmL,GAAiC,iBAArBrL,EAAgCpD,GAAaoD,EAAkBA,GAAoBpD,EAAYoD,EAAiBuB,IAAKvB,EAAiBsB,KACvJpB,KAAKoL,GAAiC,iBAArBpP,EAAgCU,GAAaV,EAAkB,GAAKU,EAAYV,EAAiBqF,IAAKrF,EAAiBoF,KACxIpB,KAAK8H,OCyCiBrL,EDzCC,ECyCYV,EDzCT,EC0CrBoF,KAAKkK,MAAM5O,EAAO0E,KAAKyJ,UAAa7O,EAAMU,EAAO,KDzCtDuD,KAAKsL,MAAsB5O,EAAY,EAAG,KC6B3ByE,KAAKkI,GAAK,ID5BzBrJ,KAAKuL,YAAc7O,GAAa,GAAK,IACrCsD,KAAKwL,MAAQ3L,EAAOsB,KAAKkK,MAAMlK,KAAKyJ,SAAW/K,EAAOvD,SACtD0D,KAAKyL,QAAU/O,EAAY,EAAG,GAC9BsD,KAAK0L,kBAAoBhP,EAAY,EAAG,GAAKhB,EAAkBiQ,SAAWjQ,EAAkBkQ,QAAA,yDAkCrF,IAAArQ,EAOHyE,KAAK6K,aALPvP,EAFKC,EAELsQ,QACApQ,EAHKF,EAGLuQ,KACAtQ,EAJKD,EAILwQ,SACAtP,EALKlB,EAKLyQ,QACAjQ,EANKR,EAML0Q,UAEFjM,KAAK9C,GAAK8C,KAAKmL,GACfnL,KAAKlD,GAAKkD,KAAKoL,GACfpL,KAAKoL,IAAM9P,EACX0E,KAAKmL,IAAM1P,EACXuE,KAAKmL,IAAM3P,EACXwE,KAAKoL,IAAM5P,EACRwE,KAAKyL,SAAW,GAAKzL,KAAK0L,oBAAsBhQ,EAAkBiQ,SACnE3L,KAAK0L,kBAAoBhQ,EAAkBkQ,SACnC5L,KAAKyL,UAAY,GAAKzL,KAAK0L,oBAAsBhQ,EAAkBkQ,WAC3E5L,KAAK0L,kBAAoBhQ,EAAkBiQ,UAG7C,IAAMhP,EAAc,GAAMqD,KAAK0L,kBAe/B,GAbA1L,KAAKyL,SAAW9O,EAChBqD,KAAKsL,OAAStL,KAAKuL,YACnBvL,KAAKiL,QAAQiB,OACblM,KAAKiL,QAAQkB,UAAUnM,KAAK9C,EAAG8C,KAAKlD,GACpCkD,KAAKiL,QAAQmB,OAAOpM,KAAKsL,OACzBtL,KAAKiL,QAAQoB,MAAM,EAAGrM,KAAKyL,SAC3BzL,KAAKiL,QAAQmB,OAAOpM,KAAKsL,OACzBtL,KAAKiL,QAAQqB,YACbtM,KAAKiL,QAAQsB,UAAYvM,KAAKwL,MAC9BxL,KAAKiL,QAAQuB,YAAcxM,KAAKwL,MAChCxL,KAAKiL,QAAQwB,YAAchQ,EAC3BuD,KAAKiL,QAAQyB,QAAU,QACvB1M,KAAKiL,QAAQ0B,UAAY,EACtB5Q,GAAkC,mBAAdA,EACrBA,EAAUF,KAAKmE,KAAMA,KAAKiL,cAE1B,OAAOjL,KAAK8H,OACV,KAAKnI,EAAciN,OACjB5M,KAAKiL,QAAQqB,YACbtM,KAAKiL,QAAQ4B,IAAI,EAAG,EAAG7M,KAAKkL,OAAQ,EAAG,EAAI/J,KAAKkI,IAChDrJ,KAAKiL,QAAQ6B,OACb,MAEF,KAAKnN,EAAcoN,OACjB/M,KAAKiL,QAAQ+B,UAAUhN,KAAKhD,EAAI,GAAIgD,KAAKjD,EAAI,EAAGiD,KAAKhD,EAAGgD,KAAKjD,GAC7D,MAEF,KAAK4C,EAAcsN,MACjBjN,KAAKiL,QAAQ+B,UAAUhN,KAAKhD,EAAI,GAAIgD,KAAKjD,EAAI,EAAGiD,KAAKhD,EAAI,EAAGgD,KAAKjD,GAKvEiD,KAAKiL,QAAQiC,YACblN,KAAKiL,QAAQkC,SAAA,mCA/GI,+HEDA3N,EACnB,SAAAjE,EAAYD,EAA2BG,GAAoC,IAAAkE,EAAA,wGAAApE,GAAAS,EAAA,sBAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,SAgB/D,GAhB+DA,EAAA,SAkB/D,GAlB+DA,EAAA,SAoB/D,GApB+DA,EAAA,SAsB/D,GAtB+DA,EAAA,0BAwB9C,GAxB8CA,EAAA,qBA0BnDsF,KAAKC,OA1B8CvF,EAAA,iBA4BnD,IA5BmDA,EAAA,0BA8B9C,GA9B8CA,EAAA,yBAgCxD,SAACT,GAClBoE,EAAKyN,UAAUC,OAAO9R,EAAG,MAjCgDS,EAAA,oBAoC7D,WACZ,IAAMT,EAAemB,EAAYiD,EAAKzC,EAAGyC,EAAK3C,EAAI2C,EAAKzC,GACjD5B,EAAeoB,EAAYiD,EAAK7C,EAAG6C,EAAK5C,EAAI4C,EAAK7C,GACvD,OAAO,IAAIgD,EAASH,EAAKsL,QAAStL,EAAKkL,WAAYtP,EAAcD,EAAA,IAvCQU,EAAA,gBA0CjE,WAAe,IAErBT,EAIEoE,EAJF2N,OACAhS,EAGEqE,EAHFsL,QACAxP,EAEEkE,EAFF4N,mBACA7R,EACEiE,EADF6N,mBALqBhS,EAcnBmE,EAAKkL,aANPpO,EARqBjB,EAQrBiS,IACA1R,EATqBP,EASrBkS,QACA/Q,EAVqBnB,EAUrBmS,eACAjR,EAXqBlB,EAWrBoS,MACA/N,EAZqBrE,EAYrBqS,cACA9Q,EAbqBvB,EAarBsS,cAEF,IAAIrR,EACF,OAAO,EAGT,IAAMqD,EAAKH,EAAKyN,UAAU9Q,OACpBN,EAAcD,EAAU+D,EAAKrE,EAE7B+D,EAAM8B,KAAKC,MAGjB,GAAGvF,EAAcW,EAAgB,CAE5BjB,IAAuBiB,IACxBgD,EAAKoO,cAAgBvO,EACrBG,EAAK6N,mBAAqB7Q,GAU5B,IAd+B,IAMvBG,EAAkB6C,EAAlBoO,cAMFnR,EAAaiD,EAHEL,EAAM1C,EAAgBC,EACvCA,EACAoE,KAAKC,IAAI,EAAG5B,EAAM1C,GACyBd,EAAaW,EAAgBI,GACtEF,EAAWsE,KAAK6M,MAAMpR,EAAaZ,GACjCyD,EAAI,EAAGA,EAAI5C,EAAU4C,IAC3BE,EAAKyN,UAAUa,KAAKtO,EAAKuO,eAE3BvO,EAAK4N,oBAAsB1Q,CAAA,CAwB7B,OAtBGH,IAEDpB,EAAQ6S,KAAO,kBACf7S,EAAQiR,UAAY,OACpBjR,EAAQ8S,UAAY,QACpB9S,EAAQ+S,SAAR,cAAAhM,OAA+BvC,GAAMvE,EAAO+S,MAAQ,GAAI/S,EAAOgT,OAAS,KAI1E5O,EAAKyN,UAAUpP,SAAQ,SAAC1C,EAAGG,GAEzBH,EAAEkT,UAEClT,EAAEwB,EAAIvB,EAAOgT,QAAUjT,EAAEwB,GAAK,KAAOxB,EAAE4B,EAAI3B,EAAO+S,MAAQ,KAAOhT,EAAE4B,GAAK,OACtEnB,GAAWC,GAAeW,EAE3BgD,EAAKyN,UAAU3R,GAAKkE,EAAKuO,cAEzBvO,EAAK8O,iBAAiBhT,GAAA,IAIrBqE,EAAK,GAAK9D,EAAcW,CAAA,IA3G/BqD,KAAKsN,OAAShS,EACd,IAAMI,EAAMsE,KAAKsN,OAAOoB,WAAW,MACnC,IAAIhT,EACF,MAAM,IAAI+K,MAAM,gCAElBzG,KAAKiL,QAAUvP,EACfsE,KAAK6K,WAAapP,CAAA,+1BC8Ef,IAAMqC,EAA8F,CACzGwQ,MAAyB,oBAAX5P,OAAyBA,OAAOiQ,WAAa,IAC3DJ,OAA0B,oBAAX7P,OAAyBA,OAAO6E,YAAc,IAC7DoK,eAAgB,IAChB5B,SAAU,IACVD,KAAM,EACND,QAAS,GACTd,iBAAkB,EAClBC,iBAAkB,GAClBF,OAAQ,CACN,UAAW,UAAW,UAAW,UAAW,UAC5C,UAAW,UAAW,UAAW,UAAW,UAC5C,UAAW,UAAW,UAAW,UAAW,UAC5C,UAAW,WAEbkB,QAAS,EACT4B,OAAA,EACAC,cAAelR,EAAAF,EAAOgM,cACtBqF,cAAe,IACfJ,SAAA,EACAD,KAAA,GAmGazQ,EAhGf,WACE,SAAAzB,EAAYD,EAA2BG,GAAiC,IAAAkE,EAAA,wGAAApE,GAAAkE,EAAA,sBAAAA,EAAA,uBAAAA,EAAA,wBAAAA,EAAA,yBAAAA,EAAA,qBAAAA,EAAA,+BA0C/C,SAAClE,GACxB,IAAMD,EAA2B,CAC/BsT,eAAgB,CACd1R,EAAG,EACHJ,EAAG,EACHE,EAAG2C,EAAK2N,OAAOgB,MACfvR,EAAG,IAGP4C,EAAKkP,SAALjS,EAAAA,EAAAA,EAAA,GAAqBtB,GAA6BwC,GAAqBvC,GACvEY,OAAOC,OAAOuD,EAAMpE,EAAKqT,eAAA,IApD6CnP,EAAA,eAuD/D,WAAM,IAAAlE,EAQToE,EANFmP,QACExT,EAHSC,EAGTkS,IACAhS,EAJSF,EAITwT,mBAEFrT,EAEEiE,EAFF2N,OACA9R,EACEmE,EADFsL,QAEC3P,IACDE,EAAQ+Q,UAAY,QACpB/Q,EAAQwT,UAAU,EAAG,EAAGtT,EAAO4S,MAAO5S,EAAO6S,SAE5C5O,EAAKsP,UAAUC,UAChBvP,EAAKwP,MAAQC,sBAAsBzP,EAAK6O,SAErC/S,GAAoD,mBAAvBA,GAAqCkE,EAAKsP,UAAU1B,mBAAqB,GACvG9R,EAAmBI,KAAK8D,EAAMA,GAEhCA,EAAKkP,SAASpB,KAAA,EAAM,IA1EgDhO,EAAA,cA8EhE,WACHE,EAAKsP,WAAatP,EAAKsP,UAAU1B,mBAAqB,IACvD5N,EAAKsP,UAAU1B,mBAAqB,EACpC5N,EAAKsP,UAAU7B,UAAY,GAC3BzN,EAAKsP,UAAUzB,mBAAqB,MAlFgC/N,EAAA,aAsFjE,WACLE,EAAKmP,QAAU,CAAErB,KAAA,GACd9N,EAAKwP,QACNE,qBAAqB1P,EAAKwP,OAC1BxP,EAAKwP,WAAA,EAAQ,IAzFfnP,KAAKsN,OAAShS,EACd,IAAMI,EAAMsE,KAAKsN,OAAOoB,WAAW,MACnC,IAAIhT,EACF,MAAM,IAAI+K,MAAM,gCAElBzG,KAAKiL,QAAUvP,EAEfsE,KAAKiP,UAAY,IAAIzP,EAAkBQ,KAAKsN,QAAQ,kBAAO3N,EAAKmP,OAAA,IAChE9O,KAAK8O,QAAUrT,EACfuE,KAAKwO,QAAA,WAXT,OAAAlT,EAAAC,GAAA,IAAAwH,IAAA,UAAAmF,IAAA,WAyBI,OAAOlI,KAAK6O,QAAA,EAzBhBS,IAAA,SA4Bc/T,GACV,IAAMD,EAAe0E,KAAK6O,UAAY7O,KAAK6O,SAASpB,IAC9ChS,EAAmBuE,KAAK6O,UAAY7O,KAAK6O,SAASnB,QACxD1N,KAAKuP,uBAAuBhU,GACzByE,KAAKiP,YACN9S,OAAOC,OAAO4D,KAAKiP,UAAWjP,KAAK8O,QAAQF,gBAChB,kBAAjBrT,EAAKmS,SAAyBnS,EAAKmS,UAAA,IAAWjS,IACtDuE,KAAKiP,UAAUzB,mBAAqBxN,KAAKiP,UAAU7B,UAAU9Q,SAG1C,kBAAbf,EAAKkS,KAAqBlS,EAAKkS,MAAA,IAAOnS,GAC9C0E,KAAKwO,QAAA,iCAvCXjT,CAAA,i8GCvHA,IAAMiU,EAAM/S,EAAAA,EAAMgT,YAIZC,EAAA,sQAOJ,SAAAlU,EAAYD,GAA8B,IAAAD,EAAAqU,EAAA,KAAAnU,GAAA,QAAAC,EAAAY,UAAAC,OAAbqD,EAAa,IAAAwC,MAAA1G,EAAA,EAAAA,EAAA,KAAAM,EAAA,EAAAA,EAAAN,EAAAM,IAAb4D,EAAa5D,EAAA,GAAAM,UAAAN,GAAA,OAAA6T,EAAAC,EACxCvU,EAAAI,EAAAG,KAAA6D,MAAAhE,EAAA,MAAMH,GAAN8G,OAAgB1C,KADwB,SAKGlD,EAAAA,EAAMgT,aALTG,EAAAC,EAAAvU,GAAA,mBAExCA,EAAKgS,OAAS/R,EAAMuU,WAAmDN,EAF/BlU,CAAA,0DAUxC,GAAG0E,KAAKsN,OAAOyC,QAAS,CACtB,IAAMxU,EAAOyU,EAAmBhQ,KAAKmG,OAAO,GAC5CnG,KAAKiQ,SAAW,IAAIjT,EAASgD,KAAKsN,OAAOyC,QAASxU,EAAA,+CAKpD,IAAMA,EAAkByU,EAAmBhQ,KAAKmG,OAAO,GACpDnG,KAAKiQ,WACNjQ,KAAKiQ,SAASnB,QAAUvT,EAAA,gDAKvByE,KAAKiQ,UACNjQ,KAAKiQ,SAASC,OAEhBlQ,KAAKiQ,cAAA,CAAW,kCAGT,IAAA1U,EAAA4U,EACgCH,EAAmBhQ,KAAKmG,OADxD,GACA7K,EADAC,EAAA,GACiBE,EADjBF,EAAA,GAEDoE,EAAe5B,EAAA,CACnBqS,OAAQ,EACRlN,SAAU,WACVmN,cAAe,OACfzM,IAAK,EACLQ,KAAM,EACNkM,OAAQ,EACRC,MAAO,GACJ9U,EAAY+U,OAEjB,OACE/T,EAAAA,EAAAgU,cAAA,SAAAC,EAAA,CACEpC,MAAOhT,EAAgBgT,MACvBC,OAAQjT,EAAgBiT,OACxBoC,IAAK3Q,KAAKsN,QACN7R,EAJN,CAKE+U,MAAO7Q,IAAA,mCAvDT,CAA8BnE,EAAAoV,WAgEpC,SAASZ,EAAmBzU,GAC1B,IAAMD,EAA6C,CAAC,EAE9CG,EAAY,CAAC,EACbkE,EAAqB,GAAH0C,OAAAvG,EAAOK,OAAO+I,KAAKpH,IAAnB,CAAsC,iBAAkB,YAAa,uBACvFpC,EAAW,CAAC,aAClB,IAAI,IAAMF,KAAQD,EAAO,CACvB,IAAMkB,EAAMlB,EAAMC,GACfmE,EAAmBkR,SAASrV,GAC7BF,EAAgBE,GAAkCiB,EAC1Cf,EAASmV,SAASrV,GAC1BE,EAASF,GAAeiB,EAExBhB,EAAKD,GAAQiB,CAAA,CAGjB,MAAO,CAACnB,EAAiBG,EAdN,CAAC,EAAD,GAlEfiU,EAAA,oBAEC5R,IAAA,EAFD4R,EAAA,cAK0B,iBA8EzB,IAAMoB,EAAgBrU,EAAAA,EAAMsU,YAAqC,SAACxV,EAAOD,GAAR,OACtEmB,EAAAA,EAAAgU,cAACf,EAADgB,EAAA,CAAuBZ,UAAWxU,GAASC,GAAA,IAG9BD,EAAAY,QAAA4U,CAAA,yCClFF,IAAIE,EAAGlL,EAAQ,IAASrK,EAAEqK,EAAQ,KAAiBnG,EAAEmG,EAAQ,KAAa,SAASpJ,EAAED,GAAG,IAAI,IAAII,EAAE,yDAAyDJ,EAAEV,EAAE,EAAEA,EAAEM,UAAUC,OAAOP,IAAIc,GAAG,WAAWoU,mBAAmB5U,UAAUN,IAAI,MAAM,yBAAyBU,EAAE,WAAWI,EAAE,gHAAgH,CAAC,IAAImU,EAAG,MAAMvK,MAAM/J,EAAE,MACxa,SAASwU,EAAGzU,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,EAAEJ,EAAE1C,EAAEE,GAAG,IAAI6C,EAAEqC,MAAM5F,UAAUmE,MAAM7E,KAAKQ,UAAU,GAAG,IAAIQ,EAAE6C,MAAM3D,EAAE+D,EAAE,CAAC,MAAMhE,GAAGkE,KAAKmR,QAAQrV,EAAE,CAAC,CAAC,IAAIsV,GAAG,EAAGC,EAAG,KAAKC,GAAG,EAAGC,EAAG,KAAKC,EAAG,CAACL,QAAQ,SAAS1U,GAAG2U,GAAG,EAAGC,EAAG5U,CAAC,GAAG,SAASgV,EAAGhV,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,EAAEJ,EAAE1C,EAAEE,GAAGmU,GAAG,EAAGC,EAAG,KAAKH,EAAGxR,MAAM8R,EAAGnV,UAAU,CAAyI,IAAIqV,EAAG,KAAKC,EAAG,KAAKC,EAAG,KACha,SAASC,EAAGpV,EAAEI,EAAEd,GAAG,IAAIa,EAAEH,EAAEqV,MAAM,gBAAgBrV,EAAEsV,cAAcH,EAAG7V,GAD6L,SAAYU,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,EAAEJ,EAAE1C,EAAEE,GAA4B,GAAzBwU,EAAG/R,MAAMM,KAAK3D,WAAc+U,EAAG,CAAC,IAAGA,EAAgC,MAAM3K,MAAM/J,EAAE,MAA1C,IAAIoD,EAAEuR,EAAGD,GAAG,EAAGC,EAAG,KAA8BC,IAAKA,GAAG,EAAGC,EAAGzR,EAAE,CAAC,CACjUkS,CAAGpV,EAAEC,OAAE,EAAOJ,GAAGA,EAAEsV,cAAc,IAAI,CAAC,IAAIE,EAAG,KAAKC,EAAG,CAAC,EAC7H,SAASC,IAAK,GAAGF,EAAG,IAAI,IAAIxV,KAAKyV,EAAG,CAAC,IAAIrV,EAAEqV,EAAGzV,GAAGV,EAAEkW,EAAGhT,QAAQxC,GAAG,MAAM,EAAEV,GAAG,MAAM0K,MAAM/J,EAAE,GAAGD,IAAI,IAAI2V,EAAGrW,GAAG,CAAC,IAAIc,EAAEwV,cAAc,MAAM5L,MAAM/J,EAAE,GAAGD,IAA2B,IAAI,IAAIG,KAA/BwV,EAAGrW,GAAGc,EAAEd,EAAEc,EAAEyV,WAA0B,CAAC,IAAIhX,OAAE,EAAWuE,EAAE9D,EAAEa,GAAG6C,EAAE5C,EAAEE,EAAEH,EAAE,GAAG2V,EAAG/V,eAAeO,GAAG,MAAM0J,MAAM/J,EAAE,GAAGK,IAAIwV,EAAGxV,GAAG8C,EAAE,IAAI5C,EAAE4C,EAAE2S,wBAAwB,GAAGvV,EAAE,CAAC,IAAI3B,KAAK2B,EAAEA,EAAET,eAAelB,IAAImX,EAAGxV,EAAE3B,GAAGmE,EAAE1C,GAAGzB,GAAE,CAAE,MAAMuE,EAAE6S,kBAAkBD,EAAG5S,EAAE6S,iBAAiBjT,EAAE1C,GAAGzB,GAAE,GAAIA,GAAE,EAAG,IAAIA,EAAE,MAAMmL,MAAM/J,EAAE,GAAGE,EAAEH,GAAI,CAAC,CAAC,CAAC,CACxc,SAASgW,EAAGhW,EAAEI,EAAEd,GAAG,GAAG4W,EAAGlW,GAAG,MAAMgK,MAAM/J,EAAE,IAAID,IAAIkW,EAAGlW,GAAGI,EAAE+V,EAAGnW,GAAGI,EAAEyV,WAAWvW,GAAG8W,YAAY,CAAC,IAAIT,EAAG,GAAGG,EAAG,CAAC,EAAEI,EAAG,CAAC,EAAEC,EAAG,CAAC,EAAE,SAASE,EAAGrW,GAAG,IAASV,EAALc,GAAE,EAAK,IAAId,KAAKU,EAAE,GAAGA,EAAED,eAAeT,GAAG,CAAC,IAAIa,EAAEH,EAAEV,GAAG,IAAImW,EAAG1V,eAAeT,IAAImW,EAAGnW,KAAKa,EAAE,CAAC,GAAGsV,EAAGnW,GAAG,MAAM0K,MAAM/J,EAAE,IAAIX,IAAImW,EAAGnW,GAAGa,EAAEC,GAAE,CAAE,CAAC,CAACA,GAAGsV,GAAI,CAAC,IAAIY,IAAK,qBAAqBrU,QAAQ,qBAAqBA,OAAOF,UAAU,qBAAqBE,OAAOF,SAASiS,eAAeuC,EAAG,KAAKC,EAAG,KAAKC,EAAG,KAC9a,SAASC,EAAG1W,GAAG,GAAGA,EAAEkV,EAAGlV,GAAG,CAAC,GAAG,oBAAoBuW,EAAG,MAAMvM,MAAM/J,EAAE,MAAM,IAAIG,EAAEJ,EAAE2W,UAAUvW,IAAIA,EAAE6U,EAAG7U,GAAGmW,EAAGvW,EAAE2W,UAAU3W,EAAEqV,KAAKjV,GAAG,CAAC,CAAC,SAASwW,EAAG5W,GAAGwW,EAAGC,EAAGA,EAAGjF,KAAKxR,GAAGyW,EAAG,CAACzW,GAAGwW,EAAGxW,CAAC,CAAC,SAAS6W,IAAK,GAAGL,EAAG,CAAC,IAAIxW,EAAEwW,EAAGpW,EAAEqW,EAAoB,GAAjBA,EAAGD,EAAG,KAAKE,EAAG1W,GAAMI,EAAE,IAAIJ,EAAE,EAAEA,EAAEI,EAAEP,OAAOG,IAAI0W,EAAGtW,EAAEJ,GAAG,CAAC,CAAC,SAAS8W,EAAG9W,EAAEI,GAAG,OAAOJ,EAAEI,EAAE,CAAC,SAAS2W,EAAG/W,EAAEI,EAAEd,EAAEa,EAAEtB,GAAG,OAAOmB,EAAEI,EAAEd,EAAEa,EAAEtB,EAAE,CAAC,SAASmY,IAAK,CAAC,IAAIC,EAAGH,EAAGI,GAAG,EAAGC,GAAG,EAAG,SAASC,IAAQ,OAAOZ,GAAI,OAAOC,IAAGO,IAAKH,IAAI,CACla,SAASQ,EAAGrX,EAAEI,EAAEd,GAAG,GAAG6X,EAAG,OAAOnX,EAAEI,EAAEd,GAAG6X,GAAG,EAAG,IAAI,OAAOF,EAAGjX,EAAEI,EAAEd,EAAE,CAAC,QAAQ6X,GAAG,EAAGC,GAAI,CAAC,CAAC,IAAIE,EAAG,8VAA8VC,EAAG7X,OAAOI,UAAUC,eAAeyX,EAAG,CAAC,EAAEC,EAAG,CAAC,EAEhR,SAAS1U,EAAE/C,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,GAAGG,KAAKmU,gBAAgB,IAAItX,GAAG,IAAIA,GAAG,IAAIA,EAAEmD,KAAKoU,cAAcxX,EAAEoD,KAAKqU,mBAAmB/Y,EAAE0E,KAAKsU,gBAAgBvY,EAAEiE,KAAKuU,aAAa9X,EAAEuD,KAAK8R,KAAKjV,EAAEmD,KAAKwU,YAAY3U,CAAC,CAAC,IAAI4U,EAAE,CAAC,EACzZ,uIAAuIzP,MAAM,KAAKhH,SAAQ,SAASvB,GAAGgY,EAAEhY,GAAG,IAAI+C,EAAE/C,EAAE,GAAE,EAAGA,EAAE,MAAK,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAeuB,SAAQ,SAASvB,GAAG,IAAII,EAAEJ,EAAE,GAAGgY,EAAE5X,GAAG,IAAI2C,EAAE3C,EAAE,GAAE,EAAGJ,EAAE,GAAG,MAAK,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAASuB,SAAQ,SAASvB,GAAGgY,EAAEhY,GAAG,IAAI+C,EAAE/C,EAAE,GAAE,EAAGA,EAAEiY,cAAc,MAAK,EAAG,IACje,CAAC,cAAc,4BAA4B,YAAY,iBAAiB1W,SAAQ,SAASvB,GAAGgY,EAAEhY,GAAG,IAAI+C,EAAE/C,EAAE,GAAE,EAAGA,EAAE,MAAK,EAAG,IAAG,wNAAwNuI,MAAM,KAAKhH,SAAQ,SAASvB,GAAGgY,EAAEhY,GAAG,IAAI+C,EAAE/C,EAAE,GAAE,EAAGA,EAAEiY,cAAc,MAAK,EAAG,IAC5Z,CAAC,UAAU,WAAW,QAAQ,YAAY1W,SAAQ,SAASvB,GAAGgY,EAAEhY,GAAG,IAAI+C,EAAE/C,EAAE,GAAE,EAAGA,EAAE,MAAK,EAAG,IAAG,CAAC,UAAU,YAAYuB,SAAQ,SAASvB,GAAGgY,EAAEhY,GAAG,IAAI+C,EAAE/C,EAAE,GAAE,EAAGA,EAAE,MAAK,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQuB,SAAQ,SAASvB,GAAGgY,EAAEhY,GAAG,IAAI+C,EAAE/C,EAAE,GAAE,EAAGA,EAAE,MAAK,EAAG,IAAG,CAAC,UAAU,SAASuB,SAAQ,SAASvB,GAAGgY,EAAEhY,GAAG,IAAI+C,EAAE/C,EAAE,GAAE,EAAGA,EAAEiY,cAAc,MAAK,EAAG,IAAG,IAAIC,EAAG,gBAAgB,SAASC,EAAGnY,GAAG,OAAOA,EAAE,GAAGoY,aAAa,CAC5Y,0jCAA0jC7P,MAAM,KAAKhH,SAAQ,SAASvB,GAAG,IAAII,EAAEJ,EAAE+D,QAAQmU,EACzmCC,GAAIH,EAAE5X,GAAG,IAAI2C,EAAE3C,EAAE,GAAE,EAAGJ,EAAE,MAAK,EAAG,IAAG,2EAA2EuI,MAAM,KAAKhH,SAAQ,SAASvB,GAAG,IAAII,EAAEJ,EAAE+D,QAAQmU,EAAGC,GAAIH,EAAE5X,GAAG,IAAI2C,EAAE3C,EAAE,GAAE,EAAGJ,EAAE,gCAA+B,EAAG,IAAG,CAAC,WAAW,WAAW,aAAauB,SAAQ,SAASvB,GAAG,IAAII,EAAEJ,EAAE+D,QAAQmU,EAAGC,GAAIH,EAAE5X,GAAG,IAAI2C,EAAE3C,EAAE,GAAE,EAAGJ,EAAE,wCAAuC,EAAG,IAAG,CAAC,WAAW,eAAeuB,SAAQ,SAASvB,GAAGgY,EAAEhY,GAAG,IAAI+C,EAAE/C,EAAE,GAAE,EAAGA,EAAEiY,cAAc,MAAK,EAAG,IACtcD,EAAEK,UAAU,IAAItV,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAI,CAAC,MAAM,OAAO,SAAS,cAAcxB,SAAQ,SAASvB,GAAGgY,EAAEhY,GAAG,IAAI+C,EAAE/C,EAAE,GAAE,EAAGA,EAAEiY,cAAc,MAAK,EAAG,IAAG,IAAIK,EAAG/D,EAAGgE,mDACnM,SAASC,EAAGxY,EAAEI,EAAEd,EAAEa,GAAG,IAAItB,EAAEmZ,EAAEjY,eAAeK,GAAG4X,EAAE5X,GAAG,MAAW,OAAOvB,EAAE,IAAIA,EAAEwW,MAAKlV,IAAO,EAAEC,EAAEP,SAAS,MAAMO,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,QAPnJ,SAAYJ,EAAEI,EAAEd,EAAEa,GAAG,GAAG,OAAOC,GAAG,qBAAqBA,GAD4D,SAAYJ,EAAEI,EAAEd,EAAEa,GAAG,GAAG,OAAOb,GAAG,IAAIA,EAAE+V,KAAK,OAAM,EAAG,cAAcjV,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGD,IAAc,OAAOb,GAASA,EAAEoY,gBAAmD,WAAnC1X,EAAEA,EAAEiY,cAAchU,MAAM,EAAE,KAAsB,UAAUjE,GAAE,QAAQ,OAAM,EAAG,CACtTyY,CAAGzY,EAAEI,EAAEd,EAAEa,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOb,EAAE,OAAOA,EAAE+V,MAAM,KAAK,EAAE,OAAOjV,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAO6G,MAAM7G,GAAG,KAAK,EAAE,OAAO6G,MAAM7G,IAAI,EAAEA,EAAE,OAAM,CAAE,CAOvDsY,CAAGtY,EAAEd,EAAET,EAAEsB,KAAKb,EAAE,MAAMa,GAAG,OAAOtB,EARhM,SAAYmB,GAAG,QAAGuX,EAAGnY,KAAKqY,EAAGzX,KAAeuX,EAAGnY,KAAKoY,EAAGxX,KAAesX,EAAGtT,KAAKhE,GAAUyX,EAAGzX,IAAG,GAAGwX,EAAGxX,IAAG,GAAS,GAAE,CAQgF2Y,CAAGvY,KAAK,OAAOd,EAAEU,EAAEyB,gBAAgBrB,GAAGJ,EAAEuC,aAAanC,EAAE,GAAGd,IAAIT,EAAEgZ,gBAAgB7X,EAAEnB,EAAEiZ,cAAc,OAAOxY,EAAE,IAAIT,EAAEwW,MAAQ,GAAG/V,GAAGc,EAAEvB,EAAE8Y,cAAcxX,EAAEtB,EAAE+Y,mBAAmB,OAAOtY,EAAEU,EAAEyB,gBAAgBrB,IAAad,EAAE,KAAXT,EAAEA,EAAEwW,OAAc,IAAIxW,IAAG,IAAKS,EAAE,GAAG,GAAGA,EAAEa,EAAEH,EAAE4Y,eAAezY,EAAEC,EAAEd,GAAGU,EAAEuC,aAAanC,EAAEd,KAAK,CAD3OgZ,EAAGvY,eAAe,4BAA4BuY,EAAGO,uBAAuB,CAACvF,QAAQ,OAAOgF,EAAGvY,eAAe,6BAA6BuY,EAAGQ,wBAAwB,CAACC,SAAS,OAEla,IAAIC,EAAG,cAAcC,EAAE,oBAAoB/U,QAAQA,OAAOgV,IAAIC,GAAGF,EAAE/U,OAAOgV,IAAI,iBAAiB,MAAME,GAAGH,EAAE/U,OAAOgV,IAAI,gBAAgB,MAAMG,GAAGJ,EAAE/U,OAAOgV,IAAI,kBAAkB,MAAMI,GAAGL,EAAE/U,OAAOgV,IAAI,qBAAqB,MAAMK,GAAGN,EAAE/U,OAAOgV,IAAI,kBAAkB,MAAMM,GAAGP,EAAE/U,OAAOgV,IAAI,kBAAkB,MAAMO,GAAGR,EAAE/U,OAAOgV,IAAI,iBAAiB,MAAMQ,GAAGT,EAAE/U,OAAOgV,IAAI,yBAAyB,MAAMS,GAAGV,EAAE/U,OAAOgV,IAAI,qBAAqB,MAAMU,GAAGX,EAAE/U,OAAOgV,IAAI,kBAAkB,MAAMW,GAAGZ,EAAE/U,OAAOgV,IAAI,uBACve,MAAMY,GAAGb,EAAE/U,OAAOgV,IAAI,cAAc,MAAMa,GAAGd,EAAE/U,OAAOgV,IAAI,cAAc,MAAMc,GAAGf,EAAE/U,OAAOgV,IAAI,eAAe,MAAMe,GAAG,oBAAoB/V,QAAQA,OAAOC,SAAS,SAAS+V,GAAGla,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAEia,IAAIja,EAAEia,KAAKja,EAAE,eAA0CA,EAAE,IAAI,CAC7R,SAASma,GAAGna,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAEoa,aAAapa,EAAEiK,MAAM,KAAK,GAAG,kBAAkBjK,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKqZ,GAAG,MAAM,WAAW,KAAKD,GAAG,MAAM,SAAS,KAAKG,GAAG,MAAM,WAAW,KAAKD,GAAG,MAAM,aAAa,KAAKM,GAAG,MAAM,WAAW,KAAKC,GAAG,MAAM,eAAe,GAAG,kBAAkB7Z,EAAE,OAAOA,EAAEqa,UAAU,KAAKZ,GAAG,MAAM,mBAAmB,KAAKD,GAAG,MAAM,mBAAmB,KAAKG,GAAG,IAAIvZ,EAAEJ,EAAEsa,OAAmC,OAA5Bla,EAAEA,EAAEga,aAAaha,EAAE6J,MAAM,GAAUjK,EAAEoa,cAAc,KAAKha,EAAE,cAAcA,EAAE,IACnf,cAAc,KAAK0Z,GAAG,OAAOK,GAAGna,EAAEqV,MAAM,KAAK2E,GAAG,OAAOG,GAAGna,EAAEsa,QAAQ,KAAKP,GAAG,GAAG/Z,EAAE,IAAIA,EAAEua,QAAQva,EAAEwa,QAAQ,KAAK,OAAOL,GAAGna,GAAG,OAAO,IAAI,CAAC,SAASya,GAAGza,GAAG,IAAII,EAAE,GAAG,EAAE,CAACJ,EAAE,OAAOA,EAAE0a,KAAK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,IAAIpb,EAAE,GAAG,MAAMU,EAAE,QAAQ,IAAIG,EAAEH,EAAE2a,YAAY9b,EAAEmB,EAAE4a,aAAaxX,EAAE+W,GAAGna,EAAEqV,MAAM/V,EAAE,KAAKa,IAAIb,EAAE6a,GAAGha,EAAEkV,OAAOlV,EAAEiD,EAAEA,EAAE,GAAGvE,EAAEuE,EAAE,QAAQvE,EAAEgc,SAAS9W,QAAQiV,EAAG,IAAI,IAAIna,EAAEic,WAAW,IAAIxb,IAAI8D,EAAE,gBAAgB9D,EAAE,KAAKA,EAAE,aAAaa,GAAG,WAAWiD,EAAEhD,GAAGd,EAAEU,EAAEA,EAAE+a,MAAM,OAAO/a,GAAG,OAAOI,CAAC,CACle,SAAS4a,GAAGhb,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,OAAOA,EAAE,QAAQ,MAAM,GAAG,CAAC,SAASib,GAAGjb,GAAG,IAAII,EAAEJ,EAAEqV,KAAK,OAAOrV,EAAEA,EAAEkb,WAAW,UAAUlb,EAAEiY,gBAAgB,aAAa7X,GAAG,UAAUA,EAAE,CAE3N,SAAS+a,GAAGnb,GAAGA,EAAEob,gBAAgBpb,EAAEob,cADvD,SAAYpb,GAAG,IAAII,EAAE6a,GAAGjb,GAAG,UAAU,QAAQV,EAAEI,OAAO2b,yBAAyBrb,EAAEoE,YAAYtE,UAAUM,GAAGD,EAAE,GAAGH,EAAEI,GAAG,IAAIJ,EAAED,eAAeK,IAAI,qBAAqBd,GAAG,oBAAoBA,EAAEmM,KAAK,oBAAoBnM,EAAEuT,IAAI,CAAC,IAAIhU,EAAES,EAAEmM,IAAIrI,EAAE9D,EAAEuT,IAAiL,OAA7KnT,OAAOmG,eAAe7F,EAAEI,EAAE,CAACgG,cAAa,EAAGqF,IAAI,WAAW,OAAO5M,EAAEO,KAAKmE,KAAK,EAAEsP,IAAI,SAAS7S,GAAGG,EAAE,GAAGH,EAAEoD,EAAEhE,KAAKmE,KAAKvD,EAAE,IAAIN,OAAOmG,eAAe7F,EAAEI,EAAE,CAAC+F,WAAW7G,EAAE6G,aAAmB,CAACmV,SAAS,WAAW,OAAOnb,CAAC,EAAEob,SAAS,SAASvb,GAAGG,EAAE,GAAGH,CAAC,EAAEwb,aAAa,WAAWxb,EAAEob,cACxf,YAAYpb,EAAEI,EAAE,EAAE,CAAC,CAAkDqb,CAAGzb,GAAG,CAAC,SAAS0b,GAAG1b,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAII,EAAEJ,EAAEob,cAAc,IAAIhb,EAAE,OAAM,EAAG,IAAId,EAAEc,EAAEkb,WAAenb,EAAE,GAAqD,OAAlDH,IAAIG,EAAE8a,GAAGjb,GAAGA,EAAE2b,QAAQ,OAAO,QAAQ3b,EAAE8F,QAAO9F,EAAEG,KAAab,IAAGc,EAAEmb,SAASvb,IAAG,EAAM,CAAC,SAAS4b,GAAG5b,EAAEI,GAAG,IAAId,EAAEc,EAAEub,QAAQ,OAAO3c,EAAE,CAAC,EAAEoB,EAAE,CAACyb,oBAAe,EAAOC,kBAAa,EAAOhW,WAAM,EAAO6V,QAAQ,MAAMrc,EAAEA,EAAEU,EAAE+b,cAAcC,gBAAgB,CACzZ,SAASC,GAAGjc,EAAEI,GAAG,IAAId,EAAE,MAAMc,EAAE0b,aAAa,GAAG1b,EAAE0b,aAAa3b,EAAE,MAAMC,EAAEub,QAAQvb,EAAEub,QAAQvb,EAAEyb,eAAevc,EAAE0b,GAAG,MAAM5a,EAAE0F,MAAM1F,EAAE0F,MAAMxG,GAAGU,EAAE+b,cAAc,CAACC,eAAe7b,EAAE+b,aAAa5c,EAAE6c,WAAW,aAAa/b,EAAEiV,MAAM,UAAUjV,EAAEiV,KAAK,MAAMjV,EAAEub,QAAQ,MAAMvb,EAAE0F,MAAM,CAAC,SAASsW,GAAGpc,EAAEI,GAAe,OAAZA,EAAEA,EAAEub,UAAiBnD,EAAGxY,EAAE,UAAUI,GAAE,EAAG,CACpU,SAASic,GAAGrc,EAAEI,GAAGgc,GAAGpc,EAAEI,GAAG,IAAId,EAAE0b,GAAG5a,EAAE0F,OAAO3F,EAAEC,EAAEiV,KAAK,GAAG,MAAM/V,EAAK,WAAWa,GAAM,IAAIb,GAAG,KAAKU,EAAE8F,OAAO9F,EAAE8F,OAAOxG,KAAEU,EAAE8F,MAAM,GAAGxG,GAAOU,EAAE8F,QAAQ,GAAGxG,IAAIU,EAAE8F,MAAM,GAAGxG,QAAQ,GAAG,WAAWa,GAAG,UAAUA,EAA8B,YAA3BH,EAAEyB,gBAAgB,SAAgBrB,EAAEL,eAAe,SAASuc,GAAGtc,EAAEI,EAAEiV,KAAK/V,GAAGc,EAAEL,eAAe,iBAAiBuc,GAAGtc,EAAEI,EAAEiV,KAAK2F,GAAG5a,EAAE0b,eAAe,MAAM1b,EAAEub,SAAS,MAAMvb,EAAEyb,iBAAiB7b,EAAE6b,iBAAiBzb,EAAEyb,eAAe,CACla,SAASU,GAAGvc,EAAEI,EAAEd,GAAG,GAAGc,EAAEL,eAAe,UAAUK,EAAEL,eAAe,gBAAgB,CAAC,IAAII,EAAEC,EAAEiV,KAAK,KAAK,WAAWlV,GAAG,UAAUA,QAAG,IAASC,EAAE0F,OAAO,OAAO1F,EAAE0F,OAAO,OAAO1F,EAAE,GAAGJ,EAAE+b,cAAcG,aAAa5c,GAAGc,IAAIJ,EAAE8F,QAAQ9F,EAAE8F,MAAM1F,GAAGJ,EAAE8b,aAAa1b,CAAC,CAAU,MAATd,EAAEU,EAAEiK,QAAcjK,EAAEiK,KAAK,IAAIjK,EAAE6b,iBAAiB7b,EAAE+b,cAAcC,eAAe,KAAK1c,IAAIU,EAAEiK,KAAK3K,EAAE,CACzV,SAASgd,GAAGtc,EAAEI,EAAEd,GAAM,WAAWc,GAAGJ,EAAEwc,cAAcC,gBAAgBzc,IAAE,MAAMV,EAAEU,EAAE8b,aAAa,GAAG9b,EAAE+b,cAAcG,aAAalc,EAAE8b,eAAe,GAAGxc,IAAIU,EAAE8b,aAAa,GAAGxc,GAAE,CAAsF,SAASod,GAAG1c,EAAEI,GAA6D,OAA1DJ,EAAEhB,EAAE,CAACiG,cAAS,GAAQ7E,IAAMA,EAAlI,SAAYJ,GAAG,IAAII,EAAE,GAAuD,OAApDmU,EAAGoI,SAASpb,QAAQvB,GAAE,SAASA,GAAG,MAAMA,IAAII,GAAGJ,EAAE,IAAUI,CAAC,CAAgDwc,CAAGxc,EAAE6E,aAAUjF,EAAEiF,SAAS7E,GAASJ,CAAC,CAClV,SAAS6c,GAAG7c,EAAEI,EAAEd,EAAEa,GAAe,GAAZH,EAAEA,EAAEqS,QAAWjS,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAIvB,EAAE,EAAEA,EAAES,EAAEO,OAAOhB,IAAIuB,EAAE,IAAId,EAAET,KAAI,EAAG,IAAIS,EAAE,EAAEA,EAAEU,EAAEH,OAAOP,IAAIT,EAAEuB,EAAEL,eAAe,IAAIC,EAAEV,GAAGwG,OAAO9F,EAAEV,GAAGwd,WAAWje,IAAImB,EAAEV,GAAGwd,SAASje,GAAGA,GAAGsB,IAAIH,EAAEV,GAAGyd,iBAAgB,EAAG,KAAK,CAAmB,IAAlBzd,EAAE,GAAG0b,GAAG1b,GAAGc,EAAE,KAASvB,EAAE,EAAEA,EAAEmB,EAAEH,OAAOhB,IAAI,CAAC,GAAGmB,EAAEnB,GAAGiH,QAAQxG,EAAiD,OAA9CU,EAAEnB,GAAGie,UAAS,OAAG3c,IAAIH,EAAEnB,GAAGke,iBAAgB,IAAW,OAAO3c,GAAGJ,EAAEnB,GAAGme,WAAW5c,EAAEJ,EAAEnB,GAAG,CAAC,OAAOuB,IAAIA,EAAE0c,UAAS,EAAG,CAAC,CACxY,SAASG,GAAGjd,EAAEI,GAAG,GAAG,MAAMA,EAAE8c,wBAAwB,MAAMlT,MAAM/J,EAAE,KAAK,OAAOjB,EAAE,CAAC,EAAEoB,EAAE,CAAC0F,WAAM,EAAOgW,kBAAa,EAAO7W,SAAS,GAAGjF,EAAE+b,cAAcG,cAAc,CAAC,SAASiB,GAAGnd,EAAEI,GAAG,IAAId,EAAEc,EAAE0F,MAAM,GAAG,MAAMxG,EAAE,CAA+B,GAA9BA,EAAEc,EAAE6E,SAAS7E,EAAEA,EAAE0b,aAAgB,MAAMxc,EAAE,CAAC,GAAG,MAAMc,EAAE,MAAM4J,MAAM/J,EAAE,KAAK,GAAGyF,MAAM0X,QAAQ9d,GAAG,CAAC,KAAK,GAAGA,EAAEO,QAAQ,MAAMmK,MAAM/J,EAAE,KAAKX,EAAEA,EAAE,EAAE,CAACc,EAAEd,CAAC,CAAC,MAAMc,IAAIA,EAAE,IAAId,EAAEc,CAAC,CAACJ,EAAE+b,cAAc,CAACG,aAAalB,GAAG1b,GAAG,CAClZ,SAAS+d,GAAGrd,EAAEI,GAAG,IAAId,EAAE0b,GAAG5a,EAAE0F,OAAO3F,EAAE6a,GAAG5a,EAAE0b,cAAc,MAAMxc,KAAIA,EAAE,GAAGA,KAAMU,EAAE8F,QAAQ9F,EAAE8F,MAAMxG,GAAG,MAAMc,EAAE0b,cAAc9b,EAAE8b,eAAexc,IAAIU,EAAE8b,aAAaxc,IAAI,MAAMa,IAAIH,EAAE8b,aAAa,GAAG3b,EAAE,CAAC,SAASmd,GAAGtd,GAAG,IAAII,EAAEJ,EAAEud,YAAYnd,IAAIJ,EAAE+b,cAAcG,cAAc,KAAK9b,GAAG,OAAOA,IAAIJ,EAAE8F,MAAM1F,EAAE,CAAC,IAAIod,GAAS,+BAATA,GAAwF,6BAC9X,SAASC,GAAGzd,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAA+B,CAAC,SAAS0d,GAAG1d,EAAEI,GAAG,OAAO,MAAMJ,GAAG,iCAAiCA,EAAEyd,GAAGrd,GAAG,+BAA+BJ,GAAG,kBAAkBI,EAAE,+BAA+BJ,CAAC,CAC5U,IAAI2d,GAAe3d,GAAZ4d,IAAY5d,GAAsJ,SAASA,EAAEI,GAAG,GAAGJ,EAAE6d,eAAeL,IAAQ,cAAcxd,EAAEA,EAAE8d,UAAU1d,MAAM,CAA2F,KAA1Fud,GAAGA,IAAI5b,SAASiS,cAAc,QAAU8J,UAAU,QAAQ1d,EAAE0D,UAAUW,WAAW,SAAarE,EAAEud,GAAGI,WAAW/d,EAAE+d,YAAY/d,EAAEge,YAAYhe,EAAE+d,YAAY,KAAK3d,EAAE2d,YAAY/d,EAAEie,YAAY7d,EAAE2d,WAAW,CAAC,EAAja,qBAAqBG,OAAOA,MAAMC,wBAAwB,SAAS/d,EAAEd,EAAEa,EAAEtB,GAAGqf,MAAMC,yBAAwB,WAAW,OAAOne,GAAEI,EAAEd,EAAM,GAAE,EAAEU,IACtK,SAASoe,GAAGpe,EAAEI,GAAG,GAAGA,EAAE,CAAC,IAAId,EAAEU,EAAE+d,WAAW,GAAGze,GAAGA,IAAIU,EAAEqe,WAAW,IAAI/e,EAAEgf,SAAwB,YAAdhf,EAAEif,UAAUne,EAAS,CAACJ,EAAEud,YAAYnd,CAAC,CAAC,SAASoe,GAAGxe,EAAEI,GAAG,IAAId,EAAE,CAAC,EAAiF,OAA/EA,EAAEU,EAAEiY,eAAe7X,EAAE6X,cAAc3Y,EAAE,SAASU,GAAG,SAASI,EAAEd,EAAE,MAAMU,GAAG,MAAMI,EAASd,CAAC,CAAC,IAAImf,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,CAAC,EAAEC,GAAG,CAAC,EAC3M,SAASC,GAAGhf,GAAG,GAAG8e,GAAG9e,GAAG,OAAO8e,GAAG9e,GAAG,IAAIye,GAAGze,GAAG,OAAOA,EAAE,IAAYV,EAARc,EAAEqe,GAAGze,GAAK,IAAIV,KAAKc,EAAE,GAAGA,EAAEL,eAAeT,IAAIA,KAAKyf,GAAG,OAAOD,GAAG9e,GAAGI,EAAEd,GAAG,OAAOU,CAAC,CAA/XsW,IAAKyI,GAAGhd,SAASiS,cAAc,OAAOD,MAAM,mBAAmB9R,gBAAgBwc,GAAGC,aAAaO,iBAAiBR,GAAGE,mBAAmBM,iBAAiBR,GAAGG,eAAeK,WAAW,oBAAoBhd,eAAewc,GAAGI,cAAcK,YACxO,IAAIC,GAAGH,GAAG,gBAAgBI,GAAGJ,GAAG,sBAAsBK,GAAGL,GAAG,kBAAkBM,GAAGN,GAAG,iBAAiBO,GAAG,sNAAsNhX,MAAM,KAAKiX,GAAG,IAAK,oBAAoBC,QAAQA,QAAQC,KAAK,SAASC,GAAG3f,GAAG,IAAII,EAAEof,GAAG/T,IAAIzL,GAAuC,YAApC,IAASI,IAAIA,EAAE,IAAIsf,IAAIF,GAAG3M,IAAI7S,EAAEI,IAAWA,CAAC,CACrc,SAASwf,GAAG5f,GAAG,IAAII,EAAEJ,EAAEV,EAAEU,EAAE,GAAGA,EAAE6f,UAAU,KAAKzf,EAAE2a,QAAQ3a,EAAEA,EAAE2a,WAAW,CAAC/a,EAAEI,EAAE,GAAO,KAAiB,MAArBA,EAAEJ,GAAS8f,aAAkBxgB,EAAEc,EAAE2a,QAAQ/a,EAAEI,EAAE2a,aAAa/a,EAAE,CAAC,OAAO,IAAII,EAAEsa,IAAIpb,EAAE,IAAI,CAAC,SAASygB,GAAG/f,GAAG,GAAG,KAAKA,EAAE0a,IAAI,CAAC,IAAIta,EAAEJ,EAAEggB,cAAsE,GAAxD,OAAO5f,IAAkB,QAAdJ,EAAEA,EAAE6f,aAAqBzf,EAAEJ,EAAEggB,gBAAmB,OAAO5f,EAAE,OAAOA,EAAE6f,UAAU,CAAC,OAAO,IAAI,CAAC,SAASC,GAAGlgB,GAAG,GAAG4f,GAAG5f,KAAKA,EAAE,MAAMgK,MAAM/J,EAAE,KAAM,CAEtK,SAASkgB,GAAGngB,GAAW,GAARA,EADtN,SAAYA,GAAG,IAAII,EAAEJ,EAAE6f,UAAU,IAAIzf,EAAE,CAAS,GAAG,QAAXA,EAAEwf,GAAG5f,IAAe,MAAMgK,MAAM/J,EAAE,MAAM,OAAOG,IAAIJ,EAAE,KAAKA,CAAC,CAAC,IAAI,IAAIV,EAAEU,EAAEG,EAAEC,IAAI,CAAC,IAAIvB,EAAES,EAAEyb,OAAO,GAAG,OAAOlc,EAAE,MAAM,IAAIuE,EAAEvE,EAAEghB,UAAU,GAAG,OAAOzc,EAAE,CAAY,GAAG,QAAdjD,EAAEtB,EAAEkc,QAAmB,CAACzb,EAAEa,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAGtB,EAAEuhB,QAAQhd,EAAEgd,MAAM,CAAC,IAAIhd,EAAEvE,EAAEuhB,MAAMhd,GAAG,CAAC,GAAGA,IAAI9D,EAAE,OAAO4gB,GAAGrhB,GAAGmB,EAAE,GAAGoD,IAAIjD,EAAE,OAAO+f,GAAGrhB,GAAGuB,EAAEgD,EAAEA,EAAEid,OAAO,CAAC,MAAMrW,MAAM/J,EAAE,KAAM,CAAC,GAAGX,EAAEyb,SAAS5a,EAAE4a,OAAOzb,EAAET,EAAEsB,EAAEiD,MAAM,CAAC,IAAI,IAAIJ,GAAE,EAAG1C,EAAEzB,EAAEuhB,MAAM9f,GAAG,CAAC,GAAGA,IAAIhB,EAAE,CAAC0D,GAAE,EAAG1D,EAAET,EAAEsB,EAAEiD,EAAE,KAAK,CAAC,GAAG9C,IAAIH,EAAE,CAAC6C,GAAE,EAAG7C,EAAEtB,EAAES,EAAE8D,EAAE,KAAK,CAAC9C,EAAEA,EAAE+f,OAAO,CAAC,IAAIrd,EAAE,CAAC,IAAI1C,EAAE8C,EAAEgd,MAAM9f,GAAG,CAAC,GAAGA,IAC5fhB,EAAE,CAAC0D,GAAE,EAAG1D,EAAE8D,EAAEjD,EAAEtB,EAAE,KAAK,CAAC,GAAGyB,IAAIH,EAAE,CAAC6C,GAAE,EAAG7C,EAAEiD,EAAE9D,EAAET,EAAE,KAAK,CAACyB,EAAEA,EAAE+f,OAAO,CAAC,IAAIrd,EAAE,MAAMgH,MAAM/J,EAAE,KAAM,CAAC,CAAC,GAAGX,EAAEugB,YAAY1f,EAAE,MAAM6J,MAAM/J,EAAE,KAAM,CAAC,GAAG,IAAIX,EAAEob,IAAI,MAAM1Q,MAAM/J,EAAE,MAAM,OAAOX,EAAEqX,UAAUrD,UAAUhU,EAAEU,EAAEI,CAAC,CAAkBkgB,CAAGtgB,IAAOA,EAAE,OAAO,KAAK,IAAI,IAAII,EAAEJ,IAAI,CAAC,GAAG,IAAII,EAAEsa,KAAK,IAAIta,EAAEsa,IAAI,OAAOta,EAAE,GAAGA,EAAEggB,MAAMhgB,EAAEggB,MAAMrF,OAAO3a,EAAEA,EAAEA,EAAEggB,UAAU,CAAC,GAAGhgB,IAAIJ,EAAE,MAAM,MAAMI,EAAEigB,SAAS,CAAC,IAAIjgB,EAAE2a,QAAQ3a,EAAE2a,SAAS/a,EAAE,OAAO,KAAKI,EAAEA,EAAE2a,MAAM,CAAC3a,EAAEigB,QAAQtF,OAAO3a,EAAE2a,OAAO3a,EAAEA,EAAEigB,OAAO,CAAC,CAAC,OAAO,IAAI,CAChd,SAASE,GAAGvgB,EAAEI,GAAG,GAAG,MAAMA,EAAE,MAAM4J,MAAM/J,EAAE,KAAK,OAAG,MAAMD,EAASI,EAAKsF,MAAM0X,QAAQpd,GAAO0F,MAAM0X,QAAQhd,IAAUJ,EAAEwR,KAAKvO,MAAMjD,EAAEI,GAAGJ,IAAEA,EAAEwR,KAAKpR,GAAUJ,GAAS0F,MAAM0X,QAAQhd,GAAG,CAACJ,GAAG4F,OAAOxF,GAAG,CAACJ,EAAEI,EAAE,CAAC,SAASogB,GAAGxgB,EAAEI,EAAEd,GAAGoG,MAAM0X,QAAQpd,GAAGA,EAAEuB,QAAQnB,EAAEd,GAAGU,GAAGI,EAAEhB,KAAKE,EAAEU,EAAE,CAAC,IAAIygB,GAAG,KAC/Q,SAASC,GAAG1gB,GAAG,GAAGA,EAAE,CAAC,IAAII,EAAEJ,EAAE2gB,mBAAmBrhB,EAAEU,EAAE4gB,mBAAmB,GAAGlb,MAAM0X,QAAQhd,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEP,SAASG,EAAE6gB,uBAAuB1gB,IAAIiV,EAAGpV,EAAEI,EAAED,GAAGb,EAAEa,SAASC,GAAGgV,EAAGpV,EAAEI,EAAEd,GAAGU,EAAE2gB,mBAAmB,KAAK3gB,EAAE4gB,mBAAmB,KAAK5gB,EAAE8gB,gBAAgB9gB,EAAEoE,YAAY2c,QAAQ/gB,EAAE,CAAC,CAAC,SAASghB,GAAGhhB,GAAwC,GAArC,OAAOA,IAAIygB,GAAGF,GAAGE,GAAGzgB,IAAIA,EAAEygB,GAAGA,GAAG,KAAQzgB,EAAE,CAAU,GAATwgB,GAAGxgB,EAAE0gB,IAAOD,GAAG,MAAMzW,MAAM/J,EAAE,KAAK,GAAG4U,EAAG,MAAM7U,EAAE8U,EAAGD,GAAG,EAAGC,EAAG,KAAK9U,CAAE,CAAC,CACjZ,SAASihB,GAAGjhB,GAA6F,OAA1FA,EAAEA,EAAE4I,QAAQ5I,EAAEkhB,YAAYjf,QAASkf,0BAA0BnhB,EAAEA,EAAEmhB,yBAAgC,IAAInhB,EAAEse,SAASte,EAAEohB,WAAWphB,CAAC,CAAC,SAASqhB,GAAGrhB,GAAG,IAAIsW,EAAG,OAAM,EAAY,IAAIlW,GAAbJ,EAAE,KAAKA,KAAa+B,SAAqG,OAA5F3B,KAAIA,EAAE2B,SAASiS,cAAc,QAASzR,aAAavC,EAAE,WAAWI,EAAE,oBAAoBA,EAAEJ,IAAWI,CAAC,CAAC,IAAIkhB,GAAG,GAAG,SAASC,GAAGvhB,GAAGA,EAAEwhB,aAAa,KAAKxhB,EAAEyhB,YAAY,KAAKzhB,EAAE0hB,WAAW,KAAK1hB,EAAE2hB,UAAU9hB,OAAO,EAAE,GAAGyhB,GAAGzhB,QAAQyhB,GAAG9P,KAAKxR,EAAE,CAC9a,SAAS4hB,GAAG5hB,EAAEI,EAAEd,EAAEa,GAAG,GAAGmhB,GAAGzhB,OAAO,CAAC,IAAIhB,EAAEyiB,GAAGO,MAA2E,OAArEhjB,EAAE2iB,aAAaxhB,EAAEnB,EAAEijB,iBAAiB3hB,EAAEtB,EAAE4iB,YAAYrhB,EAAEvB,EAAE6iB,WAAWpiB,EAAST,CAAC,CAAC,MAAM,CAAC2iB,aAAaxhB,EAAE8hB,iBAAiB3hB,EAAEshB,YAAYrhB,EAAEshB,WAAWpiB,EAAEqiB,UAAU,GAAG,CACjN,SAASI,GAAG/hB,GAAG,IAAII,EAAEJ,EAAE0hB,WAAWpiB,EAAEc,EAAE,EAAE,CAAC,IAAId,EAAE,CAACU,EAAE2hB,UAAUnQ,KAAKlS,GAAG,KAAK,CAAC,IAAIa,EAAEb,EAAE,GAAG,IAAIa,EAAEua,IAAIva,EAAEA,EAAEwW,UAAUqL,kBAAkB,CAAC,KAAK7hB,EAAE4a,QAAQ5a,EAAEA,EAAE4a,OAAO5a,EAAE,IAAIA,EAAEua,IAAI,KAAKva,EAAEwW,UAAUqL,aAAa,CAAC,IAAI7hB,EAAE,MAAc,KAARC,EAAEd,EAAEob,MAAW,IAAIta,GAAGJ,EAAE2hB,UAAUnQ,KAAKlS,GAAGA,EAAE2iB,GAAG9hB,EAAE,OAAOb,GAAG,IAAIA,EAAE,EAAEA,EAAEU,EAAE2hB,UAAU9hB,OAAOP,IAAI,CAACc,EAAEJ,EAAE2hB,UAAUriB,GAAG,IAAIT,EAAEoiB,GAAGjhB,EAAEyhB,aAAathB,EAAEH,EAAEwhB,aAAa,IAAIpe,EAAEpD,EAAEyhB,YAAYze,EAAEhD,EAAE8hB,iBAAiB,IAAIxiB,IAAI0D,GAAG,IAAI,IAAI,IAAI1C,EAAE,KAAKE,EAAE,EAAEA,EAAEmV,EAAG9V,OAAOW,IAAI,CAAC,IAAI6C,EAAEsS,EAAGnV,GAAG6C,IAAIA,EAAEA,EAAEuS,cAAczV,EAAEC,EAAEgD,EAAEvE,EAAEmE,MAAM1C,EACpfigB,GAAGjgB,EAAE+C,GAAG,CAAC2d,GAAG1gB,EAAE,CAAC,CAAC,SAAS4hB,GAAGliB,EAAEI,EAAEd,GAAG,IAAIA,EAAE6iB,IAAIniB,GAAG,CAAC,OAAOA,GAAG,IAAK,SAASoiB,GAAGhiB,EAAE,UAAS,GAAI,MAAM,IAAK,QAAQ,IAAK,OAAOgiB,GAAGhiB,EAAE,SAAQ,GAAIgiB,GAAGhiB,EAAE,QAAO,GAAId,EAAEuT,IAAI,OAAO,MAAMvT,EAAEuT,IAAI,QAAQ,MAAM,MAAM,IAAK,SAAS,IAAK,QAAQwO,GAAGrhB,IAAIoiB,GAAGhiB,EAAEJ,GAAE,GAAI,MAAM,IAAK,UAAU,IAAK,SAAS,IAAK,QAAQ,MAAM,SAAS,IAAIuf,GAAG/c,QAAQxC,IAAIqiB,GAAEriB,EAAEI,GAAGd,EAAEuT,IAAI7S,EAAE,KAAK,CAAC,CAC5V,IAAIsiB,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAIpD,IAAIqD,GAAG,IAAIrD,IAAIsD,GAAG,GAAGC,GAAG,0QAA0Q1a,MAAM,KAAK2a,GAAG,gHAAgH3a,MAAM,KAC3X,SAAS4a,GAAGnjB,EAAEI,EAAEd,EAAEa,EAAEtB,GAAG,MAAM,CAACukB,UAAUpjB,EAAEwhB,aAAaphB,EAAE0hB,iBAAmB,GAAFxiB,EAAKmiB,YAAY5iB,EAAEwkB,UAAUljB,EAAE,CAC5M,SAASmjB,GAAGtjB,EAAEI,GAAG,OAAOJ,GAAG,IAAK,QAAQ,IAAK,OAAO2iB,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGS,OAAOnjB,EAAEojB,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBT,GAAGQ,OAAOnjB,EAAEojB,WAAW,CAAC,SAASC,GAAGzjB,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,GAAG,OAAG,OAAOpD,GAAGA,EAAEyhB,cAAcre,GAASpD,EAAEmjB,GAAG/iB,EAAEd,EAAEa,EAAEtB,EAAEuE,GAAG,OAAOhD,IAAY,QAARA,EAAEsjB,GAAGtjB,KAAamiB,GAAGniB,IAAIJ,IAAEA,EAAE8hB,kBAAkB3hB,EAASH,EAAC,CAEjc,SAAS2jB,GAAG3jB,GAAG,IAAII,EAAE6hB,GAAGjiB,EAAE4I,QAAQ,GAAG,OAAOxI,EAAE,CAAC,IAAId,EAAEsgB,GAAGxf,GAAG,GAAG,OAAOd,EAAE,GAAW,MAARc,EAAEd,EAAEob,MAAY,GAAW,QAARta,EAAE2f,GAAGzgB,IAAoF,OAAvEU,EAAEojB,UAAUhjB,OAAE8C,EAAE0gB,yBAAyB5jB,EAAE6jB,UAAS,WAAWrB,GAAGljB,EAAE,SAAgB,GAAG,IAAIc,GAAGd,EAAEqX,UAAUmN,QAA8D,YAArD9jB,EAAEojB,UAAU,IAAI9jB,EAAEob,IAAIpb,EAAEqX,UAAUqL,cAAc,KAAY,CAAChiB,EAAEojB,UAAU,IAAI,CAAC,SAASW,GAAG/jB,GAAG,GAAG,OAAOA,EAAEojB,UAAU,OAAM,EAAG,IAAIhjB,EAAE4jB,GAAGhkB,EAAEwhB,aAAaxhB,EAAE8hB,iBAAiB9hB,EAAEqjB,UAAUrjB,EAAEyhB,aAAa,GAAG,OAAOrhB,EAAE,CAAC,IAAId,EAAEokB,GAAGtjB,GAAiC,OAA9B,OAAOd,GAAGijB,GAAGjjB,GAAGU,EAAEojB,UAAUhjB,GAAQ,CAAE,CAAC,OAAM,CAAE,CAC5e,SAAS6jB,GAAGjkB,EAAEI,EAAEd,GAAGykB,GAAG/jB,IAAIV,EAAEikB,OAAOnjB,EAAE,CAAC,SAAS8jB,KAAK,IAAIzB,IAAG,EAAG,EAAEC,GAAG7iB,QAAQ,CAAC,IAAIG,EAAE0iB,GAAG,GAAG,GAAG,OAAO1iB,EAAEojB,UAAU,CAAmB,QAAlBpjB,EAAE0jB,GAAG1jB,EAAEojB,aAAqBd,GAAGtiB,GAAG,KAAK,CAAC,IAAII,EAAE4jB,GAAGhkB,EAAEwhB,aAAaxhB,EAAE8hB,iBAAiB9hB,EAAEqjB,UAAUrjB,EAAEyhB,aAAa,OAAOrhB,EAAEJ,EAAEojB,UAAUhjB,EAAEsiB,GAAGyB,OAAO,CAAC,OAAOxB,IAAIoB,GAAGpB,MAAMA,GAAG,MAAM,OAAOC,IAAImB,GAAGnB,MAAMA,GAAG,MAAM,OAAOC,IAAIkB,GAAGlB,MAAMA,GAAG,MAAMC,GAAGvhB,QAAQ0iB,IAAIlB,GAAGxhB,QAAQ0iB,GAAG,CAAC,SAASG,GAAGpkB,EAAEI,GAAGJ,EAAEojB,YAAYhjB,IAAIJ,EAAEojB,UAAU,KAAKX,KAAKA,IAAG,EAAGvf,EAAEmhB,0BAA0BnhB,EAAEohB,wBAAwBJ,KAAK,CAC9e,SAASK,GAAGvkB,GAAG,SAASI,EAAEA,GAAG,OAAOgkB,GAAGhkB,EAAEJ,EAAE,CAAC,GAAG,EAAE0iB,GAAG7iB,OAAO,CAACukB,GAAG1B,GAAG,GAAG1iB,GAAG,IAAI,IAAIV,EAAE,EAAEA,EAAEojB,GAAG7iB,OAAOP,IAAI,CAAC,IAAIa,EAAEuiB,GAAGpjB,GAAGa,EAAEijB,YAAYpjB,IAAIG,EAAEijB,UAAU,KAAK,CAAC,CAAyF,IAAxF,OAAOT,IAAIyB,GAAGzB,GAAG3iB,GAAG,OAAO4iB,IAAIwB,GAAGxB,GAAG5iB,GAAG,OAAO6iB,IAAIuB,GAAGvB,GAAG7iB,GAAG8iB,GAAGvhB,QAAQnB,GAAG2iB,GAAGxhB,QAAQnB,GAAOd,EAAE,EAAEA,EAAE0jB,GAAGnjB,OAAOP,KAAIa,EAAE6iB,GAAG1jB,IAAK8jB,YAAYpjB,IAAIG,EAAEijB,UAAU,MAAM,KAAK,EAAEJ,GAAGnjB,QAAiB,QAARP,EAAE0jB,GAAG,IAAYI,WAAYO,GAAGrkB,GAAG,OAAOA,EAAE8jB,WAAWJ,GAAGmB,OAAO,CACtY,IAAIK,GAAG,CAAC,EAAEC,GAAG,IAAI/E,IAAIgF,GAAG,IAAIhF,IAAIiF,GAAG,CAAC,QAAQ,QAAQxF,GAAG,eAAeC,GAAG,qBAAqBC,GAAG,iBAAiB,UAAU,UAAU,iBAAiB,iBAAiB,iBAAiB,iBAAiB,UAAU,UAAU,YAAY,YAAY,QAAQ,QAAQ,QAAQ,QAAQ,oBAAoB,oBAAoB,OAAO,OAAO,aAAa,aAAa,iBAAiB,iBAAiB,YAAY,YAAY,qBAAqB,qBAAqB,UAAU,UAAU,WAAW,WAAW,UACpf,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,aAAaC,GAAG,gBAAgB,UAAU,WAAW,SAASsF,GAAG5kB,EAAEI,GAAG,IAAI,IAAId,EAAE,EAAEA,EAAEU,EAAEH,OAAOP,GAAG,EAAE,CAAC,IAAIa,EAAEH,EAAEV,GAAGT,EAAEmB,EAAEV,EAAE,GAAG8D,EAAE,MAAMvE,EAAE,GAAGuZ,cAAcvZ,EAAEoF,MAAM,IAAIb,EAAE,CAAC2S,wBAAwB,CAAC8O,QAAQzhB,EAAE0hB,SAAS1hB,EAAE,WAAWgT,aAAa,CAACjW,GAAG4kB,cAAc3kB,GAAGskB,GAAG7R,IAAI1S,EAAEC,GAAGqkB,GAAG5R,IAAI1S,EAAEiD,GAAGohB,GAAG3lB,GAAGuE,CAAC,CAAC,CAC3VwhB,GAAG,6iBAA6iBrc,MAAM,KAAK,GAC3jBqc,GAAG,oRAAoRrc,MAAM,KAAK,GAAGqc,GAAGD,GAAG,GAAG,IAAI,IAAIK,GAAG,qFAAqFzc,MAAM,KAAK0c,GAAG,EAAEA,GAAGD,GAAGnlB,OAAOolB,KAAKP,GAAG7R,IAAImS,GAAGC,IAAI,GAC9b,IAAIC,GAAGhiB,EAAEiiB,8BAA8BC,GAAGliB,EAAE0gB,yBAAyByB,IAAG,EAAG,SAAShD,GAAEriB,EAAEI,GAAGgiB,GAAGhiB,EAAEJ,GAAE,EAAG,CAAC,SAASoiB,GAAGpiB,EAAEI,EAAEd,GAAG,IAAIa,EAAEukB,GAAGjZ,IAAIrL,GAAG,YAAO,IAASD,EAAE,EAAEA,GAAG,KAAK,EAAEA,EAAEmlB,GAAG1Z,KAAK,KAAKxL,EAAE,EAAEJ,GAAG,MAAM,KAAK,EAAEG,EAAEolB,GAAG3Z,KAAK,KAAKxL,EAAE,EAAEJ,GAAG,MAAM,QAAQG,EAAEjB,GAAG0M,KAAK,KAAKxL,EAAE,EAAEJ,GAAGV,EAAEU,EAAE0C,iBAAiBtC,EAAED,GAAE,GAAIH,EAAE0C,iBAAiBtC,EAAED,GAAE,EAAG,CAAC,SAASmlB,GAAGtlB,EAAEI,EAAEd,EAAEa,GAAG+W,GAAIF,IAAK,IAAInY,EAAEK,GAAGkE,EAAE8T,EAAGA,GAAG,EAAG,IAAIH,EAAGlY,EAAEmB,EAAEI,EAAEd,EAAEa,EAAE,CAAC,SAAS+W,EAAG9T,IAAIgU,GAAI,CAAC,CAAC,SAASmO,GAAGvlB,EAAEI,EAAEd,EAAEa,GAAGilB,GAAGF,GAAGhmB,GAAG0M,KAAK,KAAK5L,EAAEI,EAAEd,EAAEa,GAAG,CACvc,SAASjB,GAAGc,EAAEI,EAAEd,EAAEa,GAAG,GAAGklB,GAAG,GAAG,EAAE3C,GAAG7iB,SAAS,EAAEojB,GAAGzgB,QAAQxC,GAAGA,EAAEmjB,GAAG,KAAKnjB,EAAEI,EAAEd,EAAEa,GAAGuiB,GAAGlR,KAAKxR,OAAO,CAAC,IAAInB,EAAEmlB,GAAGhkB,EAAEI,EAAEd,EAAEa,GAAG,GAAG,OAAOtB,EAAEykB,GAAGtjB,EAAEG,QAAQ,IAAI,EAAE8iB,GAAGzgB,QAAQxC,GAAGA,EAAEmjB,GAAGtkB,EAAEmB,EAAEI,EAAEd,EAAEa,GAAGuiB,GAAGlR,KAAKxR,QAAQ,IAT9L,SAAYA,EAAEI,EAAEd,EAAEa,EAAEtB,GAAG,OAAOuB,GAAG,IAAK,QAAQ,OAAOuiB,GAAGc,GAAGd,GAAG3iB,EAAEI,EAAEd,EAAEa,EAAEtB,IAAG,EAAG,IAAK,YAAY,OAAO+jB,GAAGa,GAAGb,GAAG5iB,EAAEI,EAAEd,EAAEa,EAAEtB,IAAG,EAAG,IAAK,YAAY,OAAOgkB,GAAGY,GAAGZ,GAAG7iB,EAAEI,EAAEd,EAAEa,EAAEtB,IAAG,EAAG,IAAK,cAAc,IAAIuE,EAAEvE,EAAE2kB,UAAkD,OAAxCV,GAAGjQ,IAAIzP,EAAEqgB,GAAGX,GAAGrX,IAAIrI,IAAI,KAAKpD,EAAEI,EAAEd,EAAEa,EAAEtB,KAAU,EAAG,IAAK,oBAAoB,OAAOuE,EAAEvE,EAAE2kB,UAAUT,GAAGlQ,IAAIzP,EAAEqgB,GAAGV,GAAGtX,IAAIrI,IAAI,KAAKpD,EAAEI,EAAEd,EAAEa,EAAEtB,KAAI,EAAG,OAAM,CAAE,CAS/J2mB,CAAG3mB,EAAEmB,EAAEI,EAAEd,EAAEa,GAAG,CAACmjB,GAAGtjB,EAAEG,GAAGH,EAAE4hB,GAAG5hB,EAAEG,EAAE,KAAKC,GAAG,IAAIiX,EAAG0K,GAAG/hB,EAAE,CAAC,QAAQuhB,GAAGvhB,EAAE,CAAC,CAAC,CAAC,CACvQ,SAASgkB,GAAGhkB,EAAEI,EAAEd,EAAEa,GAAmB,GAAG,QAAXb,EAAE2iB,GAAV3iB,EAAE2hB,GAAG9gB,KAAuB,CAAC,IAAItB,EAAE+gB,GAAGtgB,GAAG,GAAG,OAAOT,EAAES,EAAE,SAAS,CAAC,IAAI8D,EAAEvE,EAAE6b,IAAI,GAAG,KAAKtX,EAAE,CAAS,GAAG,QAAX9D,EAAEygB,GAAGlhB,IAAe,OAAOS,EAAEA,EAAE,IAAI,MAAM,GAAG,IAAI8D,EAAE,CAAC,GAAGvE,EAAE8X,UAAUmN,QAAQ,OAAO,IAAIjlB,EAAE6b,IAAI7b,EAAE8X,UAAUqL,cAAc,KAAK1iB,EAAE,IAAI,MAAMT,IAAIS,IAAIA,EAAE,KAAK,CAAC,CAACU,EAAE4hB,GAAG5hB,EAAEG,EAAEb,EAAEc,GAAG,IAAIiX,EAAG0K,GAAG/hB,EAAE,CAAC,QAAQuhB,GAAGvhB,EAAE,CAAC,OAAO,IAAI,CACxT,IAAIylB,GAAG,CAACC,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGC,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGC,YAAW,EAAGC,WAAU,EAAGC,YAAW,EAAG7X,SAAQ,EAAG8X,OAAM,EAAGC,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAG7T,QAAO,EAAG8T,MAAK,EAAGC,aAAY,EAC1fC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAIC,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAGnoB,EAAEI,EAAEd,GAAG,OAAO,MAAMc,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAGd,GAAG,kBAAkBc,GAAG,IAAIA,GAAGqlB,GAAG1lB,eAAeC,IAAIylB,GAAGzlB,IAAI,GAAGI,GAAGgoB,OAAOhoB,EAAE,IAAI,CACla,SAASioB,GAAGroB,EAAEI,GAAa,IAAI,IAAId,KAAlBU,EAAEA,EAAE+T,MAAmB3T,EAAE,GAAGA,EAAEL,eAAeT,GAAG,CAAC,IAAIa,EAAE,IAAIb,EAAEkD,QAAQ,MAAM3D,EAAEspB,GAAG7oB,EAAEc,EAAEd,GAAGa,GAAG,UAAUb,IAAIA,EAAE,YAAYa,EAAEH,EAAEsoB,YAAYhpB,EAAET,GAAGmB,EAAEV,GAAGT,CAAC,CAAC,CADXa,OAAO+I,KAAKgd,IAAIlkB,SAAQ,SAASvB,GAAGkoB,GAAG3mB,SAAQ,SAASnB,GAAGA,EAAEA,EAAEJ,EAAEuoB,OAAO,GAAGnQ,cAAcpY,EAAEwoB,UAAU,GAAG/C,GAAGrlB,GAAGqlB,GAAGzlB,EAAE,GAAE,IACzG,IAAIyoB,GAAGzpB,EAAE,CAAC0pB,UAAS,GAAI,CAACC,MAAK,EAAGC,MAAK,EAAGC,IAAG,EAAGC,KAAI,EAAGC,OAAM,EAAGC,IAAG,EAAGC,KAAI,EAAGC,OAAM,EAAGC,QAAO,EAAGC,MAAK,EAAGC,MAAK,EAAGC,OAAM,EAAGzgB,QAAO,EAAG0gB,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAGzpB,EAAEI,GAAG,GAAGA,EAAE,CAAC,GAAGqoB,GAAGzoB,KAAK,MAAMI,EAAE6E,UAAU,MAAM7E,EAAE8c,yBAAyB,MAAMlT,MAAM/J,EAAE,IAAID,EAAE,KAAK,GAAG,MAAMI,EAAE8c,wBAAwB,CAAC,GAAG,MAAM9c,EAAE6E,SAAS,MAAM+E,MAAM/J,EAAE,KAAK,GAAK,kBAAkBG,EAAE8c,2BAAyB,WAAW9c,EAAE8c,yBAAyB,MAAMlT,MAAM/J,EAAE,IAAK,CAAC,GAAG,MAAMG,EAAE2T,OAAO,kBAAkB3T,EAAE2T,MAAM,MAAM/J,MAAM/J,EAAE,GAAG,IAAK,CAAC,CACxW,SAASypB,GAAG1pB,EAAEI,GAAG,IAAI,IAAIJ,EAAEwC,QAAQ,KAAK,MAAM,kBAAkBpC,EAAEupB,GAAG,OAAO3pB,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,IAAI4pB,GAAGpM,GAAQ,SAASqM,GAAG7pB,EAAEI,GAAuD,IAAId,EAAEqgB,GAA1D3f,EAAE,IAAIA,EAAEse,UAAU,KAAKte,EAAEse,SAASte,EAAEA,EAAEwc,eAA0Bpc,EAAE+V,EAAG/V,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEP,OAAOM,IAAI+hB,GAAG9hB,EAAED,GAAGH,EAAEV,EAAE,CAAC,SAASwqB,KAAK,CACjb,SAASC,GAAG/pB,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqB+B,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAO/B,EAAEyc,eAAezc,EAAEgqB,IAAI,CAAC,MAAM5pB,GAAG,OAAOJ,EAAEgqB,IAAI,CAAC,CAAC,SAASC,GAAGjqB,GAAG,KAAKA,GAAGA,EAAE+d,YAAY/d,EAAEA,EAAE+d,WAAW,OAAO/d,CAAC,CAAC,SAASkqB,GAAGlqB,EAAEI,GAAG,IAAwBD,EAApBb,EAAE2qB,GAAGjqB,GAAO,IAAJA,EAAE,EAAYV,GAAG,CAAC,GAAG,IAAIA,EAAEgf,SAAS,CAA0B,GAAzBne,EAAEH,EAAEV,EAAEie,YAAY1d,OAAUG,GAAGI,GAAGD,GAAGC,EAAE,MAAM,CAACoB,KAAKlC,EAAEoB,OAAON,EAAEJ,GAAGA,EAAEG,CAAC,CAACH,EAAE,CAAC,KAAKV,GAAG,CAAC,GAAGA,EAAE6qB,YAAY,CAAC7qB,EAAEA,EAAE6qB,YAAY,MAAMnqB,CAAC,CAACV,EAAEA,EAAE8hB,UAAU,CAAC9hB,OAAE,CAAM,CAACA,EAAE2qB,GAAG3qB,EAAE,CAAC,CAC/b,SAAS8qB,GAAGpqB,EAAEI,GAAG,SAAOJ,IAAGI,KAAEJ,IAAII,KAAKJ,GAAG,IAAIA,EAAEse,YAAYle,GAAG,IAAIA,EAAEke,SAAS8L,GAAGpqB,EAAEI,EAAEghB,YAAY,aAAaphB,EAAEA,EAAEqqB,SAASjqB,KAAGJ,EAAEsqB,4BAAwD,GAA7BtqB,EAAEsqB,wBAAwBlqB,KAAY,CAAC,SAASmqB,KAAK,IAAI,IAAIvqB,EAAEiC,OAAO7B,EAAE2pB,KAAK3pB,aAAaJ,EAAEwqB,mBAAmB,CAAC,IAAI,IAAIlrB,EAAE,kBAAkBc,EAAEqqB,cAAc5gB,SAAS6gB,IAAI,CAAC,MAAMvqB,GAAGb,GAAE,CAAE,CAAC,IAAGA,EAAyB,MAAMc,EAAE2pB,IAA/B/pB,EAAEI,EAAEqqB,eAAgC1oB,SAAS,CAAC,OAAO3B,CAAC,CAC7Y,SAASuqB,GAAG3qB,GAAG,IAAII,EAAEJ,GAAGA,EAAEkb,UAAUlb,EAAEkb,SAASjD,cAAc,OAAO7X,IAAI,UAAUA,IAAI,SAASJ,EAAEqV,MAAM,WAAWrV,EAAEqV,MAAM,QAAQrV,EAAEqV,MAAM,QAAQrV,EAAEqV,MAAM,aAAarV,EAAEqV,OAAO,aAAajV,GAAG,SAASJ,EAAE4qB,gBAAgB,CAAC,IAAIC,GAAG,IAAIC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGnrB,EAAEI,GAAG,OAAOJ,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW,QAAQI,EAAEgrB,UAAU,OAAM,CAAE,CAC/X,SAASC,GAAGrrB,EAAEI,GAAG,MAAM,aAAaJ,GAAG,WAAWA,GAAG,aAAaA,GAAG,kBAAkBI,EAAE6E,UAAU,kBAAkB7E,EAAE6E,UAAU,kBAAkB7E,EAAE8c,yBAAyB,OAAO9c,EAAE8c,yBAAyB,MAAM9c,EAAE8c,wBAAwBoO,MAAM,CAAC,IAAIC,GAAG,oBAAoBpoB,WAAWA,gBAAW,EAAOqoB,GAAG,oBAAoBloB,aAAaA,kBAAa,EAAO,SAASmoB,GAAGzrB,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAEmqB,YAAY,CAAC,IAAI/pB,EAAEJ,EAAEse,SAAS,GAAG,IAAIle,GAAG,IAAIA,EAAE,KAAK,CAAC,OAAOJ,CAAC,CACnc,SAAS0rB,GAAG1rB,GAAGA,EAAEA,EAAE2rB,gBAAgB,IAAI,IAAIvrB,EAAE,EAAEJ,GAAG,CAAC,GAAG,IAAIA,EAAEse,SAAS,CAAC,IAAIhf,EAAEU,EAAE4rB,KAAK,GAAGtsB,IAAIurB,IAAIvrB,IAAI0rB,IAAI1rB,IAAIyrB,GAAG,CAAC,GAAG,IAAI3qB,EAAE,OAAOJ,EAAEI,GAAG,MAAMd,IAAIwrB,IAAI1qB,GAAG,CAACJ,EAAEA,EAAE2rB,eAAe,CAAC,OAAO,IAAI,CAAC,IAAIE,GAAGnnB,KAAKyJ,SAAS1J,SAAS,IAAIR,MAAM,GAAG6nB,GAAG,2BAA2BD,GAAGE,GAAG,wBAAwBF,GAAGG,GAAG,qBAAqBH,GACvT,SAAS5J,GAAGjiB,GAAG,IAAII,EAAEJ,EAAE8rB,IAAI,GAAG1rB,EAAE,OAAOA,EAAE,IAAI,IAAId,EAAEU,EAAEohB,WAAW9hB,GAAG,CAAC,GAAGc,EAAEd,EAAE0sB,KAAK1sB,EAAEwsB,IAAI,CAAe,GAAdxsB,EAAEc,EAAEyf,UAAa,OAAOzf,EAAEggB,OAAO,OAAO9gB,GAAG,OAAOA,EAAE8gB,MAAM,IAAIpgB,EAAE0rB,GAAG1rB,GAAG,OAAOA,GAAG,CAAC,GAAGV,EAAEU,EAAE8rB,IAAI,OAAOxsB,EAAEU,EAAE0rB,GAAG1rB,EAAE,CAAC,OAAOI,CAAC,CAAKd,GAAJU,EAAEV,GAAM8hB,UAAU,CAAC,OAAO,IAAI,CAAC,SAASsC,GAAG1jB,GAAkB,QAAfA,EAAEA,EAAE8rB,KAAK9rB,EAAEgsB,MAAc,IAAIhsB,EAAE0a,KAAK,IAAI1a,EAAE0a,KAAK,KAAK1a,EAAE0a,KAAK,IAAI1a,EAAE0a,IAAI,KAAK1a,CAAC,CAAC,SAASisB,GAAGjsB,GAAG,GAAG,IAAIA,EAAE0a,KAAK,IAAI1a,EAAE0a,IAAI,OAAO1a,EAAE2W,UAAU,MAAM3M,MAAM/J,EAAE,IAAK,CAAC,SAASisB,GAAGlsB,GAAG,OAAOA,EAAE+rB,KAAK,IAAI,CACtb,SAASI,GAAGnsB,GAAG,GAAGA,EAAEA,EAAE+a,aAAa/a,GAAG,IAAIA,EAAE0a,KAAK,OAAO1a,GAAI,IAAI,CAChE,SAASosB,GAAGpsB,EAAEI,GAAG,IAAId,EAAEU,EAAE2W,UAAU,IAAIrX,EAAE,OAAO,KAAK,IAAIa,EAAE8U,EAAG3V,GAAG,IAAIa,EAAE,OAAO,KAAKb,EAAEa,EAAEC,GAAGJ,EAAE,OAAOI,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBD,GAAGA,EAAE6c,YAAqB7c,IAAI,YAAbH,EAAEA,EAAEqV,OAAuB,UAAUrV,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGG,EAAE,MAAMH,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGV,GAAG,oBAAoBA,EAAE,MAAM0K,MAAM/J,EAAE,IACjgBG,SAASd,IAAI,OAAOA,CAAC,CAAC,SAAS+sB,GAAGrsB,EAAEI,EAAEd,IAAMc,EAAEgsB,GAAGpsB,EAAEV,EAAEgtB,eAAevW,wBAAwB3V,OAAId,EAAEqhB,mBAAmBJ,GAAGjhB,EAAEqhB,mBAAmBvgB,GAAGd,EAAEshB,mBAAmBL,GAAGjhB,EAAEshB,mBAAmB5gB,GAAE,CAAC,SAASusB,GAAGvsB,GAAG,GAAGA,GAAGA,EAAEssB,eAAevW,wBAAwB,CAAC,IAAI,IAAI3V,EAAEJ,EAAEwsB,YAAYltB,EAAE,GAAGc,GAAGd,EAAEkS,KAAKpR,GAAGA,EAAE+rB,GAAG/rB,GAAG,IAAIA,EAAEd,EAAEO,OAAO,EAAEO,KAAKisB,GAAG/sB,EAAEc,GAAG,WAAWJ,GAAG,IAAII,EAAE,EAAEA,EAAEd,EAAEO,OAAOO,IAAIisB,GAAG/sB,EAAEc,GAAG,UAAUJ,EAAE,CAAC,CACzY,SAASysB,GAAGzsB,EAAEI,EAAEd,GAAGU,GAAGV,GAAGA,EAAEgtB,eAAerW,mBAAmB7V,EAAEgsB,GAAGpsB,EAAEV,EAAEgtB,eAAerW,qBAAqB3W,EAAEqhB,mBAAmBJ,GAAGjhB,EAAEqhB,mBAAmBvgB,GAAGd,EAAEshB,mBAAmBL,GAAGjhB,EAAEshB,mBAAmB5gB,GAAG,CAAC,SAAS0sB,GAAG1sB,GAAGA,GAAGA,EAAEssB,eAAerW,kBAAkBwW,GAAGzsB,EAAEwsB,YAAY,KAAKxsB,EAAE,CAAC,SAAS2sB,GAAG3sB,GAAGwgB,GAAGxgB,EAAEusB,GAAG,CAAC,IAAIK,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACxU,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAI9sB,EAAkBG,EAAhBC,EAAEysB,GAAGvtB,EAAEc,EAAEP,OAAShB,EAAE,UAAU+tB,GAAGA,GAAG9mB,MAAM8mB,GAAGrP,YAAYna,EAAEvE,EAAEgB,OAAO,IAAIG,EAAE,EAAEA,EAAEV,GAAGc,EAAEJ,KAAKnB,EAAEmB,GAAGA,KAAK,IAAIgD,EAAE1D,EAAEU,EAAE,IAAIG,EAAE,EAAEA,GAAG6C,GAAG5C,EAAEd,EAAEa,KAAKtB,EAAEuE,EAAEjD,GAAGA,KAAK,OAAO2sB,GAAGjuB,EAAEoF,MAAMjE,EAAE,EAAEG,EAAE,EAAEA,OAAE,EAAO,CAAC,SAAS6sB,KAAK,OAAM,CAAE,CAAC,SAASC,KAAK,OAAM,CAAE,CACpQ,SAASC,GAAEltB,EAAEI,EAAEd,EAAEa,GAA4F,IAAI,IAAItB,KAAjG0E,KAAK+oB,eAAetsB,EAAEuD,KAAKipB,YAAYpsB,EAAEmD,KAAKke,YAAYniB,EAAEU,EAAEuD,KAAKa,YAAY+oB,UAAyBntB,EAAED,eAAelB,MAAMuB,EAAEJ,EAAEnB,IAAI0E,KAAK1E,GAAGuB,EAAEd,GAAG,WAAWT,EAAE0E,KAAKqF,OAAOzI,EAAEoD,KAAK1E,GAAGS,EAAET,IAAgI,OAA5H0E,KAAK6pB,oBAAoB,MAAM9tB,EAAE+tB,iBAAiB/tB,EAAE+tB,kBAAiB,IAAK/tB,EAAEguB,aAAaN,GAAGC,GAAG1pB,KAAKsd,qBAAqBoM,GAAU1pB,IAAI,CAGzF,SAASgqB,GAAGvtB,EAAEI,EAAEd,EAAEa,GAAG,GAAGoD,KAAKiqB,UAAU3tB,OAAO,CAAC,IAAIhB,EAAE0E,KAAKiqB,UAAU3L,MAA2B,OAArBte,KAAKnE,KAAKP,EAAEmB,EAAEI,EAAEd,EAAEa,GAAUtB,CAAC,CAAC,OAAO,IAAI0E,KAAKvD,EAAEI,EAAEd,EAAEa,EAAE,CAC/X,SAASstB,GAAGztB,GAAG,KAAKA,aAAauD,MAAM,MAAMyG,MAAM/J,EAAE,MAAMD,EAAE0tB,aAAa,GAAGnqB,KAAKiqB,UAAU3tB,QAAQ0D,KAAKiqB,UAAUhc,KAAKxR,EAAE,CAAC,SAAS2tB,GAAG3tB,GAAGA,EAAEwtB,UAAU,GAAGxtB,EAAE4tB,UAAUL,GAAGvtB,EAAE+gB,QAAQ0M,EAAE,CAHpLzuB,EAAEkuB,GAAEptB,UAAU,CAAC+tB,eAAe,WAAWtqB,KAAK8pB,kBAAiB,EAAG,IAAIrtB,EAAEuD,KAAKke,YAAYzhB,IAAIA,EAAE6tB,eAAe7tB,EAAE6tB,iBAAiB,mBAAmB7tB,EAAEstB,cAActtB,EAAEstB,aAAY,GAAI/pB,KAAK6pB,mBAAmBJ,GAAG,EAAEc,gBAAgB,WAAW,IAAI9tB,EAAEuD,KAAKke,YAAYzhB,IAAIA,EAAE8tB,gBAAgB9tB,EAAE8tB,kBAAkB,mBAAmB9tB,EAAE+tB,eAAe/tB,EAAE+tB,cAAa,GAAIxqB,KAAKsd,qBAAqBmM,GAAG,EAAEgB,QAAQ,WAAWzqB,KAAKud,aAAakM,EAAE,EAAElM,aAAamM,GAAGS,WAAW,WAAW,IACpdttB,EADwdJ,EAAEuD,KAAKa,YAAY+oB,UACze,IAAI/sB,KAAKJ,EAAEuD,KAAKnD,GAAG,KAAKmD,KAAKke,YAAYle,KAAKipB,YAAYjpB,KAAK+oB,eAAe,KAAK/oB,KAAKsd,qBAAqBtd,KAAK6pB,mBAAmBH,GAAG1pB,KAAKqd,mBAAmBrd,KAAKod,mBAAmB,IAAI,IAAIuM,GAAEC,UAAU,CAAC9X,KAAK,KAAKzM,OAAO,KAAK0M,cAAc,WAAW,OAAO,IAAI,EAAE2Y,WAAW,KAAKC,QAAQ,KAAKC,WAAW,KAAKC,UAAU,SAASpuB,GAAG,OAAOA,EAAEouB,WAAWvpB,KAAKC,KAAK,EAAEuoB,iBAAiB,KAAKgB,UAAU,MAC9YnB,GAAEoB,OAAO,SAAStuB,GAAG,SAASI,IAAI,CAAC,SAASd,IAAI,OAAOa,EAAE8C,MAAMM,KAAK3D,UAAU,CAAC,IAAIO,EAAEoD,KAAKnD,EAAEN,UAAUK,EAAEL,UAAU,IAAIjB,EAAE,IAAIuB,EAAmH,OAAjHpB,EAAEH,EAAES,EAAEQ,WAAWR,EAAEQ,UAAUjB,EAAES,EAAEQ,UAAUsE,YAAY9E,EAAEA,EAAE6tB,UAAUnuB,EAAE,CAAC,EAAEmB,EAAEgtB,UAAUntB,GAAGV,EAAEgvB,OAAOnuB,EAAEmuB,OAAOX,GAAGruB,GAAUA,CAAC,EAAEquB,GAAGT,IACvE,IAAIqB,GAAGrB,GAAEoB,OAAO,CAAC1C,KAAK,OAAO4C,GAAGtB,GAAEoB,OAAO,CAAC1C,KAAK,OAAO6C,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAGpY,GAAI,qBAAqBrU,OAAO0sB,GAAG,KAAKrY,GAAI,iBAAiBvU,WAAW4sB,GAAG5sB,SAAS6sB,cAClV,IAAIC,GAAGvY,GAAI,cAAcrU,SAAS0sB,GAAGG,GAAGxY,KAAMoY,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAII,GAAG9mB,OAAOG,aAAa,IAAI4mB,GAAG,CAACC,YAAY,CAAClZ,wBAAwB,CAAC8O,QAAQ,gBAAgBC,SAAS,wBAAwB1O,aAAa,CAAC,iBAAiB,WAAW,YAAY,UAAU8Y,eAAe,CAACnZ,wBAAwB,CAAC8O,QAAQ,mBAAmBC,SAAS,2BAA2B1O,aAAa,uDAAuD7N,MAAM,MAAM4mB,iBAAiB,CAACpZ,wBAAwB,CAAC8O,QAAQ,qBAC7eC,SAAS,6BAA6B1O,aAAa,yDAAyD7N,MAAM,MAAM6mB,kBAAkB,CAACrZ,wBAAwB,CAAC8O,QAAQ,sBAAsBC,SAAS,8BAA8B1O,aAAa,0DAA0D7N,MAAM,OAAO8mB,IAAG,EAChU,SAASC,GAAGtvB,EAAEI,GAAG,OAAOJ,GAAG,IAAK,QAAQ,OAAO,IAAIyuB,GAAGjsB,QAAQpC,EAAEmvB,SAAS,IAAK,UAAU,OAAO,MAAMnvB,EAAEmvB,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,OAAO,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAASC,GAAGxvB,GAAc,MAAM,kBAAjBA,EAAEA,EAAEyvB,SAAkC,SAASzvB,EAAEA,EAAE4rB,KAAK,IAAI,CAAC,IAAI8D,IAAG,EAE1Q,IAAIC,GAAG,CAAC9Z,WAAWmZ,GAAGpZ,cAAc,SAAS5V,EAAEI,EAAEd,EAAEa,GAAG,IAAItB,EAAE,GAAG6vB,GAAGtuB,EAAE,CAAC,OAAOJ,GAAG,IAAK,mBAAmB,IAAIoD,EAAE4rB,GAAGG,iBAAiB,MAAM/uB,EAAE,IAAK,iBAAiBgD,EAAE4rB,GAAGE,eAAe,MAAM9uB,EAAE,IAAK,oBAAoBgD,EAAE4rB,GAAGI,kBAAkB,MAAMhvB,EAAEgD,OAAE,CAAM,MAAMssB,GAAGJ,GAAGtvB,EAAEV,KAAK8D,EAAE4rB,GAAGE,gBAAgB,YAAYlvB,GAAG,MAAMV,EAAEiwB,UAAUnsB,EAAE4rB,GAAGG,kBAClL,OADoM/rB,GAAG0rB,IAAI,OAAOxvB,EAAEswB,SAASF,IAAItsB,IAAI4rB,GAAGG,iBAAiB/rB,IAAI4rB,GAAGE,gBAAgBQ,KAAK7wB,EAAEkuB,OAAYF,GAAG,UAARD,GAAGzsB,GAAkBysB,GAAG9mB,MAAM8mB,GAAGrP,YAAYmS,IAAG,IAAKtsB,EAAEmrB,GAAGX,UAAUxqB,EACzfhD,EAAEd,EAAEa,GAAGtB,EAAEuE,EAAEwoB,KAAK/sB,EAAW,QAARA,EAAE2wB,GAAGlwB,MAAc8D,EAAEwoB,KAAK/sB,GAAI8tB,GAAGvpB,GAAGvE,EAAEuE,GAAGvE,EAAE,MAAMmB,EAAE6uB,GAHuM,SAAY7uB,EAAEI,GAAG,OAAOJ,GAAG,IAAK,iBAAiB,OAAOwvB,GAAGpvB,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEyvB,MAAa,MAAKR,IAAG,EAAUN,IAAG,IAAK,YAAY,OAAO/uB,EAAEI,EAAEwrB,QAASmD,IAAIM,GAAG,KAAKrvB,EAAE,QAAQ,OAAO,KAAK,CAGrY8vB,CAAG9vB,EAAEV,GAF9E,SAAYU,EAAEI,GAAG,GAAGsvB,GAAG,MAAM,mBAAmB1vB,IAAI0uB,IAAIY,GAAGtvB,EAAEI,IAAIJ,EAAE+sB,KAAKD,GAAGD,GAAGD,GAAG,KAAK8C,IAAG,EAAG1vB,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKI,EAAE2vB,SAAS3vB,EAAE4vB,QAAQ5vB,EAAE6vB,UAAU7vB,EAAE2vB,SAAS3vB,EAAE4vB,OAAO,CAAC,GAAG5vB,EAAE8vB,MAAM,EAAE9vB,EAAE8vB,KAAKrwB,OAAO,OAAOO,EAAE8vB,KAAK,GAAG9vB,EAAEyvB,MAAM,OAAO5nB,OAAOG,aAAahI,EAAEyvB,MAAM,CAAC,OAAO,KAAK,IAAK,iBAAiB,OAAOf,IAAI,OAAO1uB,EAAEwvB,OAAO,KAAKxvB,EAAEwrB,KAAyB,CAEtTuE,CAAGnwB,EAAEV,MAAKc,EAAEouB,GAAGZ,UAAUoB,GAAGC,YAAY7uB,EAAEd,EAAEa,IAAKyrB,KAAK5rB,EAAE2sB,GAAGvsB,IAAIA,EAAE,KAAY,OAAOvB,EAAEuB,EAAE,OAAOA,EAAEvB,EAAE,CAACA,EAAEuB,EAAE,GAAGgwB,GAAG,CAACrhB,OAAM,EAAGshB,MAAK,EAAGC,UAAS,EAAG,kBAAiB,EAAGC,OAAM,EAAGC,OAAM,EAAG/lB,QAAO,EAAGgmB,UAAS,EAAGC,OAAM,EAAGC,QAAO,EAAGC,KAAI,EAAGC,MAAK,EAAGC,MAAK,EAAGC,KAAI,EAAGC,MAAK,GAAI,SAASC,GAAGjxB,GAAG,IAAII,EAAEJ,GAAGA,EAAEkb,UAAUlb,EAAEkb,SAASjD,cAAc,MAAM,UAAU7X,IAAIgwB,GAAGpwB,EAAEqV,MAAM,aAAajV,CAAO,CACnc,IAAI8wB,GAAG,CAACC,OAAO,CAACpb,wBAAwB,CAAC8O,QAAQ,WAAWC,SAAS,mBAAmB1O,aAAa,8DAA8D7N,MAAM,OAAO,SAAS6oB,GAAGpxB,EAAEI,EAAEd,GAA8D,OAA3DU,EAAEktB,GAAEU,UAAUsD,GAAGC,OAAOnxB,EAAEI,EAAEd,IAAK+V,KAAK,SAASuB,EAAGtX,GAAGqtB,GAAG3sB,GAAUA,CAAC,CAAC,IAAIqxB,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGvxB,GAAGghB,GAAGhhB,EAAE,CAAC,SAASwxB,GAAGxxB,GAAe,GAAG0b,GAATuQ,GAAGjsB,IAAY,OAAOA,CAAC,CAAC,SAASyxB,GAAGzxB,EAAEI,GAAG,GAAG,WAAWJ,EAAE,OAAOI,CAAC,CAAC,IAAIsxB,IAAG,EAC9Y,SAASC,KAAKN,KAAKA,GAAGO,YAAY,mBAAmBC,IAAIP,GAAGD,GAAG,KAAK,CAAC,SAASQ,GAAG7xB,GAAG,GAAG,UAAUA,EAAE8X,cAAc0Z,GAAGF,IAAI,GAAGtxB,EAAEoxB,GAAGE,GAAGtxB,EAAEihB,GAAGjhB,IAAIkX,EAAG8J,GAAGhhB,OAAO,CAACkX,GAAG,EAAG,IAAIJ,EAAGya,GAAGvxB,EAAE,CAAC,QAAQkX,GAAG,EAAGE,GAAI,CAAC,CAAC,CAAC,SAAS0a,GAAG9xB,EAAEI,EAAEd,GAAG,UAAUU,GAAG2xB,KAAUL,GAAGhyB,GAAR+xB,GAAGjxB,GAAU2xB,YAAY,mBAAmBF,KAAK,SAAS7xB,GAAG2xB,IAAI,CAAC,SAASK,GAAGhyB,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOwxB,GAAGF,GAAG,CAAC,SAASW,GAAGjyB,EAAEI,GAAG,GAAG,UAAUJ,EAAE,OAAOwxB,GAAGpxB,EAAE,CAAC,SAAS8xB,GAAGlyB,EAAEI,GAAG,GAAG,UAAUJ,GAAG,WAAWA,EAAE,OAAOwxB,GAAGpxB,EAAE,CADjFkW,IAAKob,GAAGrQ,GAAG,YAAYtf,SAAS6sB,cAAc,EAAE7sB,SAAS6sB,eAE1c,IAAIuD,GAAG,CAACtc,WAAWqb,GAAGkB,uBAAuBV,GAAG9b,cAAc,SAAS5V,EAAEI,EAAEd,EAAEa,GAAG,IAAItB,EAAEuB,EAAE6rB,GAAG7rB,GAAG6B,OAAOmB,EAAEvE,EAAEqc,UAAUrc,EAAEqc,SAASjD,cAAc,GAAG,WAAW7U,GAAG,UAAUA,GAAG,SAASvE,EAAEwW,KAAK,IAAIrS,EAAEyuB,QAAQ,GAAGR,GAAGpyB,GAAG,GAAG6yB,GAAG1uB,EAAEkvB,OAAO,CAAClvB,EAAEgvB,GAAG,IAAI1xB,EAAEwxB,EAAE,MAAM1uB,EAAEvE,EAAEqc,WAAW,UAAU9X,EAAE6U,gBAAgB,aAAapZ,EAAEwW,MAAM,UAAUxW,EAAEwW,QAAQrS,EAAEivB,IAAI,GAAGjvB,IAAIA,EAAEA,EAAEhD,EAAEI,IAAI,OAAOgxB,GAAGpuB,EAAE1D,EAAEa,GAAGG,GAAGA,EAAEN,EAAEnB,EAAEuB,GAAG,SAASJ,IAAIA,EAAEnB,EAAEkd,gBAAgB/b,EAAEmc,YAAY,WAAWtd,EAAEwW,MAAMiH,GAAGzd,EAAE,SAASA,EAAEiH,MAAM,GAAGusB,GAAGnF,GAAEoB,OAAO,CAACgE,KAAK,KAAK7C,OAAO,OACrf8C,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAG5yB,GAAG,IAAII,EAAEmD,KAAKke,YAAY,OAAOrhB,EAAEyyB,iBAAiBzyB,EAAEyyB,iBAAiB7yB,MAAIA,EAAEuyB,GAAGvyB,OAAMI,EAAEJ,EAAK,CAAC,SAAS8yB,KAAK,OAAOF,EAAE,CACrM,IAAIG,GAAG,EAAEC,GAAG,EAAEC,IAAG,EAAGC,IAAG,EAAGC,GAAGd,GAAG/D,OAAO,CAAC8E,QAAQ,KAAKC,QAAQ,KAAKC,QAAQ,KAAKC,QAAQ,KAAKC,MAAM,KAAKC,MAAM,KAAK1D,QAAQ,KAAK2D,SAAS,KAAK1D,OAAO,KAAKC,QAAQ,KAAK4C,iBAAiBC,GAAGa,OAAO,KAAKC,QAAQ,KAAKC,cAAc,SAAS7zB,GAAG,OAAOA,EAAE6zB,gBAAgB7zB,EAAE8zB,cAAc9zB,EAAEkhB,WAAWlhB,EAAE+zB,UAAU/zB,EAAE8zB,YAAY,EAAEE,UAAU,SAASh0B,GAAG,GAAG,cAAcA,EAAE,OAAOA,EAAEg0B,UAAU,IAAI5zB,EAAE2yB,GAAgB,OAAbA,GAAG/yB,EAAEozB,QAAeH,GAAG,cAAcjzB,EAAEqV,KAAKrV,EAAEozB,QAAQhzB,EAAE,GAAG6yB,IAAG,EAAG,EAAE,EAAEgB,UAAU,SAASj0B,GAAG,GAAG,cAAcA,EAAE,OAAOA,EAAEi0B,UAC3f,IAAI7zB,EAAE4yB,GAAgB,OAAbA,GAAGhzB,EAAEqzB,QAAeH,GAAG,cAAclzB,EAAEqV,KAAKrV,EAAEqzB,QAAQjzB,EAAE,GAAG8yB,IAAG,EAAG,EAAE,IAAIgB,GAAGf,GAAG7E,OAAO,CAAC9K,UAAU,KAAK3R,MAAM,KAAKC,OAAO,KAAKqiB,SAAS,KAAKC,mBAAmB,KAAKC,MAAM,KAAKC,MAAM,KAAKC,MAAM,KAAKC,YAAY,KAAKC,UAAU,OAAOC,GAAG,CAACC,WAAW,CAAC1e,iBAAiB,eAAeG,aAAa,CAAC,WAAW,cAAcwe,WAAW,CAAC3e,iBAAiB,eAAeG,aAAa,CAAC,WAAW,cAAcye,aAAa,CAAC5e,iBAAiB,iBAAiBG,aAAa,CAAC,aAAa,gBAAgB0e,aAAa,CAAC7e,iBAAiB,iBACjhBG,aAAa,CAAC,aAAa,iBAAiB2e,GAAG,CAAClf,WAAW6e,GAAG9e,cAAc,SAAS5V,EAAEI,EAAEd,EAAEa,EAAEtB,GAAG,IAAIuE,EAAE,cAAcpD,GAAG,gBAAgBA,EAAEgD,EAAE,aAAahD,GAAG,eAAeA,EAAE,GAAGoD,GAAG,KAAO,GAAFvE,KAAQS,EAAEu0B,eAAev0B,EAAEw0B,eAAe9wB,IAAII,EAAE,OAAO,MAAKA,EAAEjD,EAAE8B,SAAS9B,EAAEA,GAAGiD,EAAEjD,EAAEqc,eAAepZ,EAAE4xB,aAAa5xB,EAAE6xB,aAAahzB,OAAUe,IAAMA,EAAE5C,EAAgD,QAA9CA,GAAGA,EAAEd,EAAEu0B,eAAev0B,EAAEy0B,WAAW9R,GAAG7hB,GAAG,QAA8BA,IAATwf,GAAGxf,IAAa,IAAIA,EAAEsa,KAAK,IAAIta,EAAEsa,OAAIta,EAAE,OAAW4C,EAAE,KAAK,GAAGA,IAAI5C,EAAE,OAAO,KAAK,GAAG,aAAaJ,GAAG,cACzeA,EAAG,IAAIQ,EAAE2yB,GAAO9vB,EAAEqxB,GAAGE,WAAev1B,EAAEq1B,GAAGC,WAAep1B,EAAE,YAAgB,eAAeS,GAAG,gBAAgBA,IAAEQ,EAAE0zB,GAAG7wB,EAAEqxB,GAAGI,aAAaz1B,EAAEq1B,GAAGG,aAAat1B,EAAE,WAAgM,GAAtLS,EAAE,MAAMgD,EAAEI,EAAE6oB,GAAGjpB,GAAGI,EAAE,MAAMhD,EAAEgD,EAAE6oB,GAAG7rB,IAAGiD,EAAE7C,EAAEotB,UAAUvqB,EAAEL,EAAE1D,EAAEa,IAAKkV,KAAK9V,EAAE,QAAQ8D,EAAEuF,OAAO5I,EAAEqD,EAAEwwB,cAAczwB,GAAE9D,EAAEkB,EAAEotB,UAAUvuB,EAAEe,EAAEd,EAAEa,IAAKkV,KAAK9V,EAAE,QAAQD,EAAEsJ,OAAOxF,EAAE9D,EAAEu0B,cAAc7zB,EAAMT,EAAEa,GAAND,EAAE6C,IAAYzD,EAAES,EAAE,CAAa,IAARX,EAAEE,EAAEyD,EAAE,EAAMhD,EAAhBQ,EAAEL,EAAkBH,EAAEA,EAAEmsB,GAAGnsB,GAAGgD,IAAQ,IAAJhD,EAAE,EAAMI,EAAEf,EAAEe,EAAEA,EAAE+rB,GAAG/rB,GAAGJ,IAAI,KAAK,EAAEgD,EAAEhD,GAAGQ,EAAE2rB,GAAG3rB,GAAGwC,IAAI,KAAK,EAAEhD,EAAEgD,GAAG3D,EAAE8sB,GAAG9sB,GAAGW,IAAI,KAAKgD,KAAK,CAAC,GAAGxC,IAAInB,GAAGmB,IAAInB,EAAEwgB,UAAU,MAAM7f,EAC3fQ,EAAE2rB,GAAG3rB,GAAGnB,EAAE8sB,GAAG9sB,EAAE,CAACmB,EAAE,IAAI,MAAMA,EAAE,KAAS,IAAJnB,EAAEmB,EAAMA,EAAE,GAAGL,GAAGA,IAAId,IAAqB,QAAjB2D,EAAE7C,EAAE0f,YAAuB7c,IAAI3D,IAAQmB,EAAEgR,KAAKrR,GAAGA,EAAEgsB,GAAGhsB,GAAG,IAAIA,EAAE,GAAGZ,GAAGA,IAAIF,IAAqB,QAAjB2D,EAAEzD,EAAEsgB,YAAuB7c,IAAI3D,IAAQc,EAAEqR,KAAKjS,GAAGA,EAAE4sB,GAAG5sB,GAAG,IAAIA,EAAE,EAAEA,EAAEiB,EAAEX,OAAON,IAAIktB,GAAGjsB,EAAEjB,GAAG,UAAU8D,GAAG,IAAI9D,EAAEY,EAAEN,OAAO,EAAEN,KAAKktB,GAAGtsB,EAAEZ,GAAG,WAAWD,GAAG,OAAO,KAAO,GAAFT,GAAM,CAACwE,GAAG,CAACA,EAAE/D,EAAE,GAAmE,IAAI41B,GAAG,oBAAoBx1B,OAAOiqB,GAAGjqB,OAAOiqB,GAA5G,SAAY3pB,EAAEI,GAAG,OAAOJ,IAAII,IAAI,IAAIJ,GAAG,EAAEA,IAAI,EAAEI,IAAIJ,IAAIA,GAAGI,IAAIA,CAAC,EAAmD+0B,GAAGz1B,OAAOI,UAAUC,eAC7b,SAASq1B,GAAGp1B,EAAEI,GAAG,GAAG80B,GAAGl1B,EAAEI,GAAG,OAAM,EAAG,GAAG,kBAAkBJ,GAAG,OAAOA,GAAG,kBAAkBI,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAId,EAAEI,OAAO+I,KAAKzI,GAAGG,EAAET,OAAO+I,KAAKrI,GAAG,GAAGd,EAAEO,SAASM,EAAEN,OAAO,OAAM,EAAG,IAAIM,EAAE,EAAEA,EAAEb,EAAEO,OAAOM,IAAI,IAAIg1B,GAAG/1B,KAAKgB,EAAEd,EAAEa,MAAM+0B,GAAGl1B,EAAEV,EAAEa,IAAIC,EAAEd,EAAEa,KAAK,OAAM,EAAG,OAAM,CAAE,CACtQ,IAAIk1B,GAAG/e,GAAI,iBAAiBvU,UAAU,IAAIA,SAAS6sB,aAAa0G,GAAG,CAACC,OAAO,CAACxf,wBAAwB,CAAC8O,QAAQ,WAAWC,SAAS,mBAAmB1O,aAAa,iFAAiF7N,MAAM,OAAOitB,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC1R,SAASC,GAAG51B,EAAEI,GAAG,IAAId,EAAEc,EAAE6B,SAAS7B,EAAEA,EAAE2B,SAAS,IAAI3B,EAAEke,SAASle,EAAEA,EAAEoc,cAAc,OAAGmZ,IAAI,MAAMH,IAAIA,KAAKzL,GAAGzqB,GAAU,MAAU,mBAALA,EAAEk2B,KAAyB7K,GAAGrrB,GAAGA,EAAE,CAACu2B,MAAMv2B,EAAEw2B,eAAeC,IAAIz2B,EAAE02B,cAAuF12B,EAAE,CAAC22B,YAA3E32B,GAAGA,EAAEkd,eAAeld,EAAEkd,cAAcwY,aAAa/yB,QAAQi0B,gBAA+BD,WAAWE,aAAa72B,EAAE62B,aAAaC,UAAU92B,EAAE82B,UAAUC,YAAY/2B,EAAE+2B,aAAqBX,IAAIN,GAAGM,GAAGp2B,GAAG,MAAMo2B,GAAGp2B,GAAEU,EAAEktB,GAAEU,UAAU0H,GAAGC,OAAOE,GAAGz1B,EAAEI,IAAKiV,KAAK,SAASrV,EAAE4I,OAAO4sB,GAAG7I,GAAG3sB,GAAGA,GAAE,CAC5d,IAAIs2B,GAAG,CAACzgB,WAAWyf,GAAG1f,cAAc,SAAS5V,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,GAAmE,KAAKA,IAArEvE,EAAEuE,IAAIjD,EAAE8B,SAAS9B,EAAEA,EAAE4B,SAAS,IAAI5B,EAAEme,SAASne,EAAEA,EAAEqc,iBAA0B,CAACxc,EAAE,CAACnB,EAAE8gB,GAAG9gB,GAAGuE,EAAE+S,EAAGogB,SAAS,IAAI,IAAIvzB,EAAE,EAAEA,EAAEI,EAAEvD,OAAOmD,IAAI,IAAInE,EAAEsjB,IAAI/e,EAAEJ,IAAI,CAACnE,GAAE,EAAG,MAAMmB,CAAC,CAACnB,GAAE,CAAE,CAACuE,GAAGvE,CAAC,CAAC,GAAGuE,EAAE,OAAO,KAAsB,OAAjBvE,EAAEuB,EAAE6rB,GAAG7rB,GAAG6B,OAAcjC,GAAG,IAAK,SAAWixB,GAAGpyB,IAAI,SAASA,EAAE+rB,mBAAgB4K,GAAG32B,EAAE42B,GAAGr1B,EAAEs1B,GAAG,MAAK,MAAM,IAAK,OAAOA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAU,OAAOA,IAAG,EAAGC,GAAGt2B,EAAEa,GAAG,IAAK,kBAAkB,GAAGk1B,GAAG,MACxf,IAAK,UAAU,IAAK,QAAQ,OAAOO,GAAGt2B,EAAEa,GAAG,OAAO,IAAI,GAAGq2B,GAAGtJ,GAAEoB,OAAO,CAACmI,cAAc,KAAKC,YAAY,KAAKC,cAAc,OAAOC,GAAG1J,GAAEoB,OAAO,CAACuI,cAAc,SAAS72B,GAAG,MAAM,kBAAkBA,EAAEA,EAAE62B,cAAc50B,OAAO40B,aAAa,IAAIC,GAAGzE,GAAG/D,OAAO,CAACuF,cAAc,OAAO,SAASkD,GAAG/2B,GAAG,IAAII,EAAEJ,EAAEuvB,QAA+E,MAAvE,aAAavvB,EAAgB,KAAbA,EAAEA,EAAEg3B,WAAgB,KAAK52B,IAAIJ,EAAE,IAAKA,EAAEI,EAAE,KAAKJ,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAC,CACzY,IAAIi3B,GAAG,CAACC,IAAI,SAASC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAChf,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG1F,GAAG/D,OAAO,CAAChoB,IAAI,SAAStG,GAAG,GAAGA,EAAEsG,IAAI,CAAC,IAAIlG,EAAE62B,GAAGj3B,EAAEsG,MAAMtG,EAAEsG,IAAI,GAAG,iBAAiBlG,EAAE,OAAOA,CAAC,CAAC,MAAM,aAAaJ,EAAEqV,KAAc,MAARrV,EAAE+2B,GAAG/2B,IAAU,QAAQiI,OAAOG,aAAapI,GAAI,YAAYA,EAAEqV,MAAM,UAAUrV,EAAEqV,KAAKyiB,GAAG93B,EAAEuvB,UAAU,eAAe,EAAE,EAAE1lB,SAAS,KAAKkmB,QAAQ,KAAK2D,SAAS,KAAK1D,OAAO,KAAKC,QAAQ,KAAK+H,OAAO,KAAKpI,OAAO,KAAKiD,iBAAiBC,GAAGkE,SAAS,SAASh3B,GAAG,MAAM,aAC9eA,EAAEqV,KAAK0hB,GAAG/2B,GAAG,CAAC,EAAEuvB,QAAQ,SAASvvB,GAAG,MAAM,YAAYA,EAAEqV,MAAM,UAAUrV,EAAEqV,KAAKrV,EAAEuvB,QAAQ,CAAC,EAAEM,MAAM,SAAS7vB,GAAG,MAAM,aAAaA,EAAEqV,KAAK0hB,GAAG/2B,GAAG,YAAYA,EAAEqV,MAAM,UAAUrV,EAAEqV,KAAKrV,EAAEuvB,QAAQ,CAAC,IAAI0I,GAAG9E,GAAG7E,OAAO,CAAC4J,aAAa,OAAOC,GAAG9F,GAAG/D,OAAO,CAAC8J,QAAQ,KAAKC,cAAc,KAAKC,eAAe,KAAKtI,OAAO,KAAKC,QAAQ,KAAKF,QAAQ,KAAK2D,SAAS,KAAKb,iBAAiBC,KAAKyF,GAAGrL,GAAEoB,OAAO,CAACxW,aAAa,KAAK4e,YAAY,KAAKC,cAAc,OAAO6B,GAAGrF,GAAG7E,OAAO,CAACmK,OAAO,SAASz4B,GAAG,MAAM,WAAWA,EAAEA,EAAEy4B,OAAO,gBAClfz4B,GAAGA,EAAE04B,YAAY,CAAC,EAAEC,OAAO,SAAS34B,GAAG,MAAM,WAAWA,EAAEA,EAAE24B,OAAO,gBAAgB34B,GAAGA,EAAE44B,YAAY,eAAe54B,GAAGA,EAAE64B,WAAW,CAAC,EAAEC,OAAO,KAAKC,UAAU,OAAOC,GAAG,CAACnjB,WAAW2O,GAAG5O,cAAc,SAAS5V,EAAEI,EAAEd,EAAEa,GAAG,IAAItB,EAAE4lB,GAAGhZ,IAAIzL,GAAG,IAAInB,EAAE,OAAO,KAAK,OAAOmB,GAAG,IAAK,WAAW,GAAG,IAAI+2B,GAAGz3B,GAAG,OAAO,KAAK,IAAK,UAAU,IAAK,QAAQU,EAAE+3B,GAAG,MAAM,IAAK,OAAO,IAAK,QAAQ/3B,EAAE82B,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIx3B,EAAEq0B,OAAO,OAAO,KAAK,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc3zB,EACniBmzB,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOnzB,EAAEi4B,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAaj4B,EAAEm4B,GAAG,MAAM,KAAKhZ,GAAG,KAAKC,GAAG,KAAKC,GAAGrf,EAAEw2B,GAAG,MAAM,KAAKlX,GAAGtf,EAAEu4B,GAAG,MAAM,IAAK,SAASv4B,EAAEqyB,GAAG,MAAM,IAAK,QAAQryB,EAAEw4B,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQx4B,EAAE42B,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAY52B,EACzhBk0B,GAAG,MAAM,QAAQl0B,EAAEktB,GAA+B,OAANP,GAAvBvsB,EAAEJ,EAAE4tB,UAAU/uB,EAAEuB,EAAEd,EAAEa,IAAgBC,CAAC,GAAG,GAAGoV,EAAG,MAAMxL,MAAM/J,EAAE,MAAMuV,EAAG9P,MAAM5F,UAAUmE,MAAM7E,KAAK,0HAA0HmJ,MAAM,MAAMmN,IAAeT,EAAGiX,GAAGhX,EAATwO,GAAevO,EAAG8W,GAAG5V,EAAG,CAAC4iB,kBAAkBD,GAAGE,sBAAsBnE,GAAGoE,kBAAkBhH,GAAGiH,kBAAkB9C,GAAG+C,uBAAuB1J,KAAK,IAAI2J,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAEx5B,GAAG,EAAEu5B,KAAKv5B,EAAEsT,QAAQgmB,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAK,CAC3d,SAAS7lB,GAAE1T,EAAEI,GAAGm5B,KAAKD,GAAGC,IAAIv5B,EAAEsT,QAAQtT,EAAEsT,QAAQlT,CAAC,CAAC,IAAIq5B,GAAG,CAAC,EAAEC,GAAE,CAACpmB,QAAQmmB,IAAIE,GAAE,CAACrmB,SAAQ,GAAIsmB,GAAGH,GAAG,SAASI,GAAG75B,EAAEI,GAAG,IAAId,EAAEU,EAAEqV,KAAKykB,aAAa,IAAIx6B,EAAE,OAAOm6B,GAAG,IAAIt5B,EAAEH,EAAE2W,UAAU,GAAGxW,GAAGA,EAAE45B,8CAA8C35B,EAAE,OAAOD,EAAE65B,0CAA0C,IAAS52B,EAALvE,EAAE,CAAC,EAAI,IAAIuE,KAAK9D,EAAET,EAAEuE,GAAGhD,EAAEgD,GAAoH,OAAjHjD,KAAIH,EAAEA,EAAE2W,WAAYojB,4CAA4C35B,EAAEJ,EAAEg6B,0CAA0Cn7B,GAAUA,CAAC,CAAC,SAASo7B,GAAEj6B,GAAyB,OAAO,QAA7BA,EAAEA,EAAEk6B,yBAAmC,IAASl6B,CAAC,CACjf,SAASm6B,KAAKX,GAAEG,IAAGH,GAAEE,GAAE,CAAC,SAASU,GAAGp6B,EAAEI,EAAEd,GAAG,GAAGo6B,GAAEpmB,UAAUmmB,GAAG,MAAMzvB,MAAM/J,EAAE,MAAMyT,GAAEgmB,GAAEt5B,GAAGsT,GAAEimB,GAAEr6B,EAAE,CAAC,SAAS+6B,GAAGr6B,EAAEI,EAAEd,GAAG,IAAIa,EAAEH,EAAE2W,UAAgC,GAAtB3W,EAAEI,EAAE85B,kBAAqB,oBAAoB/5B,EAAEm6B,gBAAgB,OAAOh7B,EAAwB,IAAI,IAAIT,KAA9BsB,EAAEA,EAAEm6B,kBAAiC,KAAKz7B,KAAKmB,GAAG,MAAMgK,MAAM/J,EAAE,IAAIka,GAAG/Z,IAAI,UAAUvB,IAAI,OAAOG,EAAE,CAAC,EAAEM,EAAE,CAAC,EAAEa,EAAE,CAAC,SAASo6B,GAAGv6B,GAAyG,OAAtGA,GAAGA,EAAEA,EAAE2W,YAAY3W,EAAEw6B,2CAA2Cf,GAAGG,GAAGF,GAAEpmB,QAAQI,GAAEgmB,GAAE15B,GAAG0T,GAAEimB,GAAEA,GAAErmB,UAAe,CAAE,CACtb,SAASmnB,GAAGz6B,EAAEI,EAAEd,GAAG,IAAIa,EAAEH,EAAE2W,UAAU,IAAIxW,EAAE,MAAM6J,MAAM/J,EAAE,MAAMX,GAAGU,EAAEq6B,GAAGr6B,EAAEI,EAAEw5B,IAAIz5B,EAAEq6B,0CAA0Cx6B,EAAEw5B,GAAEG,IAAGH,GAAEE,IAAGhmB,GAAEgmB,GAAE15B,IAAIw5B,GAAEG,IAAGjmB,GAAEimB,GAAEr6B,EAAE,CAC1J,IAAIo7B,GAAGx3B,EAAE0gB,yBAAyB+W,GAAGz3B,EAAEmhB,0BAA0BuW,GAAG13B,EAAE23B,wBAAwBC,GAAG53B,EAAE63B,sBAAsBC,GAAG93B,EAAE+3B,aAAaC,GAAGh4B,EAAEi4B,iCAAiCC,GAAGl4B,EAAEm4B,2BAA2BC,GAAGp4B,EAAEiiB,8BAA8BoW,GAAGr4B,EAAEohB,wBAAwBkX,GAAGt4B,EAAEu4B,qBAAqBC,GAAGx4B,EAAEy4B,sBAAsBC,GAAG,CAAC,EAAEC,GAAG34B,EAAE44B,qBAAqBC,QAAG,IAASjB,GAAGA,GAAG,WAAW,EAAEkB,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAGC,GAAGnB,KAAKoB,GAAG,IAAID,GAAGnB,GAAG,WAAW,OAAOA,KAAKmB,EAAE,EACzc,SAASE,KAAK,OAAOnB,MAAM,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,QAAQ,MAAM1xB,MAAM/J,EAAE,MAAO,CAAC,SAASq8B,GAAGt8B,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAOo7B,GAAG,KAAK,GAAG,OAAOE,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOE,GAAG,QAAQ,MAAM1xB,MAAM/J,EAAE,MAAO,CAAC,SAASs8B,GAAGv8B,EAAEI,GAAW,OAARJ,EAAEs8B,GAAGt8B,GAAU06B,GAAG16B,EAAEI,EAAE,CAAC,SAASo8B,GAAGx8B,EAAEI,EAAEd,GAAW,OAARU,EAAEs8B,GAAGt8B,GAAU26B,GAAG36B,EAAEI,EAAEd,EAAE,CAAC,SAASm9B,GAAGz8B,GAA8C,OAA3C,OAAOg8B,IAAIA,GAAG,CAACh8B,GAAGi8B,GAAGtB,GAAGS,GAAGsB,KAAKV,GAAGxqB,KAAKxR,GAAU47B,EAAE,CAAC,SAASe,KAAK,GAAG,OAAOV,GAAG,CAAC,IAAIj8B,EAAEi8B,GAAGA,GAAG,KAAKrB,GAAG56B,EAAE,CAAC08B,IAAI,CACnf,SAASA,KAAK,IAAIR,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAIl8B,EAAE,EAAE,IAAI,IAAII,EAAE47B,GAAGO,GAAG,IAAG,WAAW,KAAKv8B,EAAEI,EAAEP,OAAOG,IAAI,CAAC,IAAIV,EAAEc,EAAEJ,GAAG,GAAGV,EAAEA,GAAE,SAAU,OAAOA,EAAE,CAAC,IAAG08B,GAAG,IAAI,CAAC,MAAM18B,GAAG,MAAM,OAAO08B,KAAKA,GAAGA,GAAG/3B,MAAMjE,EAAE,IAAI26B,GAAGS,GAAGuB,IAAIr9B,CAAE,CAAC,QAAQ48B,IAAG,CAAE,CAAC,CAAC,CAAC,SAASU,GAAG58B,EAAEI,EAAEd,GAAS,OAAO,YAAsC,IAAxB,WAAWU,EAAEI,EAAE,KAA1Cd,GAAG,IAA6C,IAAMA,CAAC,CAAC,SAASu9B,GAAG78B,EAAEI,GAAG,GAAGJ,GAAGA,EAAE88B,aAAyC,IAAI,IAAIx9B,KAAnCc,EAAEpB,EAAE,CAAC,EAAEoB,GAAGJ,EAAEA,EAAE88B,kBAA4B,IAAS18B,EAAEd,KAAKc,EAAEd,GAAGU,EAAEV,IAAI,OAAOc,CAAC,CAAC,IAAI28B,GAAG,CAACzpB,QAAQ,MAAM0pB,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAI,CACte,SAASI,GAAGp9B,GAAG,IAAII,EAAE28B,GAAGzpB,QAAQkmB,GAAEuD,IAAI/8B,EAAEqV,KAAKgoB,SAASC,cAAcl9B,CAAC,CAAC,SAASm9B,GAAGv9B,EAAEI,GAAG,KAAK,OAAOJ,GAAG,CAAC,IAAIV,EAAEU,EAAE6f,UAAU,GAAG7f,EAAEw9B,oBAAoBp9B,EAAEJ,EAAEw9B,oBAAoBp9B,EAAE,OAAOd,GAAGA,EAAEk+B,oBAAoBp9B,IAAId,EAAEk+B,oBAAoBp9B,OAAQ,MAAG,OAAOd,GAAGA,EAAEk+B,oBAAoBp9B,GAA+B,MAA7Bd,EAAEk+B,oBAAoBp9B,CAAY,CAACJ,EAAEA,EAAE+a,MAAM,CAAC,CAAC,SAAS0iB,GAAGz9B,EAAEI,GAAG48B,GAAGh9B,EAAEk9B,GAAGD,GAAG,KAAsB,QAAjBj9B,EAAEA,EAAEoW,eAAuB,OAAOpW,EAAE09B,eAAe19B,EAAE29B,gBAAgBv9B,IAAIw9B,IAAG,GAAI59B,EAAE09B,aAAa,KAAK,CACvc,SAASG,GAAG79B,EAAEI,GAAG,GAAG88B,KAAKl9B,IAAG,IAAKI,GAAG,IAAIA,EAAmG,GAA7F,kBAAkBA,GAAG,aAAaA,IAAE88B,GAAGl9B,EAAEI,EAAE,YAAWA,EAAE,CAACoO,QAAQxO,EAAE89B,aAAa19B,EAAE29B,KAAK,MAAS,OAAOd,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMhzB,MAAM/J,EAAE,MAAMg9B,GAAG78B,EAAE48B,GAAG5mB,aAAa,CAACunB,eAAe,EAAED,aAAat9B,EAAE49B,WAAW,KAAK,MAAMf,GAAGA,GAAGc,KAAK39B,EAAE,OAAOJ,EAAEs9B,aAAa,CAAC,IAAIW,IAAG,EAAG,SAASC,GAAGl+B,GAAGA,EAAEm+B,YAAY,CAACC,UAAUp+B,EAAEggB,cAAcqe,UAAU,KAAKC,OAAO,CAACC,QAAQ,MAAMC,QAAQ,KAAK,CAC9Z,SAASC,GAAGz+B,EAAEI,GAAGJ,EAAEA,EAAEm+B,YAAY/9B,EAAE+9B,cAAcn+B,IAAII,EAAE+9B,YAAY,CAACC,UAAUp+B,EAAEo+B,UAAUC,UAAUr+B,EAAEq+B,UAAUC,OAAOt+B,EAAEs+B,OAAOE,QAAQx+B,EAAEw+B,SAAS,CAAC,SAASE,GAAG1+B,EAAEI,GAAoF,OAAjFJ,EAAE,CAAC29B,eAAe39B,EAAE2+B,eAAev+B,EAAEsa,IAAI,EAAEkkB,QAAQ,KAAKC,SAAS,KAAKd,KAAK,OAAeA,KAAK/9B,CAAC,CAAC,SAAS8+B,GAAG9+B,EAAEI,GAAmB,GAAG,QAAnBJ,EAAEA,EAAEm+B,aAAwB,CAAY,IAAI7+B,GAAfU,EAAEA,EAAEs+B,QAAeC,QAAQ,OAAOj/B,EAAEc,EAAE29B,KAAK39B,GAAGA,EAAE29B,KAAKz+B,EAAEy+B,KAAKz+B,EAAEy+B,KAAK39B,GAAGJ,EAAEu+B,QAAQn+B,CAAC,CAAC,CACtY,SAAS2+B,GAAG/+B,EAAEI,GAAG,IAAId,EAAEU,EAAE6f,UAAU,OAAOvgB,GAAGm/B,GAAGn/B,EAAEU,GAAiC,QAAdV,GAAhBU,EAAEA,EAAEm+B,aAAgBE,YAAoBr+B,EAAEq+B,UAAUj+B,EAAE29B,KAAK39B,EAAEA,EAAE29B,KAAK39B,IAAIA,EAAE29B,KAAKz+B,EAAEy+B,KAAKz+B,EAAEy+B,KAAK39B,EAAE,CACpJ,SAAS4+B,GAAGh/B,EAAEI,EAAEd,EAAEa,GAAG,IAAItB,EAAEmB,EAAEm+B,YAAYF,IAAG,EAAG,IAAI76B,EAAEvE,EAAEw/B,UAAUr7B,EAAEnE,EAAEy/B,OAAOC,QAAQ,GAAG,OAAOv7B,EAAE,CAAC,GAAG,OAAOI,EAAE,CAAC,IAAI9C,EAAE8C,EAAE26B,KAAK36B,EAAE26B,KAAK/6B,EAAE+6B,KAAK/6B,EAAE+6B,KAAKz9B,CAAC,CAAC8C,EAAEJ,EAAEnE,EAAEy/B,OAAOC,QAAQ,KAAmB,QAAdj+B,EAAEN,EAAE6f,aAAqC,QAAhBvf,EAAEA,EAAE69B,eAAuB79B,EAAE+9B,UAAUr7B,GAAG,CAAC,GAAG,OAAOI,EAAE,CAAC9C,EAAE8C,EAAE26B,KAAK,IAAIv9B,EAAE3B,EAAEu/B,UAAU/6B,EAAE,EAAEhE,EAAE,KAAKE,EAAE,KAAKkB,EAAE,KAAK,GAAG,OAAOH,EAAW,IAAR,IAAI2+B,EAAE3+B,IAAI,CAAoB,IAAnB0C,EAAEi8B,EAAEtB,gBAAoBx9B,EAAE,CAAC,IAAI++B,EAAG,CAACvB,eAAesB,EAAEtB,eAAegB,eAAeM,EAAEN,eAAejkB,IAAIukB,EAAEvkB,IAAIkkB,QAAQK,EAAEL,QAAQC,SAASI,EAAEJ,SAASd,KAAK,MAAM,OAAOt9B,GAAGlB,EAAEkB,EACnfy+B,EAAG7/B,EAAEmB,GAAGC,EAAEA,EAAEs9B,KAAKmB,EAAGl8B,EAAEK,IAAIA,EAAEL,EAAE,KAAK,CAAC,OAAOvC,IAAIA,EAAEA,EAAEs9B,KAAK,CAACJ,eAAe,WAAWgB,eAAeM,EAAEN,eAAejkB,IAAIukB,EAAEvkB,IAAIkkB,QAAQK,EAAEL,QAAQC,SAASI,EAAEJ,SAASd,KAAK,OAAOoB,GAAGn8B,EAAEi8B,EAAEN,gBAAgB3+B,EAAE,CAAC,IAAIkT,EAAElT,EAAElB,EAAEmgC,EAAW,OAATj8B,EAAE5C,EAAE8+B,EAAG5/B,EAASR,EAAE4b,KAAK,KAAK,EAAc,GAAG,oBAAfxH,EAAEpU,EAAE8/B,SAAiC,CAACp+B,EAAE0S,EAAE9T,KAAK8/B,EAAG1+B,EAAEwC,GAAG,MAAMhD,CAAC,CAACQ,EAAE0S,EAAE,MAAMlT,EAAE,KAAK,EAAEkT,EAAE4M,WAAuB,KAAb5M,EAAE4M,UAAgB,GAAG,KAAK,EAAuD,GAAG,QAA5C9c,EAAE,oBAAdkQ,EAAEpU,EAAE8/B,SAAgC1rB,EAAE9T,KAAK8/B,EAAG1+B,EAAEwC,GAAGkQ,SAAe,IAASlQ,EAAE,MAAMhD,EAAEQ,EAAExB,EAAE,CAAC,EAAEwB,EAAEwC,GAAG,MAAMhD,EAAE,KAAK,EAAEi+B,IAAG,EAAG,CAAC,OAAOgB,EAAEJ,WAC5e7+B,EAAE8f,WAAW,GAAe,QAAZ9c,EAAEnE,EAAE2/B,SAAiB3/B,EAAE2/B,QAAQ,CAACS,GAAGj8B,EAAEwO,KAAKytB,GAAG,CAAU,GAAG,QAAZA,EAAEA,EAAElB,OAAkBkB,IAAI3+B,EAAE,IAAsB,QAAnB0C,EAAEnE,EAAEy/B,OAAOC,SAAiB,MAAWU,EAAE77B,EAAE26B,KAAK/6B,EAAE+6B,KAAK/6B,EAAE+6B,KAAKz9B,EAAEzB,EAAEw/B,UAAUj7B,EAAEJ,EAAEnE,EAAEy/B,OAAOC,QAAQ,IAAI,EAAU,OAAO99B,EAAEpB,EAAEmB,EAAEC,EAAEs9B,KAAKx+B,EAAEV,EAAEu/B,UAAU/+B,EAAER,EAAEw/B,UAAU59B,EAAE2+B,GAAG/7B,GAAGrD,EAAE29B,eAAet6B,EAAErD,EAAEggB,cAAcxf,CAAC,CAAC,CAC1S,SAAS6+B,GAAGr/B,EAAEI,EAAEd,GAA8B,GAA3BU,EAAEI,EAAEo+B,QAAQp+B,EAAEo+B,QAAQ,KAAQ,OAAOx+B,EAAE,IAAII,EAAE,EAAEA,EAAEJ,EAAEH,OAAOO,IAAI,CAAC,IAAID,EAAEH,EAAEI,GAAGvB,EAAEsB,EAAE0+B,SAAS,GAAG,OAAOhgC,EAAE,CAAyB,GAAxBsB,EAAE0+B,SAAS,KAAK1+B,EAAEtB,EAAEA,EAAES,EAAK,oBAAoBa,EAAE,MAAM6J,MAAM/J,EAAE,IAAIE,IAAIA,EAAEf,KAAKP,EAAE,CAAC,CAAC,CAAC,IAAIygC,GAAGhnB,EAAGQ,wBAAwBymB,IAAI,IAAIhrB,EAAGJ,WAAWqrB,KAAK,SAASC,GAAGz/B,EAAEI,EAAEd,EAAEa,GAA8Bb,EAAE,QAAXA,EAAEA,EAAEa,EAAtBC,EAAEJ,EAAEggB,sBAAmC,IAAS1gB,EAAEc,EAAEpB,EAAE,CAAC,EAAEoB,EAAEd,GAAGU,EAAEggB,cAAc1gB,EAAE,IAAIU,EAAE29B,iBAAiB39B,EAAEm+B,YAAYC,UAAU9+B,EAAE,CAC7Z,IAAIogC,GAAG,CAACC,UAAU,SAAS3/B,GAAG,SAAOA,EAAEA,EAAE4/B,sBAAqBhgB,GAAG5f,KAAKA,CAAI,EAAE6/B,gBAAgB,SAAS7/B,EAAEI,EAAEd,GAAGU,EAAEA,EAAE4/B,oBAAoB,IAAIz/B,EAAE2/B,KAAKjhC,EAAEygC,GAAGvmB,UAAqBla,EAAE6/B,GAAdv+B,EAAE4/B,GAAG5/B,EAAEH,EAAEnB,GAAUA,IAAK+/B,QAAQx+B,OAAE,IAASd,GAAG,OAAOA,IAAIT,EAAEggC,SAASv/B,GAAGw/B,GAAG9+B,EAAEnB,GAAGmhC,GAAGhgC,EAAEG,EAAE,EAAE8/B,oBAAoB,SAASjgC,EAAEI,EAAEd,GAAGU,EAAEA,EAAE4/B,oBAAoB,IAAIz/B,EAAE2/B,KAAKjhC,EAAEygC,GAAGvmB,UAAqBla,EAAE6/B,GAAdv+B,EAAE4/B,GAAG5/B,EAAEH,EAAEnB,GAAUA,IAAK6b,IAAI,EAAE7b,EAAE+/B,QAAQx+B,OAAE,IAASd,GAAG,OAAOA,IAAIT,EAAEggC,SAASv/B,GAAGw/B,GAAG9+B,EAAEnB,GAAGmhC,GAAGhgC,EAAEG,EAAE,EAAE+/B,mBAAmB,SAASlgC,EAAEI,GAAGJ,EAAEA,EAAE4/B,oBAAoB,IAAItgC,EAAEwgC,KAAK3/B,EAAEm/B,GAAGvmB,UACve5Y,EAAEu+B,GAAdp/B,EAAEygC,GAAGzgC,EAAEU,EAAEG,GAAUA,IAAKua,IAAI,OAAE,IAASta,GAAG,OAAOA,IAAID,EAAE0+B,SAASz+B,GAAG0+B,GAAG9+B,EAAEG,GAAG6/B,GAAGhgC,EAAEV,EAAE,GAAG,SAAS6gC,GAAGngC,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,EAAEJ,GAAiB,MAAM,oBAApBhD,EAAEA,EAAE2W,WAAsCypB,sBAAsBpgC,EAAEogC,sBAAsBjgC,EAAEiD,EAAEJ,IAAG5C,EAAEN,YAAWM,EAAEN,UAAUugC,wBAAsBjL,GAAG91B,EAAEa,KAAKi1B,GAAGv2B,EAAEuE,GAAK,CAClR,SAASk9B,GAAGtgC,EAAEI,EAAEd,GAAG,IAAIa,GAAE,EAAGtB,EAAE46B,GAAOr2B,EAAEhD,EAAEmgC,YAA8W,MAAlW,kBAAkBn9B,GAAG,OAAOA,EAAEA,EAAEy6B,GAAGz6B,IAAIvE,EAAEo7B,GAAE75B,GAAGw5B,GAAGF,GAAEpmB,QAAyBlQ,GAAGjD,EAAE,QAAtBA,EAAEC,EAAE05B,oBAA4B,IAAS35B,GAAG05B,GAAG75B,EAAEnB,GAAG46B,IAAIr5B,EAAE,IAAIA,EAAEd,EAAE8D,GAAGpD,EAAEggB,cAAc,OAAO5f,EAAEogC,YAAO,IAASpgC,EAAEogC,MAAMpgC,EAAEogC,MAAM,KAAKpgC,EAAEqgC,QAAQf,GAAG1/B,EAAE2W,UAAUvW,EAAEA,EAAEw/B,oBAAoB5/B,EAAEG,KAAIH,EAAEA,EAAE2W,WAAYojB,4CAA4Cl7B,EAAEmB,EAAEg6B,0CAA0C52B,GAAUhD,CAAC,CAC/Z,SAASsgC,GAAG1gC,EAAEI,EAAEd,EAAEa,GAAGH,EAAEI,EAAEogC,MAAM,oBAAoBpgC,EAAEugC,2BAA2BvgC,EAAEugC,0BAA0BrhC,EAAEa,GAAG,oBAAoBC,EAAEwgC,kCAAkCxgC,EAAEwgC,iCAAiCthC,EAAEa,GAAGC,EAAEogC,QAAQxgC,GAAG0/B,GAAGO,oBAAoB7/B,EAAEA,EAAEogC,MAAM,KAAK,CACpQ,SAASK,GAAG7gC,EAAEI,EAAEd,EAAEa,GAAG,IAAItB,EAAEmB,EAAE2W,UAAU9X,EAAE6K,MAAMpK,EAAET,EAAE2hC,MAAMxgC,EAAEggB,cAAcnhB,EAAE2gC,KAAKD,GAAGrB,GAAGl+B,GAAG,IAAIoD,EAAEhD,EAAEmgC,YAAY,kBAAkBn9B,GAAG,OAAOA,EAAEvE,EAAE2P,QAAQqvB,GAAGz6B,IAAIA,EAAE62B,GAAE75B,GAAGw5B,GAAGF,GAAEpmB,QAAQzU,EAAE2P,QAAQqrB,GAAG75B,EAAEoD,IAAI47B,GAAGh/B,EAAEV,EAAET,EAAEsB,GAAGtB,EAAE2hC,MAAMxgC,EAAEggB,cAA2C,oBAA7B5c,EAAEhD,EAAE0gC,4BAAiDrB,GAAGz/B,EAAEI,EAAEgD,EAAE9D,GAAGT,EAAE2hC,MAAMxgC,EAAEggB,eAAe,oBAAoB5f,EAAE0gC,0BAA0B,oBAAoBjiC,EAAEkiC,yBAAyB,oBAAoBliC,EAAEmiC,2BAA2B,oBAAoBniC,EAAEoiC,qBACte7gC,EAAEvB,EAAE2hC,MAAM,oBAAoB3hC,EAAEoiC,oBAAoBpiC,EAAEoiC,qBAAqB,oBAAoBpiC,EAAEmiC,2BAA2BniC,EAAEmiC,4BAA4B5gC,IAAIvB,EAAE2hC,OAAOd,GAAGO,oBAAoBphC,EAAEA,EAAE2hC,MAAM,MAAMxB,GAAGh/B,EAAEV,EAAET,EAAEsB,GAAGtB,EAAE2hC,MAAMxgC,EAAEggB,eAAe,oBAAoBnhB,EAAEqiC,oBAAoBlhC,EAAE8f,WAAW,EAAE,CAAC,IAAIqhB,GAAGz7B,MAAM0X,QAC3T,SAASgkB,GAAGphC,EAAEI,EAAEd,GAAW,GAAG,QAAXU,EAAEV,EAAE4U,MAAiB,oBAAoBlU,GAAG,kBAAkBA,EAAE,CAAC,GAAGV,EAAE+hC,OAAO,CAAY,GAAX/hC,EAAEA,EAAE+hC,OAAY,CAAC,GAAG,IAAI/hC,EAAEob,IAAI,MAAM1Q,MAAM/J,EAAE,MAAM,IAAIE,EAAEb,EAAEqX,SAAS,CAAC,IAAIxW,EAAE,MAAM6J,MAAM/J,EAAE,IAAID,IAAI,IAAInB,EAAE,GAAGmB,EAAE,OAAG,OAAOI,GAAG,OAAOA,EAAE8T,KAAK,oBAAoB9T,EAAE8T,KAAK9T,EAAE8T,IAAIotB,aAAaziC,EAASuB,EAAE8T,KAAI9T,EAAE,SAASJ,GAAG,IAAII,EAAED,EAAEq/B,KAAKp/B,IAAIm/B,KAAKn/B,EAAED,EAAEq/B,KAAK,CAAC,GAAG,OAAOx/B,SAASI,EAAEvB,GAAGuB,EAAEvB,GAAGmB,CAAC,EAAEI,EAAEkhC,WAAWziC,EAASuB,EAAC,CAAC,GAAG,kBAAkBJ,EAAE,MAAMgK,MAAM/J,EAAE,MAAM,IAAIX,EAAE+hC,OAAO,MAAMr3B,MAAM/J,EAAE,IAAID,GAAI,CAAC,OAAOA,CAAC,CACje,SAASuhC,GAAGvhC,EAAEI,GAAG,GAAG,aAAaJ,EAAEqV,KAAK,MAAMrL,MAAM/J,EAAE,GAAG,oBAAoBP,OAAOI,UAAU2E,SAASrF,KAAKgB,GAAG,qBAAqBV,OAAO+I,KAAKrI,GAAGiI,KAAK,MAAM,IAAIjI,EAAE,IAAK,CACzK,SAASohC,GAAGxhC,GAAG,SAASI,EAAEA,EAAEd,GAAG,GAAGU,EAAE,CAAC,IAAIG,EAAEC,EAAEqhC,WAAW,OAAOthC,GAAGA,EAAEuhC,WAAWpiC,EAAEc,EAAEqhC,WAAWniC,GAAGc,EAAEuhC,YAAYvhC,EAAEqhC,WAAWniC,EAAEA,EAAEoiC,WAAW,KAAKpiC,EAAEwgB,UAAU,CAAC,CAAC,CAAC,SAASxgB,EAAEA,EAAEa,GAAG,IAAIH,EAAE,OAAO,KAAK,KAAK,OAAOG,GAAGC,EAAEd,EAAEa,GAAGA,EAAEA,EAAEkgB,QAAQ,OAAO,IAAI,CAAC,SAASlgB,EAAEH,EAAEI,GAAG,IAAIJ,EAAE,IAAI0f,IAAI,OAAOtf,GAAG,OAAOA,EAAEkG,IAAItG,EAAE6S,IAAIzS,EAAEkG,IAAIlG,GAAGJ,EAAE6S,IAAIzS,EAAEwhC,MAAMxhC,GAAGA,EAAEA,EAAEigB,QAAQ,OAAOrgB,CAAC,CAAC,SAASnB,EAAEmB,EAAEI,GAAsC,OAAnCJ,EAAE6hC,GAAG7hC,EAAEI,IAAKwhC,MAAM,EAAE5hC,EAAEqgB,QAAQ,KAAYrgB,CAAC,CAAC,SAASoD,EAAEhD,EAAEd,EAAEa,GAAa,OAAVC,EAAEwhC,MAAMzhC,EAAMH,EAA4B,QAAjBG,EAAEC,EAAEyf,YAA6B1f,EAAEA,EAAEyhC,OAAQtiC,GAAGc,EAAE0f,UAClf,EAAExgB,GAAGa,GAAEC,EAAE0f,UAAU,EAASxgB,GADkaA,CACja,CAAC,SAAS0D,EAAE5C,GAA0C,OAAvCJ,GAAG,OAAOI,EAAEyf,YAAYzf,EAAE0f,UAAU,GAAU1f,CAAC,CAAC,SAASE,EAAEN,EAAEI,EAAEd,EAAEa,GAAG,OAAG,OAAOC,GAAG,IAAIA,EAAEsa,MAAWta,EAAE0hC,GAAGxiC,EAAEU,EAAE+hC,KAAK5hC,IAAK4a,OAAO/a,EAAEI,KAAEA,EAAEvB,EAAEuB,EAAEd,IAAKyb,OAAO/a,EAASI,EAAC,CAAC,SAASI,EAAER,EAAEI,EAAEd,EAAEa,GAAG,OAAG,OAAOC,GAAGA,EAAE4K,cAAc1L,EAAE+V,OAAYlV,EAAEtB,EAAEuB,EAAEd,EAAEoK,QAASwK,IAAIktB,GAAGphC,EAAEI,EAAEd,GAAGa,EAAE4a,OAAO/a,EAAEG,KAAEA,EAAE6hC,GAAG1iC,EAAE+V,KAAK/V,EAAEgH,IAAIhH,EAAEoK,MAAM,KAAK1J,EAAE+hC,KAAK5hC,IAAK+T,IAAIktB,GAAGphC,EAAEI,EAAEd,GAAGa,EAAE4a,OAAO/a,EAASG,EAAC,CAAC,SAASkD,EAAErD,EAAEI,EAAEd,EAAEa,GAAG,OAAG,OAAOC,GAAG,IAAIA,EAAEsa,KAAKta,EAAEuW,UAAUqL,gBAAgB1iB,EAAE0iB,eAAe5hB,EAAEuW,UAAUsrB,iBACte3iC,EAAE2iC,iBAAsB7hC,EAAE8hC,GAAG5iC,EAAEU,EAAE+hC,KAAK5hC,IAAK4a,OAAO/a,EAAEI,KAAEA,EAAEvB,EAAEuB,EAAEd,EAAE2F,UAAU,KAAM8V,OAAO/a,EAASI,EAAC,CAAC,SAASf,EAAEW,EAAEI,EAAEd,EAAEa,EAAEiD,GAAG,OAAG,OAAOhD,GAAG,IAAIA,EAAEsa,MAAWta,EAAE+hC,GAAG7iC,EAAEU,EAAE+hC,KAAK5hC,EAAEiD,IAAK2X,OAAO/a,EAAEI,KAAEA,EAAEvB,EAAEuB,EAAEd,IAAKyb,OAAO/a,EAASI,EAAC,CAAC,SAASb,EAAES,EAAEI,EAAEd,GAAG,GAAG,kBAAkBc,GAAG,kBAAkBA,EAAE,OAAOA,EAAE0hC,GAAG,GAAG1hC,EAAEJ,EAAE+hC,KAAKziC,IAAKyb,OAAO/a,EAAEI,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEia,UAAU,KAAKlB,GAAG,OAAO7Z,EAAE0iC,GAAG5hC,EAAEiV,KAAKjV,EAAEkG,IAAIlG,EAAEsJ,MAAM,KAAK1J,EAAE+hC,KAAKziC,IAAK4U,IAAIktB,GAAGphC,EAAE,KAAKI,GAAGd,EAAEyb,OAAO/a,EAAEV,EAAE,KAAK8Z,GAAG,OAAOhZ,EAAE8hC,GAAG9hC,EAAEJ,EAAE+hC,KAAKziC,IAAKyb,OAAO/a,EAAEI,EAAE,GAAG+gC,GAAG/gC,IACvf8Z,GAAG9Z,GAAG,OAAOA,EAAE+hC,GAAG/hC,EAAEJ,EAAE+hC,KAAKziC,EAAE,OAAQyb,OAAO/a,EAAEI,EAAEmhC,GAAGvhC,EAAEI,EAAE,CAAC,OAAO,IAAI,CAAC,SAASK,EAAET,EAAEI,EAAEd,EAAEa,GAAG,IAAItB,EAAE,OAAOuB,EAAEA,EAAEkG,IAAI,KAAK,GAAG,kBAAkBhH,GAAG,kBAAkBA,EAAE,OAAO,OAAOT,EAAE,KAAKyB,EAAEN,EAAEI,EAAE,GAAGd,EAAEa,GAAG,GAAG,kBAAkBb,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE+a,UAAU,KAAKlB,GAAG,OAAO7Z,EAAEgH,MAAMzH,EAAES,EAAE+V,OAAOgE,GAAGha,EAAEW,EAAEI,EAAEd,EAAEoK,MAAMzE,SAAS9E,EAAEtB,GAAG2B,EAAER,EAAEI,EAAEd,EAAEa,GAAG,KAAK,KAAKiZ,GAAG,OAAO9Z,EAAEgH,MAAMzH,EAAEwE,EAAErD,EAAEI,EAAEd,EAAEa,GAAG,KAAK,GAAGghC,GAAG7hC,IAAI4a,GAAG5a,GAAG,OAAO,OAAOT,EAAE,KAAKQ,EAAEW,EAAEI,EAAEd,EAAEa,EAAE,MAAMohC,GAAGvhC,EAAEV,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS2/B,EAAEj/B,EAAEI,EAAEd,EAAEa,EAAEtB,GAAG,GAAG,kBAAkBsB,GAAG,kBAAkBA,EAAE,OAC5eG,EAAEF,EADifJ,EAClgBA,EAAEyL,IAAInM,IAAI,KAAW,GAAGa,EAAEtB,GAAG,GAAG,kBAAkBsB,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEka,UAAU,KAAKlB,GAAG,OAAOnZ,EAAEA,EAAEyL,IAAI,OAAOtL,EAAEmG,IAAIhH,EAAEa,EAAEmG,MAAM,KAAKnG,EAAEkV,OAAOgE,GAAGha,EAAEe,EAAEJ,EAAEG,EAAEuJ,MAAMzE,SAASpG,EAAEsB,EAAEmG,KAAK9F,EAAEJ,EAAEJ,EAAEG,EAAEtB,GAAG,KAAKua,GAAG,OAA2C/V,EAAEjD,EAAtCJ,EAAEA,EAAEyL,IAAI,OAAOtL,EAAEmG,IAAIhH,EAAEa,EAAEmG,MAAM,KAAWnG,EAAEtB,GAAG,GAAGsiC,GAAGhhC,IAAI+Z,GAAG/Z,GAAG,OAAwBd,EAAEe,EAAnBJ,EAAEA,EAAEyL,IAAInM,IAAI,KAAWa,EAAEtB,EAAE,MAAM0iC,GAAGnhC,EAAED,EAAE,CAAC,OAAO,IAAI,CAAC,SAAS++B,EAAGrgC,EAAEmE,EAAE1C,EAAEE,GAAG,IAAI,IAAI6C,EAAE,KAAKvE,EAAE,KAAKO,EAAE2D,EAAE3C,EAAE2C,EAAE,EAAEoQ,EAAE,KAAK,OAAO/T,GAAGgB,EAAEC,EAAET,OAAOQ,IAAI,CAAChB,EAAEuiC,MAAMvhC,GAAG+S,EAAE/T,EAAEA,EAAE,MAAM+T,EAAE/T,EAAEghB,QAAQ,IAAI9M,EAAE9S,EAAE5B,EAAEQ,EAAEiB,EAAED,GAAGG,GAAG,GAAG,OAAO+S,EAAE,CAAC,OAAOlU,IAAIA,EAAE+T,GAAG,KAAK,CAACpT,GACtfX,GAAG,OAAOkU,EAAEsM,WAAWzf,EAAEvB,EAAEQ,GAAG2D,EAAEI,EAAEmQ,EAAEvQ,EAAE3C,GAAG,OAAOvB,EAAEuE,EAAEkQ,EAAEzU,EAAEuhB,QAAQ9M,EAAEzU,EAAEyU,EAAElU,EAAE+T,CAAC,CAAC,GAAG/S,IAAIC,EAAET,OAAO,OAAOP,EAAET,EAAEQ,GAAGgE,EAAE,GAAG,OAAOhE,EAAE,CAAC,KAAKgB,EAAEC,EAAET,OAAOQ,IAAkB,QAAdhB,EAAEE,EAAEV,EAAEyB,EAAED,GAAGG,MAAcwC,EAAEI,EAAE/D,EAAE2D,EAAE3C,GAAG,OAAOvB,EAAEuE,EAAEhE,EAAEP,EAAEuhB,QAAQhhB,EAAEP,EAAEO,GAAG,OAAOgE,CAAC,CAAC,IAAIhE,EAAEc,EAAEtB,EAAEQ,GAAGgB,EAAEC,EAAET,OAAOQ,IAAsB,QAAlB+S,EAAE6rB,EAAE5/B,EAAER,EAAEwB,EAAEC,EAAED,GAAGG,MAAcR,GAAG,OAAOoT,EAAEyM,WAAWxgB,EAAEkkB,OAAO,OAAOnQ,EAAE9M,IAAIjG,EAAE+S,EAAE9M,KAAKtD,EAAEI,EAAEgQ,EAAEpQ,EAAE3C,GAAG,OAAOvB,EAAEuE,EAAE+P,EAAEtU,EAAEuhB,QAAQjN,EAAEtU,EAAEsU,GAA4C,OAAzCpT,GAAGX,EAAEkC,SAAQ,SAASvB,GAAG,OAAOI,EAAEvB,EAAEmB,EAAE,IAAUqD,CAAC,CAAC,SAAS6P,EAAErU,EAAEmE,EAAE1C,EAAE+C,GAAG,IAAI7C,EAAE0Z,GAAG5Z,GAAG,GAAG,oBAAoBE,EAAE,MAAMwJ,MAAM/J,EAAE,MACve,GAAG,OAD0eK,EAAEE,EAAEpB,KAAKkB,IAC3e,MAAM0J,MAAM/J,EAAE,MAAM,IAAI,IAAIZ,EAAEmB,EAAE,KAAK1B,EAAEkE,EAAE3C,EAAE2C,EAAE,EAAEoQ,EAAE,KAAKG,EAAEjT,EAAEy9B,OAAO,OAAOj/B,IAAIyU,EAAE6uB,KAAK/hC,IAAIkT,EAAEjT,EAAEy9B,OAAO,CAACj/B,EAAE8iC,MAAMvhC,GAAG+S,EAAEtU,EAAEA,EAAE,MAAMsU,EAAEtU,EAAEuhB,QAAQ,IAAInN,EAAEzS,EAAE5B,EAAEC,EAAEyU,EAAEzN,MAAMzC,GAAG,GAAG,OAAO6P,EAAE,CAAC,OAAOpU,IAAIA,EAAEsU,GAAG,KAAK,CAACpT,GAAGlB,GAAG,OAAOoU,EAAE2M,WAAWzf,EAAEvB,EAAEC,GAAGkE,EAAEI,EAAE8P,EAAElQ,EAAE3C,GAAG,OAAOhB,EAAEmB,EAAE0S,EAAE7T,EAAEghB,QAAQnN,EAAE7T,EAAE6T,EAAEpU,EAAEsU,CAAC,CAAC,GAAGG,EAAE6uB,KAAK,OAAO9iC,EAAET,EAAEC,GAAG0B,EAAE,GAAG,OAAO1B,EAAE,CAAC,MAAMyU,EAAE6uB,KAAK/hC,IAAIkT,EAAEjT,EAAEy9B,OAAwB,QAAjBxqB,EAAEhU,EAAEV,EAAE0U,EAAEzN,MAAMzC,MAAcL,EAAEI,EAAEmQ,EAAEvQ,EAAE3C,GAAG,OAAOhB,EAAEmB,EAAE+S,EAAElU,EAAEghB,QAAQ9M,EAAElU,EAAEkU,GAAG,OAAO/S,CAAC,CAAC,IAAI1B,EAAEqB,EAAEtB,EAAEC,IAAIyU,EAAE6uB,KAAK/hC,IAAIkT,EAAEjT,EAAEy9B,OAA4B,QAArBxqB,EAAE0rB,EAAEngC,EAAED,EAAEwB,EAAEkT,EAAEzN,MAAMzC,MAAcrD,GAAG,OAChfuT,EAAEsM,WAAW/gB,EAAEykB,OAAO,OAAOhQ,EAAEjN,IAAIjG,EAAEkT,EAAEjN,KAAKtD,EAAEI,EAAEmQ,EAAEvQ,EAAE3C,GAAG,OAAOhB,EAAEmB,EAAE+S,EAAElU,EAAEghB,QAAQ9M,EAAElU,EAAEkU,GAA4C,OAAzCvT,GAAGlB,EAAEyC,SAAQ,SAASvB,GAAG,OAAOI,EAAEvB,EAAEmB,EAAE,IAAUQ,CAAC,CAAC,OAAO,SAASR,EAAEG,EAAEiD,EAAE9C,GAAG,IAAIE,EAAE,kBAAkB4C,GAAG,OAAOA,GAAGA,EAAEiS,OAAOgE,IAAI,OAAOjW,EAAEkD,IAAI9F,IAAI4C,EAAEA,EAAEsG,MAAMzE,UAAU,IAAI5B,EAAE,kBAAkBD,GAAG,OAAOA,EAAE,GAAGC,EAAE,OAAOD,EAAEiX,UAAU,KAAKlB,GAAGnZ,EAAE,CAAS,IAARqD,EAAED,EAAEkD,IAAQ9F,EAAEL,EAAE,OAAOK,GAAG,CAAC,GAAGA,EAAE8F,MAAMjD,EAAE,CAAC,GAAmB,IAAZ7C,EAAEka,KAAY,GAAGtX,EAAEiS,OAAOgE,GAAG,CAAC/Z,EAAEU,EAAEQ,EAAE6f,UAASlgB,EAAEtB,EAAE2B,EAAE4C,EAAEsG,MAAMzE,WAAY8V,OAAO/a,EAAEA,EAAEG,EAAE,MAAMH,CAAC,OAAe,GAAGQ,EAAEwK,cAAc5H,EAAEiS,KAAK,CAAC/V,EAAEU,EACrfQ,EAAE6f,UAASlgB,EAAEtB,EAAE2B,EAAE4C,EAAEsG,QAASwK,IAAIktB,GAAGphC,EAAEQ,EAAE4C,GAAGjD,EAAE4a,OAAO/a,EAAEA,EAAEG,EAAE,MAAMH,CAAC,CAAEV,EAAEU,EAAEQ,GAAG,KAAK,CAAMJ,EAAEJ,EAAEQ,GAAGA,EAAEA,EAAE6f,OAAO,CAACjd,EAAEiS,OAAOgE,KAAIlZ,EAAEgiC,GAAG/+B,EAAEsG,MAAMzE,SAASjF,EAAE+hC,KAAKzhC,EAAE8C,EAAEkD,MAAOyU,OAAO/a,EAAEA,EAAEG,KAAIG,EAAE0hC,GAAG5+B,EAAEiS,KAAKjS,EAAEkD,IAAIlD,EAAEsG,MAAM,KAAK1J,EAAE+hC,KAAKzhC,IAAK4T,IAAIktB,GAAGphC,EAAEG,EAAEiD,GAAG9C,EAAEya,OAAO/a,EAAEA,EAAEM,EAAE,CAAC,OAAO0C,EAAEhD,GAAG,KAAKoZ,GAAGpZ,EAAE,CAAC,IAAIQ,EAAE4C,EAAEkD,IAAI,OAAOnG,GAAG,CAAC,GAAGA,EAAEmG,MAAM9F,EAAC,CAAC,GAAG,IAAIL,EAAEua,KAAKva,EAAEwW,UAAUqL,gBAAgB5e,EAAE4e,eAAe7hB,EAAEwW,UAAUsrB,iBAAiB7+B,EAAE6+B,eAAe,CAAC3iC,EAAEU,EAAEG,EAAEkgB,UAASlgB,EAAEtB,EAAEsB,EAAEiD,EAAE6B,UAAU,KAAM8V,OAAO/a,EAAEA,EAAEG,EAAE,MAAMH,CAAC,CAAMV,EAAEU,EAAEG,GAAG,KAAM,CAAKC,EAAEJ,EAAEG,GAAGA,EACnfA,EAAEkgB,OAAO,EAAClgB,EAAE+hC,GAAG9+B,EAAEpD,EAAE+hC,KAAKzhC,IAAKya,OAAO/a,EAAEA,EAAEG,CAAC,CAAC,OAAO6C,EAAEhD,GAAG,GAAG,kBAAkBoD,GAAG,kBAAkBA,EAAE,OAAOA,EAAE,GAAGA,EAAE,OAAOjD,GAAG,IAAIA,EAAEua,KAAKpb,EAAEU,EAAEG,EAAEkgB,UAASlgB,EAAEtB,EAAEsB,EAAEiD,IAAK2X,OAAO/a,EAAEA,EAAEG,IAAIb,EAAEU,EAAEG,IAAGA,EAAE2hC,GAAG1+B,EAAEpD,EAAE+hC,KAAKzhC,IAAKya,OAAO/a,EAAEA,EAAEG,GAAG6C,EAAEhD,GAAG,GAAGmhC,GAAG/9B,GAAG,OAAO87B,EAAGl/B,EAAEG,EAAEiD,EAAE9C,GAAG,GAAG4Z,GAAG9W,GAAG,OAAO8P,EAAElT,EAAEG,EAAEiD,EAAE9C,GAAc,GAAX+C,GAAGk+B,GAAGvhC,EAAEoD,GAAM,qBAAqBA,IAAI5C,EAAE,OAAOR,EAAE0a,KAAK,KAAK,EAAE,KAAK,EAAE,MAAM1a,EAAEA,EAAEqV,KAAKrL,MAAM/J,EAAE,IAAID,EAAEoa,aAAapa,EAAEiK,MAAM,cAAe,OAAO3K,EAAEU,EAAEG,EAAE,CAAC,CAAC,IAAIkiC,GAAGb,IAAG,GAAIc,GAAGd,IAAG,GAAIe,GAAG,CAAC,EAAEC,GAAG,CAAClvB,QAAQivB,IAAIE,GAAG,CAACnvB,QAAQivB,IAAIG,GAAG,CAACpvB,QAAQivB,IACjf,SAASI,GAAG3iC,GAAG,GAAGA,IAAIuiC,GAAG,MAAMv4B,MAAM/J,EAAE,MAAM,OAAOD,CAAC,CAAC,SAAS4iC,GAAG5iC,EAAEI,GAAyC,OAAtCsT,GAAEgvB,GAAGtiC,GAAGsT,GAAE+uB,GAAGziC,GAAG0T,GAAE8uB,GAAGD,IAAIviC,EAAEI,EAAEke,UAAmB,KAAK,EAAE,KAAK,GAAGle,GAAGA,EAAEA,EAAEkF,iBAAiBlF,EAAEyd,aAAaH,GAAG,KAAK,IAAI,MAAM,QAAkEtd,EAAEsd,GAArCtd,GAAvBJ,EAAE,IAAIA,EAAEI,EAAEghB,WAAWhhB,GAAMyd,cAAc,KAAK7d,EAAEA,EAAEuH,SAAkBiyB,GAAEgJ,IAAI9uB,GAAE8uB,GAAGpiC,EAAE,CAAC,SAASyiC,KAAKrJ,GAAEgJ,IAAIhJ,GAAEiJ,IAAIjJ,GAAEkJ,GAAG,CAAC,SAASI,GAAG9iC,GAAG2iC,GAAGD,GAAGpvB,SAAS,IAAIlT,EAAEuiC,GAAGH,GAAGlvB,SAAahU,EAAEoe,GAAGtd,EAAEJ,EAAEqV,MAAMjV,IAAId,IAAIoU,GAAE+uB,GAAGziC,GAAG0T,GAAE8uB,GAAGljC,GAAG,CAAC,SAASyjC,GAAG/iC,GAAGyiC,GAAGnvB,UAAUtT,IAAIw5B,GAAEgJ,IAAIhJ,GAAEiJ,IAAI,CAAC,IAAInhC,GAAE,CAACgS,QAAQ,GACpd,SAAS0vB,GAAGhjC,GAAG,IAAI,IAAII,EAAEJ,EAAE,OAAOI,GAAG,CAAC,GAAG,KAAKA,EAAEsa,IAAI,CAAC,IAAIpb,EAAEc,EAAE4f,cAAc,GAAG,OAAO1gB,IAAmB,QAAfA,EAAEA,EAAE2gB,aAAqB3gB,EAAEssB,OAAOb,IAAIzrB,EAAEssB,OAAOZ,IAAI,OAAO5qB,CAAC,MAAM,GAAG,KAAKA,EAAEsa,UAAK,IAASta,EAAE6iC,cAAcC,aAAa,GAAG,KAAiB,GAAZ9iC,EAAE0f,WAAc,OAAO1f,OAAO,GAAG,OAAOA,EAAEggB,MAAM,CAAChgB,EAAEggB,MAAMrF,OAAO3a,EAAEA,EAAEA,EAAEggB,MAAM,QAAQ,CAAC,GAAGhgB,IAAIJ,EAAE,MAAM,KAAK,OAAOI,EAAEigB,SAAS,CAAC,GAAG,OAAOjgB,EAAE2a,QAAQ3a,EAAE2a,SAAS/a,EAAE,OAAO,KAAKI,EAAEA,EAAE2a,MAAM,CAAC3a,EAAEigB,QAAQtF,OAAO3a,EAAE2a,OAAO3a,EAAEA,EAAEigB,OAAO,CAAC,OAAO,IAAI,CAAC,SAAS8iB,GAAGnjC,EAAEI,GAAG,MAAM,CAACgjC,UAAUpjC,EAAE0J,MAAMtJ,EAAE,CACze,IAAIijC,GAAG/qB,EAAGO,uBAAuByqB,GAAGhrB,EAAGQ,wBAAwByqB,GAAG,EAAEtwB,GAAE,KAAK5R,GAAE,KAAK4S,GAAE,KAAKuvB,IAAG,EAAG,SAASnvB,KAAI,MAAMrK,MAAM/J,EAAE,KAAM,CAAC,SAASwjC,GAAGzjC,EAAEI,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAId,EAAE,EAAEA,EAAEc,EAAEP,QAAQP,EAAEU,EAAEH,OAAOP,IAAI,IAAI41B,GAAGl1B,EAAEV,GAAGc,EAAEd,IAAI,OAAM,EAAG,OAAM,CAAE,CACjP,SAASokC,GAAG1jC,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,GAAkI,GAA/HmgC,GAAGngC,EAAE6P,GAAE7S,EAAEA,EAAE4f,cAAc,KAAK5f,EAAE+9B,YAAY,KAAK/9B,EAAEu9B,eAAe,EAAE0F,GAAG/vB,QAAQ,OAAOtT,GAAG,OAAOA,EAAEggB,cAAc2jB,GAAGC,GAAG5jC,EAAEV,EAAEa,EAAEtB,GAAMuB,EAAEu9B,iBAAiB4F,GAAG,CAACngC,EAAE,EAAE,EAAE,CAAoB,GAAnBhD,EAAEu9B,eAAe,IAAO,GAAGv6B,GAAG,MAAM4G,MAAM/J,EAAE,MAAMmD,GAAG,EAAE6Q,GAAE5S,GAAE,KAAKjB,EAAE+9B,YAAY,KAAKkF,GAAG/vB,QAAQuwB,GAAG7jC,EAAEV,EAAEa,EAAEtB,EAAE,OAAOuB,EAAEu9B,iBAAiB4F,GAAG,CAA+D,GAA9DF,GAAG/vB,QAAQwwB,GAAG1jC,EAAE,OAAOiB,IAAG,OAAOA,GAAE08B,KAAKwF,GAAG,EAAEtvB,GAAE5S,GAAE4R,GAAE,KAAKuwB,IAAG,EAAMpjC,EAAE,MAAM4J,MAAM/J,EAAE,MAAM,OAAOD,CAAC,CAC/Z,SAAS+jC,KAAK,IAAI/jC,EAAE,CAACggB,cAAc,KAAKoe,UAAU,KAAKC,UAAU,KAAK2F,MAAM,KAAKjG,KAAK,MAA8C,OAAxC,OAAO9pB,GAAEhB,GAAE+M,cAAc/L,GAAEjU,EAAEiU,GAAEA,GAAE8pB,KAAK/9B,EAASiU,EAAC,CAAC,SAASgwB,KAAK,GAAG,OAAO5iC,GAAE,CAAC,IAAIrB,EAAEiT,GAAE4M,UAAU7f,EAAE,OAAOA,EAAEA,EAAEggB,cAAc,IAAI,MAAMhgB,EAAEqB,GAAE08B,KAAK,IAAI39B,EAAE,OAAO6T,GAAEhB,GAAE+M,cAAc/L,GAAE8pB,KAAK,GAAG,OAAO39B,EAAE6T,GAAE7T,EAAEiB,GAAErB,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMgK,MAAM/J,EAAE,MAAUD,EAAE,CAACggB,eAAP3e,GAAErB,GAAqBggB,cAAcoe,UAAU/8B,GAAE+8B,UAAUC,UAAUh9B,GAAEg9B,UAAU2F,MAAM3iC,GAAE2iC,MAAMjG,KAAK,MAAM,OAAO9pB,GAAEhB,GAAE+M,cAAc/L,GAAEjU,EAAEiU,GAAEA,GAAE8pB,KAAK/9B,CAAC,CAAC,OAAOiU,EAAC,CACje,SAASiwB,GAAGlkC,EAAEI,GAAG,MAAM,oBAAoBA,EAAEA,EAAEJ,GAAGI,CAAC,CACnD,SAAS+jC,GAAGnkC,GAAG,IAAII,EAAE6jC,KAAK3kC,EAAEc,EAAE4jC,MAAM,GAAG,OAAO1kC,EAAE,MAAM0K,MAAM/J,EAAE,MAAMX,EAAE8kC,oBAAoBpkC,EAAE,IAAIG,EAAEkB,GAAExC,EAAEsB,EAAEk+B,UAAUj7B,EAAE9D,EAAEi/B,QAAQ,GAAG,OAAOn7B,EAAE,CAAC,GAAG,OAAOvE,EAAE,CAAC,IAAImE,EAAEnE,EAAEk/B,KAAKl/B,EAAEk/B,KAAK36B,EAAE26B,KAAK36B,EAAE26B,KAAK/6B,CAAC,CAAC7C,EAAEk+B,UAAUx/B,EAAEuE,EAAE9D,EAAEi/B,QAAQ,IAAI,CAAC,GAAG,OAAO1/B,EAAE,CAACA,EAAEA,EAAEk/B,KAAK59B,EAAEA,EAAEi+B,UAAU,IAAI99B,EAAE0C,EAAEI,EAAE,KAAK5C,EAAE3B,EAAE,EAAE,CAAC,IAAIwE,EAAE7C,EAAEm9B,eAAe,GAAGt6B,EAAEkgC,GAAG,CAAC,IAAIlkC,EAAE,CAACs+B,eAAen9B,EAAEm9B,eAAegB,eAAen+B,EAAEm+B,eAAe0F,OAAO7jC,EAAE6jC,OAAOC,aAAa9jC,EAAE8jC,aAAaC,WAAW/jC,EAAE+jC,WAAWxG,KAAK,MAAM,OAAOz9B,GAAG0C,EAAE1C,EAAEjB,EAAE+D,EAAEjD,GAAGG,EAAEA,EAAEy9B,KAAK1+B,EAAEgE,EAAE4P,GAAE0qB,iBAC9e1qB,GAAE0qB,eAAet6B,EAAE+7B,GAAG/7B,GAAG,MAAM,OAAO/C,IAAIA,EAAEA,EAAEy9B,KAAK,CAACJ,eAAe,WAAWgB,eAAen+B,EAAEm+B,eAAe0F,OAAO7jC,EAAE6jC,OAAOC,aAAa9jC,EAAE8jC,aAAaC,WAAW/jC,EAAE+jC,WAAWxG,KAAK,OAAOoB,GAAG97B,EAAE7C,EAAEm+B,gBAAgBx+B,EAAEK,EAAE8jC,eAAetkC,EAAEQ,EAAE+jC,WAAWvkC,EAAEG,EAAEK,EAAE6jC,QAAQ7jC,EAAEA,EAAEu9B,IAAI,OAAO,OAAOv9B,GAAGA,IAAI3B,GAAG,OAAOyB,EAAE8C,EAAEjD,EAAEG,EAAEy9B,KAAK/6B,EAAEkyB,GAAG/0B,EAAEC,EAAE4f,iBAAiB4d,IAAG,GAAIx9B,EAAE4f,cAAc7f,EAAEC,EAAEg+B,UAAUh7B,EAAEhD,EAAEi+B,UAAU/9B,EAAEhB,EAAEklC,kBAAkBrkC,CAAC,CAAC,MAAM,CAACC,EAAE4f,cAAc1gB,EAAEmlC,SAAS,CACjc,SAASC,GAAG1kC,GAAG,IAAII,EAAE6jC,KAAK3kC,EAAEc,EAAE4jC,MAAM,GAAG,OAAO1kC,EAAE,MAAM0K,MAAM/J,EAAE,MAAMX,EAAE8kC,oBAAoBpkC,EAAE,IAAIG,EAAEb,EAAEmlC,SAAS5lC,EAAES,EAAEi/B,QAAQn7B,EAAEhD,EAAE4f,cAAc,GAAG,OAAOnhB,EAAE,CAACS,EAAEi/B,QAAQ,KAAK,IAAIv7B,EAAEnE,EAAEA,EAAEk/B,KAAK,GAAG36B,EAAEpD,EAAEoD,EAAEJ,EAAEqhC,QAAQrhC,EAAEA,EAAE+6B,WAAW/6B,IAAInE,GAAGq2B,GAAG9xB,EAAEhD,EAAE4f,iBAAiB4d,IAAG,GAAIx9B,EAAE4f,cAAc5c,EAAE,OAAOhD,EAAEi+B,YAAYj+B,EAAEg+B,UAAUh7B,GAAG9D,EAAEklC,kBAAkBphC,CAAC,CAAC,MAAM,CAACA,EAAEjD,EAAE,CACrV,SAASwkC,GAAG3kC,GAAG,IAAII,EAAE2jC,KAAmL,MAA9K,oBAAoB/jC,IAAIA,EAAEA,KAAKI,EAAE4f,cAAc5f,EAAEg+B,UAAUp+B,EAAoFA,GAAlFA,EAAEI,EAAE4jC,MAAM,CAACzF,QAAQ,KAAKkG,SAAS,KAAKL,oBAAoBF,GAAGM,kBAAkBxkC,IAAOykC,SAASG,GAAGh5B,KAAK,KAAKqH,GAAEjT,GAAS,CAACI,EAAE4f,cAAchgB,EAAE,CAAC,SAAS6kC,GAAG7kC,EAAEI,EAAEd,EAAEa,GAAkO,OAA/NH,EAAE,CAAC0a,IAAI1a,EAAE2L,OAAOvL,EAAE0kC,QAAQxlC,EAAEylC,KAAK5kC,EAAE49B,KAAK,MAAsB,QAAhB39B,EAAE6S,GAAEkrB,cAAsB/9B,EAAE,CAACqhC,WAAW,MAAMxuB,GAAEkrB,YAAY/9B,EAAEA,EAAEqhC,WAAWzhC,EAAE+9B,KAAK/9B,GAAmB,QAAfV,EAAEc,EAAEqhC,YAAoBrhC,EAAEqhC,WAAWzhC,EAAE+9B,KAAK/9B,GAAGG,EAAEb,EAAEy+B,KAAKz+B,EAAEy+B,KAAK/9B,EAAEA,EAAE+9B,KAAK59B,EAAEC,EAAEqhC,WAAWzhC,GAAWA,CAAC,CAC9d,SAASglC,KAAK,OAAOf,KAAKjkB,aAAa,CAAC,SAASilB,GAAGjlC,EAAEI,EAAEd,EAAEa,GAAG,IAAItB,EAAEklC,KAAK9wB,GAAE6M,WAAW9f,EAAEnB,EAAEmhB,cAAc6kB,GAAG,EAAEzkC,EAAEd,OAAE,OAAO,IAASa,EAAE,KAAKA,EAAE,CAAC,SAAS+kC,GAAGllC,EAAEI,EAAEd,EAAEa,GAAG,IAAItB,EAAEolC,KAAK9jC,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIiD,OAAE,EAAO,GAAG,OAAO/B,GAAE,CAAC,IAAI2B,EAAE3B,GAAE2e,cAA0B,GAAZ5c,EAAEJ,EAAE8hC,QAAW,OAAO3kC,GAAGsjC,GAAGtjC,EAAE6C,EAAE+hC,MAAmB,YAAZF,GAAGzkC,EAAEd,EAAE8D,EAAEjD,EAAU,CAAC8S,GAAE6M,WAAW9f,EAAEnB,EAAEmhB,cAAc6kB,GAAG,EAAEzkC,EAAEd,EAAE8D,EAAEjD,EAAE,CAAC,SAASglC,GAAGnlC,EAAEI,GAAG,OAAO6kC,GAAG,IAAI,EAAEjlC,EAAEI,EAAE,CAAC,SAASglC,GAAGplC,EAAEI,GAAG,OAAO8kC,GAAG,IAAI,EAAEllC,EAAEI,EAAE,CAAC,SAASilC,GAAGrlC,EAAEI,GAAG,OAAO8kC,GAAG,EAAE,EAAEllC,EAAEI,EAAE,CACrc,SAASklC,GAAGtlC,EAAEI,GAAG,MAAG,oBAAoBA,GAASJ,EAAEA,IAAII,EAAEJ,GAAG,WAAWI,EAAE,KAAK,GAAK,OAAOA,QAAG,IAASA,GAASJ,EAAEA,IAAII,EAAEkT,QAAQtT,EAAE,WAAWI,EAAEkT,QAAQ,IAAI,QAA1E,CAA2E,CAAC,SAASiyB,GAAGvlC,EAAEI,EAAEd,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEsG,OAAO,CAAC5F,IAAI,KAAYklC,GAAG,EAAE,EAAEI,GAAG15B,KAAK,KAAKxL,EAAEJ,GAAGV,EAAE,CAAC,SAASkmC,KAAK,CAAC,SAASC,GAAGzlC,EAAEI,GAA4C,OAAzC2jC,KAAK/jB,cAAc,CAAChgB,OAAE,IAASI,EAAE,KAAKA,GAAUJ,CAAC,CAAC,SAAS0lC,GAAG1lC,EAAEI,GAAG,IAAId,EAAE2kC,KAAK7jC,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAID,EAAEb,EAAE0gB,cAAc,OAAG,OAAO7f,GAAG,OAAOC,GAAGqjC,GAAGrjC,EAAED,EAAE,IAAWA,EAAE,IAAGb,EAAE0gB,cAAc,CAAChgB,EAAEI,GAAUJ,EAAC,CAChe,SAAS2lC,GAAG3lC,EAAEI,GAAG,IAAId,EAAE2kC,KAAK7jC,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAID,EAAEb,EAAE0gB,cAAc,OAAG,OAAO7f,GAAG,OAAOC,GAAGqjC,GAAGrjC,EAAED,EAAE,IAAWA,EAAE,IAAGH,EAAEA,IAAIV,EAAE0gB,cAAc,CAAChgB,EAAEI,GAAUJ,EAAC,CAAC,SAAS4lC,GAAG5lC,EAAEI,EAAEd,GAAG,IAAIa,EAAEk8B,KAAKE,GAAG,GAAGp8B,EAAE,GAAGA,GAAE,WAAWH,GAAE,EAAG,IAAGu8B,GAAG,GAAGp8B,EAAE,GAAGA,GAAE,WAAW,IAAIA,EAAEmjC,GAAGvqB,SAASuqB,GAAGvqB,cAAS,IAAS3Y,EAAE,KAAKA,EAAE,IAAIJ,GAAE,GAAIV,GAAG,CAAC,QAAQgkC,GAAGvqB,SAAS5Y,CAAC,CAAC,GAAE,CACrU,SAASykC,GAAG5kC,EAAEI,EAAEd,GAAG,IAAIa,EAAE2/B,KAAKjhC,EAAEygC,GAAGvmB,SAAqBla,EAAE,CAAC8+B,eAAfx9B,EAAE4/B,GAAG5/B,EAAEH,EAAEnB,GAAuB8/B,eAAe9/B,EAAEwlC,OAAO/kC,EAAEglC,aAAa,KAAKC,WAAW,KAAKxG,KAAK,MAAM,IAAI36B,EAAEhD,EAAEm+B,QAA6E,GAArE,OAAOn7B,EAAEvE,EAAEk/B,KAAKl/B,GAAGA,EAAEk/B,KAAK36B,EAAE26B,KAAK36B,EAAE26B,KAAKl/B,GAAGuB,EAAEm+B,QAAQ1/B,EAAEuE,EAAEpD,EAAE6f,UAAa7f,IAAIiT,IAAG,OAAO7P,GAAGA,IAAI6P,GAAEuwB,IAAG,EAAG3kC,EAAE8+B,eAAe4F,GAAGtwB,GAAE0qB,eAAe4F,OAAO,CAAC,GAAG,IAAIvjC,EAAE29B,iBAAiB,OAAOv6B,GAAG,IAAIA,EAAEu6B,iBAA0C,QAAxBv6B,EAAEhD,EAAEgkC,qBAA8B,IAAI,IAAIphC,EAAE5C,EAAEokC,kBAAkBlkC,EAAE8C,EAAEJ,EAAE1D,GAAmC,GAAhCT,EAAEylC,aAAalhC,EAAEvE,EAAE0lC,WAAWjkC,EAAK40B,GAAG50B,EAAE0C,GAAG,MAAM,CAAC,MAAMxC,GAAG,CAAUw/B,GAAGhgC,EAClgBG,EAAE,CAAC,CACH,IAAI2jC,GAAG,CAAC+B,YAAYhI,GAAGiI,YAAYzxB,GAAE0xB,WAAW1xB,GAAE2xB,UAAU3xB,GAAE4xB,oBAAoB5xB,GAAE6xB,gBAAgB7xB,GAAE8xB,QAAQ9xB,GAAE+xB,WAAW/xB,GAAEgyB,OAAOhyB,GAAEiyB,SAASjyB,GAAEkyB,cAAclyB,GAAEmyB,aAAanyB,GAAEoyB,iBAAiBpyB,GAAEqyB,cAAcryB,IAAGsvB,GAAG,CAACkC,YAAYhI,GAAGiI,YAAYL,GAAGM,WAAWlI,GAAGmI,UAAUb,GAAGc,oBAAoB,SAASjmC,EAAEI,EAAEd,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEsG,OAAO,CAAC5F,IAAI,KAAYilC,GAAG,EAAE,EAAEK,GAAG15B,KAAK,KAAKxL,EAAEJ,GAAGV,EAAE,EAAE4mC,gBAAgB,SAASlmC,EAAEI,GAAG,OAAO6kC,GAAG,EAAE,EAAEjlC,EAAEI,EAAE,EAAE+lC,QAAQ,SAASnmC,EAAEI,GAAG,IAAId,EAAEykC,KAC9c,OADmd3jC,OAAE,IAASA,EAAE,KAAKA,EAAEJ,EAAEA,IAAIV,EAAE0gB,cAAc,CAAChgB,EACjgBI,GAAUJ,CAAC,EAAEomC,WAAW,SAASpmC,EAAEI,EAAEd,GAAG,IAAIa,EAAE4jC,KAAuK,OAAlK3jC,OAAE,IAASd,EAAEA,EAAEc,GAAGA,EAAED,EAAE6f,cAAc7f,EAAEi+B,UAAUh+B,EAAmFJ,GAAjFA,EAAEG,EAAE6jC,MAAM,CAACzF,QAAQ,KAAKkG,SAAS,KAAKL,oBAAoBpkC,EAAEwkC,kBAAkBpkC,IAAOqkC,SAASG,GAAGh5B,KAAK,KAAKqH,GAAEjT,GAAS,CAACG,EAAE6f,cAAchgB,EAAE,EAAEqmC,OAAO,SAASrmC,GAA4B,OAAdA,EAAE,CAACsT,QAAQtT,GAAhB+jC,KAA4B/jB,cAAchgB,CAAC,EAAEsmC,SAAS3B,GAAG4B,cAAcf,GAAGgB,aAAarD,GAAGsD,iBAAiB,SAASzmC,EAAEI,GAAG,IAAId,EAAEqlC,GAAG3kC,GAAGG,EAAEb,EAAE,GAAGT,EAAES,EAAE,GAC9Y,OADiZ6lC,IAAG,WAAW,IAAI7lC,EAAEgkC,GAAGvqB,SAASuqB,GAAGvqB,cAAS,IAAS3Y,EAAE,KAAKA,EAAE,IAAIvB,EAAEmB,EAAE,CAAC,QAAQsjC,GAAGvqB,SAC9ezZ,CAAC,CAAC,GAAE,CAACU,EAAEI,IAAWD,CAAC,EAAEumC,cAAc,SAAS1mC,GAAG,IAAII,EAAEukC,IAAG,GAAIrlC,EAAEc,EAAE,GAAU,OAAPA,EAAEA,EAAE,GAAS,CAACqlC,GAAGG,GAAGh6B,KAAK,KAAKxL,EAAEJ,GAAG,CAACI,EAAEJ,IAAIV,EAAE,GAAGskC,GAAG,CAACiC,YAAYhI,GAAGiI,YAAYJ,GAAGK,WAAWlI,GAAGmI,UAAUZ,GAAGa,oBAAoBV,GAAGW,gBAAgBb,GAAGc,QAAQR,GAAGS,WAAWjC,GAAGkC,OAAOrB,GAAGsB,SAAS,WAAW,OAAOnC,GAAGD,GAAG,EAAEqC,cAAcf,GAAGgB,aAAarD,GAAGsD,iBAAiB,SAASzmC,EAAEI,GAAG,IAAId,EAAE6kC,GAAGD,IAAI/jC,EAAEb,EAAE,GAAGT,EAAES,EAAE,GAAyG,OAAtG8lC,IAAG,WAAW,IAAI9lC,EAAEgkC,GAAGvqB,SAASuqB,GAAGvqB,cAAS,IAAS3Y,EAAE,KAAKA,EAAE,IAAIvB,EAAEmB,EAAE,CAAC,QAAQsjC,GAAGvqB,SAASzZ,CAAC,CAAC,GAAE,CAACU,EAAEI,IAAWD,CAAC,EAAEumC,cAAc,SAAS1mC,GAAG,IAAII,EACxgB+jC,GAAGD,IAAI5kC,EAAEc,EAAE,GAAU,OAAPA,EAAEA,EAAE,GAAS,CAACslC,GAAGE,GAAGh6B,KAAK,KAAKxL,EAAEJ,GAAG,CAACI,EAAEJ,IAAIV,EAAE,GAAGukC,GAAG,CAACgC,YAAYhI,GAAGiI,YAAYJ,GAAGK,WAAWlI,GAAGmI,UAAUZ,GAAGa,oBAAoBV,GAAGW,gBAAgBb,GAAGc,QAAQR,GAAGS,WAAW1B,GAAG2B,OAAOrB,GAAGsB,SAAS,WAAW,OAAO5B,GAAGR,GAAG,EAAEqC,cAAcf,GAAGgB,aAAarD,GAAGsD,iBAAiB,SAASzmC,EAAEI,GAAG,IAAId,EAAEolC,GAAGR,IAAI/jC,EAAEb,EAAE,GAAGT,EAAES,EAAE,GAAyG,OAAtG8lC,IAAG,WAAW,IAAI9lC,EAAEgkC,GAAGvqB,SAASuqB,GAAGvqB,cAAS,IAAS3Y,EAAE,KAAKA,EAAE,IAAIvB,EAAEmB,EAAE,CAAC,QAAQsjC,GAAGvqB,SAASzZ,CAAC,CAAC,GAAE,CAACU,EAAEI,IAAWD,CAAC,EAAEumC,cAAc,SAAS1mC,GAAG,IAAII,EAAEskC,GAAGR,IAAI5kC,EAAEc,EAAE,GAAU,OAAPA,EAAEA,EAAE,GAAS,CAACslC,GAAGE,GAAGh6B,KAAK,KAC5fxL,EAAEJ,GAAG,CAACI,EAAEJ,IAAIV,EAAE,GAAGqnC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAG,SAASC,GAAG9mC,EAAEI,GAAG,IAAId,EAAEynC,GAAG,EAAE,KAAK,KAAK,GAAGznC,EAAE0L,YAAY,UAAU1L,EAAE+V,KAAK,UAAU/V,EAAEqX,UAAUvW,EAAEd,EAAEyb,OAAO/a,EAAEV,EAAEwgB,UAAU,EAAE,OAAO9f,EAAEyhC,YAAYzhC,EAAEyhC,WAAWC,WAAWpiC,EAAEU,EAAEyhC,WAAWniC,GAAGU,EAAE2hC,YAAY3hC,EAAEyhC,WAAWniC,CAAC,CAC3P,SAAS0nC,GAAGhnC,EAAEI,GAAG,OAAOJ,EAAE0a,KAAK,KAAK,EAAE,IAAIpb,EAAEU,EAAEqV,KAAyE,OAAO,QAA3EjV,EAAE,IAAIA,EAAEke,UAAUhf,EAAE2Y,gBAAgB7X,EAAE8a,SAASjD,cAAc,KAAK7X,KAAmBJ,EAAE2W,UAAUvW,GAAE,GAAO,KAAK,EAAE,OAAoD,QAA7CA,EAAE,KAAKJ,EAAEinC,cAAc,IAAI7mC,EAAEke,SAAS,KAAKle,KAAYJ,EAAE2W,UAAUvW,GAAE,GAAwB,QAAQ,OAAM,EAAG,CACzR,SAAS8mC,GAAGlnC,GAAG,GAAG6mC,GAAG,CAAC,IAAIzmC,EAAEwmC,GAAG,GAAGxmC,EAAE,CAAC,IAAId,EAAEc,EAAE,IAAI4mC,GAAGhnC,EAAEI,GAAG,CAAqB,KAApBA,EAAEqrB,GAAGnsB,EAAE6qB,gBAAqB6c,GAAGhnC,EAAEI,GAA+C,OAA3CJ,EAAE8f,WAAuB,KAAb9f,EAAE8f,UAAgB,EAAE+mB,IAAG,OAAGF,GAAG3mC,GAAS8mC,GAAGH,GAAGrnC,EAAE,CAACqnC,GAAG3mC,EAAE4mC,GAAGnb,GAAGrrB,EAAE2d,WAAW,MAAM/d,EAAE8f,WAAuB,KAAb9f,EAAE8f,UAAgB,EAAE+mB,IAAG,EAAGF,GAAG3mC,CAAC,CAAC,CAAC,SAASmnC,GAAGnnC,GAAG,IAAIA,EAAEA,EAAE+a,OAAO,OAAO/a,GAAG,IAAIA,EAAE0a,KAAK,IAAI1a,EAAE0a,KAAK,KAAK1a,EAAE0a,KAAK1a,EAAEA,EAAE+a,OAAO4rB,GAAG3mC,CAAC,CAC7T,SAASonC,GAAGpnC,GAAG,GAAGA,IAAI2mC,GAAG,OAAM,EAAG,IAAIE,GAAG,OAAOM,GAAGnnC,GAAG6mC,IAAG,GAAG,EAAG,IAAIzmC,EAAEJ,EAAEqV,KAAK,GAAG,IAAIrV,EAAE0a,KAAK,SAASta,GAAG,SAASA,IAAIirB,GAAGjrB,EAAEJ,EAAEijC,eAAe,IAAI7iC,EAAEwmC,GAAGxmC,GAAG0mC,GAAG9mC,EAAEI,GAAGA,EAAEqrB,GAAGrrB,EAAE+pB,aAAmB,GAANgd,GAAGnnC,GAAM,KAAKA,EAAE0a,IAAI,CAAgD,KAA7B1a,EAAE,QAApBA,EAAEA,EAAEggB,eAAyBhgB,EAAEigB,WAAW,MAAW,MAAMjW,MAAM/J,EAAE,MAAMD,EAAE,CAAiB,IAAhBA,EAAEA,EAAEmqB,YAAgB/pB,EAAE,EAAEJ,GAAG,CAAC,GAAG,IAAIA,EAAEse,SAAS,CAAC,IAAIhf,EAAEU,EAAE4rB,KAAK,GAAGtsB,IAAIwrB,GAAG,CAAC,GAAG,IAAI1qB,EAAE,CAACwmC,GAAGnb,GAAGzrB,EAAEmqB,aAAa,MAAMnqB,CAAC,CAACI,GAAG,MAAMd,IAAIurB,IAAIvrB,IAAI0rB,IAAI1rB,IAAIyrB,IAAI3qB,GAAG,CAACJ,EAAEA,EAAEmqB,WAAW,CAACyc,GAAG,IAAI,CAAC,MAAMA,GAAGD,GAAGlb,GAAGzrB,EAAE2W,UAAUwT,aAAa,KAAK,OAAM,CAAE,CAClf,SAASkd,KAAKT,GAAGD,GAAG,KAAKE,IAAG,CAAE,CAAC,IAAIS,GAAGhvB,EAAGivB,kBAAkB3J,IAAG,EAAG,SAAS4J,GAAExnC,EAAEI,EAAEd,EAAEa,GAAGC,EAAEggB,MAAM,OAAOpgB,EAAEsiC,GAAGliC,EAAE,KAAKd,EAAEa,GAAGkiC,GAAGjiC,EAAEJ,EAAEogB,MAAM9gB,EAAEa,EAAE,CAAC,SAASsnC,GAAGznC,EAAEI,EAAEd,EAAEa,EAAEtB,GAAGS,EAAEA,EAAEgb,OAAO,IAAIlX,EAAEhD,EAAE8T,IAA8B,OAA1BupB,GAAGr9B,EAAEvB,GAAGsB,EAAEujC,GAAG1jC,EAAEI,EAAEd,EAAEa,EAAEiD,EAAEvE,GAAM,OAAOmB,GAAI49B,IAA4Gx9B,EAAE0f,WAAW,EAAE0nB,GAAExnC,EAAEI,EAAED,EAAEtB,GAAUuB,EAAEggB,QAArIhgB,EAAE+9B,YAAYn+B,EAAEm+B,YAAY/9B,EAAE0f,YAAY,IAAI9f,EAAE29B,gBAAgB9+B,IAAImB,EAAE29B,eAAe,GAAG+J,GAAG1nC,EAAEI,EAAEvB,GAA2C,CACjX,SAAS8oC,GAAG3nC,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,GAAG,GAAG,OAAOpD,EAAE,CAAC,IAAIgD,EAAE1D,EAAE+V,KAAK,MAAG,oBAAoBrS,GAAI4kC,GAAG5kC,SAAI,IAASA,EAAE85B,cAAc,OAAOx9B,EAAEuoC,cAAS,IAASvoC,EAAEw9B,eAAsD98B,EAAEgiC,GAAG1iC,EAAE+V,KAAK,KAAKlV,EAAE,KAAKC,EAAE2hC,KAAK3+B,IAAK8Q,IAAI9T,EAAE8T,IAAIlU,EAAE+a,OAAO3a,EAASA,EAAEggB,MAAMpgB,IAA1GI,EAAEsa,IAAI,GAAGta,EAAEiV,KAAKrS,EAAE8kC,GAAG9nC,EAAEI,EAAE4C,EAAE7C,EAAEtB,EAAEuE,GAA4E,CAAW,OAAVJ,EAAEhD,EAAEogB,MAASvhB,EAAEuE,IAAIvE,EAAEmE,EAAEigC,eAA0B3jC,EAAE,QAAdA,EAAEA,EAAEuoC,SAAmBvoC,EAAE81B,IAAKv2B,EAAEsB,IAAIH,EAAEkU,MAAM9T,EAAE8T,KAAYwzB,GAAG1nC,EAAEI,EAAEgD,IAAGhD,EAAE0f,WAAW,GAAE9f,EAAE6hC,GAAG7+B,EAAE7C,IAAK+T,IAAI9T,EAAE8T,IAAIlU,EAAE+a,OAAO3a,EAASA,EAAEggB,MAAMpgB,EAAC,CACpb,SAAS8nC,GAAG9nC,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,GAAG,OAAO,OAAOpD,GAAGo1B,GAAGp1B,EAAEijC,cAAc9iC,IAAIH,EAAEkU,MAAM9T,EAAE8T,MAAM0pB,IAAG,EAAG/+B,EAAEuE,IAAIhD,EAAEu9B,eAAe39B,EAAE29B,eAAe+J,GAAG1nC,EAAEI,EAAEgD,IAAI2kC,GAAG/nC,EAAEI,EAAEd,EAAEa,EAAEiD,EAAE,CAAC,SAAS4kC,GAAGhoC,EAAEI,GAAG,IAAId,EAAEc,EAAE8T,KAAO,OAAOlU,GAAG,OAAOV,GAAG,OAAOU,GAAGA,EAAEkU,MAAM5U,KAAEc,EAAE0f,WAAW,IAAG,CAAC,SAASioB,GAAG/nC,EAAEI,EAAEd,EAAEa,EAAEtB,GAAG,IAAIuE,EAAE62B,GAAE36B,GAAGs6B,GAAGF,GAAEpmB,QAA4C,OAApClQ,EAAEy2B,GAAGz5B,EAAEgD,GAAGq6B,GAAGr9B,EAAEvB,GAAGS,EAAEokC,GAAG1jC,EAAEI,EAAEd,EAAEa,EAAEiD,EAAEvE,GAAM,OAAOmB,GAAI49B,IAA4Gx9B,EAAE0f,WAAW,EAAE0nB,GAAExnC,EAAEI,EAAEd,EAAET,GAAUuB,EAAEggB,QAArIhgB,EAAE+9B,YAAYn+B,EAAEm+B,YAAY/9B,EAAE0f,YAAY,IAAI9f,EAAE29B,gBAAgB9+B,IAAImB,EAAE29B,eAAe,GAAG+J,GAAG1nC,EAAEI,EAAEvB,GAA2C,CACte,SAASopC,GAAGjoC,EAAEI,EAAEd,EAAEa,EAAEtB,GAAG,GAAGo7B,GAAE36B,GAAG,CAAC,IAAI8D,GAAE,EAAGm3B,GAAGn6B,EAAE,MAAMgD,GAAE,EAAW,GAARq6B,GAAGr9B,EAAEvB,GAAM,OAAOuB,EAAEuW,UAAU,OAAO3W,IAAIA,EAAE6f,UAAU,KAAKzf,EAAEyf,UAAU,KAAKzf,EAAE0f,WAAW,GAAGwgB,GAAGlgC,EAAEd,EAAEa,GAAG0gC,GAAGzgC,EAAEd,EAAEa,EAAEtB,GAAGsB,GAAE,OAAQ,GAAG,OAAOH,EAAE,CAAC,IAAIgD,EAAE5C,EAAEuW,UAAUrW,EAAEF,EAAE6iC,cAAcjgC,EAAE0G,MAAMpJ,EAAE,IAAIE,EAAEwC,EAAEwL,QAAQnL,EAAE/D,EAAEihC,YAAY,kBAAkBl9B,GAAG,OAAOA,EAAEA,EAAEw6B,GAAGx6B,GAAwBA,EAAEw2B,GAAGz5B,EAAzBiD,EAAE42B,GAAE36B,GAAGs6B,GAAGF,GAAEpmB,SAAmB,IAAIjU,EAAEC,EAAEwhC,yBAAyBvhC,EAAE,oBAAoBF,GAAG,oBAAoB2D,EAAE+9B,wBAAwBxhC,GAAG,oBAAoByD,EAAE49B,kCACtd,oBAAoB59B,EAAE29B,4BAA4BrgC,IAAIH,GAAGK,IAAI6C,IAAIq9B,GAAGtgC,EAAE4C,EAAE7C,EAAEkD,GAAG46B,IAAG,EAAG,IAAIx9B,EAAEL,EAAE4f,cAAchd,EAAEw9B,MAAM//B,EAAEu+B,GAAG5+B,EAAED,EAAE6C,EAAEnE,GAAG2B,EAAEJ,EAAE4f,cAAc1f,IAAIH,GAAGM,IAAID,GAAGm5B,GAAErmB,SAAS2qB,IAAI,oBAAoB5+B,IAAIogC,GAAGr/B,EAAEd,EAAED,EAAEc,GAAGK,EAAEJ,EAAE4f,gBAAgB1f,EAAE29B,IAAIkC,GAAG//B,EAAEd,EAAEgB,EAAEH,EAAEM,EAAED,EAAE6C,KAAK9D,GAAG,oBAAoByD,EAAEg+B,2BAA2B,oBAAoBh+B,EAAEi+B,qBAAqB,oBAAoBj+B,EAAEi+B,oBAAoBj+B,EAAEi+B,qBAAqB,oBAAoBj+B,EAAEg+B,2BAA2Bh+B,EAAEg+B,6BAA6B,oBACzeh+B,EAAEk+B,oBAAoB9gC,EAAE0f,WAAW,KAAK,oBAAoB9c,EAAEk+B,oBAAoB9gC,EAAE0f,WAAW,GAAG1f,EAAE6iC,cAAc9iC,EAAEC,EAAE4f,cAAcxf,GAAGwC,EAAE0G,MAAMvJ,EAAE6C,EAAEw9B,MAAMhgC,EAAEwC,EAAEwL,QAAQnL,EAAElD,EAAEG,IAAI,oBAAoB0C,EAAEk+B,oBAAoB9gC,EAAE0f,WAAW,GAAG3f,GAAE,EAAG,MAAM6C,EAAE5C,EAAEuW,UAAU8nB,GAAGz+B,EAAEI,GAAGE,EAAEF,EAAE6iC,cAAcjgC,EAAE0G,MAAMtJ,EAAEiV,OAAOjV,EAAE4K,YAAY1K,EAAEu8B,GAAGz8B,EAAEiV,KAAK/U,GAAGE,EAAEwC,EAAEwL,QAAwB,kBAAhBnL,EAAE/D,EAAEihC,cAAiC,OAAOl9B,EAAEA,EAAEw6B,GAAGx6B,GAAwBA,EAAEw2B,GAAGz5B,EAAzBiD,EAAE42B,GAAE36B,GAAGs6B,GAAGF,GAAEpmB,UAAiD/T,EAAE,oBAAhCF,EAAEC,EAAEwhC,2BAAmD,oBACje99B,EAAE+9B,0BAA0B,oBAAoB/9B,EAAE49B,kCAAkC,oBAAoB59B,EAAE29B,4BAA4BrgC,IAAIH,GAAGK,IAAI6C,IAAIq9B,GAAGtgC,EAAE4C,EAAE7C,EAAEkD,GAAG46B,IAAG,EAAGz9B,EAAEJ,EAAE4f,cAAchd,EAAEw9B,MAAMhgC,EAAEw+B,GAAG5+B,EAAED,EAAE6C,EAAEnE,GAAG4B,EAAEL,EAAE4f,cAAc1f,IAAIH,GAAGK,IAAIC,GAAGk5B,GAAErmB,SAAS2qB,IAAI,oBAAoB5+B,IAAIogC,GAAGr/B,EAAEd,EAAED,EAAEc,GAAGM,EAAEL,EAAE4f,gBAAgB3gB,EAAE4+B,IAAIkC,GAAG//B,EAAEd,EAAEgB,EAAEH,EAAEK,EAAEC,EAAE4C,KAAK9D,GAAG,oBAAoByD,EAAEklC,4BAA4B,oBAAoBllC,EAAEmlC,sBAAsB,oBAAoBnlC,EAAEmlC,qBAAqBnlC,EAAEmlC,oBAAoBhoC,EACzfM,EAAE4C,GAAG,oBAAoBL,EAAEklC,4BAA4BllC,EAAEklC,2BAA2B/nC,EAAEM,EAAE4C,IAAI,oBAAoBL,EAAEolC,qBAAqBhoC,EAAE0f,WAAW,GAAG,oBAAoB9c,EAAE+9B,0BAA0B3gC,EAAE0f,WAAW,OAAO,oBAAoB9c,EAAEolC,oBAAoB9nC,IAAIN,EAAEijC,eAAeziC,IAAIR,EAAEggB,gBAAgB5f,EAAE0f,WAAW,GAAG,oBAAoB9c,EAAE+9B,yBAAyBzgC,IAAIN,EAAEijC,eAAeziC,IAAIR,EAAEggB,gBAAgB5f,EAAE0f,WAAW,KAAK1f,EAAE6iC,cAAc9iC,EAAEC,EAAE4f,cAAcvf,GAAGuC,EAAE0G,MAAMvJ,EAAE6C,EAAEw9B,MAAM//B,EAAEuC,EAAEwL,QAAQnL,EAAElD,EAAEd,IAClf,oBAAoB2D,EAAEolC,oBAAoB9nC,IAAIN,EAAEijC,eAAeziC,IAAIR,EAAEggB,gBAAgB5f,EAAE0f,WAAW,GAAG,oBAAoB9c,EAAE+9B,yBAAyBzgC,IAAIN,EAAEijC,eAAeziC,IAAIR,EAAEggB,gBAAgB5f,EAAE0f,WAAW,KAAK3f,GAAE,GAAI,OAAOkoC,GAAGroC,EAAEI,EAAEd,EAAEa,EAAEiD,EAAEvE,EAAE,CAC9O,SAASwpC,GAAGroC,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,GAAG4kC,GAAGhoC,EAAEI,GAAG,IAAI4C,EAAE,KAAiB,GAAZ5C,EAAE0f,WAAc,IAAI3f,IAAI6C,EAAE,OAAOnE,GAAG47B,GAAGr6B,EAAEd,GAAE,GAAIooC,GAAG1nC,EAAEI,EAAEgD,GAAGjD,EAAEC,EAAEuW,UAAU2wB,GAAGh0B,QAAQlT,EAAE,IAAIE,EAAE0C,GAAG,oBAAoB1D,EAAEgpC,yBAAyB,KAAKnoC,EAAEma,SAA2I,OAAlIla,EAAE0f,WAAW,EAAE,OAAO9f,GAAGgD,GAAG5C,EAAEggB,MAAMiiB,GAAGjiC,EAAEJ,EAAEogB,MAAM,KAAKhd,GAAGhD,EAAEggB,MAAMiiB,GAAGjiC,EAAE,KAAKE,EAAE8C,IAAIokC,GAAExnC,EAAEI,EAAEE,EAAE8C,GAAGhD,EAAE4f,cAAc7f,EAAEqgC,MAAM3hC,GAAG47B,GAAGr6B,EAAEd,GAAE,GAAWc,EAAEggB,KAAK,CAAC,SAASmoB,GAAGvoC,GAAG,IAAII,EAAEJ,EAAE2W,UAAUvW,EAAEooC,eAAepO,GAAGp6B,EAAEI,EAAEooC,eAAepoC,EAAEooC,iBAAiBpoC,EAAEoO,SAASpO,EAAEoO,SAAS4rB,GAAGp6B,EAAEI,EAAEoO,SAAQ,GAAIo0B,GAAG5iC,EAAEI,EAAE4hB,cAAc,CAClf,IAOoXymB,GAAGC,GAAGC,GAAGC,GAPzXC,GAAG,CAAC5oB,WAAW,KAAK6oB,UAAU,GAClC,SAASC,GAAG/oC,EAAEI,EAAEd,GAAG,IAA+CgB,EAA3CH,EAAEC,EAAE2hC,KAAKljC,EAAEuB,EAAE6mC,aAAa7jC,EAAE9B,GAAEgS,QAAQtQ,GAAE,EAAqN,IAA/M1C,EAAE,KAAiB,GAAZF,EAAE0f,cAAiBxf,EAAE,KAAO,EAAF8C,KAAO,OAAOpD,GAAG,OAAOA,EAAEggB,gBAAgB1f,GAAG0C,GAAE,EAAG5C,EAAE0f,YAAY,IAAI,OAAO9f,GAAG,OAAOA,EAAEggB,oBAAe,IAASnhB,EAAEmqC,WAAU,IAAKnqC,EAAEoqC,6BAA6B7lC,GAAG,GAAGsQ,GAAEpS,GAAI,EAAF8B,GAAQ,OAAOpD,EAAE,CAA4B,QAA3B,IAASnB,EAAEmqC,UAAU9B,GAAG9mC,GAAM4C,EAAE,CAA6C,GAA5CA,EAAEnE,EAAEmqC,UAASnqC,EAAEsjC,GAAG,KAAKhiC,EAAE,EAAE,OAAQ4a,OAAO3a,EAAK,KAAY,EAAPA,EAAE2hC,MAAQ,IAAI/hC,EAAE,OAAOI,EAAE4f,cAAc5f,EAAEggB,MAAMA,MAAMhgB,EAAEggB,MAAMvhB,EAAEuhB,MAAMpgB,EAAE,OAAOA,GAAGA,EAAE+a,OAAOlc,EAAEmB,EAAEA,EAAEqgB,QAC3a,OADmb/gB,EAAE6iC,GAAGn/B,EAAE7C,EAAEb,EAAE,OAAQyb,OACjf3a,EAAEvB,EAAEwhB,QAAQ/gB,EAAEc,EAAE4f,cAAc6oB,GAAGzoC,EAAEggB,MAAMvhB,EAASS,CAAC,CAAmC,OAAlCa,EAAEtB,EAAEoG,SAAS7E,EAAE4f,cAAc,KAAY5f,EAAEggB,MAAMkiB,GAAGliC,EAAE,KAAKD,EAAEb,EAAE,CAAC,GAAG,OAAOU,EAAEggB,cAAc,CAAuB,GAAZ7f,GAAVH,EAAEA,EAAEogB,OAAUC,QAAWrd,EAAE,CAAgD,GAA/CnE,EAAEA,EAAEmqC,UAAS1pC,EAAEuiC,GAAG7hC,EAAEA,EAAEinC,eAAgBlsB,OAAO3a,EAAK,KAAY,EAAPA,EAAE2hC,QAAU/+B,EAAE,OAAO5C,EAAE4f,cAAc5f,EAAEggB,MAAMA,MAAMhgB,EAAEggB,SAAUpgB,EAAEogB,MAAO,IAAI9gB,EAAE8gB,MAAMpd,EAAE,OAAOA,GAAGA,EAAE+X,OAAOzb,EAAE0D,EAAEA,EAAEqd,QAA8F,OAAtFlgB,EAAE0hC,GAAG1hC,EAAEtB,IAAKkc,OAAO3a,EAAEd,EAAE+gB,QAAQlgB,EAAEb,EAAEk+B,oBAAoB,EAAEp9B,EAAE4f,cAAc6oB,GAAGzoC,EAAEggB,MAAM9gB,EAASa,CAAC,CAAmD,OAAlDb,EAAE+iC,GAAGjiC,EAAEJ,EAAEogB,MAAMvhB,EAAEoG,SAAS3F,GAAGc,EAAE4f,cAAc,KAAY5f,EAAEggB,MACnf9gB,CAAC,CAAW,GAAVU,EAAEA,EAAEogB,MAASpd,EAAE,CAA8E,GAA7EA,EAAEnE,EAAEmqC,UAASnqC,EAAEsjC,GAAG,KAAKhiC,EAAE,EAAE,OAAQ4a,OAAO3a,EAAEvB,EAAEuhB,MAAMpgB,EAAE,OAAOA,IAAIA,EAAE+a,OAAOlc,GAAM,KAAY,EAAPuB,EAAE2hC,MAAQ,IAAI/hC,EAAE,OAAOI,EAAE4f,cAAc5f,EAAEggB,MAAMA,MAAMhgB,EAAEggB,MAAMvhB,EAAEuhB,MAAMpgB,EAAE,OAAOA,GAAGA,EAAE+a,OAAOlc,EAAEmB,EAAEA,EAAEqgB,QAAoH,OAA5G/gB,EAAE6iC,GAAGn/B,EAAE7C,EAAEb,EAAE,OAAQyb,OAAO3a,EAAEvB,EAAEwhB,QAAQ/gB,EAAEA,EAAEwgB,WAAW,EAAEjhB,EAAE2+B,oBAAoB,EAAEp9B,EAAE4f,cAAc6oB,GAAGzoC,EAAEggB,MAAMvhB,EAASS,CAAC,CAAsB,OAArBc,EAAE4f,cAAc,KAAY5f,EAAEggB,MAAMiiB,GAAGjiC,EAAEJ,EAAEnB,EAAEoG,SAAS3F,EAAE,CAC5X,SAAS4pC,GAAGlpC,EAAEI,GAAGJ,EAAE29B,eAAev9B,IAAIJ,EAAE29B,eAAev9B,GAAG,IAAId,EAAEU,EAAE6f,UAAU,OAAOvgB,GAAGA,EAAEq+B,eAAev9B,IAAId,EAAEq+B,eAAev9B,GAAGm9B,GAAGv9B,EAAE+a,OAAO3a,EAAE,CAAC,SAAS+oC,GAAGnpC,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,GAAG,IAAIJ,EAAEhD,EAAEggB,cAAc,OAAOhd,EAAEhD,EAAEggB,cAAc,CAACopB,YAAYhpC,EAAEipC,UAAU,KAAKC,mBAAmB,EAAEC,KAAKppC,EAAEqpC,KAAKlqC,EAAEmqC,eAAe,EAAEC,SAAS7qC,EAAE4iC,WAAWr+B,IAAIJ,EAAEomC,YAAYhpC,EAAE4C,EAAEqmC,UAAU,KAAKrmC,EAAEsmC,mBAAmB,EAAEtmC,EAAEumC,KAAKppC,EAAE6C,EAAEwmC,KAAKlqC,EAAE0D,EAAEymC,eAAe,EAAEzmC,EAAE0mC,SAAS7qC,EAAEmE,EAAEy+B,WAAWr+B,EAAE,CAC3b,SAASumC,GAAG3pC,EAAEI,EAAEd,GAAG,IAAIa,EAAEC,EAAE6mC,aAAapoC,EAAEsB,EAAE+iC,YAAY9/B,EAAEjD,EAAEqpC,KAAqC,GAAhChC,GAAExnC,EAAEI,EAAED,EAAE8E,SAAS3F,GAAkB,KAAO,GAAtBa,EAAEmB,GAAEgS,UAAqBnT,EAAI,EAAFA,EAAI,EAAEC,EAAE0f,WAAW,OAAO,CAAC,GAAG,OAAO9f,GAAG,KAAiB,GAAZA,EAAE8f,WAAc9f,EAAE,IAAIA,EAAEI,EAAEggB,MAAM,OAAOpgB,GAAG,CAAC,GAAG,KAAKA,EAAE0a,IAAI,OAAO1a,EAAEggB,eAAekpB,GAAGlpC,EAAEV,QAAQ,GAAG,KAAKU,EAAE0a,IAAIwuB,GAAGlpC,EAAEV,QAAQ,GAAG,OAAOU,EAAEogB,MAAM,CAACpgB,EAAEogB,MAAMrF,OAAO/a,EAAEA,EAAEA,EAAEogB,MAAM,QAAQ,CAAC,GAAGpgB,IAAII,EAAE,MAAMJ,EAAE,KAAK,OAAOA,EAAEqgB,SAAS,CAAC,GAAG,OAAOrgB,EAAE+a,QAAQ/a,EAAE+a,SAAS3a,EAAE,MAAMJ,EAAEA,EAAEA,EAAE+a,MAAM,CAAC/a,EAAEqgB,QAAQtF,OAAO/a,EAAE+a,OAAO/a,EAAEA,EAAEqgB,OAAO,CAAClgB,GAAG,CAAC,CAAQ,GAAPuT,GAAEpS,GAAEnB,GAAM,KAAY,EAAPC,EAAE2hC,MAAQ3hC,EAAE4f,cAChf,UAAU,OAAOnhB,GAAG,IAAK,WAAqB,IAAVS,EAAEc,EAAEggB,MAAUvhB,EAAE,KAAK,OAAOS,GAAiB,QAAdU,EAAEV,EAAEugB,YAAoB,OAAOmjB,GAAGhjC,KAAKnB,EAAES,GAAGA,EAAEA,EAAE+gB,QAAY,QAAJ/gB,EAAET,IAAYA,EAAEuB,EAAEggB,MAAMhgB,EAAEggB,MAAM,OAAOvhB,EAAES,EAAE+gB,QAAQ/gB,EAAE+gB,QAAQ,MAAM8oB,GAAG/oC,GAAE,EAAGvB,EAAES,EAAE8D,EAAEhD,EAAEqhC,YAAY,MAAM,IAAK,YAA6B,IAAjBniC,EAAE,KAAKT,EAAEuB,EAAEggB,MAAUhgB,EAAEggB,MAAM,KAAK,OAAOvhB,GAAG,CAAe,GAAG,QAAjBmB,EAAEnB,EAAEghB,YAAuB,OAAOmjB,GAAGhjC,GAAG,CAACI,EAAEggB,MAAMvhB,EAAE,KAAK,CAACmB,EAAEnB,EAAEwhB,QAAQxhB,EAAEwhB,QAAQ/gB,EAAEA,EAAET,EAAEA,EAAEmB,CAAC,CAACmpC,GAAG/oC,GAAE,EAAGd,EAAE,KAAK8D,EAAEhD,EAAEqhC,YAAY,MAAM,IAAK,WAAW0H,GAAG/oC,GAAE,EAAG,KAAK,UAAK,EAAOA,EAAEqhC,YAAY,MAAM,QAAQrhC,EAAE4f,cAAc,KAAK,OAAO5f,EAAEggB,KAAK,CACpgB,SAASsnB,GAAG1nC,EAAEI,EAAEd,GAAG,OAAOU,IAAII,EAAEgW,aAAapW,EAAEoW,cAAc,IAAIjW,EAAEC,EAAEu9B,eAA4B,GAAb,IAAIx9B,GAAGi/B,GAAGj/B,GAAMC,EAAEo9B,oBAAoBl+B,EAAE,OAAO,KAAK,GAAG,OAAOU,GAAGI,EAAEggB,QAAQpgB,EAAEogB,MAAM,MAAMpW,MAAM/J,EAAE,MAAM,GAAG,OAAOG,EAAEggB,MAAM,CAA4C,IAAjC9gB,EAAEuiC,GAAZ7hC,EAAEI,EAAEggB,MAAapgB,EAAEinC,cAAc7mC,EAAEggB,MAAM9gB,EAAMA,EAAEyb,OAAO3a,EAAE,OAAOJ,EAAEqgB,SAASrgB,EAAEA,EAAEqgB,SAAQ/gB,EAAEA,EAAE+gB,QAAQwhB,GAAG7hC,EAAEA,EAAEinC,eAAgBlsB,OAAO3a,EAAEd,EAAE+gB,QAAQ,IAAI,CAAC,OAAOjgB,EAAEggB,KAAK,CAKjU,SAASwpB,GAAG5pC,EAAEI,GAAG,OAAOJ,EAAE0pC,UAAU,IAAK,SAAStpC,EAAEJ,EAAEwpC,KAAK,IAAI,IAAIlqC,EAAE,KAAK,OAAOc,GAAG,OAAOA,EAAEyf,YAAYvgB,EAAEc,GAAGA,EAAEA,EAAEigB,QAAQ,OAAO/gB,EAAEU,EAAEwpC,KAAK,KAAKlqC,EAAE+gB,QAAQ,KAAK,MAAM,IAAK,YAAY/gB,EAAEU,EAAEwpC,KAAK,IAAI,IAAIrpC,EAAE,KAAK,OAAOb,GAAG,OAAOA,EAAEugB,YAAY1f,EAAEb,GAAGA,EAAEA,EAAE+gB,QAAQ,OAAOlgB,EAAEC,GAAG,OAAOJ,EAAEwpC,KAAKxpC,EAAEwpC,KAAK,KAAKxpC,EAAEwpC,KAAKnpB,QAAQ,KAAKlgB,EAAEkgB,QAAQ,KAAK,CACpX,SAASwpB,GAAG7pC,EAAEI,EAAEd,GAAG,IAAIa,EAAEC,EAAE6mC,aAAa,OAAO7mC,EAAEsa,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,KAAK,KAAK,EAQwK,KAAK,GAAG,OAAOuf,GAAE75B,EAAEiV,OAAO8kB,KAAK,KARzK,KAAK,EAAE,OAAO0I,KAAKrJ,GAAEG,IAAGH,GAAEE,KAAGp6B,EAAEc,EAAEuW,WAAY6xB,iBAAiBlpC,EAAEkP,QAAQlP,EAAEkpC,eAAelpC,EAAEkpC,eAAe,MAAM,OAAOxoC,GAAG,OAAOA,EAAEogB,QAAQgnB,GAAGhnC,KAAKA,EAAE0f,WAAW,GAAG4oB,GAAGtoC,GAAG,KAAK,KAAK,EAAE2iC,GAAG3iC,GAAGd,EAAEqjC,GAAGD,GAAGpvB,SAAS,IAAIzU,EAAEuB,EAAEiV,KAAK,GAAG,OAAOrV,GAAG,MAAMI,EAAEuW,UAAUgyB,GAAG3oC,EAAEI,EAAEvB,EAAEsB,EAAEb,GAAGU,EAAEkU,MAAM9T,EAAE8T,MAAM9T,EAAE0f,WAAW,SAAS,CAAC,IAAI3f,EAAE,CAAC,GAAG,OAAOC,EAAEuW,UAAU,MAAM3M,MAAM/J,EAAE,MACxgB,OAAO,IAAI,CAAkB,GAAjBD,EAAE2iC,GAAGH,GAAGlvB,SAAY8zB,GAAGhnC,GAAG,CAACD,EAAEC,EAAEuW,UAAU9X,EAAEuB,EAAEiV,KAAK,IAAIjS,EAAEhD,EAAE6iC,cAA8B,OAAhB9iC,EAAE2rB,IAAI1rB,EAAED,EAAE4rB,IAAI3oB,EAASvE,GAAG,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQwjB,GAAE,OAAOliB,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIH,EAAE,EAAEA,EAAEuf,GAAG1f,OAAOG,IAAIqiB,GAAE9C,GAAGvf,GAAGG,GAAG,MAAM,IAAK,SAASkiB,GAAE,QAAQliB,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOkiB,GAAE,QAAQliB,GAAGkiB,GAAE,OAAOliB,GAAG,MAAM,IAAK,OAAOkiB,GAAE,QAAQliB,GAAGkiB,GAAE,SAASliB,GAAG,MAAM,IAAK,UAAUkiB,GAAE,SAASliB,GAAG,MAAM,IAAK,QAAQ8b,GAAG9b,EAAEiD,GAAGif,GAAE,UAAUliB,GAAG0pB,GAAGvqB,EAAE,YAAY,MAAM,IAAK,SAASa,EAAE4b,cAC3e,CAAC+tB,cAAc1mC,EAAE2mC,UAAU1nB,GAAE,UAAUliB,GAAG0pB,GAAGvqB,EAAE,YAAY,MAAM,IAAK,WAAW6d,GAAGhd,EAAEiD,GAAGif,GAAE,UAAUliB,GAAG0pB,GAAGvqB,EAAE,YAA2B,IAAI,IAAI0D,KAAvBymB,GAAG5qB,EAAEuE,GAAGpD,EAAE,KAAkBoD,EAAE,GAAGA,EAAErD,eAAeiD,GAAG,CAAC,IAAI1C,EAAE8C,EAAEJ,GAAG,aAAaA,EAAE,kBAAkB1C,EAAEH,EAAEod,cAAcjd,IAAIN,EAAE,CAAC,WAAWM,IAAI,kBAAkBA,GAAGH,EAAEod,cAAc,GAAGjd,IAAIN,EAAE,CAAC,WAAW,GAAGM,IAAI4V,EAAGnW,eAAeiD,IAAI,MAAM1C,GAAGupB,GAAGvqB,EAAE0D,EAAE,CAAC,OAAOnE,GAAG,IAAK,QAAQsc,GAAGhb,GAAGoc,GAAGpc,EAAEiD,GAAE,GAAI,MAAM,IAAK,WAAW+X,GAAGhb,GAAGmd,GAAGnd,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoBiD,EAAE4mC,UAC1f7pC,EAAE8pC,QAAQngB,IAAIxqB,EAAEU,EAAEI,EAAE+9B,YAAY7+B,EAAE,OAAOA,IAAIc,EAAE0f,WAAW,EAAE,KAAK,CAAuY,OAAtY9c,EAAE,IAAI1D,EAAEgf,SAAShf,EAAEA,EAAEkd,cAAcxc,IAAI4pB,KAAK5pB,EAAEyd,GAAG5e,IAAImB,IAAI4pB,GAAG,WAAW/qB,IAAGmB,EAAEgD,EAAEgR,cAAc,QAAS8J,UAAU,qBAAuB9d,EAAEA,EAAEge,YAAYhe,EAAE+d,aAAa,kBAAkB5d,EAAEwpB,GAAG3pB,EAAEgD,EAAEgR,cAAcnV,EAAE,CAAC8qB,GAAGxpB,EAAEwpB,MAAM3pB,EAAEgD,EAAEgR,cAAcnV,GAAG,WAAWA,IAAImE,EAAEhD,EAAEG,EAAE4pC,SAAS/mC,EAAE+mC,UAAS,EAAG5pC,EAAE+pC,OAAOlnC,EAAEknC,KAAK/pC,EAAE+pC,QAAQlqC,EAAEgD,EAAEmnC,gBAAgBnqC,EAAEnB,GAAGmB,EAAE8rB,IAAI1rB,EAAEJ,EAAE+rB,IAAI5rB,EAAEsoC,GAAGzoC,EAAEI,GAAE,GAAG,GAAIA,EAAEuW,UAAU3W,EAAEgD,EAAE0mB,GAAG7qB,EAAEsB,GAAUtB,GAAG,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQwjB,GAAE,OAC9friB,GAAGM,EAAEH,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIG,EAAE,EAAEA,EAAEif,GAAG1f,OAAOS,IAAI+hB,GAAE9C,GAAGjf,GAAGN,GAAGM,EAAEH,EAAE,MAAM,IAAK,SAASkiB,GAAE,QAAQriB,GAAGM,EAAEH,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOkiB,GAAE,QAAQriB,GAAGqiB,GAAE,OAAOriB,GAAGM,EAAEH,EAAE,MAAM,IAAK,OAAOkiB,GAAE,QAAQriB,GAAGqiB,GAAE,SAASriB,GAAGM,EAAEH,EAAE,MAAM,IAAK,UAAUkiB,GAAE,SAASriB,GAAGM,EAAEH,EAAE,MAAM,IAAK,QAAQ8b,GAAGjc,EAAEG,GAAGG,EAAEsb,GAAG5b,EAAEG,GAAGkiB,GAAE,UAAUriB,GAAG6pB,GAAGvqB,EAAE,YAAY,MAAM,IAAK,SAASgB,EAAEoc,GAAG1c,EAAEG,GAAG,MAAM,IAAK,SAASH,EAAE+b,cAAc,CAAC+tB,cAAc3pC,EAAE4pC,UAAUzpC,EAAEtB,EAAE,CAAC,EAAEmB,EAAE,CAAC2F,WAAM,IAASuc,GAAE,UAAUriB,GAAG6pB,GAAGvqB,EAAE,YAAY,MAAM,IAAK,WAAW6d,GAAGnd,EACtgBG,GAAGG,EAAE2c,GAAGjd,EAAEG,GAAGkiB,GAAE,UAAUriB,GAAG6pB,GAAGvqB,EAAE,YAAY,MAAM,QAAQgB,EAAEH,EAAEspB,GAAG5qB,EAAEyB,GAAG,IAAIE,EAAEF,EAAE,IAAI8C,KAAK5C,EAAE,GAAGA,EAAET,eAAeqD,GAAG,CAAC,IAAIC,EAAE7C,EAAE4C,GAAG,UAAUA,EAAEilB,GAAGroB,EAAEqD,GAAG,4BAA4BD,EAAuB,OAApBC,EAAEA,EAAEA,EAAEioB,YAAO,IAAgB1N,GAAG5d,EAAEqD,GAAI,aAAaD,EAAE,kBAAkBC,GAAG,aAAaxE,GAAG,KAAKwE,IAAI+a,GAAGpe,EAAEqD,GAAG,kBAAkBA,GAAG+a,GAAGpe,EAAE,GAAGqD,GAAG,mCAAmCD,GAAG,6BAA6BA,GAAG,cAAcA,IAAI8S,EAAGnW,eAAeqD,GAAG,MAAMC,GAAGwmB,GAAGvqB,EAAE8D,GAAG,MAAMC,GAAGmV,EAAGxY,EAAEoD,EAAEC,EAAEL,GAAG,CAAC,OAAOnE,GAAG,IAAK,QAAQsc,GAAGnb,GAAGuc,GAAGvc,EAAEG,GAAE,GACnf,MAAM,IAAK,WAAWgb,GAAGnb,GAAGsd,GAAGtd,GAAG,MAAM,IAAK,SAAS,MAAMG,EAAE2F,OAAO9F,EAAEuC,aAAa,QAAQ,GAAGyY,GAAG7a,EAAE2F,QAAQ,MAAM,IAAK,SAAS9F,EAAE+pC,WAAW5pC,EAAE4pC,SAAmB,OAAVzqC,EAAEa,EAAE2F,OAAc+W,GAAG7c,IAAIG,EAAE4pC,SAASzqC,GAAE,GAAI,MAAMa,EAAE2b,cAAce,GAAG7c,IAAIG,EAAE4pC,SAAS5pC,EAAE2b,cAAa,GAAI,MAAM,QAAQ,oBAAoBxb,EAAE0pC,UAAUhqC,EAAEiqC,QAAQngB,IAAIqB,GAAGtsB,EAAEsB,KAAKC,EAAE0f,WAAW,EAAE,CAAC,OAAO1f,EAAE8T,MAAM9T,EAAE0f,WAAW,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,GAAG9f,GAAG,MAAMI,EAAEuW,UAAUiyB,GAAG5oC,EAAEI,EAAEJ,EAAEijC,cAAc9iC,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAOC,EAAEuW,UAAU,MAAM3M,MAAM/J,EAAE,MACvfX,EAAEqjC,GAAGD,GAAGpvB,SAASqvB,GAAGH,GAAGlvB,SAAS8zB,GAAGhnC,IAAId,EAAEc,EAAEuW,UAAUxW,EAAEC,EAAE6iC,cAAc3jC,EAAEwsB,IAAI1rB,EAAEd,EAAEif,YAAYpe,IAAIC,EAAE0f,WAAW,MAAKxgB,GAAG,IAAIA,EAAEgf,SAAShf,EAAEA,EAAEkd,eAAe4tB,eAAejqC,IAAK2rB,IAAI1rB,EAAEA,EAAEuW,UAAUrX,EAAE,CAAC,OAAO,KAAK,KAAK,GAA0B,OAAvBk6B,GAAEl4B,IAAGnB,EAAEC,EAAE4f,cAAiB,KAAiB,GAAZ5f,EAAE0f,YAAqB1f,EAAEu9B,eAAer+B,EAAEc,IAAEd,EAAE,OAAOa,EAAEA,GAAE,EAAG,OAAOH,OAAE,IAASI,EAAE6iC,cAAc+F,UAAU5B,GAAGhnC,IAAsBD,EAAE,QAApBtB,EAAEmB,EAAEggB,eAAyB1gB,GAAG,OAAOT,GAAsB,QAAlBA,EAAEmB,EAAEogB,MAAMC,WAAmC,QAAhBjd,EAAEhD,EAAEuhC,cAAsBvhC,EAAEuhC,YAAY9iC,EAAEA,EAAE6iC,WAAWt+B,IAAIhD,EAAEuhC,YAAYvhC,EAAEqhC,WACtf5iC,EAAEA,EAAE6iC,WAAW,MAAM7iC,EAAEihB,UAAU,IAAQxgB,IAAIa,GAAG,KAAY,EAAPC,EAAE2hC,QAAW,OAAO/hC,IAAG,IAAKI,EAAE6iC,cAAcgG,4BAA4B,KAAe,EAAV3nC,GAAEgS,SAAW5R,KAAI2oC,KAAK3oC,GAAE4oC,KAAY5oC,KAAI2oC,IAAI3oC,KAAI4oC,KAAG5oC,GAAE6oC,IAAG,IAAIC,IAAI,OAAOr3B,KAAIs3B,GAAGt3B,GAAEu3B,IAAGC,GAAGx3B,GAAEq3B,QAAQlrC,GAAGa,KAAEC,EAAE0f,WAAW,GAAS,MAAK,KAAK,EAAE,OAAO+iB,KAAK6F,GAAGtoC,GAAG,KAAK,KAAK,GAAG,OAAOg9B,GAAGh9B,GAAG,KAAyC,KAAK,GAA0B,GAAvBo5B,GAAEl4B,IAAwB,QAArBnB,EAAEC,EAAE4f,eAA0B,OAAO,KAA0C,GAArCnhB,EAAE,KAAiB,GAAZuB,EAAE0f,WAA+B,QAAjB1c,EAAEjD,EAAEkpC,YAAsB,GAAGxqC,EAAE+qC,GAAGzpC,GAAE,QAAS,GAAGuB,KAAI2oC,IAAI,OAAOrqC,GAAG,KAC9e,GADmfA,EAAE8f,WACjf,IAAI1c,EAAEhD,EAAEggB,MAAM,OAAOhd,GAAG,CAAS,GAAG,QAAXpD,EAAEgjC,GAAG5/B,IAAe,CAAyJ,IAAxJhD,EAAE0f,WAAW,GAAG8pB,GAAGzpC,GAAE,GAAoB,QAAhBtB,EAAEmB,EAAEm+B,eAAuB/9B,EAAE+9B,YAAYt/B,EAAEuB,EAAE0f,WAAW,GAAG,OAAO3f,EAAEshC,aAAarhC,EAAEuhC,YAAY,MAAMvhC,EAAEqhC,WAAWthC,EAAEshC,WAAethC,EAAEC,EAAEggB,MAAM,OAAOjgB,GAAOiD,EAAE9D,GAANT,EAAEsB,GAAQ2f,WAAW,EAAEjhB,EAAE6iC,WAAW,KAAK7iC,EAAE8iC,YAAY,KAAK9iC,EAAE4iC,WAAW,KAAmB,QAAdzhC,EAAEnB,EAAEghB,YAAoBhhB,EAAE2+B,oBAAoB,EAAE3+B,EAAE8+B,eAAev6B,EAAEvE,EAAEuhB,MAAM,KAAKvhB,EAAEokC,cAAc,KAAKpkC,EAAEmhB,cAAc,KAAKnhB,EAAEs/B,YAAY,KAAKt/B,EAAEuX,aAAa,OAAOvX,EAAE2+B,oBAAoBx9B,EAAEw9B,oBAC3e3+B,EAAE8+B,eAAe39B,EAAE29B,eAAe9+B,EAAEuhB,MAAMpgB,EAAEogB,MAAMvhB,EAAEokC,cAAcjjC,EAAEijC,cAAcpkC,EAAEmhB,cAAchgB,EAAEggB,cAAcnhB,EAAEs/B,YAAYn+B,EAAEm+B,YAAY/6B,EAAEpD,EAAEoW,aAAavX,EAAEuX,aAAa,OAAOhT,EAAE,KAAK,CAACu6B,eAAev6B,EAAEu6B,eAAeD,aAAat6B,EAAEs6B,aAAaM,WAAW56B,EAAE46B,aAAa79B,EAAEA,EAAEkgB,QAA2B,OAAnB3M,GAAEpS,GAAY,EAAVA,GAAEgS,QAAU,GAAUlT,EAAEggB,KAAK,CAAChd,EAAEA,EAAEid,OAAO,MAAM,CAAC,IAAIxhB,EAAE,GAAW,QAARmB,EAAEgjC,GAAG5/B,KAAa,GAAGhD,EAAE0f,WAAW,GAAGjhB,GAAE,EAAmB,QAAhBS,EAAEU,EAAEm+B,eAAuB/9B,EAAE+9B,YAAY7+B,EAAEc,EAAE0f,WAAW,GAAG8pB,GAAGzpC,GAAE,GAAI,OAAOA,EAAEqpC,MAAM,WAAWrpC,EAAEupC,WAAWtmC,EAAEyc,UAAU,OACne,QAD0ezf,EACpgBA,EAAEqhC,WAAWthC,EAAEshC,cAAsBrhC,EAAEshC,WAAW,MAAM,UAAU,EAAEtF,KAAKj8B,EAAEmpC,mBAAmBnpC,EAAEspC,gBAAgB,EAAEnqC,IAAIc,EAAE0f,WAAW,GAAGjhB,GAAE,EAAG+qC,GAAGzpC,GAAE,GAAIC,EAAEu9B,eAAev9B,EAAEo9B,oBAAoBl+B,EAAE,GAAGa,EAAEipC,aAAahmC,EAAEid,QAAQjgB,EAAEggB,MAAMhgB,EAAEggB,MAAMhd,IAAa,QAAT9D,EAAEa,EAAEopC,MAAcjqC,EAAE+gB,QAAQjd,EAAEhD,EAAEggB,MAAMhd,EAAEjD,EAAEopC,KAAKnmC,EAAE,CAAC,OAAO,OAAOjD,EAAEqpC,MAAM,IAAIrpC,EAAEspC,iBAAiBtpC,EAAEspC,eAAerN,KAAK,KAAK98B,EAAEa,EAAEqpC,KAAKrpC,EAAEkpC,UAAU/pC,EAAEa,EAAEqpC,KAAKlqC,EAAE+gB,QAAQlgB,EAAEshC,WAAWrhC,EAAEqhC,WAAWthC,EAAEmpC,mBAAmBlN,KAAK98B,EAAE+gB,QAAQ,KAAKjgB,EAAEkB,GAAEgS,QAAQI,GAAEpS,GAAEzC,EAAI,EAAFuB,EAAI,EAAI,EAAFA,GAAKd,GAAG,KAAK,MAAM0K,MAAM/J,EAAE,IACrgBG,EAAEsa,KAAM,CAAC,SAASkwB,GAAG5qC,GAAG,OAAOA,EAAE0a,KAAK,KAAK,EAAEuf,GAAEj6B,EAAEqV,OAAO8kB,KAAK,IAAI/5B,EAAEJ,EAAE8f,UAAU,OAAS,KAAF1f,GAAQJ,EAAE8f,WAAa,KAAH1f,EAAQ,GAAGJ,GAAG,KAAK,KAAK,EAA+B,GAA7B6iC,KAAKrJ,GAAEG,IAAGH,GAAEE,IAAoB,KAAO,IAAxBt5B,EAAEJ,EAAE8f,YAAwB,MAAM9V,MAAM/J,EAAE,MAA6B,OAAvBD,EAAE8f,WAAa,KAAH1f,EAAQ,GAAUJ,EAAE,KAAK,EAAE,OAAO+iC,GAAG/iC,GAAG,KAAK,KAAK,GAAG,OAAOw5B,GAAEl4B,IAAmB,MAAhBlB,EAAEJ,EAAE8f,YAAkB9f,EAAE8f,WAAa,KAAH1f,EAAQ,GAAGJ,GAAG,KAAK,KAAK,GAAG,OAAOw5B,GAAEl4B,IAAG,KAAK,KAAK,EAAE,OAAOuhC,KAAK,KAAK,KAAK,GAAG,OAAOzF,GAAGp9B,GAAG,KAAK,QAAQ,OAAO,KAAK,CAAC,SAAS6qC,GAAG7qC,EAAEI,GAAG,MAAM,CAAC0F,MAAM9F,EAAE6I,OAAOzI,EAAE0qC,MAAMrwB,GAAGra,GAAG,CAjB1dqoC,GAAG,SAASzoC,EAAEI,GAAG,IAAI,IAAId,EAAEc,EAAEggB,MAAM,OAAO9gB,GAAG,CAAC,GAAG,IAAIA,EAAEob,KAAK,IAAIpb,EAAEob,IAAI1a,EAAEie,YAAY3e,EAAEqX,gBAAgB,GAAG,IAAIrX,EAAEob,KAAK,OAAOpb,EAAE8gB,MAAM,CAAC9gB,EAAE8gB,MAAMrF,OAAOzb,EAAEA,EAAEA,EAAE8gB,MAAM,QAAQ,CAAC,GAAG9gB,IAAIc,EAAE,MAAM,KAAK,OAAOd,EAAE+gB,SAAS,CAAC,GAAG,OAAO/gB,EAAEyb,QAAQzb,EAAEyb,SAAS3a,EAAE,OAAOd,EAAEA,EAAEyb,MAAM,CAACzb,EAAE+gB,QAAQtF,OAAOzb,EAAEyb,OAAOzb,EAAEA,EAAE+gB,OAAO,CAAC,EAAEqoB,GAAG,WAAW,EACxTC,GAAG,SAAS3oC,EAAEI,EAAEd,EAAEa,EAAEtB,GAAG,IAAIuE,EAAEpD,EAAEijC,cAAc,GAAG7/B,IAAIjD,EAAE,CAAC,IAAsWG,EAAEE,EAApWwC,EAAE5C,EAAEuW,UAAgC,OAAtBgsB,GAAGH,GAAGlvB,SAAStT,EAAE,KAAYV,GAAG,IAAK,QAAQ8D,EAAEwY,GAAG5Y,EAAEI,GAAGjD,EAAEyb,GAAG5Y,EAAE7C,GAAGH,EAAE,GAAG,MAAM,IAAK,SAASoD,EAAEsZ,GAAG1Z,EAAEI,GAAGjD,EAAEuc,GAAG1Z,EAAE7C,GAAGH,EAAE,GAAG,MAAM,IAAK,SAASoD,EAAEpE,EAAE,CAAC,EAAEoE,EAAE,CAAC0C,WAAM,IAAS3F,EAAEnB,EAAE,CAAC,EAAEmB,EAAE,CAAC2F,WAAM,IAAS9F,EAAE,GAAG,MAAM,IAAK,WAAWoD,EAAE6Z,GAAGja,EAAEI,GAAGjD,EAAE8c,GAAGja,EAAE7C,GAAGH,EAAE,GAAG,MAAM,QAAQ,oBAAoBoD,EAAE4mC,SAAS,oBAAoB7pC,EAAE6pC,UAAUhnC,EAAEinC,QAAQngB,IAA2B,IAAIxpB,KAA3BmpB,GAAGnqB,EAAEa,GAAWb,EAAE,KAAc8D,EAAE,IAAIjD,EAAEJ,eAAeO,IAAI8C,EAAErD,eAAeO,IAAI,MAAM8C,EAAE9C,GAAG,GAAG,UAC/eA,EAAE,IAAIE,KAAKwC,EAAEI,EAAE9C,GAAK0C,EAAEjD,eAAeS,KAAKlB,IAAIA,EAAE,CAAC,GAAGA,EAAEkB,GAAG,QAAQ,4BAA4BF,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAI4V,EAAGnW,eAAeO,GAAGN,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAIwR,KAAKlR,EAAE,OAAO,IAAIA,KAAKH,EAAE,CAAC,IAAIkD,EAAElD,EAAEG,GAAyB,GAAtB0C,EAAE,MAAMI,EAAEA,EAAE9C,QAAG,EAAUH,EAAEJ,eAAeO,IAAI+C,IAAIL,IAAI,MAAMK,GAAG,MAAML,GAAG,GAAG,UAAU1C,EAAE,GAAG0C,EAAE,CAAC,IAAIxC,KAAKwC,GAAGA,EAAEjD,eAAeS,IAAI6C,GAAGA,EAAEtD,eAAeS,KAAKlB,IAAIA,EAAE,CAAC,GAAGA,EAAEkB,GAAG,IAAI,IAAIA,KAAK6C,EAAEA,EAAEtD,eAAeS,IAAIwC,EAAExC,KAAK6C,EAAE7C,KAAKlB,IAAIA,EAAE,CAAC,GACrfA,EAAEkB,GAAG6C,EAAE7C,GAAG,MAAMlB,IAAIU,IAAIA,EAAE,IAAIA,EAAEwR,KAAKlR,EAAEhB,IAAIA,EAAE+D,MAAM,4BAA4B/C,GAAG+C,EAAEA,EAAEA,EAAEioB,YAAO,EAAOtoB,EAAEA,EAAEA,EAAEsoB,YAAO,EAAO,MAAMjoB,GAAGL,IAAIK,IAAIrD,EAAEA,GAAG,IAAIwR,KAAKlR,EAAE+C,IAAI,aAAa/C,EAAE0C,IAAIK,GAAG,kBAAkBA,GAAG,kBAAkBA,IAAIrD,EAAEA,GAAG,IAAIwR,KAAKlR,EAAE,GAAG+C,GAAG,mCAAmC/C,GAAG,6BAA6BA,IAAI4V,EAAGnW,eAAeO,IAAI,MAAM+C,GAAGwmB,GAAGhrB,EAAEyB,GAAGN,GAAGgD,IAAIK,IAAIrD,EAAE,MAAMA,EAAEA,GAAG,IAAIwR,KAAKlR,EAAE+C,GAAG,CAAC/D,IAAIU,EAAEA,GAAG,IAAIwR,KAAK,QAAQlS,GAAGT,EAAEmB,GAAKI,EAAE+9B,YAAYt/B,KAAEuB,EAAE0f,WAAW,EAAC,CAAC,EAC9c8oB,GAAG,SAAS5oC,EAAEI,EAAEd,EAAEa,GAAGb,IAAIa,IAAIC,EAAE0f,WAAW,EAAE,EAc5C,IAAIirB,GAAG,oBAAoBC,QAAQA,QAAQC,IAAI,SAASC,GAAGlrC,EAAEI,GAAG,IAAId,EAAEc,EAAEyI,OAAO1I,EAAEC,EAAE0qC,MAAM,OAAO3qC,GAAG,OAAOb,IAAIa,EAAEsa,GAAGnb,IAAI,OAAOA,GAAG6a,GAAG7a,EAAE+V,MAAMjV,EAAEA,EAAE0F,MAAM,OAAO9F,GAAG,IAAIA,EAAE0a,KAAKP,GAAGna,EAAEqV,MAAM,IAAIjT,QAAQ+oC,MAAM/qC,EAAE,CAAC,MAAMvB,GAAGsE,YAAW,WAAW,MAAMtE,CAAE,GAAE,CAAC,CAAiH,SAASusC,GAAGprC,GAAG,IAAII,EAAEJ,EAAEkU,IAAI,GAAG,OAAO9T,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,KAAK,CAAC,MAAMd,GAAG+rC,GAAGrrC,EAAEV,EAAE,MAAMc,EAAEkT,QAAQ,IAAI,CACtd,SAASg4B,GAAGtrC,EAAEI,GAAG,OAAOA,EAAEsa,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAyN,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAnP,KAAK,EAAE,GAAe,IAAZta,EAAE0f,WAAe,OAAO9f,EAAE,CAAC,IAAIV,EAAEU,EAAEijC,cAAc9iC,EAAEH,EAAEggB,cAA4B5f,GAAdJ,EAAEI,EAAEuW,WAAcoqB,wBAAwB3gC,EAAE4K,cAAc5K,EAAEiV,KAAK/V,EAAEu9B,GAAGz8B,EAAEiV,KAAK/V,GAAGa,GAAGH,EAAEurC,oCAAoCnrC,CAAC,CAAC,OAAkD,MAAM4J,MAAM/J,EAAE,KAAM,CACnV,SAASurC,GAAGxrC,EAAEI,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAE+9B,aAAuB/9B,EAAEqhC,WAAW,MAAiB,CAAC,IAAIniC,EAAEc,EAAEA,EAAE29B,KAAK,EAAE,CAAC,IAAIz+B,EAAEob,IAAI1a,KAAKA,EAAE,CAAC,IAAIG,EAAEb,EAAEwlC,QAAQxlC,EAAEwlC,aAAQ,OAAO,IAAS3kC,GAAGA,GAAG,CAACb,EAAEA,EAAEy+B,IAAI,OAAOz+B,IAAIc,EAAE,CAAC,CAAC,SAASqrC,GAAGzrC,EAAEI,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAE+9B,aAAuB/9B,EAAEqhC,WAAW,MAAiB,CAAC,IAAIniC,EAAEc,EAAEA,EAAE29B,KAAK,EAAE,CAAC,IAAIz+B,EAAEob,IAAI1a,KAAKA,EAAE,CAAC,IAAIG,EAAEb,EAAEqM,OAAOrM,EAAEwlC,QAAQ3kC,GAAG,CAACb,EAAEA,EAAEy+B,IAAI,OAAOz+B,IAAIc,EAAE,CAAC,CACzV,SAASsrC,GAAG1rC,EAAEI,EAAEd,GAAG,OAAOA,EAAEob,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAW,YAAR+wB,GAAG,EAAEnsC,GAAU,KAAK,EAAgB,GAAdU,EAAEV,EAAEqX,UAAyB,EAAZrX,EAAEwgB,UAAY,GAAG,OAAO1f,EAAEJ,EAAEkhC,wBAAwB,CAAC,IAAI/gC,EAAEb,EAAE0L,cAAc1L,EAAE+V,KAAKjV,EAAE6iC,cAAcpG,GAAGv9B,EAAE+V,KAAKjV,EAAE6iC,eAAejjC,EAAEooC,mBAAmBjoC,EAAEC,EAAE4f,cAAchgB,EAAEurC,oCAAoC,CAAqC,YAApB,QAAhBnrC,EAAEd,EAAE6+B,cAAsBkB,GAAG//B,EAAEc,EAAEJ,IAAU,KAAK,EAAkB,GAAG,QAAnBI,EAAEd,EAAE6+B,aAAwB,CAAQ,GAAPn+B,EAAE,KAAQ,OAAOV,EAAE8gB,MAAM,OAAO9gB,EAAE8gB,MAAM1F,KAAK,KAAK,EAA4B,KAAK,EAAE1a,EAAEV,EAAE8gB,MAAMzJ,UAAU0oB,GAAG//B,EAAEc,EAAEJ,EAAE,CAAC,OACpf,KAAK,EAA+E,OAA7EA,EAAEV,EAAEqX,eAAU,OAAOvW,GAAe,EAAZd,EAAEwgB,WAAaqL,GAAG7rB,EAAE+V,KAAK/V,EAAE2jC,gBAAgBjjC,EAAE2rC,SAAe,KAAK,EAAS,KAAK,EAAS,KAAK,GAA0I,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAhK,KAAK,GAAoH,YAAjH,OAAOrsC,EAAE0gB,gBAAgB1gB,EAAEA,EAAEugB,UAAU,OAAOvgB,IAAIA,EAAEA,EAAE0gB,cAAc,OAAO1gB,IAAIA,EAAEA,EAAE2gB,WAAW,OAAO3gB,GAAGilB,GAAGjlB,OAAoD,MAAM0K,MAAM/J,EAAE,KAAM,CACjU,SAAS2rC,GAAG5rC,EAAEI,EAAEd,GAAiC,OAA9B,oBAAoBusC,IAAIA,GAAGzrC,GAAUA,EAAEsa,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAmB,GAAG,QAAnB1a,EAAEI,EAAE+9B,cAAyC,QAAfn+B,EAAEA,EAAEyhC,YAAqB,CAAC,IAAIthC,EAAEH,EAAE+9B,KAAKxB,GAAG,GAAGj9B,EAAE,GAAGA,GAAE,WAAW,IAAIU,EAAEG,EAAE,EAAE,CAAC,IAAIb,EAAEU,EAAE8kC,QAAQ,QAAG,IAASxlC,EAAE,CAAC,IAAI0D,EAAE5C,EAAE,IAAId,GAAG,CAAC,MAAMgB,GAAG+qC,GAAGroC,EAAE1C,EAAE,CAAC,CAACN,EAAEA,EAAE+9B,IAAI,OAAO/9B,IAAIG,EAAE,GAAE,CAAC,MAAM,KAAK,EAAEirC,GAAGhrC,GAAiB,oBAAdd,EAAEc,EAAEuW,WAAgCm1B,sBALxG,SAAY9rC,EAAEI,GAAG,IAAIA,EAAEsJ,MAAM1J,EAAEijC,cAAc7iC,EAAEogC,MAAMxgC,EAAEggB,cAAc5f,EAAE0rC,sBAAsB,CAAC,MAAMxsC,GAAG+rC,GAAGrrC,EAAEV,EAAE,CAAC,CAKeysC,CAAG3rC,EAAEd,GAAG,MAAM,KAAK,EAAE8rC,GAAGhrC,GAAG,MAAM,KAAK,EAAE4rC,GAAGhsC,EAAEI,EAAEd,GAAG,CACta,SAAS2sC,GAAGjsC,GAAG,IAAII,EAAEJ,EAAE6f,UAAU7f,EAAE+a,OAAO,KAAK/a,EAAEogB,MAAM,KAAKpgB,EAAEggB,cAAc,KAAKhgB,EAAEm+B,YAAY,KAAKn+B,EAAEoW,aAAa,KAAKpW,EAAE6f,UAAU,KAAK7f,EAAE2hC,YAAY,KAAK3hC,EAAEyhC,WAAW,KAAKzhC,EAAEinC,aAAa,KAAKjnC,EAAEijC,cAAc,KAAKjjC,EAAE2W,UAAU,KAAK,OAAOvW,GAAG6rC,GAAG7rC,EAAE,CAAC,SAAS8rC,GAAGlsC,GAAG,OAAO,IAAIA,EAAE0a,KAAK,IAAI1a,EAAE0a,KAAK,IAAI1a,EAAE0a,GAAG,CAC7S,SAASyxB,GAAGnsC,GAAGA,EAAE,CAAC,IAAI,IAAII,EAAEJ,EAAE+a,OAAO,OAAO3a,GAAG,CAAC,GAAG8rC,GAAG9rC,GAAG,CAAC,IAAId,EAAEc,EAAE,MAAMJ,CAAC,CAACI,EAAEA,EAAE2a,MAAM,CAAC,MAAM/Q,MAAM/J,EAAE,KAAM,CAAe,OAAdG,EAAEd,EAAEqX,UAAiBrX,EAAEob,KAAK,KAAK,EAAE,IAAIva,GAAE,EAAG,MAAM,KAAK,EAA+B,KAAK,EAAEC,EAAEA,EAAE4hB,cAAc7hB,GAAE,EAAG,MAAM,QAAQ,MAAM6J,MAAM/J,EAAE,MAAmB,GAAZX,EAAEwgB,YAAe1B,GAAGhe,EAAE,IAAId,EAAEwgB,YAAY,IAAI9f,EAAEI,EAAE,IAAId,EAAEU,IAAI,CAAC,KAAK,OAAOV,EAAE+gB,SAAS,CAAC,GAAG,OAAO/gB,EAAEyb,QAAQmxB,GAAG5sC,EAAEyb,QAAQ,CAACzb,EAAE,KAAK,MAAMU,CAAC,CAACV,EAAEA,EAAEyb,MAAM,CAA2B,IAA1Bzb,EAAE+gB,QAAQtF,OAAOzb,EAAEyb,OAAWzb,EAAEA,EAAE+gB,QAAQ,IAAI/gB,EAAEob,KAAK,IAAIpb,EAAEob,KAAK,KAAKpb,EAAEob,KAAK,CAAC,GAAe,EAAZpb,EAAEwgB,UAAY,SAAS1f,EACvf,GAAG,OAAOd,EAAE8gB,OAAO,IAAI9gB,EAAEob,IAAI,SAASta,EAAOd,EAAE8gB,MAAMrF,OAAOzb,EAAEA,EAAEA,EAAE8gB,KAAK,CAAC,KAAiB,EAAZ9gB,EAAEwgB,WAAa,CAACxgB,EAAEA,EAAEqX,UAAU,MAAM3W,CAAC,CAAC,CAACG,EAAEisC,GAAGpsC,EAAEV,EAAEc,GAAGisC,GAAGrsC,EAAEV,EAAEc,EAAE,CACzI,SAASgsC,GAAGpsC,EAAEI,EAAEd,GAAG,IAAIa,EAAEH,EAAE0a,IAAI7b,EAAE,IAAIsB,GAAG,IAAIA,EAAE,GAAGtB,EAAEmB,EAAEnB,EAAEmB,EAAE2W,UAAU3W,EAAE2W,UAAU21B,SAASlsC,EAAE,IAAId,EAAEgf,SAAShf,EAAE8hB,WAAWmrB,aAAavsC,EAAEI,GAAGd,EAAEitC,aAAavsC,EAAEI,IAAI,IAAId,EAAEgf,UAAUle,EAAEd,EAAE8hB,YAAamrB,aAAavsC,EAAEV,IAAKc,EAAEd,GAAI2e,YAAYje,GAA4B,QAAxBV,EAAEA,EAAEktC,2BAA8B,IAASltC,GAAG,OAAOc,EAAE6pC,UAAU7pC,EAAE6pC,QAAQngB,UAAU,GAAG,IAAI3pB,GAAc,QAAVH,EAAEA,EAAEogB,OAAgB,IAAIgsB,GAAGpsC,EAAEI,EAAEd,GAAGU,EAAEA,EAAEqgB,QAAQ,OAAOrgB,GAAGosC,GAAGpsC,EAAEI,EAAEd,GAAGU,EAAEA,EAAEqgB,OAAO,CACrZ,SAASgsB,GAAGrsC,EAAEI,EAAEd,GAAG,IAAIa,EAAEH,EAAE0a,IAAI7b,EAAE,IAAIsB,GAAG,IAAIA,EAAE,GAAGtB,EAAEmB,EAAEnB,EAAEmB,EAAE2W,UAAU3W,EAAE2W,UAAU21B,SAASlsC,EAAEd,EAAEitC,aAAavsC,EAAEI,GAAGd,EAAE2e,YAAYje,QAAQ,GAAG,IAAIG,GAAc,QAAVH,EAAEA,EAAEogB,OAAgB,IAAIisB,GAAGrsC,EAAEI,EAAEd,GAAGU,EAAEA,EAAEqgB,QAAQ,OAAOrgB,GAAGqsC,GAAGrsC,EAAEI,EAAEd,GAAGU,EAAEA,EAAEqgB,OAAO,CAC5N,SAAS2rB,GAAGhsC,EAAEI,EAAEd,GAAG,IAAI,IAAa8D,EAAEJ,EAAX7C,EAAEC,EAAEvB,GAAE,IAAS,CAAC,IAAIA,EAAE,CAACA,EAAEsB,EAAE4a,OAAO/a,EAAE,OAAO,CAAC,GAAG,OAAOnB,EAAE,MAAMmL,MAAM/J,EAAE,MAAoB,OAAdmD,EAAEvE,EAAE8X,UAAiB9X,EAAE6b,KAAK,KAAK,EAAE1X,GAAE,EAAG,MAAMhD,EAAE,KAAK,EAAiC,KAAK,EAAEoD,EAAEA,EAAE4e,cAAchf,GAAE,EAAG,MAAMhD,EAAEnB,EAAEA,EAAEkc,MAAM,CAAClc,GAAE,CAAE,CAAC,GAAG,IAAIsB,EAAEua,KAAK,IAAIva,EAAEua,IAAI,CAAC1a,EAAE,IAAI,IAAIM,EAAEN,EAAEQ,EAAEL,EAAEkD,EAAE/D,EAAED,EAAEmB,IAAI,GAAGorC,GAAGtrC,EAAEjB,EAAEgE,GAAG,OAAOhE,EAAE+gB,OAAO,IAAI/gB,EAAEqb,IAAIrb,EAAE+gB,MAAMrF,OAAO1b,EAAEA,EAAEA,EAAE+gB,UAAU,CAAC,GAAG/gB,IAAImB,EAAE,MAAMR,EAAE,KAAK,OAAOX,EAAEghB,SAAS,CAAC,GAAG,OAAOhhB,EAAE0b,QAAQ1b,EAAE0b,SAASva,EAAE,MAAMR,EAAEX,EAAEA,EAAE0b,MAAM,CAAC1b,EAAEghB,QAAQtF,OAAO1b,EAAE0b,OAAO1b,EAAEA,EAAEghB,OAAO,CAACrd,GAAG1C,EACrf8C,EAAE5C,EAAEL,EAAEwW,UAAU,IAAIrW,EAAEge,SAAShe,EAAE8gB,WAAWpD,YAAYxd,GAAGF,EAAE0d,YAAYxd,IAAI4C,EAAE4a,YAAY7d,EAAEwW,UAAU,MAAM,GAAG,IAAIxW,EAAEua,KAAK,GAAG,OAAOva,EAAEigB,MAAM,CAAChd,EAAEjD,EAAEwW,UAAUqL,cAAchf,GAAE,EAAG7C,EAAEigB,MAAMrF,OAAO5a,EAAEA,EAAEA,EAAEigB,MAAM,QAAQ,OAAO,GAAGwrB,GAAG5rC,EAAEG,EAAEb,GAAG,OAAOa,EAAEigB,MAAM,CAACjgB,EAAEigB,MAAMrF,OAAO5a,EAAEA,EAAEA,EAAEigB,MAAM,QAAQ,CAAC,GAAGjgB,IAAIC,EAAE,MAAM,KAAK,OAAOD,EAAEkgB,SAAS,CAAC,GAAG,OAAOlgB,EAAE4a,QAAQ5a,EAAE4a,SAAS3a,EAAE,OAAkB,KAAXD,EAAEA,EAAE4a,QAAaL,MAAM7b,GAAE,EAAG,CAACsB,EAAEkgB,QAAQtF,OAAO5a,EAAE4a,OAAO5a,EAAEA,EAAEkgB,OAAO,CAAC,CAC5a,SAASosB,GAAGzsC,EAAEI,GAAG,OAAOA,EAAEsa,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAW,YAAR8wB,GAAG,EAAEprC,GAAU,KAAK,EACyW,KAAK,GAE9N,KAAK,GAAG,OAH/I,KAAK,EAAE,IAAId,EAAEc,EAAEuW,UAAU,GAAG,MAAMrX,EAAE,CAAC,IAAIa,EAAEC,EAAE6iC,cAAcpkC,EAAE,OAAOmB,EAAEA,EAAEijC,cAAc9iC,EAAEH,EAAEI,EAAEiV,KAAK,IAAIjS,EAAEhD,EAAE+9B,YAA+B,GAAnB/9B,EAAE+9B,YAAY,KAAQ,OAAO/6B,EAAE,CAAgF,IAA/E9D,EAAEysB,IAAI5rB,EAAE,UAAUH,GAAG,UAAUG,EAAEkV,MAAM,MAAMlV,EAAE8J,MAAMmS,GAAG9c,EAAEa,GAAGupB,GAAG1pB,EAAEnB,GAAGuB,EAAEspB,GAAG1pB,EAAEG,GAAOtB,EAAE,EAAEA,EAAEuE,EAAEvD,OAAOhB,GAAG,EAAE,CAAC,IAAImE,EAAEI,EAAEvE,GAAGyB,EAAE8C,EAAEvE,EAAE,GAAG,UAAUmE,EAAEqlB,GAAG/oB,EAAEgB,GAAG,4BAA4B0C,EAAE4a,GAAGte,EAAEgB,GAAG,aAAa0C,EAAEob,GAAG9e,EAAEgB,GAAGkY,EAAGlZ,EAAE0D,EAAE1C,EAAEF,EAAE,CAAC,OAAOJ,GAAG,IAAK,QAAQqc,GAAG/c,EAAEa,GAAG,MAChf,IAAK,WAAWkd,GAAG/d,EAAEa,GAAG,MAAM,IAAK,SAASC,EAAEd,EAAEyc,cAAc+tB,YAAYxqC,EAAEyc,cAAc+tB,cAAc3pC,EAAE4pC,SAAmB,OAAV/pC,EAAEG,EAAE2F,OAAc+W,GAAGvd,IAAIa,EAAE4pC,SAAS/pC,GAAE,GAAII,MAAMD,EAAE4pC,WAAW,MAAM5pC,EAAE2b,aAAae,GAAGvd,IAAIa,EAAE4pC,SAAS5pC,EAAE2b,cAAa,GAAIe,GAAGvd,IAAIa,EAAE4pC,SAAS5pC,EAAE4pC,SAAS,GAAG,IAAG,IAAK,CAAC,CAAC,OAAO,KAAK,EAAE,GAAG,OAAO3pC,EAAEuW,UAAU,MAAM3M,MAAM/J,EAAE,MAA4C,YAAtCG,EAAEuW,UAAU4H,UAAUne,EAAE6iC,eAAqB,KAAK,EAA8D,aAA5D7iC,EAAEA,EAAEuW,WAAYmN,UAAU1jB,EAAE0jB,SAAQ,EAAGS,GAAGnkB,EAAE4hB,iBAAsC,KAAK,GACzb,GAD4b1iB,EAAEc,EAAE,OAAOA,EAAE4f,cACve7f,GAAE,GAAIA,GAAE,EAAGb,EAAEc,EAAEggB,MAAMssB,GAAGtQ,MAAS,OAAO98B,EAAEU,EAAE,IAAIA,EAAEV,IAAI,CAAC,GAAG,IAAIU,EAAE0a,IAAItX,EAAEpD,EAAE2W,UAAUxW,EAAa,oBAAViD,EAAEA,EAAE2Q,OAA4BuU,YAAYllB,EAAEklB,YAAY,UAAU,OAAO,aAAallB,EAAEupC,QAAQ,QAASvpC,EAAEpD,EAAE2W,UAAkC9X,OAAE,KAA1BA,EAAEmB,EAAEijC,cAAclvB,QAAoB,OAAOlV,GAAGA,EAAEkB,eAAe,WAAWlB,EAAE8tC,QAAQ,KAAKvpC,EAAE2Q,MAAM44B,QAAQxkB,GAAG,UAAUtpB,SAAS,GAAG,IAAImB,EAAE0a,IAAI1a,EAAE2W,UAAU4H,UAAUpe,EAAE,GAAGH,EAAEijC,kBAAmB,IAAG,KAAKjjC,EAAE0a,KAAK,OAAO1a,EAAEggB,eAAe,OAAOhgB,EAAEggB,cAAcC,WAAW,EAAC7c,EAAEpD,EAAEogB,MAAMC,SAAUtF,OAAO/a,EAAEA,EACnfoD,EAAE,QAAQ,CAAM,GAAG,OAAOpD,EAAEogB,MAAM,CAACpgB,EAAEogB,MAAMrF,OAAO/a,EAAEA,EAAEA,EAAEogB,MAAM,QAAQ,EAAC,GAAGpgB,IAAIV,EAAE,MAAM,KAAK,OAAOU,EAAEqgB,SAAS,CAAC,GAAG,OAAOrgB,EAAE+a,QAAQ/a,EAAE+a,SAASzb,EAAE,MAAMU,EAAEA,EAAEA,EAAE+a,MAAM,CAAC/a,EAAEqgB,QAAQtF,OAAO/a,EAAE+a,OAAO/a,EAAEA,EAAEqgB,OAAO,CAAO,YAANusB,GAAGxsC,GAAU,KAAK,GAAS,YAANwsC,GAAGxsC,GAAyB,MAAM4J,MAAM/J,EAAE,KAAM,CAAC,SAAS2sC,GAAG5sC,GAAG,IAAII,EAAEJ,EAAEm+B,YAAY,GAAG,OAAO/9B,EAAE,CAACJ,EAAEm+B,YAAY,KAAK,IAAI7+B,EAAEU,EAAE2W,UAAU,OAAOrX,IAAIA,EAAEU,EAAE2W,UAAU,IAAIo0B,IAAI3qC,EAAEmB,SAAQ,SAASnB,GAAG,IAAID,EAAE0sC,GAAGjhC,KAAK,KAAK5L,EAAEI,GAAGd,EAAE6iB,IAAI/hB,KAAKd,EAAEqH,IAAIvG,GAAGA,EAAE0sC,KAAK3sC,EAAEA,GAAG,GAAE,CAAC,CACrd,IAAI4sC,GAAG,oBAAoBttB,QAAQA,QAAQC,IAAI,SAASstB,GAAGhtC,EAAEI,EAAEd,IAAGA,EAAEo/B,GAAGp/B,EAAE,OAAQob,IAAI,EAAEpb,EAAEs/B,QAAQ,CAAC7zB,QAAQ,MAAM,IAAI5K,EAAEC,EAAE0F,MAAsD,OAAhDxG,EAAEu/B,SAAS,WAAWoO,KAAKA,IAAG,EAAGC,GAAG/sC,GAAG+qC,GAAGlrC,EAAEI,EAAE,EAASd,CAAC,CACtL,SAAS6tC,GAAGntC,EAAEI,EAAEd,IAAGA,EAAEo/B,GAAGp/B,EAAE,OAAQob,IAAI,EAAE,IAAIva,EAAEH,EAAEqV,KAAKizB,yBAAyB,GAAG,oBAAoBnoC,EAAE,CAAC,IAAItB,EAAEuB,EAAE0F,MAAMxG,EAAEs/B,QAAQ,WAAmB,OAARsM,GAAGlrC,EAAEI,GAAUD,EAAEtB,EAAE,CAAC,CAAC,IAAIuE,EAAEpD,EAAE2W,UAA8O,OAApO,OAAOvT,GAAG,oBAAoBA,EAAEgqC,oBAAoB9tC,EAAEu/B,SAAS,WAAW,oBAAoB1+B,IAAI,OAAOktC,GAAGA,GAAG,IAAIpC,IAAI,CAAC1nC,OAAO8pC,GAAG1mC,IAAIpD,MAAM2nC,GAAGlrC,EAAEI,IAAI,IAAId,EAAEc,EAAE0qC,MAAMvnC,KAAK6pC,kBAAkBhtC,EAAE0F,MAAM,CAACwnC,eAAe,OAAOhuC,EAAEA,EAAE,IAAI,GAAUA,CAAC,CAC9Z,IA+B+TiuC,GA/B3TC,GAAG9oC,KAAK+oC,KAAKC,GAAGp1B,EAAGO,uBAAuB80B,GAAGr1B,EAAGivB,kBAAkBqG,GAAE,EAAEC,GAAG,EAAEC,GAAG,GAAGC,GAAG,GAAG1D,GAAG,EAAE2D,GAAG,EAAEC,GAAG,EAAE3D,GAAG,EAAEC,GAAG,EAAE2D,GAAG,EAAEC,GAAEP,GAAEz6B,GAAE,KAAKi7B,GAAE,KAAK1D,GAAE,EAAEhpC,GAAE2oC,GAAGgE,GAAG,KAAKC,GAAG,WAAWC,GAAG,WAAWC,GAAG,KAAKhE,GAAG,EAAEiE,IAAG,EAAG/B,GAAG,EAAEgC,GAAG,IAAIC,GAAE,KAAK1B,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAKuB,IAAG,EAAGC,GAAG,KAAKC,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAE,SAASpP,KAAK,OAAOqO,IAAGL,GAAGC,OAAOH,GAAE,YAAYxR,KAAK,GAAG,GAAG,IAAI8S,GAAGA,GAAGA,GAAG,YAAY9S,KAAK,GAAG,EAAE,CAChY,SAAS2D,GAAG//B,EAAEI,EAAEd,GAAY,GAAG,KAAO,GAAnBc,EAAEA,EAAE2hC,OAAkB,OAAO,WAAW,IAAI5hC,EAAEk8B,KAAK,GAAG,KAAO,EAAFj8B,GAAK,OAAO,KAAKD,EAAE,WAAW,WAAW,IAAIguC,GAAEL,MAAMF,GAAE,OAAOlD,GAAE,GAAG,OAAOprC,EAAEU,EAAE48B,GAAG58B,EAAc,EAAZV,EAAE6vC,WAAa,IAAI,UAAU,OAAOhvC,GAAG,KAAK,GAAGH,EAAE,WAAW,MAAM,KAAK,GAAGA,EAAE48B,GAAG58B,EAAE,IAAI,KAAK,MAAM,KAAK,GAAG,KAAK,GAAGA,EAAE48B,GAAG58B,EAAE,IAAI,KAAK,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,QAAQ,MAAMgK,MAAM/J,EAAE,MAA4B,OAArB,OAAOkT,IAAGnT,IAAI0qC,MAAK1qC,EAASA,CAAC,CACnX,SAASggC,GAAGhgC,EAAEI,GAAG,GAAG,GAAG4uC,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAKjlC,MAAM/J,EAAE,MAAgB,GAAG,QAAbD,EAAEovC,GAAGpvC,EAAEI,IAAe,CAAC,IAAId,EAAE+8B,KAAK,aAAaj8B,GAAG+tC,GAAEN,MAAMD,KAAIO,IAAGL,GAAGC,OAAOH,GAAEyB,GAAGrvC,IAAIsvC,GAAEtvC,GAAGmuC,KAAIP,IAAGjR,MAAM2S,GAAEtvC,IAAM,EAAFmuC,MAAOP,IAAG,KAAKtuC,GAAG,KAAKA,IAAI,OAAOyvC,GAAGA,GAAG,IAAIrvB,IAAI,CAAC,CAAC1f,EAAEI,WAAmB,KAAbd,EAAEyvC,GAAGtjC,IAAIzL,KAAgBV,EAAEc,IAAI2uC,GAAGl8B,IAAI7S,EAAEI,GAAI,CAAC,CAC9Q,SAASgvC,GAAGpvC,EAAEI,GAAGJ,EAAE29B,eAAev9B,IAAIJ,EAAE29B,eAAev9B,GAAG,IAAId,EAAEU,EAAE6f,UAAU,OAAOvgB,GAAGA,EAAEq+B,eAAev9B,IAAId,EAAEq+B,eAAev9B,GAAG,IAAID,EAAEH,EAAE+a,OAAOlc,EAAE,KAAK,GAAG,OAAOsB,GAAG,IAAIH,EAAE0a,IAAI7b,EAAEmB,EAAE2W,eAAe,KAAK,OAAOxW,GAAG,CAA+H,GAA9Hb,EAAEa,EAAE0f,UAAU1f,EAAEq9B,oBAAoBp9B,IAAID,EAAEq9B,oBAAoBp9B,GAAG,OAAOd,GAAGA,EAAEk+B,oBAAoBp9B,IAAId,EAAEk+B,oBAAoBp9B,GAAM,OAAOD,EAAE4a,QAAQ,IAAI5a,EAAEua,IAAI,CAAC7b,EAAEsB,EAAEwW,UAAU,KAAK,CAACxW,EAAEA,EAAE4a,MAAM,CAAoD,OAAnD,OAAOlc,IAAIsU,KAAItU,IAAIugC,GAAGh/B,GAAGsB,KAAI6oC,IAAIE,GAAG5rC,EAAE6rC,KAAIC,GAAG9rC,EAAEuB,IAAWvB,CAAC,CACtc,SAAS0wC,GAAGvvC,GAAG,IAAII,EAAEJ,EAAEwvC,gBAAgB,GAAG,IAAIpvC,EAAE,OAAOA,EAAuB,IAAIqvC,GAAGzvC,EAA5BI,EAAEJ,EAAE0vC,kBAA6B,OAAOtvC,EAAE,IAAId,EAAEU,EAAE2vC,eAAmD,OAAO,IAAjB3vC,EAAEV,GAA5BU,EAAEA,EAAE4vC,uBAA4BtwC,EAAEU,IAAeI,IAAIJ,EAAE,EAAEA,CAAC,CACpL,SAASsvC,GAAEtvC,GAAG,GAAG,IAAIA,EAAEwvC,gBAAgBxvC,EAAE6vC,uBAAuB,WAAW7vC,EAAE8vC,iBAAiB,GAAG9vC,EAAE+vC,aAAatT,GAAG4S,GAAGzjC,KAAK,KAAK5L,QAAQ,CAAC,IAAII,EAAEmvC,GAAGvvC,GAAGV,EAAEU,EAAE+vC,aAAa,GAAG,IAAI3vC,EAAE,OAAOd,IAAIU,EAAE+vC,aAAa,KAAK/vC,EAAE6vC,uBAAuB,EAAE7vC,EAAE8vC,iBAAiB,QAAQ,CAAC,IAAI3vC,EAAE2/B,KAAqH,GAAhH,aAAa1/B,EAAED,EAAE,GAAG,IAAIC,GAAG,IAAIA,EAAED,EAAE,GAA0CA,EAAE,IAAxCA,EAAE,IAAI,WAAWC,GAAG,IAAI,WAAWD,IAAU,GAAG,KAAKA,EAAE,GAAG,MAAMA,EAAE,GAAG,GAAO,OAAOb,EAAE,CAAC,IAAIT,EAAEmB,EAAE8vC,iBAAiB,GAAG9vC,EAAE6vC,yBAAyBzvC,GAAGvB,GAAGsB,EAAE,OAAOb,IAAIs8B,IAAIhB,GAAGt7B,EAAE,CAACU,EAAE6vC,uBACnezvC,EAAEJ,EAAE8vC,iBAAiB3vC,EAAEC,EAAE,aAAaA,EAAEq8B,GAAG4S,GAAGzjC,KAAK,KAAK5L,IAAIw8B,GAAGr8B,EAAE6vC,GAAGpkC,KAAK,KAAK5L,GAAG,CAACiwC,QAAQ,IAAI,WAAW7vC,GAAGg8B,OAAOp8B,EAAE+vC,aAAa3vC,CAAC,CAAC,CAAC,CACrI,SAAS4vC,GAAGhwC,EAAEI,GAAQ,GAAL8uC,GAAG,EAAK9uC,EAAE,OAAc8vC,GAAGlwC,EAAVI,EAAE0/B,MAAawP,GAAEtvC,GAAG,KAAK,IAAIV,EAAEiwC,GAAGvvC,GAAG,GAAG,IAAIV,EAAE,CAAkB,GAAjBc,EAAEJ,EAAE+vC,cAAiB5B,IAAGL,GAAGC,OAAOH,GAAE,MAAM5jC,MAAM/J,EAAE,MAAiC,GAA3BkwC,KAAKnwC,IAAImT,IAAG7T,IAAIorC,IAAG0F,GAAGpwC,EAAEV,GAAM,OAAO8uC,GAAE,CAAC,IAAIjuC,EAAEguC,GAAEA,IAAGL,GAAc,IAAX,IAAIjvC,EAAEwxC,WAAYC,KAAK,KAAK,CAAC,MAAMhwC,GAAGiwC,GAAGvwC,EAAEM,EAAE,CAAgC,GAAtB68B,KAAKgR,GAAEhuC,EAAEutC,GAAGp6B,QAAQzU,EAAK6C,KAAIssC,GAAG,MAAM5tC,EAAEiuC,GAAG+B,GAAGpwC,EAAEV,GAAGmrC,GAAGzqC,EAAEV,GAAGgwC,GAAEtvC,GAAGI,EAAE,GAAG,OAAOguC,GAAE,OAAOvvC,EAAEmB,EAAEwwC,aAAaxwC,EAAEsT,QAAQuM,UAAU7f,EAAEywC,uBAAuBnxC,EAAEa,EAAEuB,GAAEyR,GAAE,KAAKhT,GAAG,KAAKkqC,GAAG,KAAK2D,GAAG,MAAMhkC,MAAM/J,EAAE,MAAM,KAAKguC,GAAGiC,GAAGlwC,EAAE,EAAEV,EAAE,EAAEA,GAAG,MAAM,KAAKgrC,GACvb,GAD0bG,GAAGzqC,EAAEV,GACteA,KADyea,EAAEH,EAAE0wC,qBACre1wC,EAAE4vC,sBAAsBe,GAAG9xC,IAAO,aAAayvC,IAAkB,IAAbzvC,EAAE6tC,GAAGgC,GAAGtS,MAAW,CAAC,GAAGqS,GAAG,CAAC,IAAIrrC,EAAEpD,EAAE2vC,eAAe,GAAG,IAAIvsC,GAAGA,GAAG9D,EAAE,CAACU,EAAE2vC,eAAerwC,EAAE8wC,GAAGpwC,EAAEV,GAAG,KAAK,CAAC,CAAS,GAAG,KAAX8D,EAAEmsC,GAAGvvC,KAAaoD,IAAI9D,EAAE,MAAM,GAAG,IAAIa,GAAGA,IAAIb,EAAE,CAACU,EAAE2vC,eAAexvC,EAAE,KAAK,CAACH,EAAE4wC,cAAcrlB,GAAGslB,GAAGjlC,KAAK,KAAK5L,GAAGnB,GAAG,KAAK,CAACgyC,GAAG7wC,GAAG,MAAM,KAAKuqC,GAAwE,GAArEE,GAAGzqC,EAAEV,GAAyBA,KAAtBa,EAAEH,EAAE0wC,qBAA0B1wC,EAAE4vC,sBAAsBe,GAAG9xC,IAAO4vC,KAAwB,KAAnB5vC,EAAEmB,EAAE2vC,iBAAsB9wC,GAAGS,GAAG,CAACU,EAAE2vC,eAAerwC,EAAE8wC,GAAGpwC,EAAEV,GAAG,KAAK,CAAS,GAAG,KAAXT,EAAE0wC,GAAGvvC,KAAanB,IAAIS,EAAE,MAAM,GAAG,IAAIa,GAAGA,IAAIb,EAAE,CAACU,EAAE2vC,eACxexvC,EAAE,KAAK,CAA2O,GAA1O,aAAaouC,GAAGpuC,EAAE,IAAI,WAAWouC,IAAInS,KAAK,aAAakS,GAAGnuC,EAAE,GAAGA,EAAE,IAAI,WAAWmuC,IAAI,IAAuC,GAANnuC,GAA7BtB,EAAEu9B,MAA+Bj8B,KAAQA,EAAE,IAApCb,EAAE,IAAI,WAAWA,GAAGT,IAAmBsB,GAAG,IAAIA,EAAE,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKqtC,GAAGrtC,EAAE,OAAOA,KAAQA,EAAEb,IAAO,GAAGa,EAAE,CAACH,EAAE4wC,cAAcrlB,GAAGslB,GAAGjlC,KAAK,KAAK5L,GAAGG,GAAG,KAAK,CAAC0wC,GAAG7wC,GAAG,MAAM,KAAKkuC,GAAG,GAAG,aAAaI,IAAI,OAAOE,GAAG,CAACprC,EAAEkrC,GAAG,IAAItrC,EAAEwrC,GAAuH,GAA5F,IAAxBruC,EAAsB,EAApB6C,EAAE8tC,mBAAyB3wC,EAAE,GAAGtB,EAAgB,EAAdmE,EAAE+tC,YAA8D5wC,GAAhDiD,EAAEg5B,MAAM,IAAI,WAAWh5B,IAAgB,EAAZJ,EAAEmsC,WAAa,QAAWtwC,EAAE,EAAEA,EAAEsB,EAAEiD,GAAM,GAAGjD,EAAE,CAACsqC,GAAGzqC,EAAEV,GAAGU,EAAE4wC,cAC/erlB,GAAGslB,GAAGjlC,KAAK,KAAK5L,GAAGG,GAAG,KAAK,CAAC,CAAC0wC,GAAG7wC,GAAG,MAAM,QAAQ,MAAMgK,MAAM/J,EAAE,MAAY,GAALqvC,GAAEtvC,GAAMA,EAAE+vC,eAAe3vC,EAAE,OAAO4vC,GAAGpkC,KAAK,KAAK5L,EAAE,CAAC,CAAC,OAAO,IAAI,CACpI,SAASqvC,GAAGrvC,GAAG,IAAII,EAAEJ,EAAEwvC,gBAAqC,GAArBpvC,EAAE,IAAIA,EAAEA,EAAE,YAAe+tC,IAAGL,GAAGC,OAAOH,GAAE,MAAM5jC,MAAM/J,EAAE,MAAiC,GAA3BkwC,KAAKnwC,IAAImT,IAAG/S,IAAIsqC,IAAG0F,GAAGpwC,EAAEI,GAAM,OAAOguC,GAAE,CAAC,IAAI9uC,EAAE6uC,GAAEA,IAAGL,GAAc,IAAX,IAAI3tC,EAAEkwC,WAAYW,KAAK,KAAK,CAAC,MAAMnyC,GAAG0xC,GAAGvwC,EAAEnB,EAAE,CAAgC,GAAtBs+B,KAAKgR,GAAE7uC,EAAEouC,GAAGp6B,QAAQnT,EAAKuB,KAAIssC,GAAG,MAAM1uC,EAAE+uC,GAAG+B,GAAGpwC,EAAEI,GAAGqqC,GAAGzqC,EAAEI,GAAGkvC,GAAEtvC,GAAGV,EAAE,GAAG,OAAO8uC,GAAE,MAAMpkC,MAAM/J,EAAE,MAAMD,EAAEwwC,aAAaxwC,EAAEsT,QAAQuM,UAAU7f,EAAEywC,uBAAuBrwC,EAAE+S,GAAE,KAAK09B,GAAG7wC,GAAGsvC,GAAEtvC,EAAE,CAAC,OAAO,IAAI,CAC7Y,SAASixC,GAAGjxC,EAAEI,GAAG,IAAId,EAAE6uC,GAAEA,IAAG,EAAE,IAAI,OAAOnuC,EAAEI,EAAE,CAAC,SAAQ+tC,GAAE7uC,KAAMsuC,IAAGjR,IAAI,CAAC,CAAC,SAASuU,GAAGlxC,EAAEI,GAAG,IAAId,EAAE6uC,GAAEA,KAAI,EAAEA,IAAGN,GAAG,IAAI,OAAO7tC,EAAEI,EAAE,CAAC,SAAQ+tC,GAAE7uC,KAAMsuC,IAAGjR,IAAI,CAAC,CACpJ,SAASyT,GAAGpwC,EAAEI,GAAGJ,EAAEwwC,aAAa,KAAKxwC,EAAEywC,uBAAuB,EAAE,IAAInxC,EAAEU,EAAE4wC,cAAiD,IAAlC,IAAItxC,IAAIU,EAAE4wC,eAAe,EAAEplB,GAAGlsB,IAAO,OAAO8uC,GAAE,IAAI9uC,EAAE8uC,GAAErzB,OAAO,OAAOzb,GAAG,CAAC,IAAIa,EAAEb,EAAE,OAAOa,EAAEua,KAAK,KAAK,EAA6B,QAA3Bva,EAAEA,EAAEkV,KAAK6kB,yBAA4B,IAAS/5B,GAAGg6B,KAAK,MAAM,KAAK,EAAE0I,KAAKrJ,GAAEG,IAAGH,GAAEE,IAAG,MAAM,KAAK,EAAEqJ,GAAG5iC,GAAG,MAAM,KAAK,EAAE0iC,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGrJ,GAAEl4B,IAAG,MAAM,KAAK,GAAG87B,GAAGj9B,GAAGb,EAAEA,EAAEyb,MAAM,CAAC5H,GAAEnT,EAAEouC,GAAEvM,GAAG7hC,EAAEsT,QAAQ,MAAMo3B,GAAEtqC,EAAEsB,GAAE2oC,GAAGgE,GAAG,KAAKE,GAAGD,GAAG,WAAWE,GAAG,KAAKhE,GAAG,EAAEiE,IAAG,CAAE,CACrc,SAAS8B,GAAGvwC,EAAEI,GAAG,OAAE,CAAC,IAAuB,GAAnB+8B,KAAKkG,GAAG/vB,QAAQwwB,GAAMN,GAAG,IAAI,IAAIlkC,EAAE2T,GAAE+M,cAAc,OAAO1gB,GAAG,CAAC,IAAIa,EAAEb,EAAE0kC,MAAM,OAAO7jC,IAAIA,EAAEo+B,QAAQ,MAAMj/B,EAAEA,EAAEy+B,IAAI,CAAuB,GAAtBwF,GAAG,EAAEtvB,GAAE5S,GAAE4R,GAAE,KAAKuwB,IAAG,EAAM,OAAO4K,IAAG,OAAOA,GAAErzB,OAAO,OAAOrZ,GAAEssC,GAAGK,GAAGjuC,EAAEguC,GAAE,KAAKpuC,EAAE,CAAC,IAAInB,EAAEmB,EAAEoD,EAAEgrC,GAAErzB,OAAO/X,EAAEorC,GAAE9tC,EAAEF,EAAwD,GAAtDA,EAAEsqC,GAAE1nC,EAAE8c,WAAW,KAAK9c,EAAE2+B,YAAY3+B,EAAEy+B,WAAW,KAAQ,OAAOnhC,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAEwsC,KAAK,CAAC,IAAItsC,EAAEF,EAAE,GAAG,KAAY,EAAP0C,EAAE++B,MAAQ,CAAC,IAAI1+B,EAAEL,EAAE6c,UAAUxc,GAAGL,EAAEm7B,YAAY96B,EAAE86B,YAAYn7B,EAAEgd,cAAc3c,EAAE2c,cAAchd,EAAE26B,eAAet6B,EAAEs6B,iBAAiB36B,EAAEm7B,YACvf,KAAKn7B,EAAEgd,cAAc,KAAK,CAAC,IAAI3gB,EAAE,KAAe,EAAViC,GAAEgS,SAAW/T,EAAE6D,EAAE,EAAE,CAAC,IAAI3C,EAAE,GAAGA,EAAE,KAAKlB,EAAEmb,IAAI,CAAC,IAAIukB,EAAE1/B,EAAEygB,cAAc,GAAG,OAAOif,EAAEx+B,EAAE,OAAOw+B,EAAEhf,eAAqB,CAAC,IAAIif,EAAG3/B,EAAE0jC,cAAcxiC,OAAE,IAASy+B,EAAG8J,YAAY,IAAK9J,EAAG+J,6BAA8B5pC,EAAO,CAAC,CAAC,GAAGoB,EAAE,CAAC,IAAIyS,EAAE3T,EAAE4+B,YAAY,GAAG,OAAOjrB,EAAE,CAAC,IAAIpU,EAAE,IAAImsC,IAAInsC,EAAE6H,IAAInG,GAAGjB,EAAE4+B,YAAYr/B,CAAC,MAAMoU,EAAEvM,IAAInG,GAAG,GAAG,KAAY,EAAPjB,EAAEwiC,MAAQ,CAAoC,GAAnCxiC,EAAEugB,WAAW,GAAG9c,EAAE8c,YAAY,KAAQ,IAAI9c,EAAE0X,IAAI,GAAG,OAAO1X,EAAE6c,UAAU7c,EAAE0X,IAAI,OAAO,CAAC,IAAIra,EAAEq+B,GAAG,WAAW,MAAMr+B,EAAEqa,IAAI,EAAEokB,GAAG97B,EAAE3C,EAAE,CAAC2C,EAAE26B,eAAe,WAClf,MAAM39B,CAAC,CAACM,OAAE,EAAO0C,EAAE5C,EAAE,IAAIgT,EAAEvU,EAAEsyC,UAA+G,GAArG,OAAO/9B,GAAGA,EAAEvU,EAAEsyC,UAAU,IAAIpE,GAAGzsC,EAAE,IAAI2qC,IAAI73B,EAAEP,IAAIrS,EAAEF,SAAgB,KAAXA,EAAE8S,EAAE3H,IAAIjL,MAAgBF,EAAE,IAAI2qC,IAAI73B,EAAEP,IAAIrS,EAAEF,KAASA,EAAE6hB,IAAInf,GAAG,CAAC1C,EAAEqG,IAAI3D,GAAG,IAAIuQ,EAAE69B,GAAGxlC,KAAK,KAAK/M,EAAE2B,EAAEwC,GAAGxC,EAAEssC,KAAKv5B,EAAEA,EAAE,CAAChU,EAAEugB,WAAW,KAAKvgB,EAAEo+B,eAAev9B,EAAE,MAAMJ,CAAC,CAACT,EAAEA,EAAEwb,MAAM,OAAO,OAAOxb,GAAGe,EAAE0J,OAAOmQ,GAAGnX,EAAEqS,OAAO,qBAAqB,wLAAwLoF,GAAGzX,GAAG,CAACtB,KAC1fwsC,KAAKxsC,GAAEusC,IAAI3tC,EAAEuqC,GAAGvqC,EAAE0C,GAAGzD,EAAE6D,EAAE,EAAE,CAAC,OAAO7D,EAAEmb,KAAK,KAAK,EAAEla,EAAEF,EAAEf,EAAEugB,WAAW,KAAKvgB,EAAEo+B,eAAev9B,EAAkB2+B,GAAGx/B,EAAbytC,GAAGztC,EAAEiB,EAAEJ,IAAW,MAAMJ,EAAE,KAAK,EAAEQ,EAAEF,EAAE,IAAIC,EAAEhB,EAAE8V,KAAKg8B,EAAG9xC,EAAEoX,UAAU,GAAG,KAAiB,GAAZpX,EAAEugB,aAAgB,oBAAoBvf,EAAE+nC,0BAA0B,OAAO+I,GAAI,oBAAoBA,EAAGjE,oBAAoB,OAAOC,KAAKA,GAAGlrB,IAAIkvB,KAAM,CAAC9xC,EAAEugB,WAAW,KAAKvgB,EAAEo+B,eAAev9B,EAAmB2+B,GAAGx/B,EAAb4tC,GAAG5tC,EAAEiB,EAAEJ,IAAY,MAAMJ,CAAC,EAAET,EAAEA,EAAEwb,MAAM,OAAO,OAAOxb,EAAE,CAAC6uC,GAAEkD,GAAGlD,GAAE,CAAC,MAAMmD,GAAInxC,EAAEmxC,EAAG,QAAQ,CAAC,KAAK,CAAS,CAC5c,SAASlB,KAAK,IAAIrwC,EAAE0tC,GAAGp6B,QAAsB,OAAdo6B,GAAGp6B,QAAQwwB,GAAU,OAAO9jC,EAAE8jC,GAAG9jC,CAAC,CAAC,SAASm/B,GAAGn/B,EAAEI,GAAGJ,EAAEsuC,IAAI,EAAEtuC,IAAIsuC,GAAGtuC,GAAG,OAAOI,GAAGJ,EAAEuuC,IAAI,EAAEvuC,IAAIuuC,GAAGvuC,EAAEwuC,GAAGpuC,EAAE,CAAC,SAASg/B,GAAGp/B,GAAGA,EAAEwqC,KAAKA,GAAGxqC,EAAE,CAAC,SAASgxC,KAAK,KAAK,OAAO5C,IAAGA,GAAEoD,GAAGpD,GAAE,CAAC,SAASkC,KAAK,KAAK,OAAOlC,KAAIvS,MAAMuS,GAAEoD,GAAGpD,GAAE,CAAC,SAASoD,GAAGxxC,GAAG,IAAII,EAAEmtC,GAAGvtC,EAAE6f,UAAU7f,EAAE0qC,IAAsE,OAAnE1qC,EAAEijC,cAAcjjC,EAAEinC,aAAa,OAAO7mC,IAAIA,EAAEkxC,GAAGtxC,IAAI2tC,GAAGr6B,QAAQ,KAAYlT,CAAC,CACvW,SAASkxC,GAAGtxC,GAAGouC,GAAEpuC,EAAE,EAAE,CAAC,IAAII,EAAEguC,GAAEvuB,UAAqB,GAAX7f,EAAEouC,GAAErzB,OAAU,KAAiB,KAAZqzB,GAAEtuB,WAAgB,CAAa,GAAZ1f,EAAEypC,GAAGzpC,EAAEguC,GAAE1D,IAAM,IAAIA,IAAG,IAAI0D,GAAE5Q,oBAAoB,CAAC,IAAI,IAAIl+B,EAAE,EAAEa,EAAEiuC,GAAEhuB,MAAM,OAAOjgB,GAAG,CAAC,IAAItB,EAAEsB,EAAEw9B,eAAev6B,EAAEjD,EAAEq9B,oBAAoB3+B,EAAES,IAAIA,EAAET,GAAGuE,EAAE9D,IAAIA,EAAE8D,GAAGjD,EAAEA,EAAEkgB,OAAO,CAAC+tB,GAAE5Q,oBAAoBl+B,CAAC,CAAC,GAAG,OAAOc,EAAE,OAAOA,EAAE,OAAOJ,GAAG,KAAiB,KAAZA,EAAE8f,aAAkB,OAAO9f,EAAE2hC,cAAc3hC,EAAE2hC,YAAYyM,GAAEzM,aAAa,OAAOyM,GAAE3M,aAAa,OAAOzhC,EAAEyhC,aAAazhC,EAAEyhC,WAAWC,WAAW0M,GAAEzM,aAAa3hC,EAAEyhC,WAAW2M,GAAE3M,YAAY,EAAE2M,GAAEtuB,YAAY,OACnf9f,EAAEyhC,WAAWzhC,EAAEyhC,WAAWC,WAAW0M,GAAEpuC,EAAE2hC,YAAYyM,GAAEpuC,EAAEyhC,WAAW2M,IAAG,KAAK,CAAS,GAAG,QAAXhuC,EAAEwqC,GAAGwD,KAAe,OAAOhuC,EAAE0f,WAAW,KAAK1f,EAAE,OAAOJ,IAAIA,EAAE2hC,YAAY3hC,EAAEyhC,WAAW,KAAKzhC,EAAE8f,WAAW,KAAK,CAAa,GAAG,QAAf1f,EAAEguC,GAAE/tB,SAAoB,OAAOjgB,EAAEguC,GAAEpuC,CAAC,OAAO,OAAOouC,IAAkB,OAAf1sC,KAAI2oC,KAAK3oC,GAAEwsC,IAAW,IAAI,CAAC,SAASyC,GAAG3wC,GAAG,IAAII,EAAEJ,EAAE29B,eAAuC,OAAOv9B,GAA/BJ,EAAEA,EAAEw9B,qBAA+Bp9B,EAAEJ,CAAC,CAAC,SAAS6wC,GAAG7wC,GAAG,IAAII,EAAEi8B,KAA8B,OAAzBE,GAAG,GAAGkV,GAAG7lC,KAAK,KAAK5L,EAAEI,IAAW,IAAI,CACrZ,SAASqxC,GAAGzxC,EAAEI,GAAG,GAAG+vC,WAAW,OAAOtB,IAAI,IAAIV,IAAGL,GAAGC,OAAOH,GAAE,MAAM5jC,MAAM/J,EAAE,MAAM,IAAIX,EAAEU,EAAEwwC,aAAarwC,EAAEH,EAAEywC,uBAAuB,GAAG,OAAOnxC,EAAE,OAAO,KAAoD,GAA/CU,EAAEwwC,aAAa,KAAKxwC,EAAEywC,uBAAuB,EAAKnxC,IAAIU,EAAEsT,QAAQ,MAAMtJ,MAAM/J,EAAE,MAAMD,EAAE+vC,aAAa,KAAK/vC,EAAE6vC,uBAAuB,EAAE7vC,EAAE8vC,iBAAiB,GAAG9vC,EAAE4vC,sBAAsB,EAAE,IAAI/wC,EAAE8xC,GAAGrxC,GAClI,GADqIU,EAAE0vC,iBAAiB7wC,EAAEsB,GAAGH,EAAE0wC,kBAAkB1wC,EAAE0xC,mBAAmB1xC,EAAE0wC,kBAAkB1wC,EAAE4vC,sBAAsB,EAAEzvC,GAAGH,EAAE0xC,qBAAqB1xC,EAAE0xC,mBACnevxC,EAAE,GAAGA,GAAGH,EAAE2vC,iBAAiB3vC,EAAE2vC,eAAe,GAAGxvC,GAAGH,EAAEwvC,kBAAkBxvC,EAAEwvC,gBAAgB,GAAGxvC,IAAImT,KAAIi7B,GAAEj7B,GAAE,KAAKu3B,GAAE,GAAG,EAAEprC,EAAEwgB,UAAU,OAAOxgB,EAAEmiC,YAAYniC,EAAEmiC,WAAWC,WAAWpiC,EAAET,EAAES,EAAEqiC,aAAa9iC,EAAES,EAAET,EAAES,EAAEqiC,YAAe,OAAO9iC,EAAE,CAAC,IAAIuE,EAAE+qC,GAAEA,IAAGJ,GAAGJ,GAAGr6B,QAAQ,KAAK2X,GAAG5F,GAAG,IAAIriB,EAAEunB,KAAK,GAAGI,GAAG3nB,GAAG,CAAC,GAAG,mBAAmBA,EAAE,IAAI1C,EAAE,CAACu1B,MAAM7yB,EAAE8yB,eAAeC,IAAI/yB,EAAEgzB,mBAAmBh2B,EAAE,CAA8C,IAAIQ,GAAjDF,GAAGA,EAAE0C,EAAEwZ,gBAAgBlc,EAAE00B,aAAa/yB,QAAei0B,cAAc51B,EAAE41B,eAAe,GAAG11B,GAAG,IAAIA,EAAEmxC,WAAW,CAACrxC,EAAEE,EAAEy1B,WAAW,IAAI5yB,EAAE7C,EAAE21B,aAC9e92B,EAAEmB,EAAE41B,UAAU51B,EAAEA,EAAE61B,YAAY,IAAI/1B,EAAEge,SAASjf,EAAEif,QAAQ,CAAC,MAAMszB,GAAItxC,EAAE,KAAK,MAAMN,CAAC,CAAC,IAAIT,EAAE,EAAEkB,GAAG,EAAEw+B,GAAG,EAAEC,EAAG,EAAEhsB,EAAE,EAAEpU,EAAEkE,EAAE3C,EAAE,KAAKD,EAAE,OAAO,CAAC,IAAI,IAAIgT,EAAKtU,IAAIwB,GAAG,IAAI+C,GAAG,IAAIvE,EAAEwf,WAAW7d,EAAElB,EAAE8D,GAAGvE,IAAIO,GAAG,IAAImB,GAAG,IAAI1B,EAAEwf,WAAW2gB,EAAE1/B,EAAEiB,GAAG,IAAI1B,EAAEwf,WAAW/e,GAAGT,EAAEyf,UAAU1e,QAAW,QAAQuT,EAAEtU,EAAEif,aAAkB1d,EAAEvB,EAAEA,EAAEsU,EAAE,OAAO,CAAC,GAAGtU,IAAIkE,EAAE,MAAM5C,EAA+C,GAA7CC,IAAIC,KAAK4+B,IAAK77B,IAAI5C,EAAElB,GAAGc,IAAIhB,KAAK6T,IAAI1S,IAAIy+B,EAAE1/B,GAAM,QAAQ6T,EAAEtU,EAAEqrB,aAAa,MAAU9pB,GAAJvB,EAAEuB,GAAM+gB,UAAU,CAACtiB,EAAEsU,CAAC,CAAC9S,GAAG,IAAIG,IAAI,IAAIw+B,EAAE,KAAK,CAACpJ,MAAMp1B,EAAEs1B,IAAIkJ,EAAE,MAAM3+B,EAAE,IAAI,CAACA,EAAEA,GAAG,CAACu1B,MAAM,EAAEE,IAAI,EAAE,MAAMz1B,EACtf,KAAK4qB,GAAG,CAAC2mB,sBAAsB,KAAKC,YAAY9uC,EAAE+uC,eAAezxC,GAAG+kB,IAAG,EAAGspB,GAAE9vC,EAAE,OAAOmzC,IAAI,CAAC,MAAMJ,GAAI,GAAG,OAAOjD,GAAE,MAAM3kC,MAAM/J,EAAE,MAAMorC,GAAGsD,GAAEiD,GAAIjD,GAAEA,GAAEjN,UAAU,QAAO,OAAOiN,IAAGA,GAAE9vC,EAAE,OAAO,IAAImE,EAAEhD,EAAEM,EAAEF,EAAE,OAAOuuC,IAAG,CAAC,IAAIp7B,EAAEo7B,GAAE7uB,UAAmC,GAAvB,GAAFvM,GAAM6K,GAAGuwB,GAAEh4B,UAAU,IAAS,IAAFpD,EAAM,CAAC,IAAIR,EAAE47B,GAAE9uB,UAAU,GAAG,OAAO9M,EAAE,CAAC,IAAIxS,EAAEwS,EAAEmB,IAAI,OAAO3T,IAAI,oBAAoBA,EAAEA,EAAE,MAAMA,EAAE+S,QAAQ,KAAK,CAAC,CAAC,OAAS,KAAFC,GAAQ,KAAK,EAAE44B,GAAGwC,IAAGA,GAAE7uB,YAAY,EAAE,MAAM,KAAK,EAAEqsB,GAAGwC,IAAGA,GAAE7uB,YAAY,EAAE2sB,GAAGkC,GAAE9uB,UAAU8uB,IAAG,MAAM,KAAK,KAAKA,GAAE7uB,YAAY,KAAK,MAAM,KAAK,KAAK6uB,GAAE7uB,YAC7f,KAAK2sB,GAAGkC,GAAE9uB,UAAU8uB,IAAG,MAAM,KAAK,EAAElC,GAAGkC,GAAE9uB,UAAU8uB,IAAG,MAAM,KAAK,EAAM3C,GAAGhpC,EAAPK,EAAEsrC,GAASruC,GAAG2rC,GAAG5oC,GAAGsrC,GAAEA,GAAEjN,UAAU,CAAC,CAAC,MAAMkQ,GAAI,GAAG,OAAOjD,GAAE,MAAM3kC,MAAM/J,EAAE,MAAMorC,GAAGsD,GAAEiD,GAAIjD,GAAEA,GAAEjN,UAAU,QAAO,OAAOiN,IAAkD,GAA/CpuC,EAAE2qB,GAAGnY,EAAEwX,KAAKhX,EAAEhT,EAAEuxC,YAAYxxC,EAAEC,EAAEwxC,eAAkBh/B,IAAIQ,GAAGA,GAAGA,EAAEiJ,eAAe4N,GAAG7W,EAAEiJ,cAAclX,gBAAgBiO,GAAG,CAAC,OAAOjT,GAAGqqB,GAAGpX,KAAKR,EAAEzS,EAAEu1B,WAAc,KAARt1B,EAAED,EAAEy1B,OAAiBx1B,EAAEwS,GAAG,mBAAmBQ,GAAGA,EAAEuiB,eAAe/iB,EAAEQ,EAAEyiB,aAAatxB,KAAKE,IAAIrE,EAAEgT,EAAEzN,MAAMjG,UAAUU,GAAGwS,EAAEQ,EAAEiJ,eAAeza,WAAWgR,EAAEiiB,aAAa/yB,QAASi0B,eACjf31B,EAAEA,EAAE21B,eAAe7yB,EAAEkQ,EAAEgK,YAAY1d,OAAOmD,EAAE0B,KAAKE,IAAItE,EAAEu1B,MAAMxyB,GAAG/C,OAAE,IAASA,EAAEy1B,IAAI/yB,EAAE0B,KAAKE,IAAItE,EAAEy1B,IAAI1yB,IAAI9C,EAAE+tB,QAAQtrB,EAAE1C,IAAI+C,EAAE/C,EAAEA,EAAE0C,EAAEA,EAAEK,GAAGA,EAAE6mB,GAAG3W,EAAEvQ,GAAG3D,EAAE6qB,GAAG3W,EAAEjT,GAAG+C,GAAGhE,IAAI,IAAIkB,EAAEoxC,YAAYpxC,EAAE01B,aAAa5yB,EAAE7B,MAAMjB,EAAE41B,eAAe9yB,EAAE3C,QAAQH,EAAE61B,YAAY/2B,EAAEmC,MAAMjB,EAAE81B,cAAch3B,EAAEqB,WAAUqS,EAAEA,EAAEk/B,eAAgBC,SAAS7uC,EAAE7B,KAAK6B,EAAE3C,QAAQH,EAAE4xC,kBAAkBnvC,EAAE1C,GAAGC,EAAE6xC,SAASr/B,GAAGxS,EAAE+tB,OAAOjvB,EAAEmC,KAAKnC,EAAEqB,UAAUqS,EAAEs/B,OAAOhzC,EAAEmC,KAAKnC,EAAEqB,QAAQH,EAAE6xC,SAASr/B,OAAQA,EAAE,GAAG,IAAIxS,EAAEgT,EAAEhT,EAAEA,EAAE6gB,YAAY,IAAI7gB,EAAE+d,UAAUvL,EAAEvB,KAAK,CAACzG,QAAQxK,EAAEoH,KAAKpH,EAAEiH,WACzfL,IAAI5G,EAAEkH,YAAmD,IAAvC,oBAAoB8L,EAAEo4B,OAAOp4B,EAAEo4B,QAAYp4B,EAAE,EAAEA,EAAER,EAAElT,OAAO0T,KAAIhT,EAAEwS,EAAEQ,IAAKxI,QAAQvD,WAAWjH,EAAEoH,KAAKpH,EAAEwK,QAAQtD,UAAUlH,EAAE4G,GAAG,CAACke,KAAK4F,GAAGC,GAAGD,GAAG,KAAKjrB,EAAEsT,QAAQhU,EAAEqvC,GAAE9vC,EAAE,OAAO,IAAI0U,EAAEvT,EAAE,OAAO2uC,IAAG,CAAC,IAAI0C,EAAG1C,GAAE7uB,UAAqC,GAAxB,GAAHuxB,GAAO3F,GAAGn4B,EAAEo7B,GAAE9uB,UAAU8uB,IAAS,IAAH0C,EAAO,CAACt+B,OAAE,EAAO,IAAIu/B,EAAG3D,GAAEz6B,IAAI,GAAG,OAAOo+B,EAAG,CAAC,IAAIf,EAAG5C,GAAEh4B,UAAiBg4B,GAAEj0B,IAA+B3H,EAAEw+B,EAAG,oBAAoBe,EAAGA,EAAGv/B,GAAGu/B,EAAGh/B,QAAQP,CAAC,CAAC,CAAC47B,GAAEA,GAAEjN,UAAU,CAAC,CAAC,MAAMkQ,GAAI,GAAG,OAAOjD,GAAE,MAAM3kC,MAAM/J,EAAE,MAAMorC,GAAGsD,GAAEiD,GAAIjD,GAAEA,GAAEjN,UAAU,QAAO,OAAOiN,IAAGA,GACpf,KAAK5S,KAAKoS,GAAE/qC,CAAC,MAAMpD,EAAEsT,QAAQhU,EAAE,GAAGsvC,GAAGA,IAAG,EAAGC,GAAG7uC,EAAE8uC,GAAG1uC,OAAO,IAAIuuC,GAAE9vC,EAAE,OAAO8vC,IAAGvuC,EAAEuuC,GAAEjN,WAAWiN,GAAEjN,WAAW,KAAKiN,GAAEvuC,EAAmI,GAA5G,KAArBA,EAAEJ,EAAE0vC,oBAAyBrC,GAAG,MAAM,aAAajtC,EAAEJ,IAAIivC,GAAGD,MAAMA,GAAG,EAAEC,GAAGjvC,GAAGgvC,GAAG,EAAE,oBAAoBuD,IAAIA,GAAGjzC,EAAEqX,UAAUxW,GAAGmvC,GAAEtvC,GAAMitC,GAAG,MAAMA,IAAG,EAAGjtC,EAAEktC,GAAGA,GAAG,KAAKltC,EAAE,OAAImuC,GAAEN,MAAMD,IAAcjR,KAAL,IAAqB,CAAC,SAASqV,KAAK,KAAK,OAAOrD,IAAG,CAAC,IAAI3uC,EAAE2uC,GAAE7uB,UAAU,KAAO,IAAF9f,IAAQsrC,GAAGqD,GAAE9uB,UAAU8uB,IAAG,KAAO,IAAF3uC,IAAQ4uC,KAAKA,IAAG,EAAGpS,GAAG,IAAG,WAAgB,OAAL2T,KAAY,IAAI,KAAIxB,GAAEA,GAAEjN,UAAU,CAAC,CACzd,SAASyO,KAAK,GAAG,KAAKrB,GAAG,CAAC,IAAI9uC,EAAE,GAAG8uC,GAAG,GAAGA,GAAS,OAANA,GAAG,GAAUvS,GAAGv8B,EAAEwyC,GAAG,CAAC,CAAC,SAASA,KAAK,GAAG,OAAO3D,GAAG,OAAM,EAAG,IAAI7uC,EAAE6uC,GAAW,GAARA,GAAG,MAASV,IAAGL,GAAGC,OAAOH,GAAE,MAAM5jC,MAAM/J,EAAE,MAAM,IAAIG,EAAE+tC,GAAQ,IAANA,IAAGJ,GAAO/tC,EAAEA,EAAEsT,QAAQquB,YAAY,OAAO3hC,GAAG,CAAC,IAAI,IAAIV,EAAEU,EAAE,GAAG,KAAiB,IAAZV,EAAEwgB,WAAe,OAAOxgB,EAAEob,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG8wB,GAAG,EAAElsC,GAAGmsC,GAAG,EAAEnsC,GAAG,CAAC,MAAMa,GAAG,GAAG,OAAOH,EAAE,MAAMgK,MAAM/J,EAAE,MAAMorC,GAAGrrC,EAAEG,EAAE,CAACb,EAAEU,EAAE0hC,WAAW1hC,EAAE0hC,WAAW,KAAK1hC,EAAEV,CAAC,CAAU,OAAT6uC,GAAE/tC,EAAEu8B,MAAW,CAAE,CAC9Z,SAAS8V,GAAGzyC,EAAEI,EAAEd,GAAkCw/B,GAAG9+B,EAAxBI,EAAE4sC,GAAGhtC,EAAfI,EAAEyqC,GAAGvrC,EAAEc,GAAY,aAAuC,QAAnBJ,EAAEovC,GAAGpvC,EAAE,cAAsBsvC,GAAEtvC,EAAE,CAAC,SAASqrC,GAAGrrC,EAAEI,GAAG,GAAG,IAAIJ,EAAE0a,IAAI+3B,GAAGzyC,EAAEA,EAAEI,QAAQ,IAAI,IAAId,EAAEU,EAAE+a,OAAO,OAAOzb,GAAG,CAAC,GAAG,IAAIA,EAAEob,IAAI,CAAC+3B,GAAGnzC,EAAEU,EAAEI,GAAG,KAAK,CAAM,GAAG,IAAId,EAAEob,IAAI,CAAC,IAAIva,EAAEb,EAAEqX,UAAU,GAAG,oBAAoBrX,EAAE+V,KAAKizB,0BAA0B,oBAAoBnoC,EAAEitC,oBAAoB,OAAOC,KAAKA,GAAGlrB,IAAIhiB,IAAI,CAAgC2+B,GAAGx/B,EAAxBU,EAAEmtC,GAAG7tC,EAAfU,EAAE6qC,GAAGzqC,EAAEJ,GAAY,aAAuC,QAAnBV,EAAE8vC,GAAG9vC,EAAE,cAAsBgwC,GAAEhwC,GAAG,KAAK,CAAC,CAACA,EAAEA,EAAEyb,MAAM,CAAC,CAC/b,SAASq2B,GAAGpxC,EAAEI,EAAEd,GAAG,IAAIa,EAAEH,EAAEmxC,UAAU,OAAOhxC,GAAGA,EAAEojB,OAAOnjB,GAAG+S,KAAInT,GAAG0qC,KAAIprC,EAAEoC,KAAI6oC,IAAI7oC,KAAI4oC,IAAI,aAAagE,IAAIlS,KAAKsQ,GAAGgC,GAAG0B,GAAGpwC,EAAE0qC,IAAG+D,IAAG,EAAGgB,GAAGzvC,EAAEV,KAAwB,KAAnBc,EAAEJ,EAAE2vC,iBAAsBvvC,EAAEd,IAAIU,EAAE2vC,eAAerwC,EAAEgwC,GAAEtvC,IAAI,CAAC,SAAS6sC,GAAG7sC,EAAEI,GAAG,IAAId,EAAEU,EAAE2W,UAAU,OAAOrX,GAAGA,EAAEikB,OAAOnjB,GAAO,KAAJA,EAAE,KAAiBA,EAAE2/B,GAAT3/B,EAAE0/B,KAAY9/B,EAAE,OAAiB,QAAVA,EAAEovC,GAAGpvC,EAAEI,KAAakvC,GAAEtvC,EAAE,CAC1TutC,GAAG,SAASvtC,EAAEI,EAAEd,GAAG,IAAIa,EAAEC,EAAEu9B,eAAe,GAAG,OAAO39B,EAAE,CAAC,IAAInB,EAAEuB,EAAE6mC,aAAa,GAAGjnC,EAAEijC,gBAAgBpkC,GAAG86B,GAAErmB,QAAQsqB,IAAG,MAAO,CAAC,GAAGz9B,EAAEb,EAAE,CAAO,OAANs+B,IAAG,EAAUx9B,EAAEsa,KAAK,KAAK,EAAE6tB,GAAGnoC,GAAGinC,KAAK,MAAM,KAAK,EAAQ,GAANvE,GAAG1iC,GAAa,EAAPA,EAAE2hC,MAAQ,IAAIziC,GAAGT,EAAE6zC,OAAO,OAAOtyC,EAAEu9B,eAAev9B,EAAEo9B,oBAAoB,EAAE,KAAK,MAAM,KAAK,EAAEvD,GAAE75B,EAAEiV,OAAOklB,GAAGn6B,GAAG,MAAM,KAAK,EAAEwiC,GAAGxiC,EAAEA,EAAEuW,UAAUqL,eAAe,MAAM,KAAK,GAAG7hB,EAAEC,EAAE6iC,cAAcn9B,MAAMjH,EAAEuB,EAAEiV,KAAKgoB,SAAS3pB,GAAEqpB,GAAGl+B,EAAEy+B,eAAez+B,EAAEy+B,cAAcn9B,EAAE,MAAM,KAAK,GAAG,GAAG,OAAOC,EAAE4f,cACjd,OAAG,KAD6d7f,EAAEC,EAAEggB,MAAMod,sBACher9B,GAAGb,EAASypC,GAAG/oC,EAAEI,EAAEd,IAAGoU,GAAEpS,GAAY,EAAVA,GAAEgS,SAA8B,QAAnBlT,EAAEsnC,GAAG1nC,EAAEI,EAAEd,IAAmBc,EAAEigB,QAAQ,MAAK3M,GAAEpS,GAAY,EAAVA,GAAEgS,SAAW,MAAM,KAAK,GAA8B,GAA3BnT,EAAEC,EAAEo9B,qBAAqBl+B,EAAK,KAAiB,GAAZU,EAAE8f,WAAc,CAAC,GAAG3f,EAAE,OAAOwpC,GAAG3pC,EAAEI,EAAEd,GAAGc,EAAE0f,WAAW,EAAE,CAA2E,GAAxD,QAAlBjhB,EAAEuB,EAAE4f,iBAAyBnhB,EAAEwqC,UAAU,KAAKxqC,EAAE2qC,KAAK,MAAM91B,GAAEpS,GAAEA,GAAEgS,UAAanT,EAAE,OAAO,KAAK,OAAOunC,GAAG1nC,EAAEI,EAAEd,EAAE,CAACs+B,IAAG,CAAE,CAAC,MAAMA,IAAG,EAAsB,OAAnBx9B,EAAEu9B,eAAe,EAASv9B,EAAEsa,KAAK,KAAK,EAChW,GADkWva,EAAEC,EAAEiV,KAAK,OAAOrV,IAAIA,EAAE6f,UAAU,KAAKzf,EAAEyf,UAAU,KAAKzf,EAAE0f,WAAW,GAAG9f,EAAEI,EAAE6mC,aAAapoC,EAAEg7B,GAAGz5B,EAAEs5B,GAAEpmB,SAASmqB,GAAGr9B,EAAEd,GAAGT,EAAE6kC,GAAG,KAClftjC,EAAED,EAAEH,EAAEnB,EAAES,GAAGc,EAAE0f,WAAW,EAAK,kBAAkBjhB,GAAG,OAAOA,GAAG,oBAAoBA,EAAEyb,aAAQ,IAASzb,EAAEwb,SAAS,CAAiD,GAAhDja,EAAEsa,IAAI,EAAEta,EAAE4f,cAAc,KAAK5f,EAAE+9B,YAAY,KAAQlE,GAAE95B,GAAG,CAAC,IAAIiD,GAAE,EAAGm3B,GAAGn6B,EAAE,MAAMgD,GAAE,EAAGhD,EAAE4f,cAAc,OAAOnhB,EAAE2hC,YAAO,IAAS3hC,EAAE2hC,MAAM3hC,EAAE2hC,MAAM,KAAKtC,GAAG99B,GAAG,IAAI4C,EAAE7C,EAAE2gC,yBAAyB,oBAAoB99B,GAAGy8B,GAAGr/B,EAAED,EAAE6C,EAAEhD,GAAGnB,EAAE4hC,QAAQf,GAAGt/B,EAAEuW,UAAU9X,EAAEA,EAAE+gC,oBAAoBx/B,EAAEygC,GAAGzgC,EAAED,EAAEH,EAAEV,GAAGc,EAAEioC,GAAG,KAAKjoC,EAAED,GAAE,EAAGiD,EAAE9D,EAAE,MAAMc,EAAEsa,IAAI,EAAE8sB,GAAE,KAAKpnC,EAAEvB,EAAES,GAAGc,EAAEA,EAAEggB,MAAM,OAAOhgB,EAAE,KAAK,GAAGJ,EAAE,CACzZ,GAD0ZnB,EAAEuB,EAAE4K,YAAY,OAAOhL,IAAIA,EAAE6f,UACpf,KAAKzf,EAAEyf,UAAU,KAAKzf,EAAE0f,WAAW,GAAG9f,EAAEI,EAAE6mC,aAzOoP,SAAYjnC,GAAG,IAAI,IAAIA,EAAEua,QAAQ,CAACva,EAAEua,QAAQ,EAAE,IAAIna,EAAEJ,EAAE2yC,MAAMvyC,EAAEA,IAAIJ,EAAEwa,QAAQpa,EAAEA,EAAE0sC,MAAK,SAAS1sC,GAAG,IAAIJ,EAAEua,UAAUna,EAAEA,EAAEX,QAAQO,EAAEua,QAAQ,EAAEva,EAAEwa,QAAQpa,EAAE,IAAE,SAASA,GAAG,IAAIJ,EAAEua,UAAUva,EAAEua,QAAQ,EAAEva,EAAEwa,QAAQpa,EAAE,GAAE,CAAC,CAyOrbwyC,CAAG/zC,GAAM,IAAIA,EAAE0b,QAAQ,MAAM1b,EAAE2b,QAAqD,OAA7C3b,EAAEA,EAAE2b,QAAQpa,EAAEiV,KAAKxW,EAAEuE,EAAEhD,EAAEsa,IAQzD,SAAY1a,GAAG,GAAG,oBAAoBA,EAAE,OAAO4nC,GAAG5nC,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAEqa,YAAgBV,GAAG,OAAO,GAAG,GAAG3Z,IAAI8Z,GAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CARlF+4B,CAAGh0C,GAAGmB,EAAE68B,GAAGh+B,EAAEmB,GAAUoD,GAAG,KAAK,EAAEhD,EAAE2nC,GAAG,KAAK3nC,EAAEvB,EAAEmB,EAAEV,GAAG,MAAMU,EAAE,KAAK,EAAEI,EAAE6nC,GAAG,KAAK7nC,EAAEvB,EAAEmB,EAAEV,GAAG,MAAMU,EAAE,KAAK,GAAGI,EAAEqnC,GAAG,KAAKrnC,EAAEvB,EAAEmB,EAAEV,GAAG,MAAMU,EAAE,KAAK,GAAGI,EAAEunC,GAAG,KAAKvnC,EAAEvB,EAAEg+B,GAAGh+B,EAAEwW,KAAKrV,GAAGG,EAAEb,GAAG,MAAMU,EAAE,MAAMgK,MAAM/J,EAAE,IAAIpB,EAAE,IAAK,CAAC,OAAOuB,EAAE,KAAK,EAAE,OAAOD,EAAEC,EAAEiV,KAAKxW,EAAEuB,EAAE6mC,aAA2Cc,GAAG/nC,EAAEI,EAAED,EAArCtB,EAAEuB,EAAE4K,cAAc7K,EAAEtB,EAAEg+B,GAAG18B,EAAEtB,GAAcS,GAAG,KAAK,EAAE,OAAOa,EAAEC,EAAEiV,KAAKxW,EAAEuB,EAAE6mC,aAA2CgB,GAAGjoC,EAAEI,EAAED,EAArCtB,EAAEuB,EAAE4K,cAAc7K,EAAEtB,EAAEg+B,GAAG18B,EAAEtB,GAAcS,GACpf,KAAK,EAAwB,GAAtBipC,GAAGnoC,GAAGD,EAAEC,EAAE+9B,YAAe,OAAOn+B,GAAG,OAAOG,EAAE,MAAM6J,MAAM/J,EAAE,MAAoH,GAA9GE,EAAEC,EAAE6mC,aAA+BpoC,EAAE,QAApBA,EAAEuB,EAAE4f,eAAyBnhB,EAAEkM,QAAQ,KAAK0zB,GAAGz+B,EAAEI,GAAG4+B,GAAG5+B,EAAED,EAAE,KAAKb,IAAGa,EAAEC,EAAE4f,cAAcjV,WAAelM,EAAEwoC,KAAKjnC,EAAEsnC,GAAG1nC,EAAEI,EAAEd,OAAO,CAAmF,IAA/ET,EAAEuB,EAAEuW,UAAUmN,WAAQ8iB,GAAGnb,GAAGrrB,EAAEuW,UAAUqL,cAAcjE,YAAY4oB,GAAGvmC,EAAEvB,EAAEgoC,IAAG,GAAMhoC,EAAE,IAAIS,EAAEgjC,GAAGliC,EAAE,KAAKD,EAAEb,GAAGc,EAAEggB,MAAM9gB,EAAEA,GAAGA,EAAEwgB,WAAuB,EAAbxgB,EAAEwgB,UAAa,KAAKxgB,EAAEA,EAAE+gB,aAAamnB,GAAExnC,EAAEI,EAAED,EAAEb,GAAG+nC,KAAKjnC,EAAEA,EAAEggB,KAAK,CAAC,OAAOhgB,EAAE,KAAK,EAAE,OAAO0iC,GAAG1iC,GAAG,OAAOJ,GAAGknC,GAAG9mC,GAAGD,EAAEC,EAAEiV,KAAKxW,EAAEuB,EAAE6mC,aAAa7jC,EAAE,OAAOpD,EAAEA,EAAEijC,cAC5e,KAAKjgC,EAAEnE,EAAEoG,SAASomB,GAAGlrB,EAAEtB,GAAGmE,EAAE,KAAK,OAAOI,GAAGioB,GAAGlrB,EAAEiD,KAAKhD,EAAE0f,WAAW,IAAIkoB,GAAGhoC,EAAEI,GAAU,EAAPA,EAAE2hC,MAAQ,IAAIziC,GAAGT,EAAE6zC,QAAQtyC,EAAEu9B,eAAev9B,EAAEo9B,oBAAoB,EAAEp9B,EAAE,OAAOonC,GAAExnC,EAAEI,EAAE4C,EAAE1D,GAAGc,EAAEA,EAAEggB,OAAOhgB,EAAE,KAAK,EAAE,OAAO,OAAOJ,GAAGknC,GAAG9mC,GAAG,KAAK,KAAK,GAAG,OAAO2oC,GAAG/oC,EAAEI,EAAEd,GAAG,KAAK,EAAE,OAAOsjC,GAAGxiC,EAAEA,EAAEuW,UAAUqL,eAAe7hB,EAAEC,EAAE6mC,aAAa,OAAOjnC,EAAEI,EAAEggB,MAAMiiB,GAAGjiC,EAAE,KAAKD,EAAEb,GAAGkoC,GAAExnC,EAAEI,EAAED,EAAEb,GAAGc,EAAEggB,MAAM,KAAK,GAAG,OAAOjgB,EAAEC,EAAEiV,KAAKxW,EAAEuB,EAAE6mC,aAA2CQ,GAAGznC,EAAEI,EAAED,EAArCtB,EAAEuB,EAAE4K,cAAc7K,EAAEtB,EAAEg+B,GAAG18B,EAAEtB,GAAcS,GAAG,KAAK,EAAE,OAAOkoC,GAAExnC,EAAEI,EAAEA,EAAE6mC,aAAa3nC,GAAGc,EAAEggB,MAAM,KAAK,EACpc,KAAK,GAAG,OAAOonB,GAAExnC,EAAEI,EAAEA,EAAE6mC,aAAahiC,SAAS3F,GAAGc,EAAEggB,MAAM,KAAK,GAAGpgB,EAAE,CAACG,EAAEC,EAAEiV,KAAKgoB,SAASx+B,EAAEuB,EAAE6mC,aAAajkC,EAAE5C,EAAE6iC,cAAc7/B,EAAEvE,EAAEiH,MAAM,IAAIxF,EAAEF,EAAEiV,KAAKgoB,SAAiD,GAAxC3pB,GAAEqpB,GAAGz8B,EAAEg9B,eAAeh9B,EAAEg9B,cAAcl6B,EAAK,OAAOJ,EAAE,GAAG1C,EAAE0C,EAAE8C,MAA0G,KAApG1C,EAAE8xB,GAAG50B,EAAE8C,GAAG,EAAwF,GAArF,oBAAoBjD,EAAE2yC,sBAAsB3yC,EAAE2yC,sBAAsBxyC,EAAE8C,GAAG,cAAqB,GAAGJ,EAAEiC,WAAWpG,EAAEoG,WAAW00B,GAAErmB,QAAQ,CAAClT,EAAEsnC,GAAG1nC,EAAEI,EAAEd,GAAG,MAAMU,CAAC,OAAO,IAAc,QAAVM,EAAEF,EAAEggB,SAAiB9f,EAAEya,OAAO3a,GAAG,OAAOE,GAAG,CAAC,IAAIE,EAAEF,EAAE8V,aAAa,GAAG,OACnf5V,EAAE,CAACwC,EAAE1C,EAAE8f,MAAM,IAAI,IAAI/c,EAAE7C,EAAEk9B,aAAa,OAAOr6B,GAAG,CAAC,GAAGA,EAAEmL,UAAUrO,GAAG,KAAKkD,EAAEy6B,aAAa16B,GAAG,CAAC,IAAI9C,EAAEoa,OAAMrX,EAAEq7B,GAAGp/B,EAAE,OAAQob,IAAI,EAAEokB,GAAGx+B,EAAE+C,IAAI/C,EAAEq9B,eAAer+B,IAAIgB,EAAEq9B,eAAer+B,GAAiB,QAAd+D,EAAE/C,EAAEuf,YAAoBxc,EAAEs6B,eAAer+B,IAAI+D,EAAEs6B,eAAer+B,GAAGi+B,GAAGj9B,EAAEya,OAAOzb,GAAGkB,EAAEm9B,eAAer+B,IAAIkB,EAAEm9B,eAAer+B,GAAG,KAAK,CAAC+D,EAAEA,EAAE06B,IAAI,CAAC,MAAM/6B,EAAE,KAAK1C,EAAEoa,KAAIpa,EAAE+U,OAAOjV,EAAEiV,KAAK,KAAa/U,EAAE8f,MAAM,GAAG,OAAOpd,EAAEA,EAAE+X,OAAOza,OAAO,IAAI0C,EAAE1C,EAAE,OAAO0C,GAAG,CAAC,GAAGA,IAAI5C,EAAE,CAAC4C,EAAE,KAAK,KAAK,CAAa,GAAG,QAAf1C,EAAE0C,EAAEqd,SAAoB,CAAC/f,EAAEya,OAAO/X,EAAE+X,OAAO/X,EAAE1C,EAAE,KAAK,CAAC0C,EAAEA,EAAE+X,MAAM,CAACza,EACpf0C,CAAC,CAACwkC,GAAExnC,EAAEI,EAAEvB,EAAEoG,SAAS3F,GAAGc,EAAEA,EAAEggB,KAAK,CAAC,OAAOhgB,EAAE,KAAK,EAAE,OAAOvB,EAAEuB,EAAEiV,KAAsBlV,GAAjBiD,EAAEhD,EAAE6mC,cAAiBhiC,SAASw4B,GAAGr9B,EAAEd,GAAmCa,EAAEA,EAAlCtB,EAAEg/B,GAAGh/B,EAAEuE,EAAE2vC,wBAA8B3yC,EAAE0f,WAAW,EAAE0nB,GAAExnC,EAAEI,EAAED,EAAEb,GAAGc,EAAEggB,MAAM,KAAK,GAAG,OAAgBhd,EAAEy5B,GAAXh+B,EAAEuB,EAAEiV,KAAYjV,EAAE6mC,cAA6BU,GAAG3nC,EAAEI,EAAEvB,EAAtBuE,EAAEy5B,GAAGh+B,EAAEwW,KAAKjS,GAAcjD,EAAEb,GAAG,KAAK,GAAG,OAAOwoC,GAAG9nC,EAAEI,EAAEA,EAAEiV,KAAKjV,EAAE6mC,aAAa9mC,EAAEb,GAAG,KAAK,GAAG,OAAOa,EAAEC,EAAEiV,KAAKxW,EAAEuB,EAAE6mC,aAAapoC,EAAEuB,EAAE4K,cAAc7K,EAAEtB,EAAEg+B,GAAG18B,EAAEtB,GAAG,OAAOmB,IAAIA,EAAE6f,UAAU,KAAKzf,EAAEyf,UAAU,KAAKzf,EAAE0f,WAAW,GAAG1f,EAAEsa,IAAI,EAAEuf,GAAE95B,IAAIH,GAAE,EAAGu6B,GAAGn6B,IAAIJ,GAAE,EAAGy9B,GAAGr9B,EAAEd,GAAGghC,GAAGlgC,EAAED,EAAEtB,GAAGgiC,GAAGzgC,EAAED,EAAEtB,EAAES,GAAG+oC,GAAG,KAClfjoC,EAAED,GAAE,EAAGH,EAAEV,GAAG,KAAK,GAAG,OAAOqqC,GAAG3pC,EAAEI,EAAEd,GAAG,MAAM0K,MAAM/J,EAAE,IAAIG,EAAEsa,KAAM,EAAE,IAAI63B,GAAG,KAAK1G,GAAG,KAChF,SAASmH,GAAGhzC,EAAEI,EAAEd,EAAEa,GAAGoD,KAAKmX,IAAI1a,EAAEuD,KAAK+C,IAAIhH,EAAEiE,KAAK8c,QAAQ9c,KAAK6c,MAAM7c,KAAKwX,OAAOxX,KAAKoT,UAAUpT,KAAK8R,KAAK9R,KAAKyH,YAAY,KAAKzH,KAAKq+B,MAAM,EAAEr+B,KAAK2Q,IAAI,KAAK3Q,KAAK0jC,aAAa7mC,EAAEmD,KAAK6S,aAAa7S,KAAKyc,cAAczc,KAAK46B,YAAY56B,KAAK0/B,cAAc,KAAK1/B,KAAKw+B,KAAK5hC,EAAEoD,KAAKuc,UAAU,EAAEvc,KAAKk+B,WAAWl+B,KAAKo+B,YAAYp+B,KAAKm+B,WAAW,KAAKn+B,KAAKi6B,oBAAoBj6B,KAAKo6B,eAAe,EAAEp6B,KAAKsc,UAAU,IAAI,CAAC,SAASknB,GAAG/mC,EAAEI,EAAEd,EAAEa,GAAG,OAAO,IAAI6yC,GAAGhzC,EAAEI,EAAEd,EAAEa,EAAE,CAC5b,SAASynC,GAAG5nC,GAAiB,UAAdA,EAAEA,EAAEF,aAAuBE,EAAEizC,iBAAiB,CAC7D,SAASpR,GAAG7hC,EAAEI,GAAG,IAAId,EAAEU,EAAE6f,UAC4E,OADlE,OAAOvgB,IAAGA,EAAEynC,GAAG/mC,EAAE0a,IAAIta,EAAEJ,EAAEsG,IAAItG,EAAE+hC,OAAQ/2B,YAAYhL,EAAEgL,YAAY1L,EAAE+V,KAAKrV,EAAEqV,KAAK/V,EAAEqX,UAAU3W,EAAE2W,UAAUrX,EAAEugB,UAAU7f,EAAEA,EAAE6f,UAAUvgB,IAAIA,EAAE2nC,aAAa7mC,EAAEd,EAAEwgB,UAAU,EAAExgB,EAAEoiC,WAAW,KAAKpiC,EAAEqiC,YAAY,KAAKriC,EAAEmiC,WAAW,MAAMniC,EAAEk+B,oBAAoBx9B,EAAEw9B,oBAAoBl+B,EAAEq+B,eAAe39B,EAAE29B,eAAer+B,EAAE8gB,MAAMpgB,EAAEogB,MAAM9gB,EAAE2jC,cAAcjjC,EAAEijC,cAAc3jC,EAAE0gB,cAAchgB,EAAEggB,cAAc1gB,EAAE6+B,YAAYn+B,EAAEm+B,YAAY/9B,EAAEJ,EAAEoW,aAAa9W,EAAE8W,aAAa,OAAOhW,EAAE,KAAK,CAACu9B,eAAev9B,EAAEu9B,eACzfD,aAAat9B,EAAEs9B,aAAaM,WAAW59B,EAAE49B,YAAY1+B,EAAE+gB,QAAQrgB,EAAEqgB,QAAQ/gB,EAAEsiC,MAAM5hC,EAAE4hC,MAAMtiC,EAAE4U,IAAIlU,EAAEkU,IAAW5U,CAAC,CAC7G,SAAS0iC,GAAGhiC,EAAEI,EAAEd,EAAEa,EAAEtB,EAAEuE,GAAG,IAAIJ,EAAE,EAAM,GAAJ7C,EAAEH,EAAK,oBAAoBA,EAAE4nC,GAAG5nC,KAAKgD,EAAE,QAAQ,GAAG,kBAAkBhD,EAAEgD,EAAE,OAAOhD,EAAE,OAAOA,GAAG,KAAKqZ,GAAG,OAAO8oB,GAAG7iC,EAAE2F,SAASpG,EAAEuE,EAAEhD,GAAG,KAAKsZ,GAAG1W,EAAE,EAAEnE,GAAG,EAAE,MAAM,KAAKya,GAAGtW,EAAE,EAAEnE,GAAG,EAAE,MAAM,KAAK0a,GAAG,OAAOvZ,EAAE+mC,GAAG,GAAGznC,EAAEc,EAAI,EAAFvB,IAAOmM,YAAYuO,GAAGvZ,EAAEqV,KAAKkE,GAAGvZ,EAAE29B,eAAev6B,EAAEpD,EAAE,KAAK4Z,GAAG,OAAO5Z,EAAE+mC,GAAG,GAAGznC,EAAEc,EAAEvB,IAAKwW,KAAKuE,GAAG5Z,EAAEgL,YAAY4O,GAAG5Z,EAAE29B,eAAev6B,EAAEpD,EAAE,KAAK6Z,GAAG,OAAO7Z,EAAE+mC,GAAG,GAAGznC,EAAEc,EAAEvB,IAAKmM,YAAY6O,GAAG7Z,EAAE29B,eAAev6B,EAAEpD,EAAE,QAAQ,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,OAAOA,EAAEqa,UAAU,KAAKb,GAAGxW,EACpf,GAAG,MAAMhD,EAAE,KAAKyZ,GAAGzW,EAAE,EAAE,MAAMhD,EAAE,KAAK2Z,GAAG3W,EAAE,GAAG,MAAMhD,EAAE,KAAK8Z,GAAG9W,EAAE,GAAG,MAAMhD,EAAE,KAAK+Z,GAAG/W,EAAE,GAAG7C,EAAE,KAAK,MAAMH,EAAE,KAAKga,GAAGhX,EAAE,GAAG,MAAMhD,EAAE,MAAMgK,MAAM/J,EAAE,IAAI,MAAMD,EAAEA,SAASA,EAAE,KAAgE,OAA1DI,EAAE2mC,GAAG/jC,EAAE1D,EAAEc,EAAEvB,IAAKmM,YAAYhL,EAAEI,EAAEiV,KAAKlV,EAAEC,EAAEu9B,eAAev6B,EAAShD,CAAC,CAAC,SAAS+hC,GAAGniC,EAAEI,EAAEd,EAAEa,GAAoC,OAAjCH,EAAE+mC,GAAG,EAAE/mC,EAAEG,EAAEC,IAAKu9B,eAAer+B,EAASU,CAAC,CAAC,SAAS8hC,GAAG9hC,EAAEI,EAAEd,GAAuC,OAApCU,EAAE+mC,GAAG,EAAE/mC,EAAE,KAAKI,IAAKu9B,eAAer+B,EAASU,CAAC,CACtW,SAASkiC,GAAGliC,EAAEI,EAAEd,GAAuK,OAApKc,EAAE2mC,GAAG,EAAE,OAAO/mC,EAAEiF,SAASjF,EAAEiF,SAAS,GAAGjF,EAAEsG,IAAIlG,IAAKu9B,eAAer+B,EAAEc,EAAEuW,UAAU,CAACqL,cAAchiB,EAAEgiB,cAAckxB,gBAAgB,KAAKjR,eAAejiC,EAAEiiC,gBAAuB7hC,CAAC,CAC/L,SAAS+yC,GAAGnzC,EAAEI,EAAEd,GAAGiE,KAAKmX,IAAIta,EAAEmD,KAAK+P,QAAQ,KAAK/P,KAAKye,cAAchiB,EAAEuD,KAAK4tC,UAAU5tC,KAAK2vC,gBAAgB,KAAK3vC,KAAKktC,uBAAuB,EAAEltC,KAAKitC,aAAa,KAAKjtC,KAAKqtC,eAAe,EAAErtC,KAAKilC,eAAejlC,KAAKiL,QAAQ,KAAKjL,KAAKugB,QAAQxkB,EAAEiE,KAAKwsC,aAAa,KAAKxsC,KAAKusC,iBAAiB,GAAGvsC,KAAKisC,gBAAgBjsC,KAAKosC,eAAepsC,KAAKqsC,sBAAsBrsC,KAAKmtC,kBAAkBntC,KAAKmuC,mBAAmBnuC,KAAKmsC,iBAAiB,CAAC,CACxa,SAASD,GAAGzvC,EAAEI,GAAG,IAAId,EAAEU,EAAE0xC,mBAAyC,OAAtB1xC,EAAEA,EAAE0wC,kBAAyB,IAAIpxC,GAAGA,GAAGc,GAAGJ,GAAGI,CAAC,CAAC,SAASqqC,GAAGzqC,EAAEI,GAAG,IAAId,EAAEU,EAAE0xC,mBAAmBvxC,EAAEH,EAAE0wC,kBAAkBpxC,EAAEc,IAAIJ,EAAE0xC,mBAAmBtxC,IAAMD,EAAEC,GAAG,IAAId,KAAEU,EAAE0wC,kBAAkBtwC,GAAEA,GAAGJ,EAAE2vC,iBAAiB3vC,EAAE2vC,eAAe,GAAGvvC,GAAGJ,EAAEwvC,kBAAkBxvC,EAAEwvC,gBAAgB,EAAE,CACpT,SAAS7E,GAAG3qC,EAAEI,GAAGA,EAAEJ,EAAE0vC,mBAAmB1vC,EAAE0vC,iBAAiBtvC,GAAG,IAAId,EAAEU,EAAE0xC,mBAAmB,IAAIpyC,IAAIc,GAAGd,EAAEU,EAAE0xC,mBAAmB1xC,EAAE0wC,kBAAkB1wC,EAAE4vC,sBAAsB,EAAExvC,GAAGJ,EAAE0wC,oBAAoB1wC,EAAE0wC,kBAAkBtwC,EAAE,GAAGA,EAAEJ,EAAE4vC,wBAAwB5vC,EAAE4vC,sBAAsBxvC,GAAG,CAAC,SAAS8vC,GAAGlwC,EAAEI,GAAG,IAAId,EAAEU,EAAEwvC,iBAAmB,IAAIlwC,GAAGA,EAAEc,KAAEJ,EAAEwvC,gBAAgBpvC,EAAC,CAC7V,SAASgzC,GAAGpzC,EAAEI,EAAEd,EAAEa,GAAG,IAAItB,EAAEuB,EAAEkT,QAAQlQ,EAAE08B,KAAK98B,EAAEs8B,GAAGvmB,SAAS3V,EAAE28B,GAAG38B,EAAEvE,EAAEmE,GAAGhD,EAAE,GAAGV,EAAE,CAAyBc,EAAE,CAAC,GAAGwf,GAA9BtgB,EAAEA,EAAEsgC,uBAAkCtgC,GAAG,IAAIA,EAAEob,IAAI,MAAM1Q,MAAM/J,EAAE,MAAM,IAAIK,EAAEhB,EAAE,EAAE,CAAC,OAAOgB,EAAEoa,KAAK,KAAK,EAAEpa,EAAEA,EAAEqW,UAAUnI,QAAQ,MAAMpO,EAAE,KAAK,EAAE,GAAG65B,GAAE35B,EAAE+U,MAAM,CAAC/U,EAAEA,EAAEqW,UAAU6jB,0CAA0C,MAAMp6B,CAAC,EAAEE,EAAEA,EAAEya,MAAM,OAAO,OAAOza,GAAG,MAAM0J,MAAM/J,EAAE,KAAM,CAAC,GAAG,IAAIX,EAAEob,IAAI,CAAC,IAAIla,EAAElB,EAAE+V,KAAK,GAAG4kB,GAAEz5B,GAAG,CAAClB,EAAE+6B,GAAG/6B,EAAEkB,EAAEF,GAAG,MAAMN,CAAC,CAAC,CAACV,EAAEgB,CAAC,MAAMhB,EAAEm6B,GAC3W,OAD8W,OAAOr5B,EAAEoO,QAAQpO,EAAEoO,QAAQlP,EAAEc,EAAEooC,eAAelpC,GAAEc,EAAEs+B,GAAGt7B,EAAEJ,IAAK47B,QAAQ,CAAC7zB,QAAQ/K,GACpe,QADueG,OAAE,IAClfA,EAAE,KAAKA,KAAaC,EAAEy+B,SAAS1+B,GAAG2+B,GAAGjgC,EAAEuB,GAAG4/B,GAAGnhC,EAAEuE,GAAUA,CAAC,CAAC,SAASiwC,GAAGrzC,GAAe,OAAZA,EAAEA,EAAEsT,SAAc8M,OAAyBpgB,EAAEogB,MAAM1F,IAAoD1a,EAAEogB,MAAMzJ,WAAhF,IAA0F,CAAC,SAAS28B,GAAGtzC,EAAEI,GAAqB,QAAlBJ,EAAEA,EAAEggB,gBAAwB,OAAOhgB,EAAEigB,YAAYjgB,EAAE8oC,UAAU1oC,IAAIJ,EAAE8oC,UAAU1oC,EAAE,CAAC,SAASmzC,GAAGvzC,EAAEI,GAAGkzC,GAAGtzC,EAAEI,IAAIJ,EAAEA,EAAE6f,YAAYyzB,GAAGtzC,EAAEI,EAAE,CACtV,SAASozC,GAAGxzC,EAAEI,EAAEd,GAA6B,IAAIa,EAAE,IAAIgzC,GAAGnzC,EAAEI,EAAzCd,EAAE,MAAMA,IAAG,IAAKA,EAAEwkB,SAA4BjlB,EAAEkoC,GAAG,EAAE,KAAK,KAAK,IAAI3mC,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAGD,EAAEmT,QAAQzU,EAAEA,EAAE8X,UAAUxW,EAAE+9B,GAAGr/B,GAAGmB,EAAEgsB,IAAI7rB,EAAEmT,QAAQhU,GAAG,IAAIc,GAhO5J,SAAYJ,EAAEI,GAAG,IAAId,EAAEqgB,GAAGvf,GAAG6iB,GAAG1hB,SAAQ,SAASvB,GAAGkiB,GAAGliB,EAAEI,EAAEd,EAAE,IAAG4jB,GAAG3hB,SAAQ,SAASvB,GAAGkiB,GAAGliB,EAAEI,EAAEd,EAAE,GAAE,CAgO6Dm0C,CAAGzzC,EAAE,IAAIA,EAAEse,SAASte,EAAEA,EAAEwc,eAAejZ,KAAKmwC,cAAcvzC,CAAC,CAC1N,SAASwzC,GAAG3zC,GAAG,SAASA,GAAG,IAAIA,EAAEse,UAAU,IAAIte,EAAEse,UAAU,KAAKte,EAAEse,WAAW,IAAIte,EAAEse,UAAU,iCAAiCte,EAAEue,WAAW,CAC3I,SAASq1B,GAAG5zC,EAAEI,EAAEd,EAAEa,EAAEtB,GAAG,IAAIuE,EAAE9D,EAAEktC,oBAAoB,GAAGppC,EAAE,CAAC,IAAIJ,EAAEI,EAAEswC,cAAc,GAAG,oBAAoB70C,EAAE,CAAC,IAAIyB,EAAEzB,EAAEA,EAAE,WAAW,IAAImB,EAAEqzC,GAAGrwC,GAAG1C,EAAElB,KAAKY,EAAE,CAAC,CAACozC,GAAGhzC,EAAE4C,EAAEhD,EAAEnB,EAAE,KAAK,CAAmD,GAAlDuE,EAAE9D,EAAEktC,oBAD9B,SAAYxsC,EAAEI,GAA0H,GAAvHA,IAA2DA,MAAvDA,EAAEJ,EAAE,IAAIA,EAAEse,SAASte,EAAEsF,gBAAgBtF,EAAE+d,WAAW,OAAa,IAAI3d,EAAEke,WAAWle,EAAEyzC,aAAa,qBAAwBzzC,EAAE,IAAI,IAAId,EAAEA,EAAEU,EAAEqe,WAAWre,EAAEge,YAAY1e,GAAG,OAAO,IAAIk0C,GAAGxzC,EAAE,EAAEI,EAAE,CAAC0jB,SAAQ,QAAI,EAAO,CAC9KgwB,CAAGx0C,EAAEa,GAAG6C,EAAEI,EAAEswC,cAAiB,oBAAoB70C,EAAE,CAAC,IAAI2B,EAAE3B,EAAEA,EAAE,WAAW,IAAImB,EAAEqzC,GAAGrwC,GAAGxC,EAAEpB,KAAKY,EAAE,CAAC,CAACkxC,IAAG,WAAWkC,GAAGhzC,EAAE4C,EAAEhD,EAAEnB,EAAE,GAAE,CAAC,OAAOw0C,GAAGrwC,EAAE,CAG3G,SAAS+wC,GAAG/zC,EAAEI,GAAG,IAAId,EAAE,EAAEM,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAI+zC,GAAGvzC,GAAG,MAAM4J,MAAM/J,EAAE,MAAM,OAHL,SAAYD,EAAEI,EAAEd,GAAG,IAAIa,EAAE,EAAEP,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACya,SAASjB,GAAG9S,IAAI,MAAMnG,EAAE,KAAK,GAAGA,EAAE8E,SAASjF,EAAEgiB,cAAc5hB,EAAE6hC,eAAe3iC,EAAE,CAG9J00C,CAAGh0C,EAAEI,EAAE,KAAKd,EAAE,CALtIk0C,GAAG1zC,UAAUwa,OAAO,SAASta,GAAGozC,GAAGpzC,EAAEuD,KAAKmwC,cAAc,KAAK,KAAK,EAAEF,GAAG1zC,UAAUm0C,QAAQ,WAAW,IAAIj0C,EAAEuD,KAAKmwC,cAActzC,EAAEJ,EAAEgiB,cAAcoxB,GAAG,KAAKpzC,EAAE,MAAK,WAAWI,EAAE4rB,IAAI,IAAI,GAAE,EAGhZ1J,GAAG,SAAStiB,GAAG,GAAG,KAAKA,EAAE0a,IAAI,CAAC,IAAIta,EAAEw8B,GAAGkD,KAAK,IAAI,KAAKE,GAAGhgC,EAAEI,GAAGmzC,GAAGvzC,EAAEI,EAAE,CAAC,EAAEmiB,GAAG,SAASviB,GAAG,KAAKA,EAAE0a,MAAMslB,GAAGhgC,EAAE,GAAGuzC,GAAGvzC,EAAE,GAAG,EAAEwiB,GAAG,SAASxiB,GAAG,GAAG,KAAKA,EAAE0a,IAAI,CAAC,IAAIta,EAAE0/B,KAAoBE,GAAGhgC,EAAlBI,EAAE2/B,GAAG3/B,EAAEJ,EAAE,OAAcuzC,GAAGvzC,EAAEI,EAAE,CAAC,EAC7LmW,EAAG,SAASvW,EAAEI,EAAEd,GAAG,OAAOc,GAAG,IAAK,QAAyB,GAAjBic,GAAGrc,EAAEV,GAAGc,EAAEd,EAAE2K,KAAQ,UAAU3K,EAAE+V,MAAM,MAAMjV,EAAE,CAAC,IAAId,EAAEU,EAAEV,EAAE8hB,YAAY9hB,EAAEA,EAAE8hB,WAAsF,IAA3E9hB,EAAEA,EAAE4H,iBAAiB,cAAcgtC,KAAKC,UAAU,GAAG/zC,GAAG,mBAAuBA,EAAE,EAAEA,EAAEd,EAAEO,OAAOO,IAAI,CAAC,IAAID,EAAEb,EAAEc,GAAG,GAAGD,IAAIH,GAAGG,EAAEi0C,OAAOp0C,EAAEo0C,KAAK,CAAC,IAAIv1C,EAAEqtB,GAAG/rB,GAAG,IAAItB,EAAE,MAAMmL,MAAM/J,EAAE,KAAKyb,GAAGvb,GAAGkc,GAAGlc,EAAEtB,EAAE,CAAC,CAAC,CAAC,MAAM,IAAK,WAAWwe,GAAGrd,EAAEV,GAAG,MAAM,IAAK,SAAmB,OAAVc,EAAEd,EAAEwG,QAAe+W,GAAG7c,IAAIV,EAAEyqC,SAAS3pC,GAAE,GAAI,EAAE0W,EAAGm6B,GAC9Zl6B,EAAG,SAAS/W,EAAEI,EAAEd,EAAEa,EAAEtB,GAAG,IAAIuE,EAAE+qC,GAAEA,IAAG,EAAE,IAAI,OAAO5R,GAAG,GAAGv8B,EAAE4L,KAAK,KAAKxL,EAAEd,EAAEa,EAAEtB,GAAG,CAAC,SAAQsvC,GAAE/qC,KAAMwqC,IAAGjR,IAAI,CAAC,EAAE3lB,EAAG,YAAYm3B,IAAG,EAAEL,GAAGC,OAAOH,KAhD2Q,WAAc,GAAG,OAAOmB,GAAG,CAAC,IAAI/uC,EAAE+uC,GAAGA,GAAG,KAAK/uC,EAAEuB,SAAQ,SAASvB,EAAEV,GAAG4wC,GAAG5wC,EAAEU,GAAGsvC,GAAEhwC,EAAE,IAAGq9B,IAAI,CAAC,CAgDhW0X,GAAKlE,KAAK,EAAEl5B,EAAG,SAASjX,EAAEI,GAAG,IAAId,EAAE6uC,GAAEA,IAAG,EAAE,IAAI,OAAOnuC,EAAEI,EAAE,CAAC,SAAQ+tC,GAAE7uC,KAAMsuC,IAAGjR,IAAI,CAAC,EAAyI,IAAI2X,GAAG,CAACC,OAAO,CAAC7wB,GAAGuI,GAAGC,GAAG7V,EAAGP,EAAG6W,GAAG,SAAS3sB,GAAGwgB,GAAGxgB,EAAE0sB,GAAG,EAAE9V,EAAGC,EAAG3X,GAAG8hB,GAAGmvB,GAAG,CAAC78B,SAAQ,MAClb,SAAUtT,GAAG,IAAII,EAAEJ,EAAEw0C,yBAnBgE,SAAYx0C,GAAG,GAAG,qBAAqBy0C,+BAA+B,OAAM,EAAG,IAAIr0C,EAAEq0C,+BAA+B,GAAGr0C,EAAEs0C,aAAat0C,EAAEu0C,cAAc,OAAM,EAAG,IAAI,IAAIr1C,EAAEc,EAAEw0C,OAAO50C,GAAGuyC,GAAG,SAASvyC,GAAG,IAAII,EAAEy0C,kBAAkBv1C,EAAEU,OAAE,EAAO,MAA0B,GAApBA,EAAEsT,QAAQwM,WAAc,CAAC,MAAMjhB,GAAG,CAAC,EAAEgtC,GAAG,SAAS7rC,GAAG,IAAII,EAAE00C,qBAAqBx1C,EAAEU,EAAE,CAAC,MAAMnB,GAAG,CAAC,CAAC,CAAC,MAAMsB,GAAG,CAAS,EAmBhY40C,CAAG/1C,EAAE,CAAC,EAAEgB,EAAE,CAACg1C,kBAAkB,KAAKC,cAAc,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqB98B,EAAGO,uBAAuBw8B,wBAAwB,SAASr1C,GAAW,OAAO,QAAfA,EAAEmgB,GAAGngB,IAAmB,KAAKA,EAAE2W,SAAS,EAAE69B,wBAAwB,SAASx0C,GAAG,OAAOI,EAAEA,EAAEJ,GAAG,IAAI,EAAEs1C,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,OAAQ,CAAjc,CAAmc,CAAClB,wBAAwBvyB,GAAG0zB,WAAW,EAAEC,QAAQ,UACpfC,oBAAoB,cAAcj3C,EAAQ2Z,mDAAmD+7B,GAAG11C,EAAQk3C,aAAa/B,GAAGn1C,EAAQm3C,YAAY,SAAS/1C,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAEse,SAAS,OAAOte,EAAE,IAAII,EAAEJ,EAAE4/B,oBAAoB,QAAG,IAASx/B,EAAE,CAAC,GAAG,oBAAoBJ,EAAEsa,OAAO,MAAMtQ,MAAM/J,EAAE,MAAM,MAAM+J,MAAM/J,EAAE,IAAIP,OAAO+I,KAAKzI,IAAK,CAAqC,OAA5BA,EAAE,QAAVA,EAAEmgB,GAAG/f,IAAc,KAAKJ,EAAE2W,SAAkB,EACzX/X,EAAQo3C,UAAU,SAASh2C,EAAEI,GAAG,IAAI+tC,IAAGL,GAAGC,OAAOH,GAAE,MAAM5jC,MAAM/J,EAAE,MAAM,IAAIX,EAAE6uC,GAAEA,IAAG,EAAE,IAAI,OAAO5R,GAAG,GAAGv8B,EAAE4L,KAAK,KAAKxL,GAAG,CAAC,QAAQ+tC,GAAE7uC,EAAEq9B,IAAI,CAAC,EAAE/9B,EAAQklB,QAAQ,SAAS9jB,EAAEI,EAAEd,GAAG,IAAIq0C,GAAGvzC,GAAG,MAAM4J,MAAM/J,EAAE,MAAM,OAAO2zC,GAAG,KAAK5zC,EAAEI,GAAE,EAAGd,EAAE,EAAEV,EAAQ0b,OAAO,SAASta,EAAEI,EAAEd,GAAG,IAAIq0C,GAAGvzC,GAAG,MAAM4J,MAAM/J,EAAE,MAAM,OAAO2zC,GAAG,KAAK5zC,EAAEI,GAAE,EAAGd,EAAE,EACrTV,EAAQq3C,uBAAuB,SAASj2C,GAAG,IAAI2zC,GAAG3zC,GAAG,MAAMgK,MAAM/J,EAAE,KAAK,QAAOD,EAAEwsC,sBAAqB0E,IAAG,WAAW0C,GAAG,KAAK,KAAK5zC,GAAE,GAAG,WAAWA,EAAEwsC,oBAAoB,KAAKxsC,EAAEgsB,IAAI,IAAI,GAAE,KAAG,EAAM,EAAEptB,EAAQs3C,wBAAwBjF,GAAGryC,EAAQu3C,sBAAsB,SAASn2C,EAAEI,GAAG,OAAO2zC,GAAG/zC,EAAEI,EAAE,EAAER,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,EAC5VhB,EAAQw3C,oCAAoC,SAASp2C,EAAEI,EAAEd,EAAEa,GAAG,IAAIwzC,GAAGr0C,GAAG,MAAM0K,MAAM/J,EAAE,MAAM,GAAG,MAAMD,QAAG,IAASA,EAAE4/B,oBAAoB,MAAM51B,MAAM/J,EAAE,KAAK,OAAO2zC,GAAG5zC,EAAEI,EAAEd,GAAE,EAAGa,EAAE,EAAEvB,EAAQg3C,QAAQ,uCCjSjM,SAASS,IAEP,GAC4C,qBAAnC5B,gCAC4C,oBAA5CA,+BAA+B4B,SAcxC,IAEE5B,+BAA+B4B,SAASA,EAC1C,CAAE,MAAO3tC,GAGPtG,QAAQ+oC,MAAMziC,EAChB,CACF,CAKE2tC,GACA13C,EAAOC,QAAU,EAAjBD,cChCF,IAAI23C,EAAoC,qBAAZC,QACxBC,EAAwB,oBAAR92B,IAChB+2B,EAAwB,oBAARxL,IAChByL,EAAwC,oBAAhBC,eAAgCA,YAAYC,OAIxE,SAASC,EAAM72C,EAAGI,GAEhB,GAAIJ,IAAMI,EAAG,OAAO,EAEpB,GAAIJ,GAAKI,GAAiB,iBAALJ,GAA6B,iBAALI,EAAe,CAC1D,GAAIJ,EAAEoE,cAAgBhE,EAAEgE,YAAa,OAAO,EAE5C,IAAIvE,EAAQZ,EAAGwJ,EA6BXquC,EA5BJ,GAAIpxC,MAAM0X,QAAQpd,GAAI,CAEpB,IADAH,EAASG,EAAEH,SACGO,EAAEP,OAAQ,OAAO,EAC/B,IAAKZ,EAAIY,EAAgB,IAARZ,KACf,IAAK43C,EAAM72C,EAAEf,GAAImB,EAAEnB,IAAK,OAAO,EACjC,OAAO,CACT,CAuBA,GAAIu3C,GAAWx2C,aAAa0f,KAAStf,aAAasf,IAAM,CACtD,GAAI1f,EAAEkqC,OAAS9pC,EAAE8pC,KAAM,OAAO,EAE9B,IADA4M,EAAK92C,EAAE+2C,YACE93C,EAAI63C,EAAG/Y,QAAQqE,UACjBhiC,EAAE+hB,IAAIljB,EAAE6G,MAAM,IAAK,OAAO,EAEjC,IADAgxC,EAAK92C,EAAE+2C,YACE93C,EAAI63C,EAAG/Y,QAAQqE,UACjByU,EAAM53C,EAAE6G,MAAM,GAAI1F,EAAEqL,IAAIxM,EAAE6G,MAAM,KAAM,OAAO,EACpD,OAAO,CACT,CAEA,GAAI2wC,GAAWz2C,aAAairC,KAAS7qC,aAAa6qC,IAAM,CACtD,GAAIjrC,EAAEkqC,OAAS9pC,EAAE8pC,KAAM,OAAO,EAE9B,IADA4M,EAAK92C,EAAE+2C,YACE93C,EAAI63C,EAAG/Y,QAAQqE,UACjBhiC,EAAE+hB,IAAIljB,EAAE6G,MAAM,IAAK,OAAO,EACjC,OAAO,CACT,CAGA,GAAI4wC,GAAkBC,YAAYC,OAAO52C,IAAM22C,YAAYC,OAAOx2C,GAAI,CAEpE,IADAP,EAASG,EAAEH,SACGO,EAAEP,OAAQ,OAAO,EAC/B,IAAKZ,EAAIY,EAAgB,IAARZ,KACf,GAAIe,EAAEf,KAAOmB,EAAEnB,GAAI,OAAO,EAC5B,OAAO,CACT,CAEA,GAAIe,EAAEoE,cAAgB4yC,OAAQ,OAAOh3C,EAAE6I,SAAWzI,EAAEyI,QAAU7I,EAAEi3C,QAAU72C,EAAE62C,MAK5E,GAAIj3C,EAAE8D,UAAYpE,OAAOI,UAAUgE,SAAgC,oBAAd9D,EAAE8D,SAA+C,oBAAd1D,EAAE0D,QAAwB,OAAO9D,EAAE8D,YAAc1D,EAAE0D,UAC3I,GAAI9D,EAAEyE,WAAa/E,OAAOI,UAAU2E,UAAkC,oBAAfzE,EAAEyE,UAAiD,oBAAfrE,EAAEqE,SAAyB,OAAOzE,EAAEyE,aAAerE,EAAEqE,WAKhJ,IADA5E,GADA4I,EAAO/I,OAAO+I,KAAKzI,IACLH,UACCH,OAAO+I,KAAKrI,GAAGP,OAAQ,OAAO,EAE7C,IAAKZ,EAAIY,EAAgB,IAARZ,KACf,IAAKS,OAAOI,UAAUC,eAAeX,KAAKgB,EAAGqI,EAAKxJ,IAAK,OAAO,EAKhE,GAAIq3C,GAAkBt2C,aAAau2C,QAAS,OAAO,EAGnD,IAAKt3C,EAAIY,EAAgB,IAARZ,KACf,IAAiB,WAAZwJ,EAAKxJ,IAA+B,QAAZwJ,EAAKxJ,IAA4B,QAAZwJ,EAAKxJ,KAAiBe,EAAEqa,YAarEw8B,EAAM72C,EAAEyI,EAAKxJ,IAAKmB,EAAEqI,EAAKxJ,KAAM,OAAO,EAK7C,OAAO,CACT,CAEA,OAAOe,IAAMA,GAAKI,IAAMA,CAC1B,CAGAzB,EAAOC,QAAU,SAAiBoB,EAAGI,GACnC,IACE,OAAOy2C,EAAM72C,EAAGI,EAClB,CAAE,MAAO+qC,GACP,IAAMA,EAAM+L,SAAW,IAAIC,MAAM,oBAO/B,OADA/0C,QAAQg1C,KAAK,mDACN,EAGT,MAAMjM,CACR,CACF,8BCtIA,IAF0BkM,EAEtBC,EAAQjuC,EAAQ,IAChBkuC,GAHsBF,EAGWC,IAHwB,kBAAPD,GAAoB,YAAaA,EAAMA,EAAY,QAAIA,EAK7G,SAASG,EAAgBC,EAAKnxC,EAAKR,GAYjC,OAXIQ,KAAOmxC,EACT/3C,OAAOmG,eAAe4xC,EAAKnxC,EAAK,CAC9BR,MAAOA,EACPK,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZoxC,EAAInxC,GAAOR,EAGN2xC,CACT,CAQA,IAAIC,IAAiC,qBAAXz1C,SAA0BA,OAAOF,WAAYE,OAAOF,SAASiS,eAgGvFrV,EAAOC,QA/FP,SAAwB+4C,EAAoBC,EAA2BC,GACrE,GAAkC,oBAAvBF,EACT,MAAM,IAAI3tC,MAAM,iDAGlB,GAAyC,oBAA9B4tC,EACT,MAAM,IAAI5tC,MAAM,wDAGlB,GAAgC,qBAArB6tC,GAAgE,oBAArBA,EACpD,MAAM,IAAI7tC,MAAM,mEAOlB,OAAO,SAAc8tC,GACnB,GAAgC,oBAArBA,EACT,MAAM,IAAI9tC,MAAM,sDAGlB,IACIw2B,EADAuX,EAAmB,GAGvB,SAASC,IACPxX,EAAQmX,EAAmBI,EAAiBnwC,KAAI,SAAU0kC,GACxD,OAAOA,EAAS5iC,KAClB,KAEIuuC,EAAWP,UACbE,EAA0BpX,GACjBqX,IACTrX,EAAQqX,EAAiBrX,GAE7B,CAEA,IAAIyX,EAEJ,SAAUC,GA9Cd,IAAwBC,EAAUC,EAiD5B,SAASH,IACP,OAAOC,EAAej1C,MAAMM,KAAM3D,YAAc2D,IAClD,CAnD4B60C,EA+CDF,GA/CTC,EA+CHF,GA9CVn4C,UAAYJ,OAAOiM,OAAOysC,EAAWt4C,WAC9Cq4C,EAASr4C,UAAUsE,YAAc+zC,EACjCA,EAASE,UAAYD,EAoDjBH,EAAWK,KAAO,WAChB,OAAO9X,CACT,EAEAyX,EAAWM,OAAS,WAClB,GAAIN,EAAWP,UACb,MAAM,IAAI1tC,MAAM,oFAGlB,IAAIwuC,EAAgBhY,EAGpB,OAFAA,OAAQt3B,EACR6uC,EAAmB,GACZS,CACT,EAEA,IAAIC,EAASR,EAAWn4C,UAqBxB,OAnBA24C,EAAOzX,0BAA4B,WACjC+W,EAAiBvmC,KAAKjO,MACtBy0C,GACF,EAEAS,EAAOrQ,mBAAqB,WAC1B4P,GACF,EAEAS,EAAO3M,qBAAuB,WAC5B,IAAIlK,EAAQmW,EAAiBv1C,QAAQe,MACrCw0C,EAAiBnnC,OAAOgxB,EAAO,GAC/BoW,GACF,EAEAS,EAAOn+B,OAAS,WACd,OAAOi9B,EAAevjC,cAAc8jC,EAAkBv0C,KAAKmG,MAC7D,EAEOuuC,CACT,CA9CA,CA8CEX,EAAMoB,eAMR,OAJAlB,EAAgBS,EAAY,cAAe,cA1E7C,SAAwBH,GACtB,OAAOA,EAAiB19B,aAAe09B,EAAiB7tC,MAAQ,WAClE,CAwE6D0uC,CAAeb,GAAoB,KAE9FN,EAAgBS,EAAY,YAAaP,GAElCO,CACT,CACF,4BCzHAv4C,OAAOmG,eAAejH,EAAS,aAAc,CAAEkH,OAAO,IACtDlH,EAAQg6C,YAAch6C,EAAQi6C,UAAYj6C,EAAQk6C,IAAMl6C,EAAQm6C,GAAKn6C,EAAQo6C,UAAO,EAEpFp6C,EAAQo6C,KADG,WAAc,EAWzBp6C,EAAQm6C,GATR,SAAYtB,GAER,IADA,IAAIwB,EAAO,GACFC,EAAK,EAAGA,EAAKt5C,UAAUC,OAAQq5C,IACpCD,EAAKC,EAAK,GAAKt5C,UAAUs5C,GAEzBzB,GAAOA,EAAI/0C,kBACX+0C,EAAI/0C,iBAAiBO,MAAMw0C,EAAKwB,EAExC,EAWAr6C,EAAQk6C,IATR,SAAarB,GAET,IADA,IAAIwB,EAAO,GACFC,EAAK,EAAGA,EAAKt5C,UAAUC,OAAQq5C,IACpCD,EAAKC,EAAK,GAAKt5C,UAAUs5C,GAEzBzB,GAAOA,EAAI0B,qBACX1B,EAAI0B,oBAAoBl2C,MAAMw0C,EAAKwB,EAE3C,EAEAr6C,EAAQi6C,UAA8B,qBAAX52C,OAC3BrD,EAAQg6C,YAAmC,qBAAd7yC,sCCzB7BrG,OAAOmG,eAAejH,EAAS,aAAc,CAAEkH,OAAO,IACtD,IAAIszC,EAAU/vC,EAAQ,IAItBzK,EAAAA,QAHoB,SAAUy6C,GAC1BD,EAAQpT,UAAUqT,EAAQ,GAC9B,8BCJA35C,OAAOmG,eAAejH,EAAS,aAAc,CAAEkH,OAAO,IACtD,IAAIwzC,EAAUjwC,EAAQ,KAClB+vC,EAAU/vC,EAAQ,IAClBkwC,EAAeD,EAAQE,gBAAgBnwC,EAAQ,MAenDzK,EAAAA,QAdkB,SAAU66C,GACxB,IAAIC,EAAQN,EAAQ/S,OAAO,GACvBsT,EAAKP,EAAQ9S,SAASmT,GAAejZ,EAAQmZ,EAAG,GAAIC,EAAWD,EAAG,GAClEE,EAAcT,EAAQtT,aAAY,SAAUhgC,GAC5C8M,qBAAqB8mC,EAAMpmC,SAC3BomC,EAAMpmC,QAAUX,uBAAsB,WAClCinC,EAAS9zC,EACb,GACJ,GAAG,IAIH,OAHAyzC,EAAa95C,SAAQ,WACjBmT,qBAAqB8mC,EAAMpmC,QAC/B,IACO,CAACktB,EAAOqZ,EACnB,8BCjBAn6C,OAAOmG,eAAejH,EAAS,aAAc,CAAEkH,OAAO,IACtD,IAAIwzC,EAAUjwC,EAAQ,KAClB+vC,EAAU/vC,EAAQ,IAClBywC,EAAkBR,EAAQE,gBAAgBnwC,EAAQ,MAOtDzK,EAAAA,QANiB,SAAUm7C,GACvB,IAAIC,EAAQZ,EAAQ/S,OAAO0T,GAE3BC,EAAM1mC,QAAUymC,EAChBD,EAAgBr6C,SAAQ,WAAc,OAAO,WAAc,OAAOu6C,EAAM1mC,SAAW,CAAG,GAC1F,8BCRA,IAAIgmC,EAAUjwC,EAAQ,KAClB+vC,EAAU/vC,EAAQ,IAClB4wC,EAAgBX,EAAQE,gBAAgBnwC,EAAQ,MAChD6wC,EAAS7wC,EAAQ,KAwBrBzK,EAAQ,EAvBY,SAAUu7C,EAAcC,QACnB,IAAjBD,IAA2BA,EAAeE,UACxB,IAAlBD,IAA4BA,EAAgBC,KAChD,IAAIV,EAAKM,EAAcx6C,QAAQ,CAC3BoS,MAAOqoC,EAAOrB,UAAY52C,OAAOiQ,WAAaioC,EAC9CroC,OAAQooC,EAAOrB,UAAY52C,OAAO6E,YAAcszC,IAChD5Z,EAAQmZ,EAAG,GAAIC,EAAWD,EAAG,GAejC,OAdAP,EAAQpT,WAAU,WACd,GAAIkU,EAAOrB,UAAW,CAClB,IAAIyB,EAAY,WACZV,EAAS,CACL/nC,MAAO5P,OAAOiQ,WACdJ,OAAQ7P,OAAO6E,aAEvB,EAEA,OADAozC,EAAOnB,GAAG92C,OAAQ,SAAUq4C,GACrB,WACHJ,EAAOpB,IAAI72C,OAAQ,SAAUq4C,EACjC,CACJ,CACJ,GAAG,IACI9Z,CACX,kCCpBiBp9B,EAAEiG,EAAQ,IAASrG,EAAE,MAA6B,GAAG,oBAAoBkB,QAAQA,OAAOgV,IAAI,CAAC,IAAI5Y,EAAE4D,OAAOgV,IAAIlW,EAAE1C,EAAE,iBAAkCA,EAAE,iBAAiB,CAAC,IAAIjB,EAAE+D,EAAEmV,mDAAmDgvB,kBAAkBvoC,EAAEU,OAAOI,UAAUC,eAAeR,EAAE,CAAC+G,KAAI,EAAG4N,KAAI,EAAGqmC,QAAO,EAAGC,UAAS,GAC5U,SAASjnC,EAAEjU,EAAEU,EAAEQ,GAAG,IAAIJ,EAAED,EAAE,CAAC,EAAEtB,EAAE,KAAKwE,EAAE,KAAiF,IAAIjD,UAAhF,IAASI,IAAI3B,EAAE,GAAG2B,QAAG,IAASR,EAAEsG,MAAMzH,EAAE,GAAGmB,EAAEsG,UAAK,IAAStG,EAAEkU,MAAM7Q,EAAErD,EAAEkU,KAAclU,EAAEhB,EAAEI,KAAKY,EAAEI,KAAKb,EAAEQ,eAAeK,KAAKD,EAAEC,GAAGJ,EAAEI,IAAI,GAAGd,GAAGA,EAAEw9B,aAAa,IAAI18B,KAAKJ,EAAEV,EAAEw9B,kBAAe,IAAS38B,EAAEC,KAAKD,EAAEC,GAAGJ,EAAEI,IAAI,MAAM,CAACia,SAASrX,EAAEqS,KAAK/V,EAAEgH,IAAIzH,EAAEqV,IAAI7Q,EAAEqG,MAAMvJ,EAAEkhC,OAAOhiC,EAAEiU,QAAQ,CAAC1U,EAAQ67C,IAAIlnC,EAAE3U,EAAQ87C,KAAKnnC,8BCA1U,IAAIlQ,EAAEgG,EAAQ,KAAiBrK,EAAE,oBAAoBkF,QAAQA,OAAOgV,IAAI3Z,EAAEP,EAAEkF,OAAOgV,IAAI,iBAAiB,MAAM3F,EAAEvU,EAAEkF,OAAOgV,IAAI,gBAAgB,MAAMhW,EAAElE,EAAEkF,OAAOgV,IAAI,kBAAkB,MAAMpa,EAAEE,EAAEkF,OAAOgV,IAAI,qBAAqB,MAAMjZ,EAAEjB,EAAEkF,OAAOgV,IAAI,kBAAkB,MAAMnW,EAAE/D,EAAEkF,OAAOgV,IAAI,kBAAkB,MAAM3Y,EAAEvB,EAAEkF,OAAOgV,IAAI,iBAAiB,MAAMzY,EAAEzB,EAAEkF,OAAOgV,IAAI,qBAAqB,MAAM7Y,EAAErB,EAAEkF,OAAOgV,IAAI,kBAAkB,MAAM+lB,EAAEjgC,EAAEkF,OAAOgV,IAAI,cAAc,MAAM9F,EAAEpU,EAAEkF,OAAOgV,IAAI,cACxe,MAAMnG,EAAE,oBAAoB7O,QAAQA,OAAOC,SAAS,SAAS6T,EAAEhY,GAAG,IAAI,IAAII,EAAE,yDAAyDJ,EAAEV,EAAE,EAAEA,EAAEM,UAAUC,OAAOP,IAAIc,GAAG,WAAWoU,mBAAmB5U,UAAUN,IAAI,MAAM,yBAAyBU,EAAE,WAAWI,EAAE,gHAAgH,CAC/W,IAAI8S,EAAE,CAACysB,UAAU,WAAW,OAAM,CAAE,EAAEO,mBAAmB,WAAW,EAAED,oBAAoB,WAAW,EAAEJ,gBAAgB,WAAW,GAAG5mB,EAAE,CAAC,EAAE,SAASoJ,EAAEriB,EAAEI,EAAEd,GAAGiE,KAAKmG,MAAM1J,EAAEuD,KAAKiL,QAAQpO,EAAEmD,KAAKi8B,KAAKvmB,EAAE1V,KAAKk9B,QAAQnhC,GAAG4T,CAAC,CACrN,SAASga,IAAI,CAAyB,SAASsM,EAAEx5B,EAAEI,EAAEd,GAAGiE,KAAKmG,MAAM1J,EAAEuD,KAAKiL,QAAQpO,EAAEmD,KAAKi8B,KAAKvmB,EAAE1V,KAAKk9B,QAAQnhC,GAAG4T,CAAC,CADqGmP,EAAEviB,UAAUmzC,iBAAiB,CAAC,EAAE5wB,EAAEviB,UAAU85C,SAAS,SAAS55C,EAAEI,GAAG,GAAG,kBAAkBJ,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMgK,MAAMgO,EAAE,KAAKzU,KAAKk9B,QAAQZ,gBAAgBt8B,KAAKvD,EAAEI,EAAE,WAAW,EAAEiiB,EAAEviB,UAAU66C,YAAY,SAAS36C,GAAGuD,KAAKk9B,QAAQP,mBAAmB38B,KAAKvD,EAAE,cAAc,EACjektB,EAAEptB,UAAUuiB,EAAEviB,UAAsF,IAAI4T,EAAE8lB,EAAE15B,UAAU,IAAIotB,EAAExZ,EAAEtP,YAAYo1B,EAAEn2B,EAAEqQ,EAAE2O,EAAEviB,WAAW4T,EAAE2sB,sBAAqB,EAAG,IAAI3G,EAAE,CAACpmB,QAAQ,MAAMqmB,EAAEj6B,OAAOI,UAAUC,eAAek6B,EAAE,CAAC3zB,KAAI,EAAG4N,KAAI,EAAGqmC,QAAO,EAAGC,UAAS,GAChS,SAASl5C,EAAEtB,EAAEI,EAAEd,GAAG,IAAIT,EAAEsB,EAAE,CAAC,EAAE6C,EAAE,KAAKxC,EAAE,KAAK,GAAG,MAAMJ,EAAE,IAAIvB,UAAK,IAASuB,EAAE8T,MAAM1T,EAAEJ,EAAE8T,UAAK,IAAS9T,EAAEkG,MAAMtD,EAAE,GAAG5C,EAAEkG,KAAKlG,EAAEu5B,EAAEv6B,KAAKgB,EAAEvB,KAAKo7B,EAAEl6B,eAAelB,KAAKsB,EAAEtB,GAAGuB,EAAEvB,IAAI,IAAIuE,EAAExD,UAAUC,OAAO,EAAE,GAAG,IAAIuD,EAAEjD,EAAE8E,SAAS3F,OAAO,GAAG,EAAE8D,EAAE,CAAC,IAAI,IAAI9C,EAAEoF,MAAMtC,GAAG/D,EAAE,EAAEA,EAAE+D,EAAE/D,IAAIiB,EAAEjB,GAAGO,UAAUP,EAAE,GAAGc,EAAE8E,SAAS3E,CAAC,CAAC,GAAGN,GAAGA,EAAE88B,aAAa,IAAIj+B,KAAKuE,EAAEpD,EAAE88B,kBAAe,IAAS38B,EAAEtB,KAAKsB,EAAEtB,GAAGuE,EAAEvE,IAAI,MAAM,CAACwb,SAAS9a,EAAE8V,KAAKrV,EAAEsG,IAAItD,EAAEkR,IAAI1T,EAAEkJ,MAAMvJ,EAAEkhC,OAAO3H,EAAEpmB,QAAQ,CAChV,SAASjS,EAAErB,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEqa,WAAW9a,CAAC,CAAyG,IAAI0U,EAAE,OAAOI,EAAE,GAAG,SAASmzB,EAAExnC,EAAEI,EAAEd,EAAET,GAAG,GAAGwV,EAAExU,OAAO,CAAC,IAAIM,EAAEkU,EAAEwN,MAA8D,OAAxD1hB,EAAEy6C,OAAO56C,EAAEG,EAAE06C,UAAUz6C,EAAED,EAAEqK,KAAKlL,EAAEa,EAAEqO,QAAQ3P,EAAEsB,EAAE26C,MAAM,EAAS36C,CAAC,CAAC,MAAM,CAACy6C,OAAO56C,EAAE66C,UAAUz6C,EAAEoK,KAAKlL,EAAEkP,QAAQ3P,EAAEi8C,MAAM,EAAE,CAC9b,SAASp5C,EAAE1B,GAAGA,EAAE46C,OAAO,KAAK56C,EAAE66C,UAAU,KAAK76C,EAAEwK,KAAK,KAAKxK,EAAEwO,QAAQ,KAAKxO,EAAE86C,MAAM,EAAE,GAAGzmC,EAAExU,QAAQwU,EAAE7C,KAAKxR,EAAE,CACxG,SAASmT,EAAEnT,EAAEI,EAAEd,EAAET,GAAG,IAAIsB,SAASH,EAAK,cAAcG,GAAG,YAAYA,IAAEH,EAAE,MAAK,IAAIgD,GAAE,EAAG,GAAG,OAAOhD,EAAEgD,GAAE,OAAQ,OAAO7C,GAAG,IAAK,SAAS,IAAK,SAAS6C,GAAE,EAAG,MAAM,IAAK,SAAS,OAAOhD,EAAEqa,UAAU,KAAK9a,EAAE,KAAKgU,EAAEvQ,GAAE,GAAI,GAAGA,EAAE,OAAO1D,EAAET,EAAEmB,EAAE,KAAKI,EAAE,IAAIsqC,EAAE1qC,EAAE,GAAGI,GAAG,EAAyB,GAAvB4C,EAAE,EAAE5C,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOsF,MAAM0X,QAAQpd,GAAG,IAAI,IAAIQ,EAAE,EAAEA,EAAER,EAAEH,OAAOW,IAAI,CAAQ,IAAI4C,EAAEhD,EAAEsqC,EAAfvqC,EAAEH,EAAEQ,GAAeA,GAAGwC,GAAGmQ,EAAEhT,EAAEiD,EAAE9D,EAAET,EAAE,MAAM,GAAG,OAAOmB,GAAG,kBAAkBA,EAAEoD,EAAE,KAAiCA,EAAE,oBAA7BA,EAAE2P,GAAG/S,EAAE+S,IAAI/S,EAAE,eAAsCoD,EAAE,KAAM,oBAAoBA,EAAE,IAAIpD,EAAEoD,EAAEhE,KAAKY,GAAGQ,EACpf,IAAIL,EAAEH,EAAE+9B,QAAQqE,MAA6Bp/B,GAAGmQ,EAA1BhT,EAAEA,EAAE2F,MAAM1C,EAAEhD,EAAEsqC,EAAEvqC,EAAEK,KAAclB,EAAET,QAAQ,GAAG,WAAWsB,EAAE,MAAMb,EAAE,GAAGU,EAAEgK,MAAMgO,EAAE,GAAG,oBAAoB1Y,EAAE,qBAAqBI,OAAO+I,KAAKzI,GAAGqI,KAAK,MAAM,IAAI/I,EAAE,KAAK,OAAO0D,CAAC,CAAC,SAAS4qC,EAAE5tC,EAAEI,EAAEd,GAAG,OAAO,MAAMU,EAAE,EAAEmT,EAAEnT,EAAE,GAAGI,EAAEd,EAAE,CAAC,SAASorC,EAAE1qC,EAAEI,GAAG,MAAM,kBAAkBJ,GAAG,OAAOA,GAAG,MAAMA,EAAEsG,IAH9I,SAAgBtG,GAAG,IAAII,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,KAAK,GAAGJ,GAAG+D,QAAQ,SAAQ,SAAS/D,GAAG,OAAOI,EAAEJ,EAAE,GAAE,CAG2C+6C,CAAO/6C,EAAEsG,KAAKlG,EAAEqE,SAAS,GAAG,CAAC,SAAS0pC,EAAEnuC,EAAEI,GAAGJ,EAAEwK,KAAKpL,KAAKY,EAAEwO,QAAQpO,EAAEJ,EAAE86C,QAAQ,CAChY,SAASvmC,EAAGvU,EAAEI,EAAEd,GAAG,IAAIT,EAAEmB,EAAE46C,OAAOz6C,EAAEH,EAAE66C,UAAU76C,EAAEA,EAAEwK,KAAKpL,KAAKY,EAAEwO,QAAQpO,EAAEJ,EAAE86C,SAASp1C,MAAM0X,QAAQpd,GAAGouC,EAAEpuC,EAAEnB,EAAES,GAAE,SAASU,GAAG,OAAOA,CAAC,IAAG,MAAMA,IAAIqB,EAAErB,KAAKA,EAJtJ,SAAWA,EAAEI,GAAG,MAAM,CAACia,SAAS9a,EAAE8V,KAAKrV,EAAEqV,KAAK/O,IAAIlG,EAAE8T,IAAIlU,EAAEkU,IAAIxK,MAAM1J,EAAE0J,MAAM23B,OAAOrhC,EAAEqhC,OAAO,CAI4DpuB,CAAEjT,EAAEG,IAAIH,EAAEsG,KAAKlG,GAAGA,EAAEkG,MAAMtG,EAAEsG,IAAI,IAAI,GAAGtG,EAAEsG,KAAKvC,QAAQkQ,EAAE,OAAO,KAAK3U,IAAIT,EAAE2S,KAAKxR,GAAG,CAAC,SAASouC,EAAEpuC,EAAEI,EAAEd,EAAET,EAAEsB,GAAG,IAAI6C,EAAE,GAAG,MAAM1D,IAAI0D,GAAG,GAAG1D,GAAGyE,QAAQkQ,EAAE,OAAO,KAAkB25B,EAAE5tC,EAAEuU,EAAjBnU,EAAEonC,EAAEpnC,EAAE4C,EAAEnE,EAAEsB,IAAauB,EAAEtB,EAAE,CAAC,IAAIuuC,EAAE,CAACr7B,QAAQ,MAAM,SAASg8B,IAAI,IAAItvC,EAAE2uC,EAAEr7B,QAAQ,GAAG,OAAOtT,EAAE,MAAMgK,MAAMgO,EAAE,MAAM,OAAOhY,CAAC,CACza,IAAIyU,EAAG,CAACoE,uBAAuB81B,EAAE71B,wBAAwB,CAACC,SAAS,MAAMwuB,kBAAkB7N,EAAEshB,qBAAqB,CAAC1nC,SAAQ,GAAI3T,OAAO0D,GAAGzE,EAAQ+d,SAAS,CAAC/U,IAAI,SAAS5H,EAAEI,EAAEd,GAAG,GAAG,MAAMU,EAAE,OAAOA,EAAE,IAAInB,EAAE,GAAmB,OAAhBuvC,EAAEpuC,EAAEnB,EAAE,KAAKuB,EAAEd,GAAUT,CAAC,EAAE0C,QAAQ,SAASvB,EAAEI,EAAEd,GAAG,GAAG,MAAMU,EAAE,OAAOA,EAAqB4tC,EAAE5tC,EAAEmuC,EAAvB/tC,EAAEonC,EAAE,KAAK,KAAKpnC,EAAEd,IAAYoC,EAAEtB,EAAE,EAAE06C,MAAM,SAAS96C,GAAG,OAAO4tC,EAAE5tC,GAAE,WAAW,OAAO,IAAI,GAAE,KAAK,EAAEi7C,QAAQ,SAASj7C,GAAG,IAAII,EAAE,GAAqC,OAAlCguC,EAAEpuC,EAAEI,EAAE,MAAK,SAASJ,GAAG,OAAOA,CAAC,IAAUI,CAAC,EAAE86C,KAAK,SAASl7C,GAAG,IAAIqB,EAAErB,GAAG,MAAMgK,MAAMgO,EAAE,MAAM,OAAOhY,CAAC,GAC/epB,EAAQuV,UAAUkO,EAAEzjB,EAAQu8C,SAASj4C,EAAEtE,EAAQw8C,SAASn7C,EAAErB,EAAQ85C,cAAclf,EAAE56B,EAAQy8C,WAAWv8C,EAAEF,EAAQ08C,SAASj7C,EAAEzB,EAAQ2Z,mDAAmD9D,EACrL7V,EAAQ28C,aAAa,SAASv7C,EAAEI,EAAEd,GAAG,GAAG,OAAOU,QAAG,IAASA,EAAE,MAAMgK,MAAMgO,EAAE,IAAIhY,IAAI,IAAInB,EAAEwE,EAAE,CAAC,EAAErD,EAAE0J,OAAOvJ,EAAEH,EAAEsG,IAAItD,EAAEhD,EAAEkU,IAAI1T,EAAER,EAAEqhC,OAAO,GAAG,MAAMjhC,EAAE,CAAoE,QAAnE,IAASA,EAAE8T,MAAMlR,EAAE5C,EAAE8T,IAAI1T,EAAEk5B,EAAEpmB,cAAS,IAASlT,EAAEkG,MAAMnG,EAAE,GAAGC,EAAEkG,KAAQtG,EAAEqV,MAAMrV,EAAEqV,KAAKynB,aAAa,IAAI15B,EAAEpD,EAAEqV,KAAKynB,aAAa,IAAIx8B,KAAKF,EAAEu5B,EAAEv6B,KAAKgB,EAAEE,KAAK25B,EAAEl6B,eAAeO,KAAKzB,EAAEyB,QAAG,IAASF,EAAEE,SAAI,IAAS8C,EAAEA,EAAE9C,GAAGF,EAAEE,GAAG,CAAC,IAAIA,EAAEV,UAAUC,OAAO,EAAE,GAAG,IAAIS,EAAEzB,EAAEoG,SAAS3F,OAAO,GAAG,EAAEgB,EAAE,CAAC8C,EAAEsC,MAAMpF,GAAG,IAAI,IAAIjB,EAAE,EAAEA,EAAEiB,EAAEjB,IAAI+D,EAAE/D,GAAGO,UAAUP,EAAE,GAAGR,EAAEoG,SAAS7B,CAAC,CAAC,MAAM,CAACiX,SAAS9a,EAAE8V,KAAKrV,EAAEqV,KACxf/O,IAAInG,EAAE+T,IAAIlR,EAAE0G,MAAM7K,EAAEwiC,OAAO7gC,EAAE,EAAE5B,EAAQ48C,cAAc,SAASx7C,EAAEI,GAA8K,YAA3K,IAASA,IAAIA,EAAE,OAAMJ,EAAE,CAACqa,SAAS9Z,EAAEuyC,sBAAsB1yC,EAAEk9B,cAAct9B,EAAEy7C,eAAez7C,EAAE07C,aAAa,EAAEC,SAAS,KAAKC,SAAS,OAAQD,SAAS,CAACthC,SAAStX,EAAEs6B,SAASr9B,GAAUA,EAAE47C,SAAS57C,CAAC,EAAEpB,EAAQoV,cAAc1S,EAAE1C,EAAQi9C,cAAc,SAAS77C,GAAG,IAAII,EAAEkB,EAAEsK,KAAK,KAAK5L,GAAY,OAATI,EAAEiV,KAAKrV,EAASI,CAAC,EAAExB,EAAQoU,UAAU,WAAW,MAAM,CAACM,QAAQ,KAAK,EAAE1U,EAAQ0V,WAAW,SAAStU,GAAG,MAAM,CAACqa,SAAS5Z,EAAE6Z,OAAOta,EAAE,EAAEpB,EAAQk9C,eAAez6C,EAC3ezC,EAAQm9C,KAAK,SAAS/7C,GAAG,MAAM,CAACqa,SAASjH,EAAEu/B,MAAM3yC,EAAEua,SAAS,EAAEC,QAAQ,KAAK,EAAE5b,EAAQo9C,KAAK,SAASh8C,EAAEI,GAAG,MAAM,CAACia,SAAS4kB,EAAE5pB,KAAKrV,EAAE6nC,aAAQ,IAASznC,EAAE,KAAKA,EAAE,EAAExB,EAAQknC,YAAY,SAAS9lC,EAAEI,GAAG,OAAOkvC,IAAIxJ,YAAY9lC,EAAEI,EAAE,EAAExB,EAAQmnC,WAAW,SAAS/lC,EAAEI,GAAG,OAAOkvC,IAAIvJ,WAAW/lC,EAAEI,EAAE,EAAExB,EAAQ2nC,cAAc,WAAW,EAAE3nC,EAAQonC,UAAU,SAAShmC,EAAEI,GAAG,OAAOkvC,IAAItJ,UAAUhmC,EAAEI,EAAE,EAAExB,EAAQqnC,oBAAoB,SAASjmC,EAAEI,EAAEd,GAAG,OAAOgwC,IAAIrJ,oBAAoBjmC,EAAEI,EAAEd,EAAE,EACxcV,EAAQsnC,gBAAgB,SAASlmC,EAAEI,GAAG,OAAOkvC,IAAIpJ,gBAAgBlmC,EAAEI,EAAE,EAAExB,EAAQunC,QAAQ,SAASnmC,EAAEI,GAAG,OAAOkvC,IAAInJ,QAAQnmC,EAAEI,EAAE,EAAExB,EAAQwnC,WAAW,SAASpmC,EAAEI,EAAEd,GAAG,OAAOgwC,IAAIlJ,WAAWpmC,EAAEI,EAAEd,EAAE,EAAEV,EAAQynC,OAAO,SAASrmC,GAAG,OAAOsvC,IAAIjJ,OAAOrmC,EAAE,EAAEpB,EAAQ0nC,SAAS,SAAStmC,GAAG,OAAOsvC,IAAIhJ,SAAStmC,EAAE,EAAEpB,EAAQg3C,QAAQ,qCCrBnTj3C,EAAOC,QAAU,EAAjBD,iCCAAA,EAAOC,QAAU,EAAjBD,+BCMW,IAAIyE,EAAEJ,EAAE1C,EAAEE,EAAE6C,EACzB,GAAG,qBAAqBpB,QAAQ,oBAAoBg6C,eAAe,CAAC,IAAI18C,EAAE,KAAKgU,EAAE,KAAKzU,EAAE,WAAW,GAAG,OAAOS,EAAE,IAAI,IAAIS,EAAEpB,EAAQq8B,eAAe17B,GAAE,EAAGS,GAAGT,EAAE,IAAI,CAAC,MAAMa,GAAG,MAAM+C,WAAWrE,EAAE,GAAGsB,CAAE,CAAC,EAAEH,EAAE4E,KAAKC,MAAMlG,EAAQq8B,aAAa,WAAW,OAAOp2B,KAAKC,MAAM7E,CAAC,EAAEmD,EAAE,SAASpD,GAAG,OAAOT,EAAE4D,WAAWC,EAAE,EAAEpD,IAAIT,EAAES,EAAEmD,WAAWrE,EAAE,GAAG,EAAEkE,EAAE,SAAShD,EAAEI,GAAGmT,EAAEpQ,WAAWnD,EAAEI,EAAE,EAAEE,EAAE,WAAWgD,aAAaiQ,EAAE,EAAE/S,EAAE,WAAW,OAAM,CAAE,EAAE6C,EAAEzE,EAAQs9C,wBAAwB,WAAW,CAAC,KAAK,CAAC,IAAI37C,EAAE0B,OAAOk6C,YAAY17C,EAAEwB,OAAO4C,KACnfxE,EAAE4B,OAAOkB,WAAW87B,EAAEh9B,OAAOqB,aAAa,GAAG,qBAAqBlB,QAAQ,CAAC,IAAIgR,EAAEnR,OAAO2Q,qBAAqB,oBAAoB3Q,OAAO0Q,uBAAuBvQ,QAAQ+oC,MAAM,2IAA2I,oBAAoB/3B,GAAGhR,QAAQ+oC,MAAM,yIAAyI,CAAC,GAAG,kBACne5qC,GAAG,oBAAoBA,EAAEuE,IAAIlG,EAAQq8B,aAAa,WAAW,OAAO16B,EAAEuE,KAAK,MAAM,CAAC,IAAIiO,EAAEtS,EAAEqE,MAAMlG,EAAQq8B,aAAa,WAAW,OAAOx6B,EAAEqE,MAAMiO,CAAC,CAAC,CAAC,IAAIiF,GAAE,EAAG9E,EAAE,KAAK+F,GAAG,EAAEoJ,EAAE,EAAE6K,EAAE,EAAE1sB,EAAE,WAAW,OAAO5B,EAAQq8B,gBAAgB/N,CAAC,EAAE7pB,EAAE,WAAW,EAAEzE,EAAQs9C,wBAAwB,SAASl8C,GAAG,EAAEA,GAAG,IAAIA,EAAEoC,QAAQ+oC,MAAM,oHAAoH9oB,EAAE,EAAEriB,EAAE0E,KAAKkK,MAAM,IAAI5O,GAAG,CAAC,EAAE,IAAIw5B,EAAE,IAAIyiB,eAAevoC,EAAE8lB,EAAE4iB,MAAM5iB,EAAE6iB,MAAMC,UACnf,WAAW,GAAG,OAAOppC,EAAE,CAAC,IAAIlT,EAAEpB,EAAQq8B,eAAe/N,EAAEltB,EAAEqiB,EAAE,IAAInP,GAAE,EAAGlT,GAAG0T,EAAE6oC,YAAY,OAAOvkC,GAAE,EAAG9E,EAAE,KAAK,CAAC,MAAM9S,GAAG,MAAMsT,EAAE6oC,YAAY,MAAMn8C,CAAE,CAAC,MAAM4X,GAAE,CAAE,EAAE5U,EAAE,SAASpD,GAAGkT,EAAElT,EAAEgY,IAAIA,GAAE,EAAGtE,EAAE6oC,YAAY,MAAM,EAAEv5C,EAAE,SAAShD,EAAEI,GAAG6Y,EAAE5Y,GAAE,WAAWL,EAAEpB,EAAQq8B,eAAe,GAAE76B,EAAE,EAAEE,EAAE,WAAW2+B,EAAEhmB,GAAGA,GAAG,CAAC,CAAC,CAAC,SAASygB,EAAE15B,EAAEI,GAAG,IAAId,EAAEU,EAAEH,OAAOG,EAAEwR,KAAKpR,GAAGJ,EAAE,OAAO,CAAC,IAAIG,EAAEb,EAAE,IAAI,EAAET,EAAEmB,EAAEG,GAAG,UAAG,IAAStB,GAAG,EAAE86B,EAAE96B,EAAEuB,IAA0B,MAAMJ,EAA7BA,EAAEG,GAAGC,EAAEJ,EAAEV,GAAGT,EAAES,EAAEa,CAAc,CAAC,CAAC,SAAS85B,EAAEj6B,GAAU,YAAO,KAAdA,EAAEA,EAAE,IAAqB,KAAKA,CAAC,CAC/c,SAASsB,EAAEtB,GAAG,IAAII,EAAEJ,EAAE,GAAG,QAAG,IAASI,EAAE,CAAC,IAAId,EAAEU,EAAE6hB,MAAM,GAAGviB,IAAIc,EAAE,CAACJ,EAAE,GAAGV,EAAEU,EAAE,IAAI,IAAIG,EAAE,EAAEtB,EAAEmB,EAAEH,OAAOM,EAAEtB,GAAG,CAAC,IAAIQ,EAAE,GAAGc,EAAE,GAAG,EAAEnB,EAAEgB,EAAEX,GAAG0D,EAAE1D,EAAE,EAAE6D,EAAElD,EAAE+C,GAAG,QAAG,IAAS/D,GAAG,EAAE26B,EAAE36B,EAAEM,QAAG,IAAS4D,GAAG,EAAEy2B,EAAEz2B,EAAElE,IAAIgB,EAAEG,GAAG+C,EAAElD,EAAE+C,GAAGzD,EAAEa,EAAE4C,IAAI/C,EAAEG,GAAGnB,EAAEgB,EAAEX,GAAGC,EAAEa,EAAEd,OAAQ,WAAG,IAAS6D,GAAG,EAAEy2B,EAAEz2B,EAAE5D,IAA0B,MAAMU,EAA7BA,EAAEG,GAAG+C,EAAElD,EAAE+C,GAAGzD,EAAEa,EAAE4C,CAAc,EAAC,CAAC,OAAO3C,CAAC,CAAC,OAAO,IAAI,CAAC,SAASu5B,EAAE35B,EAAEI,GAAG,IAAId,EAAEU,EAAEw8C,UAAUp8C,EAAEo8C,UAAU,OAAO,IAAIl9C,EAAEA,EAAEU,EAAEd,GAAGkB,EAAElB,EAAE,CAAC,IAAI+T,EAAE,GAAG5R,EAAE,GAAG4S,EAAE,EAAEI,EAAE,KAAKmzB,EAAE,EAAE9lC,GAAE,EAAGyR,GAAE,EAAGu3B,GAAE,EACja,SAASkD,EAAE5tC,GAAG,IAAI,IAAII,EAAE65B,EAAE54B,GAAG,OAAOjB,GAAG,CAAC,GAAG,OAAOA,EAAEy+B,SAASv9B,EAAED,OAAQ,MAAGjB,EAAEq8C,WAAWz8C,GAAgD,MAA9CsB,EAAED,GAAGjB,EAAEo8C,UAAUp8C,EAAEu9B,eAAejE,EAAEzmB,EAAE7S,EAAa,CAACA,EAAE65B,EAAE54B,EAAE,CAAC,CAAC,SAAS8sC,EAAEnuC,GAAa,GAAV0qC,GAAE,EAAGkD,EAAE5tC,IAAOmT,EAAE,GAAG,OAAO8mB,EAAEhnB,GAAGE,GAAE,EAAG/P,EAAEgrC,OAAO,CAAC,IAAIhuC,EAAE65B,EAAE54B,GAAG,OAAOjB,GAAG4C,EAAEmrC,EAAE/tC,EAAEq8C,UAAUz8C,EAAE,CAAC,CACzP,SAASouC,EAAEpuC,EAAEI,GAAG+S,GAAE,EAAGu3B,IAAIA,GAAE,EAAGpqC,KAAKoB,GAAE,EAAG,IAAIpC,EAAEkoC,EAAE,IAAS,IAALoG,EAAExtC,GAAOiU,EAAE4lB,EAAEhnB,GAAG,OAAOoB,MAAMA,EAAEspB,eAAev9B,IAAIJ,IAAIQ,MAAM,CAAC,IAAIL,EAAEkU,EAAEwqB,SAAS,GAAG,OAAO1+B,EAAE,CAACkU,EAAEwqB,SAAS,KAAK2I,EAAEnzB,EAAEqoC,cAAc,IAAI79C,EAAEsB,EAAEkU,EAAEspB,gBAAgBv9B,GAAGA,EAAExB,EAAQq8B,eAAe,oBAAoBp8B,EAAEwV,EAAEwqB,SAAShgC,EAAEwV,IAAI4lB,EAAEhnB,IAAI3R,EAAE2R,GAAG26B,EAAExtC,EAAE,MAAMkB,EAAE2R,GAAGoB,EAAE4lB,EAAEhnB,EAAE,CAAC,GAAG,OAAOoB,EAAE,IAAIhV,GAAE,MAAO,CAAC,IAAIL,EAAEi7B,EAAE54B,GAAG,OAAOrC,GAAGgE,EAAEmrC,EAAEnvC,EAAEy9C,UAAUr8C,GAAGf,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQgV,EAAE,KAAKmzB,EAAEloC,EAAEoC,GAAE,CAAE,CAAC,CACvZ,SAASitC,EAAE3uC,GAAG,OAAOA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,WAAW,KAAK,EAAE,OAAO,IAAI,QAAQ,OAAO,IAAI,CAAC,IAAIsvC,EAAEjsC,EAAEzE,EAAQ+8B,sBAAsB,EAAE/8B,EAAQy8B,2BAA2B,EAAEz8B,EAAQ68B,qBAAqB,EAAE78B,EAAQ0lB,wBAAwB,EAAE1lB,EAAQ+9C,mBAAmB,KAAK/9C,EAAQumB,8BAA8B,EAAEvmB,EAAQi8B,wBAAwB,SAAS76B,GAAGA,EAAE6+B,SAAS,IAAI,EAAEjgC,EAAQg+C,2BAA2B,WAAWzpC,GAAGzR,IAAIyR,GAAE,EAAG/P,EAAEgrC,GAAG,EAC3cxvC,EAAQu8B,iCAAiC,WAAW,OAAOqM,CAAC,EAAE5oC,EAAQi+C,8BAA8B,WAAW,OAAO5iB,EAAEhnB,EAAE,EAAErU,EAAQk+C,cAAc,SAAS98C,GAAG,OAAOwnC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIpnC,EAAE,EAAE,MAAM,QAAQA,EAAEonC,EAAE,IAAIloC,EAAEkoC,EAAEA,EAAEpnC,EAAE,IAAI,OAAOJ,GAAG,CAAC,QAAQwnC,EAAEloC,CAAC,CAAC,EAAEV,EAAQm+C,wBAAwB,WAAW,EAAEn+C,EAAQm8B,sBAAsBuU,EAAE1wC,EAAQglB,yBAAyB,SAAS5jB,EAAEI,GAAG,OAAOJ,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIV,EAAEkoC,EAAEA,EAAExnC,EAAE,IAAI,OAAOI,GAAG,CAAC,QAAQonC,EAAEloC,CAAC,CAAC,EACleV,EAAQylB,0BAA0B,SAASrkB,EAAEI,EAAEd,GAAG,IAAIa,EAAEvB,EAAQq8B,eAAe,GAAG,kBAAkB37B,GAAG,OAAOA,EAAE,CAAC,IAAIT,EAAES,EAAEqB,MAAM9B,EAAE,kBAAkBA,GAAG,EAAEA,EAAEsB,EAAEtB,EAAEsB,EAAEb,EAAE,kBAAkBA,EAAE2wC,QAAQ3wC,EAAE2wC,QAAQtB,EAAE3uC,EAAE,MAAMV,EAAEqvC,EAAE3uC,GAAGnB,EAAEsB,EAAyM,OAAjMH,EAAE,CAACd,GAAG+U,IAAI4qB,SAASz+B,EAAEs8C,cAAc18C,EAAEy8C,UAAU59C,EAAE8+B,eAAvDr+B,EAAET,EAAES,EAAoEk9C,WAAW,GAAG39C,EAAEsB,GAAGH,EAAEw8C,UAAU39C,EAAE66B,EAAEr4B,EAAErB,GAAG,OAAOi6B,EAAEhnB,IAAIjT,IAAIi6B,EAAE54B,KAAKqpC,EAAEpqC,IAAIoqC,GAAE,EAAG1nC,EAAEmrC,EAAEtvC,EAAEsB,MAAMH,EAAEw8C,UAAUl9C,EAAEo6B,EAAEzmB,EAAEjT,GAAGmT,GAAGzR,IAAIyR,GAAE,EAAG/P,EAAEgrC,KAAYpuC,CAAC,EAC5apB,EAAQk9B,qBAAqB,WAAW,IAAI97B,EAAEpB,EAAQq8B,eAAe2S,EAAE5tC,GAAG,IAAII,EAAE65B,EAAEhnB,GAAG,OAAO7S,IAAIiU,GAAG,OAAOA,GAAG,OAAOjU,GAAG,OAAOA,EAAEy+B,UAAUz+B,EAAEq8C,WAAWz8C,GAAGI,EAAEu9B,eAAetpB,EAAEspB,gBAAgBn9B,GAAG,EAAE5B,EAAQo+C,sBAAsB,SAASh9C,GAAG,IAAII,EAAEonC,EAAE,OAAO,WAAW,IAAIloC,EAAEkoC,EAAEA,EAAEpnC,EAAE,IAAI,OAAOJ,EAAEiD,MAAMM,KAAK3D,UAAU,CAAC,QAAQ4nC,EAAEloC,CAAC,CAAC,CAAC,8BCjBhUX,EAAOC,QAAU,EAAjBD,8qBCaF,IAAIs+C,EAAgB,SAAS98C,EAAGC,GAI9B,OAHA68C,EAAgBv9C,OAAOw9C,gBAClB,CAAE7E,UAAW,cAAgB3yC,OAAS,SAAUvF,EAAGC,GAAKD,EAAEk4C,UAAYj4C,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAIb,KAAKa,EAAOV,OAAOI,UAAUC,eAAeX,KAAKgB,EAAGb,KAAIY,EAAEZ,GAAKa,EAAEb,GAAI,EAC7F09C,EAAc98C,EAAGC,EAC1B,EAEO,SAAS+8C,EAAUh9C,EAAGC,GAC3B,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIoD,UAAU,uBAAyByE,OAAO7H,GAAK,iCAE7D,SAASg9C,IAAO75C,KAAKa,YAAcjE,CAAG,CADtC88C,EAAc98C,EAAGC,GAEjBD,EAAEL,UAAkB,OAANM,EAAaV,OAAOiM,OAAOvL,IAAMg9C,EAAGt9C,UAAYM,EAAEN,UAAW,IAAIs9C,EACjF,CAEO,IAAIC,EAAW,WAQpB,OAPAA,EAAW39C,OAAOC,QAAU,SAAkBb,GAC1C,IAAK,IAAIoB,EAAGjB,EAAI,EAAGD,EAAIY,UAAUC,OAAQZ,EAAID,EAAGC,IAE5C,IAAK,IAAIM,KADTW,EAAIN,UAAUX,GACOS,OAAOI,UAAUC,eAAeX,KAAKc,EAAGX,KAAIT,EAAES,GAAKW,EAAEX,IAE9E,OAAOT,CACX,EACOu+C,EAASp6C,MAAMM,KAAM3D,UAC9B,EAEO,SAAS09C,EAAOp9C,EAAGrB,GACxB,IAAIC,EAAI,CAAC,EACT,IAAK,IAAIS,KAAKW,EAAOR,OAAOI,UAAUC,eAAeX,KAAKc,EAAGX,IAAMV,EAAE2D,QAAQjD,GAAK,IAC9ET,EAAES,GAAKW,EAAEX,IACb,GAAS,MAALW,GAAqD,oBAAjCR,OAAOmI,sBACtB,KAAI5I,EAAI,EAAb,IAAgBM,EAAIG,OAAOmI,sBAAsB3H,GAAIjB,EAAIM,EAAEM,OAAQZ,IAC3DJ,EAAE2D,QAAQjD,EAAEN,IAAM,GAAKS,OAAOI,UAAUiI,qBAAqB3I,KAAKc,EAAGX,EAAEN,MACvEH,EAAES,EAAEN,IAAMiB,EAAEX,EAAEN,IAF4B,CAItD,OAAOH,CACT,CAEO,SAASy+C,EAAWC,EAAY50C,EAAQtC,EAAKm3C,GAClD,IAA2Ht9C,EAAvHb,EAAIM,UAAUC,OAAQqD,EAAI5D,EAAI,EAAIsJ,EAAkB,OAAT60C,EAAgBA,EAAO/9C,OAAO2b,yBAAyBzS,EAAQtC,GAAOm3C,EACrH,GAAuB,kBAAZC,SAAoD,oBAArBA,QAAQC,SAAyBz6C,EAAIw6C,QAAQC,SAASH,EAAY50C,EAAQtC,EAAKm3C,QACpH,IAAK,IAAIx+C,EAAIu+C,EAAW39C,OAAS,EAAGZ,GAAK,EAAGA,KAASkB,EAAIq9C,EAAWv+C,MAAIiE,GAAK5D,EAAI,EAAIa,EAAE+C,GAAK5D,EAAI,EAAIa,EAAEyI,EAAQtC,EAAKpD,GAAK/C,EAAEyI,EAAQtC,KAASpD,GAChJ,OAAO5D,EAAI,GAAK4D,GAAKxD,OAAOmG,eAAe+C,EAAQtC,EAAKpD,GAAIA,CAC9D,CAEO,SAAS06C,EAAQC,EAAYC,GAClC,OAAO,SAAUl1C,EAAQtC,GAAOw3C,EAAUl1C,EAAQtC,EAAKu3C,EAAa,CACtE,CAEO,SAASE,EAAaC,EAAMC,EAAcT,EAAYU,EAAWC,EAAcC,GACpF,SAASC,EAAOj7C,GAAK,QAAU,IAANA,GAA6B,oBAANA,EAAkB,MAAM,IAAII,UAAU,qBAAsB,OAAOJ,CAAG,CAKtH,IAJA,IAGItB,EAHAw8C,EAAOJ,EAAUI,KAAMh4C,EAAe,WAATg4C,EAAoB,MAAiB,WAATA,EAAoB,MAAQ,QACrF11C,GAAUq1C,GAAgBD,EAAOE,EAAkB,OAAIF,EAAOA,EAAKl+C,UAAY,KAC/Ey+C,EAAaN,IAAiBr1C,EAASlJ,OAAO2b,yBAAyBzS,EAAQs1C,EAAUj0C,MAAQ,CAAC,GAC/Fm4B,GAAO,EACLnjC,EAAIu+C,EAAW39C,OAAS,EAAGZ,GAAK,EAAGA,IAAK,CAC7C,IAAIuP,EAAU,CAAC,EACf,IAAK,IAAIjP,KAAK2+C,EAAW1vC,EAAQjP,GAAW,WAANA,EAAiB,CAAC,EAAI2+C,EAAU3+C,GACtE,IAAK,IAAIA,KAAK2+C,EAAUM,OAAQhwC,EAAQgwC,OAAOj/C,GAAK2+C,EAAUM,OAAOj/C,GACrEiP,EAAQiwC,eAAiB,SAAUr7C,GAAK,GAAIg/B,EAAM,MAAM,IAAI5+B,UAAU,0DAA2D46C,EAAkB5sC,KAAK6sC,EAAOj7C,GAAK,MAAQ,EAC5K,IAAIw3C,GAAS,EAAI4C,EAAWv+C,IAAa,aAATq/C,EAAsB,CAAE7yC,IAAK8yC,EAAW9yC,IAAKoH,IAAK0rC,EAAW1rC,KAAQ0rC,EAAWj4C,GAAMkI,GACtH,GAAa,aAAT8vC,EAAqB,CACrB,QAAe,IAAX1D,EAAmB,SACvB,GAAe,OAAXA,GAAqC,kBAAXA,EAAqB,MAAM,IAAIp3C,UAAU,oBACnE1B,EAAIu8C,EAAOzD,EAAOnvC,QAAM8yC,EAAW9yC,IAAM3J,IACzCA,EAAIu8C,EAAOzD,EAAO/nC,QAAM0rC,EAAW1rC,IAAM/Q,IACzCA,EAAIu8C,EAAOzD,EAAOh4C,QAAOu7C,EAAaO,QAAQ58C,EACtD,MACSA,EAAIu8C,EAAOzD,MACH,UAAT0D,EAAkBH,EAAaO,QAAQ58C,GACtCy8C,EAAWj4C,GAAOxE,EAE/B,CACI8G,GAAQlJ,OAAOmG,eAAe+C,EAAQs1C,EAAUj0C,KAAMs0C,GAC1Dnc,GAAO,CACT,CAEO,SAASuc,EAAkBC,EAAST,EAAcr4C,GAEvD,IADA,IAAI+4C,EAAWj/C,UAAUC,OAAS,EACzBZ,EAAI,EAAGA,EAAIk/C,EAAat+C,OAAQZ,IACrC6G,EAAQ+4C,EAAWV,EAAal/C,GAAGG,KAAKw/C,EAAS94C,GAASq4C,EAAal/C,GAAGG,KAAKw/C,GAEnF,OAAOC,EAAW/4C,OAAQ,CAC5B,CAEO,SAASg5C,EAAUr+C,GACxB,MAAoB,kBAANA,EAAiBA,EAAI,GAAGmF,OAAOnF,EAC/C,CAEO,SAASs+C,EAAkB37C,EAAG6G,EAAM+0C,GAEzC,MADoB,kBAAT/0C,IAAmBA,EAAOA,EAAKg1C,YAAc,IAAIr5C,OAAOqE,EAAKg1C,YAAa,KAAO,IACrFv/C,OAAOmG,eAAezC,EAAG,OAAQ,CAAEgD,cAAc,EAAMN,MAAOk5C,EAAS,GAAGp5C,OAAOo5C,EAAQ,IAAK/0C,GAAQA,GAC/G,CAEO,SAASi1C,EAAWC,EAAaC,GACtC,GAAuB,kBAAZ1B,SAAoD,oBAArBA,QAAQ2B,SAAyB,OAAO3B,QAAQ2B,SAASF,EAAaC,EAClH,CAEO,SAASE,EAAUV,EAASW,EAAYtrC,EAAGzB,GAEhD,OAAO,IAAKyB,IAAMA,EAAIurC,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAU75C,GAAS,IAAM85C,EAAKptC,EAAUurB,KAAKj4B,GAAS,CAAE,MAAOjH,GAAK6gD,EAAO7gD,EAAI,CAAE,CAC1F,SAASghD,EAAS/5C,GAAS,IAAM85C,EAAKptC,EAAiB,MAAE1M,GAAS,CAAE,MAAOjH,GAAK6gD,EAAO7gD,EAAI,CAAE,CAC7F,SAAS+gD,EAAKhF,GAJlB,IAAe90C,EAIa80C,EAAOxY,KAAOqd,EAAQ7E,EAAO90C,QAJ1CA,EAIyD80C,EAAO90C,MAJhDA,aAAiBmO,EAAInO,EAAQ,IAAImO,GAAE,SAAUwrC,GAAWA,EAAQ35C,EAAQ,KAIjBgnC,KAAK6S,EAAWE,EAAW,CAC7GD,GAAMptC,EAAYA,EAAUvP,MAAM27C,EAASW,GAAc,KAAKxhB,OAClE,GACF,CAEO,SAAS+hB,EAAYlB,EAAS50B,GACnC,IAAsG5mB,EAAG/C,EAAGvB,EAAxGgD,EAAI,CAAEi+C,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlhD,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,EAAI,EAAGmhD,KAAM,GAAIC,IAAK,IAAel9C,EAAItD,OAAOiM,QAA4B,oBAAbw0C,SAA0BA,SAAWzgD,QAAQI,WACtL,OAAOkD,EAAE+6B,KAAOqiB,EAAK,GAAIp9C,EAAS,MAAIo9C,EAAK,GAAIp9C,EAAU,OAAIo9C,EAAK,GAAsB,oBAAXl8C,SAA0BlB,EAAEkB,OAAOC,UAAY,WAAa,OAAOZ,IAAM,GAAIP,EAC1J,SAASo9C,EAAKphD,GAAK,OAAO,SAAU+D,GAAK,OACzC,SAAcs9C,GACV,GAAIj9C,EAAG,MAAM,IAAII,UAAU,mCAC3B,KAAOR,IAAMA,EAAI,EAAGq9C,EAAG,KAAOv+C,EAAI,IAAKA,OACnC,GAAIsB,EAAI,EAAG/C,IAAMvB,EAAY,EAARuhD,EAAG,GAAShgD,EAAU,OAAIggD,EAAG,GAAKhgD,EAAS,SAAOvB,EAAIuB,EAAU,SAAMvB,EAAEM,KAAKiB,GAAI,GAAKA,EAAE09B,SAAWj/B,EAAIA,EAAEM,KAAKiB,EAAGggD,EAAG,KAAKje,KAAM,OAAOtjC,EAE3J,OADIuB,EAAI,EAAGvB,IAAGuhD,EAAK,CAAS,EAARA,EAAG,GAAQvhD,EAAEgH,QACzBu6C,EAAG,IACP,KAAK,EAAG,KAAK,EAAGvhD,EAAIuhD,EAAI,MACxB,KAAK,EAAc,OAAXv+C,EAAEi+C,QAAgB,CAAEj6C,MAAOu6C,EAAG,GAAIje,MAAM,GAChD,KAAK,EAAGtgC,EAAEi+C,QAAS1/C,EAAIggD,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKv+C,EAAEo+C,IAAIr+B,MAAO/f,EAAEm+C,KAAKp+B,MAAO,SACxC,QACI,KAAkB/iB,GAAZA,EAAIgD,EAAEm+C,MAAYpgD,OAAS,GAAKf,EAAEA,EAAEe,OAAS,MAAkB,IAAVwgD,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEv+C,EAAI,EAAG,QAAU,CAC3G,GAAc,IAAVu+C,EAAG,MAAcvhD,GAAMuhD,EAAG,GAAKvhD,EAAE,IAAMuhD,EAAG,GAAKvhD,EAAE,IAAM,CAAEgD,EAAEi+C,MAAQM,EAAG,GAAI,KAAO,CACrF,GAAc,IAAVA,EAAG,IAAYv+C,EAAEi+C,MAAQjhD,EAAE,GAAI,CAAEgD,EAAEi+C,MAAQjhD,EAAE,GAAIA,EAAIuhD,EAAI,KAAO,CACpE,GAAIvhD,GAAKgD,EAAEi+C,MAAQjhD,EAAE,GAAI,CAAEgD,EAAEi+C,MAAQjhD,EAAE,GAAIgD,EAAEo+C,IAAI1uC,KAAK6uC,GAAK,KAAO,CAC9DvhD,EAAE,IAAIgD,EAAEo+C,IAAIr+B,MAChB/f,EAAEm+C,KAAKp+B,MAAO,SAEtBw+B,EAAKr2B,EAAK5qB,KAAKw/C,EAAS98C,EAC5B,CAAE,MAAOjD,GAAKwhD,EAAK,CAAC,EAAGxhD,GAAIwB,EAAI,CAAG,CAAE,QAAU+C,EAAItE,EAAI,CAAG,CACzD,GAAY,EAARuhD,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAEv6C,MAAOu6C,EAAG,GAAKA,EAAG,QAAK,EAAQje,MAAM,EAC9E,CAtBgDwd,CAAK,CAAC5gD,EAAG+D,GAAK,CAAG,CAuBnE,CAEO,IAAIu9C,EAAkB5gD,OAAOiM,OAAU,SAAS5M,EAAGM,EAAGmB,EAAG+/C,QACnDr3C,IAAPq3C,IAAkBA,EAAK//C,GAC3B,IAAIi9C,EAAO/9C,OAAO2b,yBAAyBhc,EAAGmB,GACzCi9C,KAAS,QAASA,GAAQp+C,EAAEG,WAAai+C,EAAKp3C,UAAYo3C,EAAKr3C,gBAChEq3C,EAAO,CAAEt3C,YAAY,EAAMsF,IAAK,WAAa,OAAOpM,EAAEmB,EAAI,IAE9Dd,OAAOmG,eAAe9G,EAAGwhD,EAAI9C,EAC/B,EAAM,SAAS1+C,EAAGM,EAAGmB,EAAG+/C,QACXr3C,IAAPq3C,IAAkBA,EAAK//C,GAC3BzB,EAAEwhD,GAAMlhD,EAAEmB,EACZ,EAEO,SAASggD,EAAanhD,EAAGN,GAC9B,IAAK,IAAIQ,KAAKF,EAAa,YAANE,GAAoBG,OAAOI,UAAUC,eAAeX,KAAKL,EAAGQ,IAAI+gD,EAAgBvhD,EAAGM,EAAGE,EAC7G,CAEO,SAASkhD,EAAS1hD,GACvB,IAAImB,EAAsB,oBAAXgE,QAAyBA,OAAOC,SAAU9E,EAAIa,GAAKnB,EAAEmB,GAAIjB,EAAI,EAC5E,GAAII,EAAG,OAAOA,EAAED,KAAKL,GACrB,GAAIA,GAAyB,kBAAbA,EAAEc,OAAqB,MAAO,CAC1Ck+B,KAAM,WAEF,OADIh/B,GAAKE,GAAKF,EAAEc,SAAQd,OAAI,GACrB,CAAE+G,MAAO/G,GAAKA,EAAEE,KAAMmjC,MAAOrjC,EACxC,GAEJ,MAAM,IAAIyE,UAAUtD,EAAI,0BAA4B,kCACtD,CAEO,SAASwgD,EAAO3hD,EAAGC,GACxB,IAAIK,EAAsB,oBAAX6E,QAAyBnF,EAAEmF,OAAOC,UACjD,IAAK9E,EAAG,OAAON,EACf,IAAmBmE,EAAYrE,EAA3BI,EAAII,EAAED,KAAKL,GAAO4hD,EAAK,GAC3B,IACI,WAAc,IAAN3hD,GAAgBA,KAAM,MAAQkE,EAAIjE,EAAE8+B,QAAQqE,MAAMue,EAAGnvC,KAAKtO,EAAE4C,MACxE,CACA,MAAOqlC,GAAStsC,EAAI,CAAEssC,MAAOA,EAAS,CAAC,QAEnC,IACQjoC,IAAMA,EAAEk/B,OAAS/iC,EAAIJ,EAAU,SAAII,EAAED,KAAKH,EAClD,CAAC,QACS,GAAIJ,EAAG,MAAMA,EAAEssC,KAAO,CACpC,CACA,OAAOwV,CACT,CAGO,SAASC,IACd,IAAK,IAAID,EAAK,GAAI1hD,EAAI,EAAGA,EAAIW,UAAUC,OAAQZ,IAC3C0hD,EAAKA,EAAG/6C,OAAO86C,EAAO9gD,UAAUX,KACpC,OAAO0hD,CACT,CAGO,SAASE,IACd,IAAK,IAAI3gD,EAAI,EAAGjB,EAAI,EAAG6hD,EAAKlhD,UAAUC,OAAQZ,EAAI6hD,EAAI7hD,IAAKiB,GAAKN,UAAUX,GAAGY,OACxE,IAAIqD,EAAIwC,MAAMxF,GAAIM,EAAI,EAA3B,IAA8BvB,EAAI,EAAGA,EAAI6hD,EAAI7hD,IACzC,IAAK,IAAIe,EAAIJ,UAAUX,GAAImC,EAAI,EAAG2/C,EAAK/gD,EAAEH,OAAQuB,EAAI2/C,EAAI3/C,IAAKZ,IAC1D0C,EAAE1C,GAAKR,EAAEoB,GACjB,OAAO8B,CACT,CAEO,SAAS89C,EAAch4C,EAAIF,EAAMm4C,GACtC,GAAIA,GAA6B,IAArBrhD,UAAUC,OAAc,IAAK,IAA4B8gD,EAAxB1hD,EAAI,EAAGoE,EAAIyF,EAAKjJ,OAAYZ,EAAIoE,EAAGpE,KACxE0hD,GAAQ1hD,KAAK6J,IACR63C,IAAIA,EAAKj7C,MAAM5F,UAAUmE,MAAM7E,KAAK0J,EAAM,EAAG7J,IAClD0hD,EAAG1hD,GAAK6J,EAAK7J,IAGrB,OAAO+J,EAAGpD,OAAO+6C,GAAMj7C,MAAM5F,UAAUmE,MAAM7E,KAAK0J,GACpD,CAEO,SAASo4C,EAAQn+C,GACtB,OAAOQ,gBAAgB29C,GAAW39C,KAAKR,EAAIA,EAAGQ,MAAQ,IAAI29C,EAAQn+C,EACpE,CAEO,SAASo+C,EAAiBvC,EAASW,EAAY/sC,GACpD,IAAKtO,OAAOk9C,cAAe,MAAM,IAAI59C,UAAU,wCAC/C,IAAoDvE,EAAhD+D,EAAIwP,EAAUvP,MAAM27C,EAASW,GAAc,IAAQhsC,EAAI,GAC3D,OAAOtU,EAAIS,OAAOiM,QAAiC,oBAAlB01C,cAA+BA,cAAgB3hD,QAAQI,WAAYsgD,EAAK,QAASA,EAAK,SAAUA,EAAK,UACtI,SAAqBh9C,GAAK,OAAO,SAAUL,GAAK,OAAOy8C,QAAQC,QAAQ18C,GAAG+pC,KAAK1pC,EAAGs8C,EAAS,CAAG,IADgEzgD,EAAEiF,OAAOk9C,eAAiB,WAAc,OAAO79C,IAAM,EAAGtE,EAEtN,SAASmhD,EAAKphD,EAAGoE,GAASJ,EAAEhE,KAAMC,EAAED,GAAK,SAAU+D,GAAK,OAAO,IAAIy8C,SAAQ,SAAUx/C,EAAGI,GAAKmT,EAAE/B,KAAK,CAACxS,EAAG+D,EAAG/C,EAAGI,IAAM,GAAKkhD,EAAOtiD,EAAG+D,EAAI,GAAI,EAAOK,IAAGnE,EAAED,GAAKoE,EAAEnE,EAAED,KAAO,CACvK,SAASsiD,EAAOtiD,EAAG+D,GAAK,KACVG,EADqBF,EAAEhE,GAAG+D,IACnB+C,iBAAiBo7C,EAAU1B,QAAQC,QAAQv8C,EAAE4C,MAAM/C,GAAG+pC,KAAKyU,EAAS7B,GAAU8B,EAAOjuC,EAAE,GAAG,GAAIrQ,EADtE,CAAE,MAAOrE,GAAK2iD,EAAOjuC,EAAE,GAAG,GAAI1U,EAAI,CAC/E,IAAcqE,CADmE,CAEjF,SAASq+C,EAAQz7C,GAASw7C,EAAO,OAAQx7C,EAAQ,CACjD,SAAS45C,EAAO55C,GAASw7C,EAAO,QAASx7C,EAAQ,CACjD,SAAS07C,EAAOp+C,EAAGL,GAASK,EAAEL,GAAIwQ,EAAE4Q,QAAS5Q,EAAE1T,QAAQyhD,EAAO/tC,EAAE,GAAG,GAAIA,EAAE,GAAG,GAAK,CACnF,CAEO,SAASkuC,EAAiB1iD,GAC/B,IAAIE,EAAGM,EACP,OAAON,EAAI,CAAC,EAAGmhD,EAAK,QAASA,EAAK,SAAS,SAAUvhD,GAAK,MAAMA,CAAG,IAAIuhD,EAAK,UAAWnhD,EAAEiF,OAAOC,UAAY,WAAc,OAAOZ,IAAM,EAAGtE,EAC1I,SAASmhD,EAAKphD,EAAGoE,GAAKnE,EAAED,GAAKD,EAAEC,GAAK,SAAU+D,GAAK,OAAQxD,GAAKA,GAAK,CAAEuG,MAAOo7C,EAAQniD,EAAEC,GAAG+D,IAAKq/B,MAAM,GAAUh/B,EAAIA,EAAEL,GAAKA,CAAG,EAAIK,CAAG,CACvI,CAEO,SAASs+C,EAAc3iD,GAC5B,IAAKmF,OAAOk9C,cAAe,MAAM,IAAI59C,UAAU,wCAC/C,IAAiCvE,EAA7BI,EAAIN,EAAEmF,OAAOk9C,eACjB,OAAO/hD,EAAIA,EAAED,KAAKL,IAAMA,EAAqC0hD,EAAS1hD,GAA2BE,EAAI,CAAC,EAAGmhD,EAAK,QAASA,EAAK,SAAUA,EAAK,UAAWnhD,EAAEiF,OAAOk9C,eAAiB,WAAc,OAAO79C,IAAM,EAAGtE,GAC9M,SAASmhD,EAAKphD,GAAKC,EAAED,GAAKD,EAAEC,IAAM,SAAU+D,GAAK,OAAO,IAAIy8C,SAAQ,SAAUC,EAASC,IACvF,SAAgBD,EAASC,EAAQv/C,EAAG4C,GAAKy8C,QAAQC,QAAQ18C,GAAG+pC,MAAK,SAAS/pC,GAAK08C,EAAQ,CAAE35C,MAAO/C,EAAGq/B,KAAMjiC,GAAM,GAAGu/C,EAAS,EADb8B,CAAO/B,EAASC,GAA7B38C,EAAIhE,EAAEC,GAAG+D,IAA8Bq/B,KAAMr/B,EAAE+C,MAAQ,GAAI,CAAG,CAEjK,CAEO,SAAS67C,EAAqBC,EAAQC,GAE3C,OADIniD,OAAOmG,eAAkBnG,OAAOmG,eAAe+7C,EAAQ,MAAO,CAAE97C,MAAO+7C,IAAiBD,EAAOC,IAAMA,EAClGD,CACT,CAEA,IAAIE,EAAqBpiD,OAAOiM,OAAU,SAAS5M,EAAGgE,GACpDrD,OAAOmG,eAAe9G,EAAG,UAAW,CAAEoH,YAAY,EAAML,MAAO/C,GACjE,EAAK,SAAShE,EAAGgE,GACfhE,EAAW,QAAIgE,CACjB,EAEO,SAASg/C,EAAaC,GAC3B,GAAIA,GAAOA,EAAIxiD,WAAY,OAAOwiD,EAClC,IAAIpH,EAAS,CAAC,EACd,GAAW,MAAPoH,EAAa,IAAK,IAAIxhD,KAAKwhD,EAAe,YAANxhD,GAAmBd,OAAOI,UAAUC,eAAeX,KAAK4iD,EAAKxhD,IAAI8/C,EAAgB1F,EAAQoH,EAAKxhD,GAEtI,OADAshD,EAAmBlH,EAAQoH,GACpBpH,CACT,CAEO,SAASpB,EAAgBwI,GAC9B,OAAQA,GAAOA,EAAIxiD,WAAcwiD,EAAM,CAAEviD,QAASuiD,EACpD,CAEO,SAASC,EAAuBC,EAAU1hB,EAAO8d,EAAMl7C,GAC5D,GAAa,MAATk7C,IAAiBl7C,EAAG,MAAM,IAAII,UAAU,iDAC5C,GAAqB,oBAAVg9B,EAAuB0hB,IAAa1hB,IAAUp9B,GAAKo9B,EAAMre,IAAI+/B,GAAW,MAAM,IAAI1+C,UAAU,4EACvG,MAAgB,MAAT86C,EAAel7C,EAAa,MAATk7C,EAAel7C,EAAEhE,KAAK8iD,GAAY9+C,EAAIA,EAAE0C,MAAQ06B,EAAM/0B,IAAIy2C,EACtF,CAEO,SAASC,EAAuBD,EAAU1hB,EAAO16B,EAAOw4C,EAAMl7C,GACnE,GAAa,MAATk7C,EAAc,MAAM,IAAI96C,UAAU,kCACtC,GAAa,MAAT86C,IAAiBl7C,EAAG,MAAM,IAAII,UAAU,iDAC5C,GAAqB,oBAAVg9B,EAAuB0hB,IAAa1hB,IAAUp9B,GAAKo9B,EAAMre,IAAI+/B,GAAW,MAAM,IAAI1+C,UAAU,2EACvG,MAAiB,MAAT86C,EAAel7C,EAAEhE,KAAK8iD,EAAUp8C,GAAS1C,EAAIA,EAAE0C,MAAQA,EAAQ06B,EAAM3tB,IAAIqvC,EAAUp8C,GAASA,CACtG,CAEO,SAASs8C,EAAsB5hB,EAAO0hB,GAC3C,GAAiB,OAAbA,GAA0C,kBAAbA,GAA6C,oBAAbA,EAA0B,MAAM,IAAI1+C,UAAU,0CAC/G,MAAwB,oBAAVg9B,EAAuB0hB,IAAa1hB,EAAQA,EAAMre,IAAI+/B,EACtE,CAEO,SAASG,EAAwBC,EAAKx8C,EAAOy8C,GAClD,GAAc,OAAVz8C,QAA4B,IAAVA,EAAkB,CACtC,GAAqB,kBAAVA,GAAuC,oBAAVA,EAAsB,MAAM,IAAItC,UAAU,oBAClF,IAAIg/C,EAASC,EACb,GAAIF,EAAO,CACT,IAAKr+C,OAAOw+C,aAAc,MAAM,IAAIl/C,UAAU,uCAC9Cg/C,EAAU18C,EAAM5B,OAAOw+C,aACzB,CACA,QAAgB,IAAZF,EAAoB,CACtB,IAAKt+C,OAAOs+C,QAAS,MAAM,IAAIh/C,UAAU,kCACzCg/C,EAAU18C,EAAM5B,OAAOs+C,SACnBD,IAAOE,EAAQD,EACrB,CACA,GAAuB,oBAAZA,EAAwB,MAAM,IAAIh/C,UAAU,0BACnDi/C,IAAOD,EAAU,WAAa,IAAMC,EAAMrjD,KAAKmE,KAAO,CAAE,MAAO1E,GAAK,OAAO2gD,QAAQE,OAAO7gD,EAAI,CAAE,GACpGyjD,EAAIxX,MAAMt5B,KAAK,CAAE1L,MAAOA,EAAO08C,QAASA,EAASD,MAAOA,GAC1D,MACSA,GACPD,EAAIxX,MAAMt5B,KAAK,CAAE+wC,OAAO,IAE1B,OAAOz8C,CACT,CAEA,IAAI68C,EAA8C,oBAApBC,gBAAiCA,gBAAkB,SAAUzX,EAAO0X,EAAY3L,GAC5G,IAAIr4C,EAAI,IAAImL,MAAMktC,GAClB,OAAOr4C,EAAEoL,KAAO,kBAAmBpL,EAAEssC,MAAQA,EAAOtsC,EAAEgkD,WAAaA,EAAYhkD,CACjF,EAEO,SAASikD,EAAmBR,GACjC,SAASS,EAAKlkD,GACZyjD,EAAInX,MAAQmX,EAAIU,SAAW,IAAIL,EAAiB9jD,EAAGyjD,EAAInX,MAAO,4CAA8CtsC,EAC5GyjD,EAAIU,UAAW,CACjB,CACA,IAAI9/C,EAAGhD,EAAI,EAkBX,OAjBA,SAAS69B,IACP,KAAO76B,EAAIo/C,EAAIxX,MAAMjpB,OACnB,IACE,IAAK3e,EAAEq/C,OAAe,IAANriD,EAAS,OAAOA,EAAI,EAAGoiD,EAAIxX,MAAMt5B,KAAKtO,GAAIs8C,QAAQC,UAAU3S,KAAK/O,GACjF,GAAI76B,EAAEs/C,QAAS,CACb,IAAI5H,EAAS13C,EAAEs/C,QAAQpjD,KAAK8D,EAAE4C,OAC9B,GAAI5C,EAAEq/C,MAAO,OAAOriD,GAAK,EAAGs/C,QAAQC,QAAQ7E,GAAQ9N,KAAK/O,GAAM,SAASl/B,GAAc,OAATkkD,EAAKlkD,GAAWk/B,GAAQ,GACvG,MACK79B,GAAK,CACZ,CACA,MAAOrB,GACLkkD,EAAKlkD,EACP,CAEF,GAAU,IAANqB,EAAS,OAAOoiD,EAAIU,SAAWxD,QAAQE,OAAO4C,EAAInX,OAASqU,QAAQC,UACvE,GAAI6C,EAAIU,SAAU,MAAMV,EAAInX,KAC9B,CACOpN,EACT,CAEA,SACEof,YACAE,WACAC,SACAC,aACAK,UACAsB,aACAI,YACAQ,cACAQ,kBACAE,eACAC,WACAC,SACAE,WACAC,iBACAG,gBACAE,UACAC,mBACAM,mBACAC,gBACAC,uBACAI,eACAvI,kBACAyI,yBACAE,yBACAC,wBACAC,0BACAS,wBCvXEG,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBj6C,IAAjBk6C,EACH,OAAOA,EAAaxkD,QAGrB,IAAID,EAASskD,EAAyBE,GAAY,CAGjDvkD,QAAS,CAAC,GAOX,OAHAykD,EAAoBF,GAAU/jD,KAAKT,EAAOC,QAASD,EAAQA,EAAOC,QAASskD,GAGpEvkD,EAAOC,OACf,CCrBAskD,EAAoBlkD,EAAKL,IACxB,IAAI2kD,EAAS3kD,GAAUA,EAAOa,WAC7B,IAAOb,EAAiB,QACxB,IAAM,EAEP,OADAukD,EAAoB/iD,EAAEmjD,EAAQ,CAAEtjD,EAAGsjD,IAC5BA,CAAM,QCNd,IACIC,EADAC,EAAW9jD,OAAO+jD,eAAkBhM,GAAS/3C,OAAO+jD,eAAehM,GAASA,GAASA,EAAa,UAQtGyL,EAAoBpkD,EAAI,SAASgH,EAAOi8B,GAEvC,GADU,EAAPA,IAAUj8B,EAAQvC,KAAKuC,IAChB,EAAPi8B,EAAU,OAAOj8B,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPi8B,GAAaj8B,EAAMtG,WAAY,OAAOsG,EAC1C,GAAW,GAAPi8B,GAAoC,oBAAfj8B,EAAMgnC,KAAqB,OAAOhnC,CAC5D,CACA,IAAI49C,EAAKhkD,OAAOiM,OAAO,MACvBu3C,EAAoBhgD,EAAEwgD,GACtB,IAAIC,EAAM,CAAC,EACXJ,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAIlwC,EAAiB,EAAPyuB,GAAYj8B,EAAyB,iBAAXwN,KAAyBiwC,EAAe/gD,QAAQ8Q,GAAUA,EAAUkwC,EAASlwC,GACxH5T,OAAOwI,oBAAoBoL,GAAS/R,SAAS+E,GAASq9C,EAAIr9C,GAAO,IAAOR,EAAMQ,KAI/E,OAFAq9C,EAAa,QAAI,IAAM,EACvBT,EAAoB/iD,EAAEujD,EAAIC,GACnBD,CACR,MCxBAR,EAAoB/iD,EAAI,CAACvB,EAASglD,KACjC,IAAI,IAAIt9C,KAAOs9C,EACXV,EAAoBnkD,EAAE6kD,EAAYt9C,KAAS48C,EAAoBnkD,EAAEH,EAAS0H,IAC5E5G,OAAOmG,eAAejH,EAAS0H,EAAK,CAAEH,YAAY,EAAMsF,IAAKm4C,EAAWt9C,IAE1E,ECND48C,EAAoBlgD,EAAI,WACvB,GAA0B,kBAAf6gD,WAAyB,OAAOA,WAC3C,IACC,OAAOtgD,MAAQ,IAAIiB,SAAS,cAAb,EAChB,CAAE,MAAO3F,GACR,GAAsB,kBAAXoD,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBihD,EAAoBnkD,EAAI,CAAC04C,EAAKqM,IAAUpkD,OAAOI,UAAUC,eAAeX,KAAKq4C,EAAKqM,GCClFZ,EAAoBhgD,EAAKtE,IACH,qBAAXsF,QAA0BA,OAAOwH,aAC1ChM,OAAOmG,eAAejH,EAASsF,OAAOwH,YAAa,CAAE5F,MAAO,WAE7DpG,OAAOmG,eAAejH,EAAS,aAAc,CAAEkH,OAAO,GAAO,ECL9Do9C,EAAoB3jD,EAAI,oFCExB,SAASwkD,EAAyBl7C,EAAQm7C,GAAY,GAAc,MAAVn7C,EAAgB,MAAO,CAAC,EAAG,IAAkEvC,EAAKrH,EAAnE2J,EAEzF,SAAuCC,EAAQm7C,GAAY,GAAc,MAAVn7C,EAAgB,MAAO,CAAC,EAAG,IAA2DvC,EAAKrH,EAA5D2J,EAAS,CAAC,EAAOq7C,EAAavkD,OAAO+I,KAAKI,GAAqB,IAAK5J,EAAI,EAAGA,EAAIglD,EAAWpkD,OAAQZ,IAAOqH,EAAM29C,EAAWhlD,GAAQ+kD,EAASxhD,QAAQ8D,IAAQ,IAAasC,EAAOtC,GAAOuC,EAAOvC,IAAQ,OAAOsC,CAAQ,CAFhNs7C,CAA8Br7C,EAAQm7C,GAAuB,GAAItkD,OAAOmI,sBAAuB,CAAE,IAAIs8C,EAAmBzkD,OAAOmI,sBAAsBgB,GAAS,IAAK5J,EAAI,EAAGA,EAAIklD,EAAiBtkD,OAAQZ,IAAOqH,EAAM69C,EAAiBllD,GAAQ+kD,EAASxhD,QAAQ8D,IAAQ,GAAkB5G,OAAOI,UAAUiI,qBAAqB3I,KAAKyJ,EAAQvC,KAAgBsC,EAAOtC,GAAOuC,EAAOvC,GAAQ,CAAE,OAAOsC,CAAQ,CAI3e,SAASw7C,IAA2Q,OAA9PA,EAAW1kD,OAAOC,QAAU,SAAUiJ,GAAU,IAAK,IAAI3J,EAAI,EAAGA,EAAIW,UAAUC,OAAQZ,IAAK,CAAE,IAAI4J,EAASjJ,UAAUX,GAAI,IAAK,IAAIqH,KAAOuC,EAAcnJ,OAAOI,UAAUC,eAAeX,KAAKyJ,EAAQvC,KAAQsC,EAAOtC,GAAOuC,EAAOvC,GAAU,CAAE,OAAOsC,CAAQ,EAAUw7C,EAASnhD,MAAMM,KAAM3D,UAAY,CAE5T,SAASykD,EAAQ35C,EAAQ45C,GAAkB,IAAI77C,EAAO/I,OAAO+I,KAAKiC,GAAS,GAAIhL,OAAOmI,sBAAuB,CAAE,IAAIkB,EAAUrJ,OAAOmI,sBAAsB6C,GAAa45C,IAAgBv7C,EAAUA,EAAQw7C,QAAO,SAAUC,GAAO,OAAO9kD,OAAO2b,yBAAyB3Q,EAAQ85C,GAAKr+C,UAAY,KAAIsC,EAAK+I,KAAKvO,MAAMwF,EAAMM,EAAU,CAAE,OAAON,CAAM,CAEpV,SAASg8C,EAAc77C,GAAU,IAAK,IAAI3J,EAAI,EAAGA,EAAIW,UAAUC,OAAQZ,IAAK,CAAE,IAAI4J,EAAyB,MAAhBjJ,UAAUX,GAAaW,UAAUX,GAAK,CAAC,EAAOA,EAAI,EAAKolD,EAAQ3kD,OAAOmJ,IAAS,GAAMtH,SAAQ,SAAU+E,GAAOkxC,EAAgB5uC,EAAQtC,EAAKuC,EAAOvC,GAAO,IAAe5G,OAAOglD,0BAA6BhlD,OAAOilD,iBAAiB/7C,EAAQlJ,OAAOglD,0BAA0B77C,IAAmBw7C,EAAQ3kD,OAAOmJ,IAAStH,SAAQ,SAAU+E,GAAO5G,OAAOmG,eAAe+C,EAAQtC,EAAK5G,OAAO2b,yBAAyBxS,EAAQvC,GAAO,GAAM,CAAE,OAAOsC,CAAQ,CAErhB,SAAS4uC,EAAgBC,EAAKnxC,EAAKR,GAAiK,OAApJQ,KAAOmxC,EAAO/3C,OAAOmG,eAAe4xC,EAAKnxC,EAAK,CAAER,MAAOA,EAAOK,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkBoxC,EAAInxC,GAAOR,EAAgB2xC,CAAK,CAChN,MAAM3a,EAAe,CACnB8nB,oBAAgB17C,EAEhB27C,eAAW37C,EAEX47C,qBAAiB57C,EAGjBjE,cAAUiE,EAIV67C,iBAAa77C,EAKb87C,YAAQ97C,GAIV,MAAM+7C,UAAgB3N,EAAAA,UACpBlzC,WAAAA,CAAYsF,GAMV,IAAIuc,EALJi/B,MAAMx7C,GAENnG,KAAK4hD,uBAAyB5hD,KAAK4hD,uBAAuBv5C,KAAKrI,MAC/DA,KAAK6hD,+BAAiC7hD,KAAK6hD,+BAA+Bx5C,KAAKrI,MAK7E0iB,EADE1iB,KAAKmG,MAAMk7C,gBAAkBrhD,KAAKmG,MAAMk7C,eAAenlD,QAC3C8D,KAAKmG,MAAMk7C,eAAenlD,QAE1B6E,SAASf,KAAKmG,MAAMk7C,iBAdhB,EAiBpBrhD,KAAKi9B,MAAQ,CACXva,cAEJ,CAEAib,iBAAAA,GACE39B,KAAK4hD,yBAEDljD,QACFA,OAAOS,iBAAiB,SAAUa,KAAK6hD,+BAE3C,CAEAhd,kBAAAA,GACE7kC,KAAK4hD,wBACP,CAEArZ,oBAAAA,GACM7pC,QACFA,OAAOk3C,oBAAoB,SAAU51C,KAAK6hD,+BAE9C,CAEAA,8BAAAA,GACOnjD,QAAWA,OAAO0Q,uBAMnB1Q,OAAO2Q,sBAET3Q,OAAO2Q,qBAAqBrP,KAAK8hD,gCAGnC9hD,KAAK8hD,+BAAiCpjD,OAAO0Q,uBAAsB,KACjEpP,KAAK4hD,wBAAwB,KAV7B5hD,KAAK4hD,wBAYT,CAEAA,sBAAAA,GACE,MAAMG,EAAcrjD,QAAUA,OAAOiQ,YAAcmoC,IACnD,IAAIkL,EAAuBhiD,KAAKmG,MAAMk7C,eAEF,kBAAzBW,IACTA,EAAuB,CACrB9lD,QAAS6E,SAASihD,IA/DF,IAmEpB,IAAIC,EAAoBnL,IACpBn0B,EAAUq/B,EAAqB9lD,SApEf,EAsEpB,IAAK,IAAIgmD,KAAcF,EAAsB,CAC3C,MAAMG,EAAgBphD,SAASmhD,GACHC,EAAgB,GAAKJ,GAAeI,GAErCA,EAAgBF,IACzCA,EAAoBE,EACpBx/B,EAAUq/B,EAAqBE,GAEnC,CAEAv/B,EAAUxhB,KAAKC,IAAI,EAAGL,SAAS4hB,IAAY,GAEvC3iB,KAAKi9B,MAAMva,cAAgBC,GAC7B3iB,KAAKq2C,SAAS,CACZ3zB,YAAaC,GAGnB,CAEAy/B,cAAAA,GACE,MAAMC,EAAqBriD,KAAKi9B,MAAMva,YAChC0/B,EAAiB,IAAIjgD,MAAMkgD,GAE3BC,EAAQvO,EAAAA,SAAe2D,QAAQ13C,KAAKmG,MAAMzE,UAEhD,IAAK,IAAIhG,EAAI,EAAGA,EAAI4mD,EAAMhmD,OAAQZ,IAAK,CACrC,MAAM6mD,EAAc7mD,EAAI2mD,EAEnBD,EAAeG,KAClBH,EAAeG,GAAe,IAGhCH,EAAeG,GAAat0C,KAAKq0C,EAAM5mD,GACzC,CAEA,OAAO0mD,CACT,CAEAI,aAAAA,GACE,MAAM,OACJf,EAAM,YACND,EAAc,CAAC,EAAC,gBAChBD,GACEvhD,KAAKmG,MACHs8C,EAAoBziD,KAAKoiD,iBACzBM,EAAiB,IAAMD,EAAkBnmD,OAA3B,IACpB,IAAIglD,EAAYC,EAEZD,GAAkC,kBAAdA,IACtBthD,KAAK2iD,cAAc,oDAEM,qBAAdrB,IACTA,EAAY,2BAIhB,MAAMsB,EAAmB1B,EAAcA,EAAcA,EAAc,CAAC,EAAGO,GAASD,GAAc,CAAC,EAAG,CAChGhxC,MAAO0wC,EAAcA,EAAc,CAAC,EAAGM,EAAYhxC,OAAQ,CAAC,EAAG,CAC7DlC,MAAOo0C,IAETpB,cAGF,OAAOmB,EAAkBp+C,KAAI,CAACi+C,EAAO5mD,IACfq4C,EAAAA,cAAoB,MAAO8M,EAAS,CAAC,EAAG+B,EAAkB,CAC5E7/C,IAAKrH,IACH4mD,IAER,CAEAK,aAAAA,CAAchP,GACZ90C,QAAQ+oC,MAAM,YAAa+L,EAC7B,CAEA58B,MAAAA,GACE,MAAM8rC,EAAc7iD,KAAKmG,OACnB,SAEJzE,EAAQ,eACR2/C,EAAc,gBACdE,EAAe,YACfC,EAAW,OACXC,EAAM,UAENH,GACEuB,EACEC,EAAOtC,EAAyBqC,EAAa,CAAC,WAAY,iBAAkB,kBAAmB,cAAe,SAAU,cAE9H,IAAIE,EAAkBzB,EAUtB,MARyB,kBAAdA,IACTthD,KAAK2iD,cAAc,8CAEM,qBAAdrB,IACTyB,EAAkB,oBAIFhP,EAAAA,cAAoB,MAAO8M,EAAS,CAAC,EAAGiC,EAAM,CAChExB,UAAWyB,IACT/iD,KAAKwiD,gBACX,EAIFd,EAAQnoB,aAAeA,EAEvB,2/BCnIA,QAlDA,WASI,IAEI+oB,EAAQ,CACR,CAAC3mD,GAAI,EAAGqnD,IAAKC,EAAOC,IAAK,SACzB,CAACvnD,GAAI,EAAGqnD,IAAKG,EAAKD,IAAK,OACvB,CAACvnD,GAAI,EAAGqnD,IAAKI,EAASF,IAAK,WAC3B,CAACvnD,GAAI,EAAGqnD,IAAKK,EAAUH,IAAK,YAC5B,CAACvnD,GAAI,EAAGqnD,IAAKM,EAASJ,IAAK,WAC3B,CAACvnD,GAAI,EAAGqnD,IAAKO,EAAUL,IAAK,YAC5B,CAACvnD,GAAI,EAAGqnD,IAAKQ,EAAgBN,IAAK,kBAClC,CAACvnD,GAAI,EAAGqnD,IAAKS,EAAQP,IAAK,UAC1B,CAACvnD,GAAI,EAAGqnD,IAAKU,EAASR,IAAK,WAC3B,CAACvnD,GAAI,GAAIqnD,IAAKW,EAAOT,IAAK,SAC1B,CAACvnD,GAAI,GAAIqnD,IAAKY,EAAWV,IAAK,aAC9B,CAACvnD,GAAI,GAAIqnD,IAAKa,EAAOX,IAAK,SAC1B,CAACvnD,GAAI,GAAIqnD,IAAKc,EAAOZ,IAAK,SAC1B,CAACvnD,GAAI,GAAIqnD,IAAKe,EAASb,IAAK,WAC5B,CAACvnD,GAAI,GAAIqnD,IAAKgB,EAAUd,IAAK,YAC7B,CAACvnD,GAAI,GAAIqnD,IAAKiB,EAAMf,IAAK,QACzB,CAACvnD,GAAI,GAAIqnD,IAAKkB,EAAMhB,IAAK,QACzB,CAACvnD,GAAI,GAAIqnD,IAAKmB,EAAMjB,IAAK,SAQ/B,OAJIZ,EAAQA,EAAMj+C,KAAI,SAAS+/C,GACzB,OAAOC,EAAAA,EAAAA,KAAA,OAAmBrB,IAAKoB,EAAKpB,IAAKE,IAAKkB,EAAKlB,IAAK50C,MAzB7C,QAyB8DgzC,UAAU,cAAlE8C,EAAKzoD,GACxB,KAGF0oD,EAAAA,EAAAA,KAAA,OAAK/C,UAAU,gBAAe5/C,UAC5B2iD,EAAAA,EAAAA,KAAC3C,EAAO,CACNL,eAtCyB,CAC3BnlD,QAAS,EACT,KAAM,EACN,IAAK,EACL,IAAK,GAmCHolD,UAAU,kBACVC,gBAAgB,yBAAwB7/C,SAEvC4gD,KAIT,ECzBA,QAhDA,WAEE,OACE+B,EAAAA,EAAAA,KAAA,OAAK/C,UAAU,iBAAgB5/C,UAC3B4iD,EAAAA,EAAAA,MAAA,OAAKhD,UAAU,0BAAyB5/C,SAAA,EACpC4iD,EAAAA,EAAAA,MAAA,OAAKhD,UAAU,0CAAyC5/C,SAAA,EACpD2iD,EAAAA,EAAAA,KAAA,MAAA3iD,SAAI,iBACJ2iD,EAAAA,EAAAA,KAAA,KAAA3iD,SAAG,8BAEP2iD,EAAAA,EAAAA,KAAA,OAAK/C,UAAU,YAAW5/C,UAEtB4iD,EAAAA,EAAAA,MAAA,OAAKhD,UAAU,aAAY5/C,SAAA,EACvB2iD,EAAAA,EAAAA,KAAA,KAAG/C,UAAU,sBAAqB5/C,SAAC,cACnC2iD,EAAAA,EAAAA,KAAA,KAAG/C,UAAU,aAAY5/C,SAAC,sCAGlC4iD,EAAAA,EAAAA,MAAA,OAAKhD,UAAU,YAAW5/C,SAAA,EAEtB4iD,EAAAA,EAAAA,MAAA,OAAKhD,UAAU,YAAW5/C,SAAA,EACtB2iD,EAAAA,EAAAA,KAAA,KAAG/C,UAAU,sBAAqB5/C,SAAC,WACnC2iD,EAAAA,EAAAA,KAAA,KAAG/C,UAAU,aAAY5/C,SAAC,wCAE9B4iD,EAAAA,EAAAA,MAAA,OAAKhD,UAAU,YAAW5/C,SAAA,EACtB2iD,EAAAA,EAAAA,KAAA,KAAG/C,UAAU,sBAAqB5/C,SAAC,cACnC2iD,EAAAA,EAAAA,KAAA,KAAG/C,UAAU,aAAY5/C,SAAC,mCAE9B4iD,EAAAA,EAAAA,MAAA,OAAKhD,UAAU,YAAW5/C,SAAA,EACtB2iD,EAAAA,EAAAA,KAAA,KAAG/C,UAAU,sBAAqB5/C,SAAC,cACnC2iD,EAAAA,EAAAA,KAAA,KAAG/C,UAAU,aAAY5/C,SAAC,4BAGlC2iD,EAAAA,EAAAA,KAAA,OAAK/C,UAAU,YAAW5/C,UAEtB4iD,EAAAA,EAAAA,MAAA,OAAKhD,UAAU,YAAW5/C,SAAA,EACtB2iD,EAAAA,EAAAA,KAAA,KAAG/C,UAAU,sBAAqB5/C,SAAC,0BACnC2iD,EAAAA,EAAAA,KAAA,KAAG/C,UAAU,aAAY5/C,SAAC,qCAGlC2iD,EAAAA,EAAAA,KAAA,OAAK/C,UAAU,YAAW5/C,UACtB2iD,EAAAA,EAAAA,KAAA,KAAG/C,UAAU,WAAU5/C,SAAC,mCAOxC,MC1CY6iD,gPAAZ,SAAYA,GAQVA,EAAA,UAOAA,EAAA,YAMAA,EAAA,iBACD,CAtBD,CAAYA,IAAAA,EAsBX,KAqKD,MAAMC,EAAoB,WAySV,SAAAC,EAAUliD,EAAYoxC,GACpC,IAAc,IAAVpxC,GAA6B,OAAVA,GAAmC,qBAAVA,EAC9C,MAAM,IAAIkE,MAAMktC,EAEpB,CAEgB,SAAA+Q,EAAQC,EAAWhR,GACjC,IAAKgR,EAAM,CAEc,qBAAZ9lD,SAAyBA,QAAQg1C,KAAKF,GAEjD,IAME,MAAM,IAAIltC,MAAMktC,EAEjB,CAAC,MAAOr4C,GAAI,CACd,CACH,CASA,SAASspD,EAAgBt+C,EAAoB+3B,GAC3C,MAAO,CACLwmB,IAAKv+C,EAAS22B,MACdl6B,IAAKuD,EAASvD,IACd+hD,IAAKzmB,EAET,CAKM,SAAU0mB,EACdh1C,EACAtK,EACAw3B,EACAl6B,GAcA,YAfA,IAAAk6B,IAAAA,EAAa,MAGD4jB,EAAA,CACVmE,SAA6B,kBAAZj1C,EAAuBA,EAAUA,EAAQi1C,SAC1D53B,OAAQ,GACR63B,KAAM,IACY,kBAAPx/C,EAAkBy/C,EAAUz/C,GAAMA,EAAE,CAC/Cw3B,QAKAl6B,IAAM0C,GAAOA,EAAgB1C,KAAQA,GAjChC5B,KAAKyJ,SAAS1J,SAAS,IAAI8B,OAAO,EAAG,IAoC9C,CAKgB,SAAAmiD,EAAUC,GAIV,IAJW,SACzBJ,EAAW,IAAG,OACd53B,EAAS,GAAE,KACX63B,EAAO,IACOG,EAKd,OAJIh4B,GAAqB,MAAXA,IACZ43B,GAAiC,MAArB53B,EAAOpI,OAAO,GAAaoI,EAAS,IAAMA,GACpD63B,GAAiB,MAATA,IACVD,GAA+B,MAAnBC,EAAKjgC,OAAO,GAAaigC,EAAO,IAAMA,GAC7CD,CACT,CAKM,SAAUE,EAAUG,GACxB,IAAIC,EAA4B,CAAC,EAEjC,GAAID,EAAM,CACR,IAAIE,EAAYF,EAAKpmD,QAAQ,KACzBsmD,GAAa,IACfD,EAAWL,KAAOI,EAAKriD,OAAOuiD,GAC9BF,EAAOA,EAAKriD,OAAO,EAAGuiD,IAGxB,IAAIC,EAAcH,EAAKpmD,QAAQ,KAC3BumD,GAAe,IACjBF,EAAWl4B,OAASi4B,EAAKriD,OAAOwiD,GAChCH,EAAOA,EAAKriD,OAAO,EAAGwiD,IAGpBH,IACFC,EAAWN,SAAWK,EAEzB,CAED,OAAOC,CACT,CASA,SAASG,EACPC,EACAC,EACAC,EACA92C,QAAA,IAAAA,IAAAA,EAA6B,CAAC,GAE9B,IAAI,OAAEpQ,EAASF,SAASizB,YAAY,SAAEo0B,GAAW,GAAU/2C,EACvDg3C,EAAgBpnD,EAAOqnD,QACvBjlB,EAASyjB,EAAOyB,IAChBC,EAA4B,KAE5B5nB,EAAQ6nB,IASZ,SAASA,IAEP,OADYJ,EAAc7oB,OAAS,CAAE6nB,IAAK,OAC7BA,GACf,CAEA,SAASqB,IACPrlB,EAASyjB,EAAOyB,IAChB,IAAII,EAAYF,IACZG,EAAqB,MAAbD,EAAoB,KAAOA,EAAY/nB,EACnDA,EAAQ+nB,EACJH,GACFA,EAAS,CAAEnlB,SAAQx6B,SAAUy/C,EAAQz/C,SAAU+/C,SAEnD,CA+CA,SAASC,EAAU7gD,GAIjB,IAAI4f,EACyB,SAA3B3mB,EAAO4H,SAASigD,OACZ7nD,EAAO4H,SAASigD,OAChB7nD,EAAO4H,SAAS6gB,KAElBA,EAAqB,kBAAP1hB,EAAkBA,EAAK0/C,EAAW1/C,GASpD,OALA0hB,EAAOA,EAAK3mB,QAAQ,KAAM,OAC1BikD,EACEp/B,EACsE,sEAAA8B,GAEjE,IAAIq/B,IAAIr/B,EAAM9B,EACvB,CApFa,MAATgZ,IACFA,EAAQ,EACRynB,EAAcW,aAAY5F,EAAM,GAAAiF,EAAc7oB,MAAO,CAAA6nB,IAAKzmB,IAAS,KAoFrE,IAAI0nB,EAAmB,CACrB,UAAIjlB,GACF,OAAOA,GAET,YAAIx6B,GACF,OAAOo/C,EAAYhnD,EAAQonD,IAE7BY,MAAAA,CAAOlQ,GACL,GAAIyP,EACF,MAAM,IAAIx/C,MAAM,8CAKlB,OAHA/H,EAAOS,iBAAiBqlD,EAAmB2B,GAC3CF,EAAWzP,EAEJ,KACL93C,EAAOk3C,oBAAoB4O,EAAmB2B,GAC9CF,EAAW,IAAI,GAGnBN,WAAWlgD,GACFkgD,EAAWjnD,EAAQ+G,GAE5B6gD,YACAK,cAAAA,CAAelhD,GAEb,IAAI+nB,EAAM84B,EAAU7gD,GACpB,MAAO,CACLu/C,SAAUx3B,EAAIw3B,SACd53B,OAAQI,EAAIJ,OACZ63B,KAAMz3B,EAAIy3B,OAGdh3C,KAlGF,SAAcxI,EAAQw3B,GACpB6D,EAASyjB,EAAOqC,KAChB,IAAItgD,EAAWy+C,EAAegB,EAAQz/C,SAAUb,EAAIw3B,GAChD2oB,GAAkBA,EAAiBt/C,EAAUb,GAEjD44B,EAAQ6nB,IAAa,EACrB,IAAIW,EAAejC,EAAgBt+C,EAAU+3B,GACzC7Q,EAAMu4B,EAAQJ,WAAWr/C,GAG7B,IACEw/C,EAAcgB,UAAUD,EAAc,GAAIr5B,GAC1C,MAAOoa,GAKP,GAAIA,aAAiBmf,cAA+B,mBAAfnf,EAAMlhC,KACzC,MAAMkhC,EAIRlpC,EAAO4H,SAASlK,OAAOoxB,EACxB,CAEGq4B,GAAYI,GACdA,EAAS,CAAEnlB,SAAQx6B,SAAUy/C,EAAQz/C,SAAU+/C,MAAO,GAE1D,EAuEE7lD,QArEF,SAAiBiF,EAAQw3B,GACvB6D,EAASyjB,EAAOyC,QAChB,IAAI1gD,EAAWy+C,EAAegB,EAAQz/C,SAAUb,EAAIw3B,GAChD2oB,GAAkBA,EAAiBt/C,EAAUb,GAEjD44B,EAAQ6nB,IACR,IAAIW,EAAejC,EAAgBt+C,EAAU+3B,GACzC7Q,EAAMu4B,EAAQJ,WAAWr/C,GAC7Bw/C,EAAcW,aAAaI,EAAc,GAAIr5B,GAEzCq4B,GAAYI,GACdA,EAAS,CAAEnlB,SAAQx6B,SAAUy/C,EAAQz/C,SAAU+/C,MAAO,GAE1D,EAyDEY,GAAGxrD,GACMqqD,EAAcmB,GAAGxrD,IAI5B,OAAOsqD,CACT,CC7tBA,IAAYmB,GAAZ,SAAYA,GACVA,EAAA,YACAA,EAAA,oBACAA,EAAA,oBACAA,EAAA,aACD,CALD,CAAYA,IAAAA,EAKX,KAkRiC,IAAIxf,IAAuB,CAC3D,OACA,gBACA,OACA,KACA,QACA,aAoNI,SAAUyf,EAGdC,EACAC,EACAC,GAEA,YAFQ,IAARA,IAAAA,EAAW,KAEJC,EAAgBH,EAAQC,EAAaC,GAAU,EACxD,CAEM,SAAUC,EAGdH,EACAC,EACAC,EACAE,GAEA,IAGIxC,EAAWyC,IAFU,kBAAhBJ,EAA2BnC,EAAUmC,GAAeA,GAEvBrC,UAAY,IAAKsC,GAEvD,GAAgB,MAAZtC,EACF,OAAO,KAGT,IAAI0C,EAAWC,EAAcP,IAmM/B,SAA2BM,GACzBA,EAASE,MAAK,CAACnrD,EAAGI,IAChBJ,EAAEorD,QAAUhrD,EAAEgrD,MACVhrD,EAAEgrD,MAAQprD,EAAEorD,MAyCpB,SAAwBprD,EAAaI,GACnC,IAAIirD,EACFrrD,EAAEH,SAAWO,EAAEP,QAAUG,EAAEiE,MAAM,GAAI,GAAGqnD,OAAM,CAACtsD,EAAGC,IAAMD,IAAMoB,EAAEnB,KAElE,OAAOosD,EAKHrrD,EAAEA,EAAEH,OAAS,GAAKO,EAAEA,EAAEP,OAAS,GAG/B,CACN,CArDQ0rD,CACEvrD,EAAEwrD,WAAW5jD,KAAKyhB,GAASA,EAAKoiC,gBAChCrrD,EAAEorD,WAAW5jD,KAAKyhB,GAASA,EAAKoiC,kBAG1C,CA3MEC,CAAkBT,GAElB,IAAIU,EAAU,KACd,IAAK,IAAI1sD,EAAI,EAAc,MAAX0sD,GAAmB1sD,EAAIgsD,EAASprD,SAAUZ,EAAG,CAO3D,IAAI2sD,EAAUC,GAAWtD,GACzBoD,EAAUG,GACRb,EAAShsD,GACT2sD,EACAb,EAEH,CAED,OAAOY,CACT,CAyCA,SAAST,EAGPP,EACAM,EACAc,EACAC,QAF2C,IAA3Cf,IAAAA,EAA2C,SAC3C,IAAAc,IAAAA,EAA4C,SAClC,IAAVC,IAAAA,EAAa,IAEb,IAAIC,EAAeA,CACjBC,EACAtqB,EACAuqB,KAEA,IAAI9iC,EAAmC,CACrC8iC,kBACmBjjD,IAAjBijD,EAA6BD,EAAMtD,MAAQ,GAAKuD,EAClDC,eAAuC,IAAxBF,EAAME,cACrBX,cAAe7pB,EACfsqB,SAGE7iC,EAAK8iC,aAAaE,WAAW,OAC/BrE,EACE3+B,EAAK8iC,aAAaE,WAAWL,GAC7B,wBAAwB3iC,EAAK8iC,aAA7B,wBACMH,EADN,4GAKF3iC,EAAK8iC,aAAe9iC,EAAK8iC,aAAaloD,MAAM+nD,EAAWnsD,SAGzD,IAAI+oD,EAAO0D,GAAU,CAACN,EAAY3iC,EAAK8iC,eACnCX,EAAaO,EAAYnmD,OAAOyjB,GAKhC6iC,EAAMjnD,UAAYinD,EAAMjnD,SAASpF,OAAS,IAC5CmoD,GAGkB,IAAhBkE,EAAMtqB,MACN,4FACuCgnB,EAAI,MAE7CsC,EAAcgB,EAAMjnD,SAAUgmD,EAAUO,EAAY5C,KAKpC,MAAdsD,EAAMtD,MAAiBsD,EAAMtqB,QAIjCqpB,EAASz5C,KAAK,CACZo3C,OACAwC,MAAOmB,GAAa3D,EAAMsD,EAAMtqB,OAChC4pB,cACA,EAaJ,OAXAb,EAAOppD,SAAQ,CAAC2qD,EAAOtqB,KAAS,IAAA4qB,EAE9B,GAAmB,KAAfN,EAAMtD,MAA0B,OAAX4D,EAACN,EAAMtD,OAAN4D,EAAYp4C,SAAS,KAG7C,IAAK,IAAIq4C,KAAYC,EAAwBR,EAAMtD,MACjDqD,EAAaC,EAAOtqB,EAAO6qB,QAH7BR,EAAaC,EAAOtqB,EAKrB,IAGIqpB,CACT,CAgBA,SAASyB,EAAwB9D,GAC/B,IAAI+D,EAAW/D,EAAKrgD,MAAM,KAC1B,GAAwB,IAApBokD,EAAS9sD,OAAc,MAAO,GAElC,IAAK+sD,KAAUvG,GAAQsG,EAGnBE,EAAaD,EAAME,SAAS,KAE5BC,EAAWH,EAAM7oD,QAAQ,MAAO,IAEpC,GAAoB,IAAhBsiD,EAAKxmD,OAGP,OAAOgtD,EAAa,CAACE,EAAU,IAAM,CAACA,GAGxC,IAAIC,EAAeN,EAAwBrG,EAAKh+C,KAAK,MAEjDuyC,EAAmB,GAqBvB,OAZAA,EAAOppC,QACFw7C,EAAaplD,KAAKqlD,GACP,KAAZA,EAAiBF,EAAW,CAACA,EAAUE,GAAS5kD,KAAK,QAKrDwkD,GACFjS,EAAOppC,QAAQw7C,GAIVpS,EAAOhzC,KAAK6kD,GACjB7D,EAAKyD,WAAW,MAAqB,KAAbI,EAAkB,IAAMA,GAEpD,CAaA,MAAMS,EAAU,YACVC,EAAsB,EACtBC,GAAkB,EAClBC,GAAoB,EACpBC,GAAqB,GACrBC,IAAgB,EAChBC,GAAWttD,GAAoB,MAANA,EAE/B,SAASqsD,GAAa3D,EAAchnB,GAClC,IAAI+qB,EAAW/D,EAAKrgD,MAAM,KACtBklD,EAAed,EAAS9sD,OAS5B,OARI8sD,EAASe,KAAKF,MAChBC,GAAgBF,IAGd3rB,IACF6rB,GAAgBL,IAGXT,EACJpI,QAAQrkD,IAAOstD,GAAQttD,KACvBytD,QACC,CAACvC,EAAOwC,IACNxC,GACC8B,EAAQlpD,KAAK4pD,GACVT,EACY,KAAZS,EACAP,GACAC,KACNG,EAEN,CAiBA,SAAS3B,GAIP+B,EACAtF,EACAwC,QAAY,IAAZA,IAAAA,GAAe,GAEf,IAAI,WAAES,GAAeqC,EAEjBC,EAAgB,CAAC,EACjBC,EAAkB,IAClBpC,EAA2D,GAC/D,IAAK,IAAI1sD,EAAI,EAAGA,EAAIusD,EAAW3rD,SAAUZ,EAAG,CAC1C,IAAIoqB,EAAOmiC,EAAWvsD,GAClB82B,EAAM92B,IAAMusD,EAAW3rD,OAAS,EAChCmuD,EACkB,MAApBD,EACIxF,EACAA,EAAStkD,MAAM8pD,EAAgBluD,SAAW,IAC5Cs3C,EAAQ8W,GACV,CAAErF,KAAMv/B,EAAK8iC,aAAcC,cAAe/iC,EAAK+iC,cAAer2B,OAC9Di4B,GAGE9B,EAAQ7iC,EAAK6iC,MAkBjB,IAfG/U,GACDphB,GACAg1B,IACCS,EAAWA,EAAW3rD,OAAS,GAAGqsD,MAAMtqB,QAEzCuV,EAAQ8W,GACN,CACErF,KAAMv/B,EAAK8iC,aACXC,cAAe/iC,EAAK+iC,cACpBr2B,KAAK,GAEPi4B,KAIC7W,EACH,OAAO,KAGTz3C,OAAOC,OAAOmuD,EAAe3W,EAAM+W,QAEnCvC,EAAQn6C,KAAK,CAEX08C,OAAQJ,EACRvF,SAAU+D,GAAU,CAACyB,EAAiB5W,EAAMoR,WAC5C4F,aAAcC,GACZ9B,GAAU,CAACyB,EAAiB5W,EAAMgX,gBAEpCjC,UAGyB,MAAvB/U,EAAMgX,eACRJ,EAAkBzB,GAAU,CAACyB,EAAiB5W,EAAMgX,eAEvD,CAED,OAAOxC,CACT,CAiHgB,SAAAsC,GAIdI,EACA9F,GAEuB,kBAAZ8F,IACTA,EAAU,CAAEzF,KAAMyF,EAASjC,eAAe,EAAOr2B,KAAK,IAGxD,IAAKu4B,EAASC,GA4ChB,SACE3F,EACAwD,EACAr2B,QADa,IAAbq2B,IAAAA,GAAgB,QACb,IAAHr2B,IAAAA,GAAM,GAENkyB,EACW,MAATW,IAAiBA,EAAKkE,SAAS,MAAQlE,EAAKkE,SAAS,MACrD,eAAelE,EAAf,oCACMA,EAAK7kD,QAAQ,MAAO,MAD1B,qIAGsC6kD,EAAK7kD,QAAQ,MAAO,MAAK,MAGjE,IAAImqD,EAA8B,GAC9BM,EACF,IACA5F,EACG7kD,QAAQ,UAAW,IACnBA,QAAQ,OAAQ,KAChBA,QAAQ,qBAAsB,QAC9BA,QACC,qBACA,CAACjC,EAAW2sD,EAAmB5B,KAC7BqB,EAAO18C,KAAK,CAAEi9C,YAAW5B,WAA0B,MAAdA,IAC9BA,EAAa,eAAiB,gBAIzCjE,EAAKkE,SAAS,MAChBoB,EAAO18C,KAAK,CAAEi9C,UAAW,MACzBD,GACW,MAAT5F,GAAyB,OAATA,EACZ,QACA,qBACG7yB,EAETy4B,GAAgB,QACE,KAAT5F,GAAwB,MAATA,IAQxB4F,GAAgB,iBAKlB,IAAIF,EAAU,IAAItX,OAAOwX,EAAcpC,OAAgBljD,EAAY,KAEnE,MAAO,CAAColD,EAASJ,EACnB,CAjGkCQ,CAC9BL,EAAQzF,KACRyF,EAAQjC,cACRiC,EAAQt4B,KAGNohB,EAAQoR,EAASpR,MAAMmX,GAC3B,IAAKnX,EAAO,OAAO,KAEnB,IAAI4W,EAAkB5W,EAAM,GACxBgX,EAAeJ,EAAgBhqD,QAAQ,UAAW,MAClD4qD,EAAgBxX,EAAMlzC,MAAM,GAuBhC,MAAO,CACLiqD,OAvBmBK,EAAeZ,QAClC,CAAC3R,EAAI2M,EAA6B/mB,KAAS,IAApC,UAAE6sB,EAAS,WAAE5B,GAAYlE,EAG9B,GAAkB,MAAd8F,EAAmB,CACrB,IAAIG,EAAaD,EAAc/sB,IAAU,GACzCusB,EAAeJ,EACZ9pD,MAAM,EAAG8pD,EAAgBluD,OAAS+uD,EAAW/uD,QAC7CkE,QAAQ,UAAW,KACvB,CAED,MAAM+B,EAAQ6oD,EAAc/sB,GAM5B,OAJEoa,EAAKyS,GADH5B,IAAe/mD,OACCoD,GAECpD,GAAS,IAAI/B,QAAQ,OAAQ,KAE3Ci4C,CAAI,GAEb,CAAC,GAKDuM,SAAUwF,EACVI,eACAE,UAEJ,CA2DM,SAAUxC,GAAW/lD,GACzB,IACE,OAAOA,EACJyC,MAAM,KACNX,KAAK7E,GAAM8rD,mBAAmB9rD,GAAGgB,QAAQ,MAAO,SAChDsE,KAAK,KACR,MAAO8iC,GAQP,OAPA8c,GACE,EACA,iBAAiBniD,EAAjB,oHAEeqlC,EAAK,MAGfrlC,CACR,CACH,CAKgB,SAAAklD,GACdzC,EACAsC,GAEA,GAAiB,MAAbA,EAAkB,OAAOtC,EAE7B,IAAKA,EAAStwC,cAAco0C,WAAWxB,EAAS5yC,eAC9C,OAAO,KAKT,IAAI62C,EAAajE,EAASiC,SAAS,KAC/BjC,EAAShrD,OAAS,EAClBgrD,EAAShrD,OACTkvD,EAAWxG,EAAShgC,OAAOumC,GAC/B,OAAIC,GAAyB,MAAbA,EAEP,KAGFxG,EAAStkD,MAAM6qD,IAAe,GACvC,CA2CA,SAASE,GACP9+B,EACA++B,EACAC,EACAtG,GAEA,MACE,qBAAqB14B,EAArB,2CACQ++B,EAAK,YAAa/a,KAAKC,UAC7ByU,GAFF,yCAIQsG,EAJR,2HAOJ,CAyBM,SAAUC,GAEdxD,GACA,OAAOA,EAAQpH,QACb,CAACpN,EAAOvV,IACI,IAAVA,GAAgBuV,EAAM+U,MAAMtD,MAAQzR,EAAM+U,MAAMtD,KAAK/oD,OAAS,GAEpE,CAIgB,SAAAuvD,GAEdzD,EAAc0D,GACd,IAAIC,EAAcH,GAA2BxD,GAK7C,OAAI0D,EACKC,EAAY1nD,KAAI,CAACuvC,EAAOkR,IAC7BA,IAAQiH,EAAYzvD,OAAS,EAAIs3C,EAAMoR,SAAWpR,EAAMgX,eAIrDmB,EAAY1nD,KAAKuvC,GAAUA,EAAMgX,cAC1C,CAKM,SAAUoB,GACdC,EACAC,EACAC,EACAC,GAEA,IAAI3mD,OAFU,IAAd2mD,IAAAA,GAAiB,GAGI,kBAAVH,EACTxmD,EAAKy/C,EAAU+G,IAEfxmD,EAAEo7C,EAAQ,GAAAoL,GAEVxH,GACGh/C,EAAGu/C,WAAav/C,EAAGu/C,SAASn0C,SAAS,KACtC46C,GAAoB,IAAK,WAAY,SAAUhmD,IAEjDg/C,GACGh/C,EAAGu/C,WAAav/C,EAAGu/C,SAASn0C,SAAS,KACtC46C,GAAoB,IAAK,WAAY,OAAQhmD,IAE/Cg/C,GACGh/C,EAAG2nB,SAAW3nB,EAAG2nB,OAAOvc,SAAS,KAClC46C,GAAoB,IAAK,SAAU,OAAQhmD,KAI/C,IAGIF,EAHA8mD,EAAwB,KAAVJ,GAAgC,KAAhBxmD,EAAGu/C,SACjCsH,EAAaD,EAAc,IAAM5mD,EAAGu/C,SAaxC,GAAkB,MAAdsH,EACF/mD,EAAO4mD,MACF,CACL,IAAII,EAAqBL,EAAe5vD,OAAS,EAMjD,IAAK8vD,GAAkBE,EAAWxD,WAAW,MAAO,CAClD,IAAI0D,EAAaF,EAAWtnD,MAAM,KAElC,KAAyB,OAAlBwnD,EAAW,IAChBA,EAAW5rC,QACX2rC,GAAsB,EAGxB9mD,EAAGu/C,SAAWwH,EAAW1nD,KAAK,IAC/B,CAEDS,EAAOgnD,GAAsB,EAAIL,EAAeK,GAAsB,GACvE,CAED,IAAIlH,WAzKsB5/C,EAAQgnD,QAAY,IAAZA,IAAAA,EAAe,KACjD,IACEzH,SAAUsH,EAAU,OACpBl/B,EAAS,GAAE,KACX63B,EAAO,IACS,kBAAPx/C,EAAkBy/C,EAAUz/C,GAAMA,EAEzCu/C,EAAWsH,EACXA,EAAWxD,WAAW,KACpBwD,EAWR,SAAyB1D,EAAsB6D,GAC7C,IAAIrD,EAAWqD,EAAajsD,QAAQ,OAAQ,IAAIwE,MAAM,KAYtD,OAXuB4jD,EAAa5jD,MAAM,KAEzBhH,SAASqsD,IACR,OAAZA,EAEEjB,EAAS9sD,OAAS,GAAG8sD,EAAS9qC,MACb,MAAZ+rC,GACTjB,EAASn7C,KAAKo8C,EACf,IAGIjB,EAAS9sD,OAAS,EAAI8sD,EAAStkD,KAAK,KAAO,GACpD,CAxBQ4nD,CAAgBJ,EAAYG,GAC9BA,EAEJ,MAAO,CACLzH,WACA53B,OAAQu/B,GAAgBv/B,GACxB63B,KAAM2H,GAAc3H,GAExB,CAuJa4H,CAAYpnD,EAAIF,GAGvBunD,EACFR,GAA6B,MAAfA,GAAsBA,EAAW/C,SAAS,KAEtDwD,GACDV,GAA8B,MAAfC,IAAuBH,EAAiB5C,SAAS,KAQnE,OANGlE,EAAKL,SAASuE,SAAS,OACvBuD,IAA4BC,IAE7B1H,EAAKL,UAAY,KAGZK,CACT,OAiBa0D,GAAaiE,GACxBA,EAAMloD,KAAK,KAAKtE,QAAQ,SAAU,KAKvBqqD,GAAqB7F,GAChCA,EAASxkD,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,KAKlCmsD,GAAmBv/B,GAC7BA,GAAqB,MAAXA,EAEPA,EAAO07B,WAAW,KAClB17B,EACA,IAAMA,EAHN,GAQOw/B,GAAiB3H,GAC3BA,GAAiB,MAATA,EAAoBA,EAAK6D,WAAW,KAAO7D,EAAO,IAAMA,EAAzC,GAqDgBx+C,MAqSpC,SAAUwmD,GAAqBrlB,GACnC,OACW,MAATA,GACwB,kBAAjBA,EAAMslB,QACe,kBAArBtlB,EAAMulB,YACa,mBAAnBvlB,EAAMwlB,UACb,SAAUxlB,CAEd,CCp/BA,MAAMylB,GAAgD,CACpD,OACA,MACA,QACA,UAMIC,IAJuB,IAAI5lB,IAC/B2lB,IAG2C,CAC3C,SACGA,KAEuB,IAAI3lB,IAAgB4lB,IAEpB,IAAI5lB,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,MACf,IAAIA,IAAI,CAAC,IAAK,MA8nFlB/mC,OAAO,mPCpvGtC,MAAM4sD,GACXxZ,EAAAA,cAAoD,MAK/C,MAAMyZ,GAAyBzZ,EAAAA,cAEpC,MA8CK,MAAM0Z,GAAoB1Z,EAAAA,cAC/B,MAYK,MAAM2Z,GAAkB3Z,EAAAA,cAC7B,YAaW4Z,GAAe5Z,EAAAA,cAAwC,CAClE6Z,OAAQ,KACRxF,QAAS,GACTyF,aAAa,IAOR,MAAMC,GAAoB/Z,EAAAA,cAAyB,MClFnD,SAASga,KACd,OAA4C,MAArCha,EAAAA,WAAiB2Z,GAC1B,CAYO,SAASM,KAQd,OANED,MADFE,GAAU,GAOHla,EAAAA,WAAiB2Z,IAAiBpnD,QAC3C,CAkDA,SAAS4nD,GACPl4C,GAEe+9B,EAAAA,WAAiB0Z,IAAmBU,QAKjDpa,EAAAA,gBAAsB/9B,EAE1B,CAQO,SAASo4C,KACd,IAAI,YAAEP,GAAgB9Z,EAAAA,WAAiB4Z,IAGvC,OAAOE,EAq4BT,WACE,IAAI,OAAEQ,GAAWC,GAAqBC,GAAeC,mBACjD7yD,EAAK8yD,GAAkBC,GAAoBF,mBAE3CG,EAAY5a,EAAAA,QAAa,GAsB7B,OArBAma,IAA0B,KACxBS,EAAU5+C,SAAU,CAAI,IAGOgkC,EAAAA,aAC/B,SAACtuC,EAAiBqJ,QAAwB,IAAxBA,IAAAA,EAA2B,CAAC,GAKvC6/C,EAAU5+C,UAEG,kBAAPtK,EACT4oD,EAAOO,SAASnpD,GAEhB4oD,EAAOO,SAASnpD,EAAEo7C,GAAA,CAAIgO,YAAalzD,GAAOmT,IAE9C,GACA,CAACu/C,EAAQ1yD,GAIb,CAh6BuBmzD,GAGvB,WAEIf,MADFE,GAAU,GAOV,IAAIc,EAAoBhb,EAAAA,WAAiBwZ,KACrC,SAAEjG,EAAQ,OAAE0H,EAAM,UAAExsD,GAAcuxC,EAAAA,WAAiB0Z,KACnD,QAAErF,GAAYrU,EAAAA,WAAiB4Z,KAC7B3I,SAAUmH,GAAqB6B,KAEjCiB,EAAqBte,KAAKC,UAC5Bse,GAAoB9G,EAAS4G,EAAOlD,uBAGlC6C,EAAY5a,EAAAA,QAAa,GAqD7B,OApDAma,IAA0B,KACxBS,EAAU5+C,SAAU,CAAI,IAGOgkC,EAAAA,aAC/B,SAACtuC,EAAiBqJ,GAKhB,QALwC,IAAxBA,IAAAA,EAA2B,CAAC,IAKvC6/C,EAAU5+C,QAAS,OAExB,GAAkB,kBAAPtK,EAET,YADAjD,EAAUykD,GAAGxhD,GAIf,IAAI4/C,EAAO2G,GACTvmD,EACAkrC,KAAKwe,MAAMF,GACX9C,EACqB,SAArBr9C,EAAQsgD,UASe,MAArBL,GAA0C,MAAbzH,IAC/BjC,EAAKL,SACe,MAAlBK,EAAKL,SACDsC,EACAyB,GAAU,CAACzB,EAAUjC,EAAKL,aAG/Bl2C,EAAQtO,QAAUgC,EAAUhC,QAAUgC,EAAUyL,MACjDo3C,EACAv2C,EAAQmuB,MACRnuB,EAEJ,GACA,CACEw4C,EACA9kD,EACAysD,EACA9C,EACA4C,GAKN,CA1E6CM,EAC7C,CAkKO,SAASC,GACdlI,EACAC,EACAkI,EACAP,GAGEjB,MADFE,GAAU,GAOV,IAAI,UAAEzrD,GAAcuxC,EAAAA,WAAiB0Z,KAC/BrF,QAASoH,GAAkBzb,EAAAA,WAAiB4Z,IAC9C8B,EAAaD,EAAcA,EAAclzD,OAAS,GAClDozD,EAAeD,EAAaA,EAAW9E,OAAS,CAAC,EAEjDgF,GADiBF,GAAaA,EAAWzK,SACpByK,EAAaA,EAAW7E,aAAe,KAC9C6E,GAAcA,EAAW9G,MAqC3C,IAEIriD,EAFAspD,EAAsB5B,KAG1B,GAAI3G,EAAa,KAAAwI,EACf,IAAIC,EACqB,kBAAhBzI,EAA2BnC,EAAUmC,GAAeA,EAGpC,MAAvBsI,IAC4B,OADFE,EACxBC,EAAkB9K,eAAQ,EAA1B6K,EAA4B/G,WAAW6G,KAF3C1B,GAAU,GASV3nD,EAAWwpD,CACb,MACExpD,EAAWspD,EAGb,IAAI5K,EAAW1+C,EAAS0+C,UAAY,IAEhCyF,EAAoBzF,EACxB,GAA2B,MAAvB2K,EAA4B,CAe9B,IAAII,EAAiBJ,EAAmBnvD,QAAQ,MAAO,IAAIwE,MAAM,KAEjEylD,EAAoB,IADLzF,EAASxkD,QAAQ,MAAO,IAAIwE,MAAM,KACdtE,MAAMqvD,EAAezzD,QAAQwI,KAAK,IACvE,CAEA,IAAIsjD,EAAUjB,EAAYC,EAAQ,CAAEpC,SAAUyF,IAmB9C,IAAIuF,EAAkBC,GACpB7H,GACEA,EAAQ/jD,KAAKuvC,GACXz3C,OAAOC,OAAO,CAAC,EAAGw3C,EAAO,CACvB+W,OAAQxuD,OAAOC,OAAO,CAAC,EAAGszD,EAAc9b,EAAM+W,QAC9C3F,SAAU+D,GAAU,CAClB4G,EAEAntD,EAAUmkD,eACNnkD,EAAUmkD,eAAe/S,EAAMoR,UAAUA,SACzCpR,EAAMoR,WAEZ4F,aACyB,MAAvBhX,EAAMgX,aACF+E,EACA5G,GAAU,CACR4G,EAEAntD,EAAUmkD,eACNnkD,EAAUmkD,eAAe/S,EAAMgX,cAAc5F,SAC7CpR,EAAMgX,mBAIxB4E,EACAD,EACAP,GAMF,OAAI3H,GAAe2I,EAEfjc,EAAAA,cAAC2Z,GAAgBtV,SAAQ,CACvB71C,MAAO,CACL+D,SAAQu6C,GAAA,CACNmE,SAAU,IACV53B,OAAQ,GACR63B,KAAM,GACNhoB,MAAO,KACPl6B,IAAK,WACFuD,GAEL4pD,eAAgB3L,EAAeyB,MAGhCgK,GAKAA,CACT,CAEA,SAASG,KACP,IAAIvoB,EA0cC,WAAkC,IAAAwoB,EACvC,IAAIxoB,EAAQmM,EAAAA,WAAiB+Z,IACzB7wB,EAAQozB,GAAmB3B,GAAoB4B,eAC/CC,EAAU9B,GAAkBC,GAAoB4B,eAIpD,QAAc3qD,IAAViiC,EACF,OAAOA,EAIT,OAAO,OAAPwoB,EAAOnzB,EAAMuzB,aAAN,EAAAJ,EAAeG,EACxB,CAvdcE,GACR9c,EAAUsZ,GAAqBrlB,GAC5BA,EAAMslB,OAAU,IAAAtlB,EAAMulB,WACzBvlB,aAAiBnhC,MACjBmhC,EAAM+L,QACNhD,KAAKC,UAAUhJ,GACfL,EAAQK,aAAiBnhC,MAAQmhC,EAAML,MAAQ,KAC/CmpB,EAAY,yBACZC,EAAY,CAAEC,QAAS,SAAUC,gBAAiBH,GAsBtD,OACE3c,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAI,2CACJA,EAAAA,cAAA,MAAIvjC,MAAO,CAAEsgD,UAAW,WAAand,GACpCpM,EAAQwM,EAAAA,cAAA,OAAKvjC,MAAOmgD,GAAYppB,GAAe,KAvBtC,KA2BhB,CAEA,MAAMwpB,GAAsBhd,EAAAA,cAACoc,GAAqB,MAgB3C,MAAMa,WAA4Bjd,EAAAA,UAIvClzC,WAAAA,CAAYsF,GACVw7C,MAAMx7C,GACNnG,KAAKi9B,MAAQ,CACX32B,SAAUH,EAAMG,SAChB2qD,aAAc9qD,EAAM8qD,aACpBrpB,MAAOzhC,EAAMyhC,MAEjB,CAEA,+BAAO7C,CAAyB6C,GAC9B,MAAO,CAAEA,MAAOA,EAClB,CAEA,+BAAOrK,CACLp3B,EACA82B,GAUA,OACEA,EAAM32B,WAAaH,EAAMG,UACD,SAAvB22B,EAAMg0B,cAAkD,SAAvB9qD,EAAM8qD,aAEjC,CACLrpB,MAAOzhC,EAAMyhC,MACbthC,SAAUH,EAAMG,SAChB2qD,aAAc9qD,EAAM8qD,cAQjB,CACLrpB,WAAuBjiC,IAAhBQ,EAAMyhC,MAAsBzhC,EAAMyhC,MAAQ3K,EAAM2K,MACvDthC,SAAU22B,EAAM32B,SAChB2qD,aAAc9qD,EAAM8qD,cAAgBh0B,EAAMg0B,aAE9C,CAEApnB,iBAAAA,CAAkBjC,EAAYspB,GAC5BryD,QAAQ+oC,MACN,wDACAA,EACAspB,EAEJ,CAEAn6C,MAAAA,GACE,YAA4BpR,IAArB3F,KAAKi9B,MAAM2K,MAChBmM,EAAAA,cAAC4Z,GAAavV,SAAQ,CAAC71C,MAAOvC,KAAKmG,MAAMgrD,cACvCpd,EAAAA,cAAC+Z,GAAkB1V,SAAQ,CACzB71C,MAAOvC,KAAKi9B,MAAM2K,MAClBlmC,SAAU1B,KAAKmG,MAAMirD,aAIzBpxD,KAAKmG,MAAMzE,QAEf,EASF,SAAS2vD,GAAajM,GAAwD,IAAvD,aAAE+L,EAAY,MAAEvd,EAAK,SAAElyC,GAA8B0jD,EACtE2J,EAAoBhb,EAAAA,WAAiBwZ,IAazC,OAREwB,GACAA,EAAkBZ,QAClBY,EAAkBuC,gBACjB1d,EAAM+U,MAAM4I,cAAgB3d,EAAM+U,MAAM6I,iBAEzCzC,EAAkBuC,cAAcG,2BAA6B7d,EAAM+U,MAAMhtD,IAIzEo4C,EAAAA,cAAC4Z,GAAavV,SAAQ,CAAC71C,MAAO4uD,GAC3BzvD,EAGP,CAEO,SAASuuD,GACd7H,EACAoH,EACAD,EACAP,GAC2B,IAAA0C,EAC3B,QAJ2B,IAA3BlC,IAAAA,EAA8B,SACc,IAA5CD,IAAAA,EAA+C,WACX,IAApCP,IAAAA,EAAuC,MAExB,MAAX5G,EAAiB,KAAAuJ,EACnB,IAAKpC,EACH,OAAO,KAGT,GAAIA,EAAgBiB,OAGlBpI,EAAUmH,EAAgBnH,YACrB,MACL,OAAAuJ,EAAA3C,IAAA2C,EAAQC,qBACiB,IAAzBpC,EAAclzD,SACbizD,EAAgBsC,aACjBtC,EAAgBnH,QAAQ9rD,OAAS,GAUjC,OAAO,KAFP8rD,EAAUmH,EAAgBnH,OAG5B,CACF,CAEA,IAAI4H,EAAkB5H,EAGlBoI,EAAS,OAAHkB,EAAGnC,QAAA,EAAAmC,EAAiBlB,OAC9B,GAAc,MAAVA,EAAgB,CAClB,IAAIsB,EAAa9B,EAAgB+B,WAC9Bj2D,GAAMA,EAAE6sD,MAAMhtD,SAA+BgK,KAAnB,MAAN6qD,OAAM,EAANA,EAAS10D,EAAE6sD,MAAMhtD,OAGtCm2D,GAAc,GADhB7D,GAAU,GAMV+B,EAAkBA,EAAgBtvD,MAChC,EACAS,KAAKE,IAAI2uD,EAAgB1zD,OAAQw1D,EAAa,GAElD,CAIA,IAAIE,GAAiB,EACjBC,GAAiB,EACrB,GAAI1C,GAAmBP,GAAUA,EAAO4C,oBACtC,IAAK,IAAIl2D,EAAI,EAAGA,EAAIs0D,EAAgB1zD,OAAQZ,IAAK,CAC/C,IAAIk4C,EAAQoc,EAAgBt0D,GAM5B,IAJIk4C,EAAM+U,MAAMuJ,iBAAmBte,EAAM+U,MAAMwJ,0BAC7CF,EAAgBv2D,GAGdk4C,EAAM+U,MAAMhtD,GAAI,CAClB,IAAI,WAAEy2D,EAAU,OAAE5B,GAAWjB,EACzB8C,EACFze,EAAM+U,MAAM2J,aACmB3sD,IAA/BysD,EAAWxe,EAAM+U,MAAMhtD,OACrB60D,QAAqC7qD,IAA3B6qD,EAAO5c,EAAM+U,MAAMhtD,KACjC,GAAIi4C,EAAM+U,MAAMnQ,MAAQ6Z,EAAkB,CAIxCL,GAAiB,EAEfhC,EADEiC,GAAiB,EACDjC,EAAgBtvD,MAAM,EAAGuxD,EAAgB,GAEzC,CAACjC,EAAgB,IAErC,KACF,CACF,CACF,CAGF,OAAOA,EAAgBuC,aAAY,CAAC3E,EAAQha,EAAOvV,KAEjD,IAAIuJ,EACA4qB,GAA8B,EAC9BjB,EAAuC,KACvCY,EAAiD,KA0VzD,IAAqBpvD,EAzVbwsD,IACF3nB,EAAQ4oB,GAAU5c,EAAM+U,MAAMhtD,GAAK60D,EAAO5c,EAAM+U,MAAMhtD,SAAMgK,EAC5D4rD,EAAe3d,EAAM+U,MAAM4I,cAAgBR,GAEvCiB,IACEC,EAAgB,GAAe,IAAV5zB,GAoVZt7B,EAlVT,kBACA,GAkVI0vD,GAAc1vD,KAC1B0vD,GAAc1vD,IAAO,GAhVfyvD,GAA8B,EAC9BL,EAAyB,MAChBF,IAAkB5zB,IAC3Bm0B,GAA8B,EAC9BL,EAAyBve,EAAM+U,MAAMwJ,wBAA0B,QAKrE,IAAI/J,EAAUoH,EAAcntD,OAAO2tD,EAAgBtvD,MAAM,EAAG29B,EAAQ,IAChEq0B,EAAcA,KAChB,IAAIhxD,EAkBJ,OAhBEA,EADEkmC,EACS2pB,EACFiB,EACEL,EACFve,EAAM+U,MAAM/3C,UAOVmjC,EAAAA,cAACH,EAAM+U,MAAM/3C,UAAS,MACxBgjC,EAAM+U,MAAMnhD,QACVosC,EAAM+U,MAAMnhD,QAEZomD,EAGX7Z,EAAAA,cAACsd,GAAa,CACZzd,MAAOA,EACPud,aAAc,CACZvD,SACAxF,UACAyF,YAAgC,MAAnB0B,GAEf7tD,SAAUA,GACV,EAMN,OAAO6tD,IACJ3b,EAAM+U,MAAM6I,eAAiB5d,EAAM+U,MAAM4I,cAA0B,IAAVlzB,GAC1D0V,EAAAA,cAACid,GAAmB,CAClB1qD,SAAUipD,EAAgBjpD,SAC1B2qD,aAAc1B,EAAgB0B,aAC9BG,UAAWG,EACX3pB,MAAOA,EACPlmC,SAAUgxD,IACVvB,aAAc,CAAEvD,OAAQ,KAAMxF,UAASyF,aAAa,KAGtD6E,GACD,GACA,KACL,CAAC,IAEInE,GAAc,SAAdA,GAAc,OAAdA,EAAc,wBAAdA,EAAc,gCAAdA,EAAc,gCAAdA,CAAc,EAAdA,IAAc,IAMdG,GAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,wBAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,wCAAnBA,EAAmB,wBAAnBA,EAAmB,gCAAnBA,EAAmB,gCAAnBA,EAAmB,wBAAnBA,CAAmB,EAAnBA,IAAmB,IAmBxB,SAASJ,GAAqBqE,GAC5B,IAAIC,EAAM7e,EAAAA,WAAiBwZ,IAE3B,OADUqF,GAAV3E,GAAU,GACH2E,CACT,CAEA,SAASvC,GAAmBsC,GAC1B,IAAI11B,EAAQ8W,EAAAA,WAAiByZ,IAE7B,OADUvwB,GAAVgxB,GAAU,GACHhxB,CACT,CASA,SAASwxB,GAAkBkE,GACzB,IAAIhK,EARN,WACE,IAAIA,EAAQ5U,EAAAA,WAAiB4Z,IAE7B,OADUhF,GAAVsF,GAAU,GACHtF,CACT,CAIckK,GACRC,EAAYnK,EAAMP,QAAQO,EAAMP,QAAQ9rD,OAAS,GAKrD,OAHEw2D,EAAUnK,MAAMhtD,IADlBsyD,GAAU,GAIH6E,EAAUnK,MAAMhtD,EACzB,CA4NA,MAAM82D,GAAyC,CAAC,ECngCpB1e,EAAsB,gBAyS3C,SAASgf,GAAMC,GACpB/E,GAAU,EAKZ,CAqBO,SAASgF,GAAMC,GAQqB,IAPzC5L,SAAU6L,EAAe,IAAG,SAC5BzxD,EAAW,KACX4E,SAAU8sD,EAAY,eACtBlD,EAAiB3L,EAAeyB,IAAG,UACnCxjD,EACA2rD,OAAQkF,GAAa,EAAK,OAC1BrE,GACYkE,EAETnF,MADHE,GAAU,GAQV,IAAI3G,EAAW6L,EAAa3yD,QAAQ,OAAQ,KACxC8yD,EAAoBvf,EAAAA,SACtB,KAAM,CACJuT,WACA9kD,YACA2rD,OAAQkF,EACRrE,OAAMnO,GAAA,CACJiL,sBAAsB,GACnBkD,MAGP,CAAC1H,EAAU0H,EAAQxsD,EAAW6wD,IAGJ,kBAAjBD,IACTA,EAAelO,EAAUkO,IAG3B,IAAI,SACFpO,EAAW,IAAG,OACd53B,EAAS,GAAE,KACX63B,EAAO,GAAE,MACThoB,EAAQ,KAAI,IACZl6B,EAAM,WACJqwD,EAEAG,EAAkBxf,EAAAA,SAAc,KAClC,IAAIyf,EAAmB/L,GAAczC,EAAUsC,GAE/C,OAAwB,MAApBkM,EACK,KAGF,CACLltD,SAAU,CACR0+C,SAAUwO,EACVpmC,SACA63B,OACAhoB,QACAl6B,OAEFmtD,iBACD,GACA,CAAC5I,EAAUtC,EAAU53B,EAAQ63B,EAAMhoB,EAAOl6B,EAAKmtD,IASlD,OAAuB,MAAnBqD,EACK,KAIPxf,EAAAA,cAAC0Z,GAAkBrV,SAAQ,CAAC71C,MAAO+wD,GACjCvf,EAAAA,cAAC2Z,GAAgBtV,SAAQ,CAAC12C,SAAUA,EAAUa,MAAOgxD,IAG3D,CAaO,SAASE,GAAMC,GAGqB,IAHpB,SACrBhyD,EAAQ,SACR4E,GACYotD,EACZ,ODnKOpE,GCmKUqE,GAAyBjyD,GAAW4E,EACvD,CAuC4B,IAAI21C,SAAQ,SAEPlI,EAAAA,UAkH1B,SAAS4f,GACdjyD,EACA+mD,QAAoB,IAApBA,IAAAA,EAAuB,IAEvB,IAAIrB,EAAwB,GA6D5B,OA3DArT,EAAAA,SAAe/1C,QAAQ0D,GAAU,CAAC8F,EAAS62B,KACzC,IAAK0V,EAAAA,eAAqBvsC,GAGxB,OAGF,IAAIosD,EAAW,IAAInL,EAAYpqB,GAE/B,GAAI72B,EAAQsK,OAASiiC,EAAAA,SAMnB,YAJAqT,EAAOn5C,KAAKvO,MACV0nD,EACAuM,GAAyBnsD,EAAQrB,MAAMzE,SAAUkyD,IAMnDpsD,EAAQsK,OAASihD,IADnB9E,GAAU,GAQPzmD,EAAQrB,MAAMk4B,OAAU72B,EAAQrB,MAAMzE,UADzCusD,GAAU,GAKV,IAAItF,EAAqB,CACvBhtD,GAAI6L,EAAQrB,MAAMxK,IAAMi4D,EAAS9uD,KAAK,KACtC+jD,cAAerhD,EAAQrB,MAAM0iD,cAC7BrhD,QAASA,EAAQrB,MAAMqB,QACvBoJ,UAAWpJ,EAAQrB,MAAMyK,UACzBytB,MAAO72B,EAAQrB,MAAMk4B,MACrBgnB,KAAM79C,EAAQrB,MAAMk/C,KACpBiN,OAAQ9qD,EAAQrB,MAAMmsD,OACtBxxB,OAAQt5B,EAAQrB,MAAM26B,OACtBywB,aAAc/pD,EAAQrB,MAAMorD,aAC5BC,cAAehqD,EAAQrB,MAAMqrD,cAC7BqC,iBACiC,MAA/BrsD,EAAQrB,MAAMqrD,eACgB,MAA9BhqD,EAAQrB,MAAMorD,aAChBuC,iBAAkBtsD,EAAQrB,MAAM2tD,iBAChCC,OAAQvsD,EAAQrB,MAAM4tD,OACtBvb,KAAMhxC,EAAQrB,MAAMqyC,MAGlBhxC,EAAQrB,MAAMzE,WAChBinD,EAAMjnD,SAAWiyD,GACfnsD,EAAQrB,MAAMzE,SACdkyD,IAIJxM,EAAOn5C,KAAK06C,EAAM,IAGbvB,CACT,CC7oBgB,SAAA4M,GACd30D,GAEA,YAFA,IAAAA,IAAAA,EAA4B,IAErB,IAAI40D,gBACO,kBAAT50D,GACP8C,MAAM0X,QAAQxa,IACdA,aAAgB40D,gBACZ50D,EACAlD,OAAO+I,KAAK7F,GAAM+qD,QAAO,CAAC3R,EAAM11C,KAC9B,IAAIR,EAAQlD,EAAK0D,GACjB,OAAO01C,EAAKp2C,OACVF,MAAM0X,QAAQtX,GAASA,EAAM8B,KAAK7E,GAAM,CAACuD,EAAKvD,KAAM,CAAC,CAACuD,EAAKR,IAC5D,GACA,IAEX,CA4IgD,IAAImlC,IAAI,CACtD,oCACA,sBACA,eCeF,IACEhpC,OAAOw1D,qBAHT,GAIC,CAAC,MAAO54D,IACP,CAgJiE,IAAI6gB,IAkCvE,MACMg4C,GAAsBpgB,EAAsB,gBAE5BqgB,EAAmB,UAEvBrgB,EAAY,MA4VxB,SAAUsgB,GAAaC,GAKR,IALS,SAC5BhN,EAAQ,SACR5lD,EAAQ,OACRstD,EAAM,OACNtwD,GACmB41D,EACfC,EAAaxgB,EAAAA,SP7aH,IACdjlC,EO6a0B,MAAtBylD,EAAWxkD,UACbwkD,EAAWxkD,cP9ab,KAAAjB,EO8a4C,CAAEpQ,SAAQmnD,UAAU,MP9ahE/2C,EAAiC,CAAC,GAoB3B22C,GAlBP,SACE/mD,EACAonD,GAEA,IAAI,SAAEd,EAAQ,OAAE53B,EAAM,KAAE63B,GAASvmD,EAAO4H,SACxC,OAAOy+C,EACL,GACA,CAAEC,WAAU53B,SAAQ63B,QAEnBa,EAAc7oB,OAAS6oB,EAAc7oB,MAAM4nB,KAAQ,KACnDiB,EAAc7oB,OAAS6oB,EAAc7oB,MAAMl6B,KAAQ,UAExD,IAEA,SAA2BrE,EAAgB+G,GACzC,MAAqB,kBAAPA,EAAkBA,EAAK0/C,EAAW1/C,EAClD,GAKE,KACAqJ,KOyZF,IAAIi3C,EAAUwO,EAAWxkD,SACpBktB,EAAOu3B,GAAgBzgB,EAAAA,SAAe,CACzCjT,OAAQilB,EAAQjlB,OAChBx6B,SAAUy/C,EAAQz/C,YAEhB,mBAAEmuD,GAAuBzF,GAAU,CAAC,EACpC3Y,EAAWtC,EAAAA,aACZ2gB,IACCD,GAAsBN,GAClBA,IAAoB,IAAMK,EAAaE,KACvCF,EAAaE,EAAS,GAE5B,CAACF,EAAcC,IAKjB,OAFA1gB,EAAAA,iBAAsB,IAAMgS,EAAQW,OAAOrQ,IAAW,CAAC0P,EAAS1P,IAG9DtC,EAAAA,cAACkf,GAAM,CACL3L,SAAUA,EACV5lD,SAAUA,EACV4E,SAAU22B,EAAM32B,SAChB4pD,eAAgBjzB,EAAM6D,OACtBt+B,UAAWujD,EACXiJ,OAAQA,GAGd,CAsHoB,qBAAXtwD,QACoB,qBAApBA,OAAOF,UACPE,OAAOF,SAASiS,cAyazB,IAAK89C,GAQAG,GA+FC,SAAUiG,GACdC,GAUA,IAAIC,EAAyB9gB,EAAAA,OAAaigB,GAAmBY,IACzDE,EAAwB/gB,EAAAA,QAAa,GAErCztC,EAAW0nD,KACX+G,EAAehhB,EAAAA,SACjB,IDh3CY,SACdihB,EACAC,GAEA,IAAIF,EAAef,GAAmBgB,GAiBtC,OAfIC,GAMFA,EAAoBj3D,SAAQ,CAACO,EAAGwE,KACzBgyD,EAAan2C,IAAI7b,IACpBkyD,EAAoBC,OAAOnyD,GAAK/E,SAASuE,IACvCwyD,EAAaI,OAAOpyD,EAAKR,EAAM,GAElC,IAIEwyD,CACT,CC81CMK,CACE9uD,EAAS8mB,OACT0nC,EAAsB/kD,QAAU,KAAO8kD,EAAuB9kD,UAElE,CAACzJ,EAAS8mB,SAGRwhC,EAAWR,KACXiH,EAAkBthB,EAAAA,aACpB,CAACuhB,EAAUC,KACT,MAAMC,EAAkBxB,GACF,oBAAbsB,EAA0BA,EAASP,GAAgBO,GAE5DR,EAAsB/kD,SAAU,EAChC6+C,EAAS,IAAM4G,EAAiBD,EAAgB,GAElD,CAAC3G,EAAUmG,IAGb,MAAO,CAACA,EAAcM,EACxB,EA/IA,SAAK9G,GACHA,EAAA,4CACAA,EAAA,sBACAA,EAAA,oCACAA,EAAA,wBACAA,EAAA,+CACD,EAND,CAAKA,KAAAA,GAMJ,KAED,SAAKG,GACHA,EAAA,wBACAA,EAAA,0BACAA,EAAA,2CACD,CAJD,CAAKA,KAAAA,GAIJ,sLC31CG+G,GACM,iBADNA,GAEM,iBAFNA,GAGO,kBAGPC,GAAY,CACZC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,KAAM,OACNC,SAAU,WACVC,OAAQ,SACRC,MAAO,QACPC,MAAO,SAOPC,IAJkBl6D,OAAO+I,KAAKwwD,IAAWrxD,KAAI,SAAUqC,GACvD,OAAOgvD,GAAUhvD,EACrB,IAGa,WADT2vD,GAEU,UAFVA,GAGM,OAHNA,GAIW,aAJXA,GAKY,YALZA,GAMW,WANXA,GAOM,OAPNA,GAQU,WARVA,GASK,MATLA,GAUK,MAVLA,GAWQ,SAGRC,GAAgB,CAChBC,UAAW,YACXC,QAAS,UACTC,MAAO,YACPC,gBAAiB,kBACjBC,YAAa,cACb,aAAc,YACdC,SAAU,WACVC,SAAU,YAGVC,GACe,eADfA,GAEO,QAFPA,GAG2B,0BAH3BA,GAIwB,sBAJxBA,GAKgB,gBAGhBC,GAAe56D,OAAO+I,KAAKoxD,IAAelM,QAAO,SAAUlW,EAAKnxC,GAEhE,OADAmxC,EAAIoiB,GAAcvzD,IAAQA,EACnBmxC,CACX,GAAG,CAAC,GAEA8iB,GAAoB,CAACtB,GAAUO,SAAUP,GAAUQ,OAAQR,GAAUS,OAErEc,GAAmB,oBAEnBC,GAA4B,oBAAXv2D,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUszC,GAC5F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAyB,oBAAXvzC,QAAyBuzC,EAAIrzC,cAAgBF,QAAUuzC,IAAQvzC,OAAOpE,UAAY,gBAAkB23C,CAC3H,EAQIijB,GAAc,WAChB,SAAS/V,EAAiB/7C,EAAQc,GAChC,IAAK,IAAIzK,EAAI,EAAGA,EAAIyK,EAAM7J,OAAQZ,IAAK,CACrC,IAAIs/C,EAAa70C,EAAMzK,GACvBs/C,EAAWp4C,WAAao4C,EAAWp4C,aAAc,EACjDo4C,EAAWn4C,cAAe,EACtB,UAAWm4C,IAAYA,EAAWl4C,UAAW,GACjD3G,OAAOmG,eAAe+C,EAAQ21C,EAAWj4C,IAAKi4C,EAChD,CACF,CAEA,OAAO,SAAUoc,EAAaC,EAAYC,GAGxC,OAFID,GAAYjW,EAAiBgW,EAAY76D,UAAW86D,GACpDC,GAAalW,EAAiBgW,EAAaE,GACxCF,CACT,CACF,CAhBkB,GAkBdvW,GAAW1kD,OAAOC,QAAU,SAAUiJ,GACxC,IAAK,IAAI3J,EAAI,EAAGA,EAAIW,UAAUC,OAAQZ,IAAK,CACzC,IAAI4J,EAASjJ,UAAUX,GAEvB,IAAK,IAAIqH,KAAOuC,EACVnJ,OAAOI,UAAUC,eAAeX,KAAKyJ,EAAQvC,KAC/CsC,EAAOtC,GAAOuC,EAAOvC,GAG3B,CAEA,OAAOsC,CACT,EAkBIkyD,GAA0B,SAAUrjB,EAAKhvC,GAC3C,IAAIG,EAAS,CAAC,EAEd,IAAK,IAAI3J,KAAKw4C,EACRhvC,EAAKjG,QAAQvD,IAAM,GAClBS,OAAOI,UAAUC,eAAeX,KAAKq4C,EAAKx4C,KAC/C2J,EAAO3J,GAAKw4C,EAAIx4C,IAGlB,OAAO2J,CACT,EAUImyD,GAA0B,SAAiCC,GAG3D,OAAe,OAFFp7D,UAAUC,OAAS,QAAsBqJ,IAAjBtJ,UAAU,KAAmBA,UAAU,IAGjEqI,OAAO+yD,GAGX/yD,OAAO+yD,GAAKj3D,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,SAChI,EAEIk3D,GAAwB,SAA+BC,GACvD,IAAIC,EAAiBC,GAAqBF,EAAWjC,GAAUU,OAC3D0B,EAAoBD,GAAqBF,EAAWb,IAExD,GAAIgB,GAAqBF,EAErB,OAAOE,EAAkBt3D,QAAQ,OAAO,WACpC,OAAO2B,MAAM0X,QAAQ+9C,GAAkBA,EAAe9yD,KAAK,IAAM8yD,CACrE,IAGJ,IAAIG,EAAwBF,GAAqBF,EAAWb,IAE5D,OAAOc,GAAkBG,QAAyBpyD,CACtD,EAEIqyD,GAAyB,SAAgCL,GACzD,OAAOE,GAAqBF,EAAWb,KAAwC,WAAa,CAChG,EAEImB,GAA6B,SAAoCC,EAASP,GAC1E,OAAOA,EAAU3W,QAAO,SAAU76C,GAC9B,MAAiC,qBAAnBA,EAAM+xD,EACxB,IAAG7zD,KAAI,SAAU8B,GACb,OAAOA,EAAM+xD,EACjB,IAAG9N,QAAO,SAAU+N,EAAUpoD,GAC1B,OAAO8wC,GAAS,CAAC,EAAGsX,EAAUpoD,EAClC,GAAG,CAAC,EACR,EAEIqoD,GAA0B,SAAiCC,EAAmBV,GAC9E,OAAOA,EAAU3W,QAAO,SAAU76C,GAC9B,MAAwC,qBAA1BA,EAAMuvD,GAAUC,KAClC,IAAGtxD,KAAI,SAAU8B,GACb,OAAOA,EAAMuvD,GAAUC,KAC3B,IAAG2C,UAAUlO,QAAO,SAAUmO,EAAkBphD,GAC5C,IAAKohD,EAAiBj8D,OAGlB,IAFA,IAAI4I,EAAO/I,OAAO+I,KAAKiS,GAEdzb,EAAI,EAAGA,EAAIwJ,EAAK5I,OAAQZ,IAAK,CAClC,IACI88D,EADetzD,EAAKxJ,GACiBgZ,cAEzC,IAA0D,IAAtD2jD,EAAkBp5D,QAAQu5D,IAAiCrhD,EAAIqhD,GAC/D,OAAOD,EAAiBl2D,OAAO8U,EAEvC,CAGJ,OAAOohD,CACX,GAAG,GACP,EAEIE,GAAuB,SAA8Bz0D,EAASq0D,EAAmBV,GAEjF,IAAIe,EAAmB,CAAC,EAExB,OAAOf,EAAU3W,QAAO,SAAU76C,GAC9B,QAAIhE,MAAM0X,QAAQ1T,EAAMnC,MAGM,qBAAnBmC,EAAMnC,IACb6vC,GAAK,WAAa7vC,EAAU,mDAAwDkzD,GAAQ/wD,EAAMnC,IAAY,MAE3G,EACX,IAAGK,KAAI,SAAU8B,GACb,OAAOA,EAAMnC,EACjB,IAAGs0D,UAAUlO,QAAO,SAAUuO,EAAcC,GACxC,IAAIC,EAAmB,CAAC,EAExBD,EAAa5X,QAAO,SAAU7pC,GAG1B,IAFA,IAAI2hD,OAAsB,EACtB5zD,EAAO/I,OAAO+I,KAAKiS,GACdzb,EAAI,EAAGA,EAAIwJ,EAAK5I,OAAQZ,IAAK,CAClC,IAAIq9D,EAAe7zD,EAAKxJ,GACpB88D,EAAwBO,EAAarkD,eAGiB,IAAtD2jD,EAAkBp5D,QAAQu5D,IAAmCM,IAAwBzC,IAAiE,cAA3Cl/C,EAAI2hD,GAAqBpkD,eAAoC8jD,IAA0BnC,IAAmE,eAA7Cl/C,EAAIqhD,GAAuB9jD,gBACnPokD,EAAsBN,IAGuB,IAA7CH,EAAkBp5D,QAAQ85D,IAAyBA,IAAiB1C,IAA6B0C,IAAiB1C,IAA2B0C,IAAiB1C,KAC9JyC,EAAsBC,EAE9B,CAEA,IAAKD,IAAwB3hD,EAAI2hD,GAC7B,OAAO,EAGX,IAAIv2D,EAAQ4U,EAAI2hD,GAAqBpkD,cAUrC,OARKgkD,EAAiBI,KAClBJ,EAAiBI,GAAuB,CAAC,GAGxCD,EAAiBC,KAClBD,EAAiBC,GAAuB,CAAC,IAGxCJ,EAAiBI,GAAqBv2D,KACvCs2D,EAAiBC,GAAqBv2D,IAAS,GACxC,EAIf,IAAG+1D,UAAUt6D,SAAQ,SAAUmZ,GAC3B,OAAOwhD,EAAa1qD,KAAKkJ,EAC7B,IAIA,IADA,IAAIjS,EAAO/I,OAAO+I,KAAK2zD,GACdn9D,EAAI,EAAGA,EAAIwJ,EAAK5I,OAAQZ,IAAK,CAClC,IAAIq9D,EAAe7zD,EAAKxJ,GACpBs9D,EAAWC,KAAa,CAAC,EAAGP,EAAiBK,GAAeF,EAAiBE,IAEjFL,EAAiBK,GAAgBC,CACrC,CAEA,OAAOL,CACX,GAAG,IAAIL,SACX,EAEIT,GAAuB,SAA8BF,EAAWuB,GAChE,IAAK,IAAIx9D,EAAIi8D,EAAUr7D,OAAS,EAAGZ,GAAK,EAAGA,IAAK,CAC5C,IAAIyK,EAAQwxD,EAAUj8D,GAEtB,GAAIyK,EAAM3J,eAAe08D,GACrB,OAAO/yD,EAAM+yD,EAErB,CAEA,OAAO,IACX,EAoBIC,GAAc,WACd,IAAIC,EAAQ93D,KAAKC,MAEjB,OAAO,SAAU+5B,GACb,IAAI+9B,EAAc/3D,KAAKC,MAEnB83D,EAAcD,EAAQ,IACtBA,EAAQC,EACR/9B,EAAS+9B,IAETz5D,YAAW,WACPu5D,GAAY79B,EAChB,GAAG,EAEX,CACJ,CAfkB,GAiBdg+B,GAAc,SAAqB39D,GACnC,OAAOoE,aAAapE,EACxB,EAEIyT,GAA0C,qBAAX1Q,OAAyBA,OAAO0Q,uBAAyB1Q,OAAO0Q,sBAAsB/G,KAAK3J,SAAWA,OAAO66D,6BAA+B76D,OAAO86D,0BAA4BL,GAAcM,EAAAA,EAAOrqD,uBAAyB+pD,GAE5P9pD,GAAyC,qBAAX3Q,OAAyBA,OAAO2Q,sBAAwB3Q,OAAOg7D,4BAA8Bh7D,OAAOi7D,yBAA2BL,GAAcG,EAAAA,EAAOpqD,sBAAwBiqD,GAE1MzlB,GAAO,SAAc+lB,GACrB,OAAO/6D,SAAmC,oBAAjBA,QAAQg1C,MAAuBh1C,QAAQg1C,KAAK+lB,EACzE,EAEIC,GAAkB,KAmBlBC,GAAmB,SAA0BpF,EAAU1+C,GACvD,IAAI+jD,EAAUrF,EAASqF,QACnBC,EAAiBtF,EAASsF,eAC1BC,EAAiBvF,EAASuF,eAC1BC,EAAWxF,EAASwF,SACpBC,EAAWzF,EAASyF,SACpBC,EAAe1F,EAAS0F,aACxBC,EAAsB3F,EAAS2F,oBAC/BC,EAAa5F,EAAS4F,WACtBC,EAAY7F,EAAS6F,UACrBC,EAAQ9F,EAAS8F,MACjBC,EAAkB/F,EAAS+F,gBAE/BC,GAAiBhF,GAAUE,KAAMoE,GACjCU,GAAiBhF,GAAUI,KAAMmE,GAEjCU,GAAYH,EAAOC,GAEnB,IAAIG,EAAa,CACbb,QAASc,GAAWnF,GAAUC,KAAMoE,GACpCG,SAAUW,GAAWnF,GAAUK,KAAMmE,GACrCC,SAAUU,GAAWnF,GAAUM,KAAMmE,GACrCC,aAAcS,GAAWnF,GAAUO,SAAUmE,GAC7CE,WAAYO,GAAWnF,GAAUQ,OAAQoE,GACzCC,UAAWM,GAAWnF,GAAUS,MAAOoE,IAGvCO,EAAY,CAAC,EACbC,EAAc,CAAC,EAEnB5+D,OAAO+I,KAAK01D,GAAY58D,SAAQ,SAAUk6D,GACtC,IAAI8C,EAAsBJ,EAAW1C,GACjC+C,EAAUD,EAAoBC,QAC9BC,EAAUF,EAAoBE,QAG9BD,EAAQ3+D,SACRw+D,EAAU5C,GAAW+C,GAErBC,EAAQ5+D,SACRy+D,EAAY7C,GAAW0C,EAAW1C,GAASgD,QAEnD,IAEAllD,GAAMA,IAENqkD,EAAoB3F,EAAUoG,EAAWC,EAC7C,EAEII,GAAe,SAAsBC,GACrC,OAAOj5D,MAAM0X,QAAQuhD,GAAiBA,EAAct2D,KAAK,IAAMs2D,CACnE,EAEIT,GAAc,SAAqBH,EAAOa,GACrB,qBAAVb,GAAyBh8D,SAASg8D,QAAUA,IACnDh8D,SAASg8D,MAAQW,GAAaX,IAGlCE,GAAiBhF,GAAUU,MAAOiF,EACtC,EAEIX,GAAmB,SAA0B12D,EAASq3D,GACtD,IAAIC,EAAa98D,SAAS+8D,qBAAqBv3D,GAAS,GAExD,GAAKs3D,EAAL,CASA,IALA,IAAIE,EAAwBF,EAAWr4D,aAAag0D,IAChDwE,EAAmBD,EAAwBA,EAAsBx2D,MAAM,KAAO,GAC9E02D,EAAqB,GAAGr5D,OAAOo5D,GAC/BE,EAAgBx/D,OAAO+I,KAAKm2D,GAEvB3/D,EAAI,EAAGA,EAAIigE,EAAcr/D,OAAQZ,IAAK,CAC3C,IAAIkgE,EAAYD,EAAcjgE,GAC1B6G,EAAQ84D,EAAWO,IAAc,GAEjCN,EAAWr4D,aAAa24D,KAAer5D,GACvC+4D,EAAWt8D,aAAa48D,EAAWr5D,IAGM,IAAzCk5D,EAAiBx8D,QAAQ28D,IACzBH,EAAiBxtD,KAAK2tD,GAG1B,IAAIC,EAAcH,EAAmBz8D,QAAQ28D,IACxB,IAAjBC,GACAH,EAAmBruD,OAAOwuD,EAAa,EAE/C,CAEA,IAAK,IAAIlmB,EAAK+lB,EAAmBp/D,OAAS,EAAGq5C,GAAM,EAAGA,IAClD2lB,EAAWp9D,gBAAgBw9D,EAAmB/lB,IAG9C8lB,EAAiBn/D,SAAWo/D,EAAmBp/D,OAC/Cg/D,EAAWp9D,gBAAgB+4D,IACpBqE,EAAWr4D,aAAag0D,MAAsB0E,EAAc72D,KAAK,MACxEw2D,EAAWt8D,aAAai4D,GAAkB0E,EAAc72D,KAAK,KAhCjE,CAkCJ,EAEI+1D,GAAa,SAAoB/oD,EAAMgqD,GACvC,IAAIC,EAAcv9D,SAASw9D,MAAQx9D,SAASO,cAAc22D,GAAUG,MAChEoG,EAAWF,EAAYp4D,iBAAiBmO,EAAO,IAAMmlD,GAAmB,KACxEiE,EAAU/4D,MAAM5F,UAAUmE,MAAM7E,KAAKogE,GACrChB,EAAU,GACViB,OAAgB,EA4CpB,OA1CIJ,GAAQA,EAAKx/D,QACbw/D,EAAK99D,SAAQ,SAAUmZ,GACnB,IAAIglD,EAAa39D,SAASiS,cAAcqB,GAExC,IAAK,IAAI8pD,KAAazkD,EAClB,GAAIA,EAAI3a,eAAeo/D,GACnB,GAAIA,IAAcvF,GACd8F,EAAW5hD,UAAYpD,EAAIoD,eACxB,GAAIqhD,IAAcvF,GACjB8F,EAAWC,WACXD,EAAWC,WAAWC,QAAUllD,EAAIklD,QAEpCF,EAAWzhD,YAAYlc,SAASqoC,eAAe1vB,EAAIklD,cAEpD,CACH,IAAI95D,EAAkC,qBAAnB4U,EAAIykD,GAA6B,GAAKzkD,EAAIykD,GAC7DO,EAAWn9D,aAAa48D,EAAWr5D,EACvC,CAIR45D,EAAWn9D,aAAai4D,GAAkB,QAGtCiE,EAAQ/Q,MAAK,SAAUmS,EAAaj+B,GAEpC,OADA69B,EAAgB79B,EACT89B,EAAWI,YAAYD,EAClC,IACIpB,EAAQ7tD,OAAO6uD,EAAe,GAE9BjB,EAAQhtD,KAAKkuD,EAErB,IAGJjB,EAAQl9D,SAAQ,SAAUmZ,GACtB,OAAOA,EAAI0G,WAAWpD,YAAYtD,EACtC,IACA8jD,EAAQj9D,SAAQ,SAAUmZ,GACtB,OAAO4kD,EAAYrhD,YAAYvD,EACnC,IAEO,CACH+jD,QAASA,EACTD,QAASA,EAEjB,EAEIuB,GAAoC,SAA2CnB,GAC/E,OAAOl/D,OAAO+I,KAAKm2D,GAAYjR,QAAO,SAAUqN,EAAK10D,GACjD,IAAI05D,EAAkC,qBAApBpB,EAAWt4D,GAAuBA,EAAM,KAAQs4D,EAAWt4D,GAAO,IAAO,GAAKA,EAChG,OAAO00D,EAAMA,EAAM,IAAMgF,EAAOA,CACpC,GAAG,GACP,EAyBIC,GAAuC,SAA8CrB,GACrF,IAAIsB,EAAYtgE,UAAUC,OAAS,QAAsBqJ,IAAjBtJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAErF,OAAOF,OAAO+I,KAAKm2D,GAAYjR,QAAO,SAAUlW,EAAKnxC,GAEjD,OADAmxC,EAAIoiB,GAAcvzD,IAAQA,GAAOs4D,EAAWt4D,GACrCmxC,CACX,GAAGyoB,EACP,EA8CIC,GAAmB,SAA0B9qD,EAAMgqD,EAAMe,GACzD,OAAQ/qD,GACJ,KAAK4jD,GAAUU,MACX,MAAO,CACH0G,YAAa,WACT,OAxCgB,SAAuChrD,EAAM0oD,EAAOa,GACpF,IAAI0B,EAGAJ,IAAaI,EAAa,CAC1Bh6D,IAAKy3D,IACKvD,KAAoB,EAAM8F,GACpC52D,EAAQu2D,GAAqCrB,EAAYsB,GAE7D,MAAO,CAAC5oB,EAAAA,cAAoB2hB,GAAUU,MAAOjwD,EAAOq0D,GACxD,CA8B2BwC,CAA8BlrD,EAAMgqD,EAAKtB,MAAOsB,EAAKrB,gBAChE,EACAv5D,SAAU,WACN,OApFQ,SAA+B4Q,EAAM0oD,EAAOa,EAAYwB,GAChF,IAAII,EAAkBT,GAAkCnB,GACpD6B,EAAiB/B,GAAaX,GAClC,OAAOyC,EAAkB,IAAMnrD,EAAO,IAAMmlD,GAAmB,WAAegG,EAAkB,IAAMzF,GAAwB0F,EAAgBL,GAAU,KAAO/qD,EAAO,IAAM,IAAMA,EAAO,IAAMmlD,GAAmB,WAAeO,GAAwB0F,EAAgBL,GAAU,KAAO/qD,EAAO,GACrS,CAgF2BqrD,CAAsBrrD,EAAMgqD,EAAKtB,MAAOsB,EAAKrB,gBAAiBoC,EACzE,GAER,KAAKpH,GACL,KAAKA,GACD,MAAO,CACHqH,YAAa,WACT,OAAOJ,GAAqCZ,EAChD,EACA56D,SAAU,WACN,OAAOs7D,GAAkCV,EAC7C,GAER,QACI,MAAO,CACHgB,YAAa,WACT,OA/Ce,SAAsChrD,EAAMgqD,GAC3E,OAAOA,EAAKz3D,KAAI,SAAU8S,EAAKzb,GAC3B,IAAI0hE,EAEAC,IAAaD,EAAa,CAC1Br6D,IAAKrH,IACKu7D,KAAoB,EAAMmG,GAaxC,OAXAjhE,OAAO+I,KAAKiS,GAAKnZ,SAAQ,SAAU49D,GAC/B,IAAI0B,EAAkBhH,GAAcsF,IAAcA,EAElD,GAAI0B,IAAoBjH,IAA6BiH,IAAoBjH,GAAyB,CAC9F,IAAIkH,EAAUpmD,EAAIoD,WAAapD,EAAIklD,QACnCgB,EAAU1jD,wBAA0B,CAAEoO,OAAQw1C,EAClD,MACIF,EAAUC,GAAmBnmD,EAAIykD,EAEzC,IAEO7nB,EAAAA,cAAoBjiC,EAAMurD,EACrC,GACJ,CA0B2BG,CAA6B1rD,EAAMgqD,EAC9C,EACA56D,SAAU,WACN,OAjGO,SAA8B4Q,EAAMgqD,EAAMe,GACjE,OAAOf,EAAK1R,QAAO,SAAUqN,EAAKtgD,GAC9B,IAAIsmD,EAAgBthE,OAAO+I,KAAKiS,GAAK6pC,QAAO,SAAU4a,GAClD,QAASA,IAAcvF,IAA6BuF,IAAcvF,GACtE,IAAGjM,QAAO,SAAUhjD,EAAQw0D,GACxB,IAAIa,EAAiC,qBAAnBtlD,EAAIykD,GAA6BA,EAAYA,EAAY,KAAQpE,GAAwBrgD,EAAIykD,GAAYiB,GAAU,IACrI,OAAOz1D,EAASA,EAAS,IAAMq1D,EAAOA,CAC1C,GAAG,IAECiB,EAAavmD,EAAIoD,WAAapD,EAAIklD,SAAW,GAE7CsB,GAAqD,IAArC3G,GAAkB/3D,QAAQ6S,GAE9C,OAAO2lD,EAAM,IAAM3lD,EAAO,IAAMmlD,GAAmB,WAAewG,GAAiBE,EAAgB,KAAO,IAAMD,EAAa,KAAO5rD,EAAO,IAC/I,GAAG,GACP,CAkF2B8rD,CAAqB9rD,EAAMgqD,EAAMe,EAC5C,GAGhB,EAEIvoB,GAAmB,SAA0B8Q,GAC7C,IAAI2U,EAAU3U,EAAK2U,QACfC,EAAiB5U,EAAK4U,eACtB6C,EAASzX,EAAKyX,OACd5C,EAAiB7U,EAAK6U,eACtBC,EAAW9U,EAAK8U,SAChBC,EAAW/U,EAAK+U,SAChBC,EAAehV,EAAKgV,aACpBE,EAAalV,EAAKkV,WAClBC,EAAYnV,EAAKmV,UACjBsD,EAAazY,EAAKoV,MAClBA,OAAuB70D,IAAfk4D,EAA2B,GAAKA,EACxCpD,EAAkBrV,EAAKqV,gBAC3B,MAAO,CACHp1C,KAAMu3C,GAAiBlH,GAAUC,KAAMoE,EAAS8C,GAChD7C,eAAgB4C,GAAiBnH,GAAsBuE,EAAgB6C,GACvE5C,eAAgB2C,GAAiBnH,GAAsBwE,EAAgB4C,GACvEh3C,KAAM+2C,GAAiBlH,GAAUK,KAAMmE,EAAU2C,GACjD/2C,KAAM82C,GAAiBlH,GAAUM,KAAMmE,EAAU0C,GACjDiB,SAAUlB,GAAiBlH,GAAUO,SAAUmE,EAAcyC,GAC7DkB,OAAQnB,GAAiBlH,GAAUQ,OAAQoE,EAAYuC,GACvDrsD,MAAOosD,GAAiBlH,GAAUS,MAAOoE,EAAWsC,GACpDrC,MAAOoC,GAAiBlH,GAAUU,MAAO,CAAEoE,MAAOA,EAAOC,gBAAiBA,GAAmBoC,GAErG,EA0PImB,GAxPS,SAAgBptD,GACzB,IAAIqtD,EAAQC,EAEZ,OAAOA,EAAQD,EAAS,SAAUE,GAG9B,SAASC,IAEL,OAjlBS,SAAUr1B,EAAUquB,GACvC,KAAMruB,aAAoBquB,GACxB,MAAM,IAAIn3D,UAAU,oCAExB,CA4kBYo+D,CAAer+D,KAAMo+D,GA9gBD,SAAUp9D,EAAMnF,GAC9C,IAAKmF,EACH,MAAM,IAAIs9D,eAAe,6DAG3B,OAAOziE,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BmF,EAAPnF,CAC5E,CAygBmB0iE,CAA0Bv+D,KAAMm+D,EAAiBz+D,MAAMM,KAAM3D,WACxE,CA6LA,OAzuBO,SAAUu4C,EAAUC,GACjC,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI50C,UAAU,kEAAoE40C,GAG1FD,EAASr4C,UAAYJ,OAAOiM,OAAOysC,GAAcA,EAAWt4C,UAAW,CACrEsE,YAAa,CACX0B,MAAOqyC,EACPhyC,YAAY,EACZE,UAAU,EACVD,cAAc,KAGdgyC,IAAY14C,OAAOw9C,eAAiBx9C,OAAOw9C,eAAe/E,EAAUC,GAAcD,EAASE,UAAYD,EAC7G,CAyhBQ2pB,CAASJ,EAAeD,GAOxBC,EAAc7hE,UAAUsgC,sBAAwB,SAA+B4hC,GAC3E,OAAQC,KAAQ1+D,KAAKmG,MAAOs4D,EAChC,EAEAL,EAAc7hE,UAAUoiE,yBAA2B,SAAkC9hD,EAAO+hD,GACxF,IAAKA,EACD,OAAO,KAGX,OAAQ/hD,EAAM/K,MACV,KAAK4jD,GAAUQ,OACf,KAAKR,GAAUO,SACX,MAAO,CACH17C,UAAWqkD,GAGnB,KAAKlJ,GAAUS,MACX,MAAO,CACHkG,QAASuC,GAIrB,MAAM,IAAIn4D,MAAM,IAAMoW,EAAM/K,KAAO,qGACvC,EAEAssD,EAAc7hE,UAAUsiE,yBAA2B,SAAkCzZ,GACjF,IAAI0Z,EAEAjiD,EAAQuoC,EAAKvoC,MACbkiD,EAAoB3Z,EAAK2Z,kBACzBC,EAAgB5Z,EAAK4Z,cACrBJ,EAAiBxZ,EAAKwZ,eAE1B,OAAO/d,GAAS,CAAC,EAAGke,IAAoBD,EAAwB,CAAC,GAAyBjiD,EAAM/K,MAAQ,GAAGzP,OAAO08D,EAAkBliD,EAAM/K,OAAS,GAAI,CAAC+uC,GAAS,CAAC,EAAGme,EAAeh/D,KAAK2+D,yBAAyB9hD,EAAO+hD,MAAoBE,GACjP,EAEAV,EAAc7hE,UAAU0iE,sBAAwB,SAA+BC,GAC3E,IAAIC,EAAwBC,EAExBviD,EAAQqiD,EAAMriD,MACdwiD,EAAWH,EAAMG,SACjBL,EAAgBE,EAAMF,cACtBJ,EAAiBM,EAAMN,eAE3B,OAAQ/hD,EAAM/K,MACV,KAAK4jD,GAAUU,MACX,OAAOvV,GAAS,CAAC,EAAGwe,IAAWF,EAAyB,CAAC,GAA0BtiD,EAAM/K,MAAQ8sD,EAAgBO,EAAuB1E,gBAAkB5Z,GAAS,CAAC,EAAGme,GAAgBG,IAE3L,KAAKzJ,GAAUE,KACX,OAAO/U,GAAS,CAAC,EAAGwe,EAAU,CAC1BrF,eAAgBnZ,GAAS,CAAC,EAAGme,KAGrC,KAAKtJ,GAAUI,KACX,OAAOjV,GAAS,CAAC,EAAGwe,EAAU,CAC1BpF,eAAgBpZ,GAAS,CAAC,EAAGme,KAIzC,OAAOne,GAAS,CAAC,EAAGwe,IAAWD,EAAyB,CAAC,GAA0BviD,EAAM/K,MAAQ+uC,GAAS,CAAC,EAAGme,GAAgBI,GAClI,EAEAhB,EAAc7hE,UAAU+iE,4BAA8B,SAAqCP,EAAmBM,GAC1G,IAAIE,EAAoB1e,GAAS,CAAC,EAAGwe,GAQrC,OANAljE,OAAO+I,KAAK65D,GAAmB/gE,SAAQ,SAAUwhE,GAC7C,IAAIC,EAEJF,EAAoB1e,GAAS,CAAC,EAAG0e,IAAoBE,EAAyB,CAAC,GAA0BD,GAAkBT,EAAkBS,GAAiBC,GAClK,IAEOF,CACX,EAEAnB,EAAc7hE,UAAUmjE,sBAAwB,SAA+B7iD,EAAO+hD,GAmBlF,OAAO,CACX,EAEAR,EAAc7hE,UAAUojE,mBAAqB,SAA4Bj+D,EAAU29D,GAC/E,IAAIO,EAAS5/D,KAET++D,EAAoB,CAAC,EAyCzB,OAvCAhrB,EAAAA,SAAe/1C,QAAQ0D,GAAU,SAAUmb,GACvC,GAAKA,GAAUA,EAAM1W,MAArB,CAIA,IAAI05D,EAAehjD,EAAM1W,MACrBy4D,EAAiBiB,EAAan+D,SAG9Bs9D,EAhOoB,SAA2C74D,GAC/E,IAAI25D,EAAiBzjE,UAAUC,OAAS,QAAsBqJ,IAAjBtJ,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAE1F,OAAOF,OAAO+I,KAAKiB,GAAOikD,QAAO,SAAUlW,EAAKnxC,GAE5C,OADAmxC,EAAI6iB,GAAah0D,IAAQA,GAAOoD,EAAMpD,GAC/BmxC,CACX,GAAG4rB,EACP,CAyNoCC,CAFHxI,GAAwBsI,EAAc,CAAC,cAMxD,OAFAD,EAAOF,sBAAsB7iD,EAAO+hD,GAE5B/hD,EAAM/K,MACV,KAAK4jD,GAAUK,KACf,KAAKL,GAAUM,KACf,KAAKN,GAAUO,SACf,KAAKP,GAAUQ,OACf,KAAKR,GAAUS,MACX4I,EAAoBa,EAAOf,yBAAyB,CAChDhiD,MAAOA,EACPkiD,kBAAmBA,EACnBC,cAAeA,EACfJ,eAAgBA,IAEpB,MAEJ,QACIS,EAAWO,EAAOX,sBAAsB,CACpCpiD,MAAOA,EACPwiD,SAAUA,EACVL,cAAeA,EACfJ,eAAgBA,IA7B5B,CAiCJ,IAEAS,EAAWr/D,KAAKs/D,4BAA4BP,EAAmBM,EAEnE,EAEAjB,EAAc7hE,UAAUwa,OAAS,WAC7B,IAAIi8C,EAAShzD,KAAKmG,MACdzE,EAAWsxD,EAAOtxD,SAClByE,EAAQoxD,GAAwBvE,EAAQ,CAAC,aAEzCqM,EAAWxe,GAAS,CAAC,EAAG16C,GAM5B,OAJIzE,IACA29D,EAAWr/D,KAAK2/D,mBAAmBj+D,EAAU29D,IAG1CtrB,EAAAA,cAAoBnjC,EAAWyuD,EAC1C,EAEAlI,GAAYiH,EAAe,KAAM,CAAC,CAC9Br7D,IAAK,YAyBLuM,IAAK,SAAgB6kC,GACjBvjC,EAAUujC,UAAYA,CAC1B,KAEGiqB,CACX,CApMwB,CAoMtBrqB,EAAAA,WAAkBkqB,EAAO+B,UAAY,CACnC36C,KAAMpd,KAAAA,OACN+xD,eAAgB/xD,KAAAA,OAChBvG,SAAUuG,KAAAA,UAAoB,CAACA,KAAAA,QAAkBA,KAAAA,MAAiBA,KAAAA,OAClEg4D,aAAch4D,KAAAA,OACdi4D,MAAOj4D,KAAAA,KACPuvD,wBAAyBvvD,KAAAA,KACzBgyD,eAAgBhyD,KAAAA,OAChB4d,KAAM5d,KAAAA,QAAkBA,KAAAA,QACxB6d,KAAM7d,KAAAA,QAAkBA,KAAAA,QACxB61D,SAAU71D,KAAAA,QAAkBA,KAAAA,QAC5BoyD,oBAAqBpyD,KAAAA,KACrB81D,OAAQ91D,KAAAA,QAAkBA,KAAAA,QAC1BuI,MAAOvI,KAAAA,QAAkBA,KAAAA,QACzBuyD,MAAOvyD,KAAAA,OACPwyD,gBAAiBxyD,KAAAA,OACjBk4D,cAAel4D,KAAAA,QAChBg2D,EAAO1kC,aAAe,CACrB2mC,OAAO,EACP1I,yBAAyB,GAC1ByG,EAAOlpB,KAAOnkC,EAAUmkC,KAAMkpB,EAAOjpB,OAAS,WAC7C,IAAIorB,EAAcxvD,EAAUokC,SAkB5B,OAjBKorB,IAEDA,EAAc9rB,GAAiB,CAC3BylB,QAAS,GACTC,eAAgB,CAAC,EACjBxC,yBAAyB,EACzByC,eAAgB,CAAC,EACjBC,SAAU,GACVC,SAAU,GACVC,aAAc,GACdE,WAAY,GACZC,UAAW,GACXC,MAAO,GACPC,gBAAiB,CAAC,KAInB2F,CACX,EAAGlC,CACP,CAQmBmC,CAFKC,MAnmBC,SAA4B3I,GACjD,MAAO,CACHoC,QAAS3B,GAAwB,CAAC/B,GAAqBA,IAAwBsB,GAC/EqC,eAAgB/B,GAA2BxC,GAAsBkC,GACjEuI,MAAOrI,GAAqBF,EAAWb,IACvC+F,OAAQhF,GAAqBF,EAAWb,IACxCmD,eAAgBhC,GAA2BxC,GAAsBkC,GACjEuC,SAAUzB,GAAqB/C,GAAUK,KAAM,CAACM,GAAoBA,IAAsBsB,GAC1FwC,SAAU1B,GAAqB/C,GAAUM,KAAM,CAACK,GAAqBA,GAAwBA,GAA0BA,GAAyBA,IAA2BsB,GAC3KyC,aAAc3B,GAAqB/C,GAAUO,SAAU,CAACI,IAA4BsB,GACpF0C,oBAAqBrC,GAAuBL,GAC5C2C,WAAY7B,GAAqB/C,GAAUQ,OAAQ,CAACG,GAAoBA,IAA4BsB,GACpG4C,UAAW9B,GAAqB/C,GAAUS,MAAO,CAACE,IAA0BsB,GAC5E6C,MAAO9C,GAAsBC,GAC7B8C,gBAAiBxC,GAA2BxC,GAAuBkC,GAE3E,IAiC8B,SAAiCjD,GACvDmF,IACAxqD,GAAqBwqD,IAGrBnF,EAASwL,MACTrG,GAAkBzqD,IAAsB,WACpC0qD,GAAiBpF,GAAU,WACvBmF,GAAkB,IACtB,GACJ,KAEAC,GAAiBpF,GACjBmF,GAAkB,KAE1B,GAmiBoFvlB,GAA5DgsB,EAJJ,WAChB,OAAO,IACX,KAKAtC,GAAauC,aAAevC,GAAahpB,OCn2BzC,SAhCA,WAEI,MAAM,MAAE1mC,EAAK,OAAEC,IAAWiyD,EAAAA,EAAAA,MACnBzL,GAAkBJ,KACnB8L,EAAM1L,EAAa7sD,IAAI,OACvBw4D,EAAO3L,EAAa7sD,IAAI,QACxBy4D,EAAgB5L,EAAa7sD,IAAI,iBAGvC,OACIo8C,EAAAA,EAAAA,MAAA,OAAKhD,UAAU,cAAa5/C,SAAA,EAC9B2iD,EAAAA,EAAAA,KAACuc,KAAQ,CACPtyD,MAAOA,EACPC,OAAQA,KAEV+1C,EAAAA,EAAAA,MAAC+b,GAAM,CAAA3+D,SAAA,EACL2iD,EAAAA,EAAAA,KAAA,QAAM6U,SAAS,WAAWqE,QAAQ,wBAElClZ,EAAAA,EAAAA,KAAA,QAAMwc,IAAI,mBAAmB15C,KAAK,gEAGpCm9B,EAAAA,EAAAA,MAAA,OAAKhD,UAAU,+BAA8B5/C,SAAA,EAC3C4iD,EAAAA,EAAAA,MAAA,MAAA5iD,SAAA,CAAI,uBAAqB++D,EAAI,OAC5BC,IAAQpc,EAAAA,EAAAA,MAAA,MAAA5iD,SAAA,CAAI,QAAMg/D,KAClBC,IAAiBtc,EAAAA,EAAAA,KAAA,MAAA3iD,SAAKi/D,KACvBtc,EAAAA,EAAAA,KAAA,OAAKrB,IAAK8d,GAAgB5d,IAAI,oBAAoB5B,UAAU,cAKpE,iECCA,SAhCA,WAEI,MAAM,MAAEhzC,EAAK,OAAEC,IAAWiyD,EAAAA,EAAAA,MACnBzL,GAAkBJ,KACnBoM,EAAYhM,EAAa7sD,IAAI,aAC7B84D,EAAWjM,EAAa7sD,IAAI,YAC5By4D,EAAgB5L,EAAa7sD,IAAI,iBAGvC,OACIo8C,EAAAA,EAAAA,MAAA,OAAKhD,UAAU,cAAa5/C,SAAA,EAC9B2iD,EAAAA,EAAAA,KAACuc,KAAQ,CACPtyD,MAAOA,EACPC,OAAQA,KAEV+1C,EAAAA,EAAAA,MAAC+b,GAAM,CAAA3+D,SAAA,EACL2iD,EAAAA,EAAAA,KAAA,QAAM6U,SAAS,WAAWqE,QAAQ,oBAElClZ,EAAAA,EAAAA,KAAA,QAAMwc,IAAI,mBAAmB15C,KAAK,gEAGpCm9B,EAAAA,EAAAA,MAAA,OAAKhD,UAAU,+BAA8B5/C,SAAA,EAC3C4iD,EAAAA,EAAAA,MAAA,MAAA5iD,SAAA,CAAI,kBAAgBq/D,EAAU,OAC7BC,IAAY1c,EAAAA,EAAAA,MAAA,MAAA5iD,SAAA,CAAI,QAAMs/D,KACtBL,IAAiBtc,EAAAA,EAAAA,KAAA,MAAA3iD,SAAKi/D,KACvBtc,EAAAA,EAAAA,KAAA,OAAKrB,IAAK8d,GAAgB5d,IAAI,gBAAgB5B,UAAU,cAKhE,EC3BA,MAAM2f,WAAYltB,EAAAA,UAEhBpW,iBAAAA,GACEujC,IAAAA,KAAS,CACP/jE,OAAQ,IACRG,SAAU,IACVD,OAAQ,eACRD,MAAO,KAEX,CAEA2Z,MAAAA,GACI,OACEstC,EAAAA,EAAAA,KAAC4O,GAAM,CAAAvxD,UACL4iD,EAAAA,EAAAA,MAACmP,GAAM,CAAA/xD,SAAA,EACP2iD,EAAAA,EAAAA,KAAC0O,GAAK,CAAChrD,OAAK,EAACs9C,KAAK,IAAI79C,SAAS68C,EAAAA,EAAAA,KAAC8c,EAAK,OACrC9c,EAAAA,EAAAA,KAAC0O,GAAK,CAAChrD,OAAK,EAACs9C,KAAK,eAAe79C,SAAS68C,EAAAA,EAAAA,KAAC+c,EAAM,OACjD/c,EAAAA,EAAAA,KAAC0O,GAAK,CAAChrD,OAAK,EAACs9C,KAAK,eAAe79C,SAAS68C,EAAAA,EAAAA,KAACgd,GAAM,OACjDhd,EAAAA,EAAAA,KAAC0O,GAAK,CAAChrD,OAAK,EAACs9C,KAAK,YAAY79C,SAAS68C,EAAAA,EAAAA,KAACid,GAAQ,UAItD,EAIJ,YC5BoBC,QACW,cAA7B7iE,OAAO4H,SAASk7D,UAEe,UAA7B9iE,OAAO4H,SAASk7D,UAEhB9iE,OAAO4H,SAASk7D,SAAS5tB,MACvB,2DCVNwgB,EAAAA,QACE/P,EAAAA,EAAAA,KAACtQ,EAAAA,WAAgB,CAAAryC,UACf2iD,EAAAA,EAAAA,KAAC4c,GAAG,MAENziE,SAASijE,eAAe,SDuHpB,kBAAmBj/D,WACrBA,UAAUk/D,cAActiE,MACrBmqC,MAAKo4B,IACJA,EAAaC,YAAY,IAE1BC,OAAMj6B,IACL/oC,QAAQ+oC,MAAMA,EAAM+L,QAAQ","sources":["../node_modules/aos/dist/aos.js","../node_modules/object-assign/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-confetti/dist/webpack/universalModuleDefinition","../node_modules/react-confetti/dist/webpack/bootstrap","../node_modules/react-confetti/dist/external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","../node_modules/tween-functions/index.js","../node_modules/react-confetti/src/Particle.ts","../node_modules/react-confetti/src/utils.ts","../node_modules/react-confetti/src/ParticleGenerator.ts","../node_modules/react-confetti/src/Confetti.ts","../node_modules/react-confetti/src/ReactConfetti.tsx","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-fast-compare/index.js","../node_modules/react-side-effect/lib/index.js","../node_modules/react-use/lib/misc/util.js","../node_modules/react-use/lib/useEffectOnce.js","../node_modules/react-use/lib/useRafState.js","../node_modules/react-use/lib/useUnmount.js","../node_modules/react-use/lib/useWindowSize.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/tslib/tslib.es6.mjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../node_modules/react-masonry-css/dist/react-masonry-css.module.js","pages/Mason.js","pages/Dinner.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/react-helmet/es/Helmet.js","pages/Mother.js","pages/Birthday.js","App.js","serviceWorker.js","index.js"],"sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\\n aos: MutationObserver is not supported on this browser,\\n code mutations observing has been disabled.\\n You may have to call \"refreshHard()\" by yourself.\\n '),x.disableMutationObserver=!0),document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready(\"[data-aos]\",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(s);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return f;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=\"Expected a function\",f=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==f}function a(e){if(\"number\"==typeof e)return e;if(r(e))return s;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",s=NaN,f=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;te.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ReactConfetti\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"ReactConfetti\"] = factory(root[\"React\"]);\n})(typeof self !== \"undefined\" ? self : this, function(__WEBPACK_EXTERNAL_MODULE__0__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","'use strict';\n\n// t: current time, b: beginning value, _c: final value, d: total duration\nvar tweenFunctions = {\n linear: function(t, b, _c, d) {\n var c = _c - b;\n return c * t / d + b;\n },\n easeInQuad: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t + b;\n },\n easeOutQuad: function(t, b, _c, d) {\n var c = _c - b;\n return -c * (t /= d) * (t - 2) + b;\n },\n easeInOutQuad: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t + b;\n } else {\n return -c / 2 * ((--t) * (t - 2) - 1) + b;\n }\n },\n easeInCubic: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t * t + b;\n },\n easeOutCubic: function(t, b, _c, d) {\n var c = _c - b;\n return c * ((t = t / d - 1) * t * t + 1) + b;\n },\n easeInOutCubic: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t + b;\n } else {\n return c / 2 * ((t -= 2) * t * t + 2) + b;\n }\n },\n easeInQuart: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t * t * t + b;\n },\n easeOutQuart: function(t, b, _c, d) {\n var c = _c - b;\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n },\n easeInOutQuart: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t * t + b;\n } else {\n return -c / 2 * ((t -= 2) * t * t * t - 2) + b;\n }\n },\n easeInQuint: function(t, b, _c, d) {\n var c = _c - b;\n return c * (t /= d) * t * t * t * t + b;\n },\n easeOutQuint: function(t, b, _c, d) {\n var c = _c - b;\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n easeInOutQuint: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return c / 2 * t * t * t * t * t + b;\n } else {\n return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;\n }\n },\n easeInSine: function(t, b, _c, d) {\n var c = _c - b;\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n },\n easeOutSine: function(t, b, _c, d) {\n var c = _c - b;\n return c * Math.sin(t / d * (Math.PI / 2)) + b;\n },\n easeInOutSine: function(t, b, _c, d) {\n var c = _c - b;\n return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n },\n easeInExpo: function(t, b, _c, d) {\n var c = _c - b;\n return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;\n },\n easeOutExpo: function(t, b, _c, d) {\n var c = _c - b;\n return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;\n },\n easeInOutExpo: function(t, b, _c, d) {\n var c = _c - b;\n if (t === 0) {\n return b;\n }\n if (t === d) {\n return b + c;\n }\n if ((t /= d / 2) < 1) {\n return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n } else {\n return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;\n }\n },\n easeInCirc: function(t, b, _c, d) {\n var c = _c - b;\n return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n },\n easeOutCirc: function(t, b, _c, d) {\n var c = _c - b;\n return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n },\n easeInOutCirc: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d / 2) < 1) {\n return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n } else {\n return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n }\n },\n easeInElastic: function(t, b, _c, d) {\n var c = _c - b;\n var a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n return b;\n } else if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;\n },\n easeOutElastic: function(t, b, _c, d) {\n var c = _c - b;\n var a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n return b;\n } else if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;\n },\n easeInOutElastic: function(t, b, _c, d) {\n var c = _c - b;\n var a, p, s;\n s = 1.70158;\n p = 0;\n a = c;\n if (t === 0) {\n return b;\n } else if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n if (t < 1) {\n return -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;\n } else {\n return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * 0.5 + c + b;\n }\n },\n easeInBack: function(t, b, _c, d, s) {\n var c = _c - b;\n if (s === void 0) {\n s = 1.70158;\n }\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n easeOutBack: function(t, b, _c, d, s) {\n var c = _c - b;\n if (s === void 0) {\n s = 1.70158;\n }\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n easeInOutBack: function(t, b, _c, d, s) {\n var c = _c - b;\n if (s === void 0) {\n s = 1.70158;\n }\n if ((t /= d / 2) < 1) {\n return c / 2 * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n } else {\n return c / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n }\n },\n easeInBounce: function(t, b, _c, d) {\n var c = _c - b;\n var v;\n v = tweenFunctions.easeOutBounce(d - t, 0, c, d);\n return c - v + b;\n },\n easeOutBounce: function(t, b, _c, d) {\n var c = _c - b;\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n } else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n } else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n } else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n easeInOutBounce: function(t, b, _c, d) {\n var c = _c - b;\n var v;\n if (t < d / 2) {\n v = tweenFunctions.easeInBounce(t * 2, 0, c, d);\n return v * 0.5 + b;\n } else {\n v = tweenFunctions.easeOutBounce(t * 2 - d, 0, c, d);\n return v * 0.5 + c * 0.5 + b;\n }\n }\n};\n\nmodule.exports = tweenFunctions;\n","import { randomRange, randomInt, degreesToRads } from './utils'\nimport { IConfettiOptions } from './Confetti'\n\nexport enum ParticleShape {\n Circle = 0,\n Square,\n Strip,\n}\n\nenum RotationDirection {\n Positive = 1,\n Negative = -1,\n}\n\nexport default class Particle {\n constructor(context: CanvasRenderingContext2D, getOptions: () => IConfettiOptions, x: number, y: number) {\n this.getOptions = getOptions\n const {\n colors,\n initialVelocityX,\n initialVelocityY,\n } = this.getOptions()\n this.context = context\n this.x = x\n this.y = y\n this.w = randomRange(5, 20)\n this.h = randomRange(5, 20)\n this.radius = randomRange(5, 10)\n this.vx = typeof initialVelocityX === 'number' ? randomRange(-initialVelocityX, initialVelocityX) : randomRange(initialVelocityX.min, initialVelocityX.max)\n this.vy = typeof initialVelocityY === 'number' ? randomRange(-initialVelocityY, 0) : randomRange(initialVelocityY.min, initialVelocityY.max)\n this.shape = randomInt(0, 2)\n this.angle = degreesToRads(randomRange(0, 360))\n this.angularSpin = randomRange(-0.2, 0.2)\n this.color = colors[Math.floor(Math.random() * colors.length)]\n this.rotateY = randomRange(0, 1)\n this.rotationDirection = randomRange(0, 1) ? RotationDirection.Positive : RotationDirection.Negative\n }\n\n context: CanvasRenderingContext2D\n\n radius: number\n\n x: number\n\n y: number\n\n w: number\n\n h: number\n\n vx: number\n\n vy: number\n\n shape: ParticleShape\n\n angle: number\n\n angularSpin: number\n\n color: string\n\n // Actually used as scaleY to simulate rotation cheaply\n rotateY: number\n\n rotationDirection: RotationDirection\n\n getOptions: () => IConfettiOptions\n\n update() {\n const {\n gravity,\n wind,\n friction,\n opacity,\n drawShape,\n } = this.getOptions()\n this.x += this.vx\n this.y += this.vy\n this.vy += gravity\n this.vx += wind\n this.vx *= friction\n this.vy *= friction\n if(this.rotateY >= 1 && this.rotationDirection === RotationDirection.Positive) {\n this.rotationDirection = RotationDirection.Negative\n } else if(this.rotateY <= -1 && this.rotationDirection === RotationDirection.Negative) {\n this.rotationDirection = RotationDirection.Positive\n }\n\n const rotateDelta = 0.1 * this.rotationDirection\n\n this.rotateY += rotateDelta\n this.angle += this.angularSpin\n this.context.save()\n this.context.translate(this.x, this.y)\n this.context.rotate(this.angle)\n this.context.scale(1, this.rotateY)\n this.context.rotate(this.angle)\n this.context.beginPath()\n this.context.fillStyle = this.color\n this.context.strokeStyle = this.color\n this.context.globalAlpha = opacity\n this.context.lineCap = 'round'\n this.context.lineWidth = 2\n if(drawShape && typeof drawShape === 'function') {\n drawShape.call(this, this.context)\n } else {\n switch(this.shape) {\n case ParticleShape.Circle: {\n this.context.beginPath()\n this.context.arc(0, 0, this.radius, 0, 2 * Math.PI)\n this.context.fill()\n break\n }\n case ParticleShape.Square: {\n this.context.fillRect(-this.w / 2, -this.h / 2, this.w, this.h)\n break\n }\n case ParticleShape.Strip: {\n this.context.fillRect(-this.w / 6, -this.h / 2, this.w / 3, this.h)\n break\n }\n }\n }\n this.context.closePath()\n this.context.restore()\n }\n}\n","import { IPoint } from './Point'\nimport { IRect } from './Rect'\nimport { ICircle } from './Circle'\n\nexport function norm(value: number, min:number, max: number) {\n return (value - min) / (max - min)\n}\n\nexport function lerp(lnorm: number, min: number, max: number) {\n return ((max - min) * lnorm) + min\n}\n\nexport function map(value: number, sourceMin: number, sourceMax: number, destMin: number, destMax: number) {\n return lerp(norm(value, sourceMin, sourceMax), destMin, destMax)\n}\n\nexport function clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, Math.min(min, max)), Math.max(min, max))\n}\n\nexport function distance(p0: IPoint, p1: IPoint) {\n const dx = p1.x - p0.x\n const dy = p1.y - p0.y\n return Math.sqrt((dx * dx) + (dy * dy))\n}\n\nexport function distanceXY(x0: number, y0: number, x1: number, y1: number) {\n const dx = x1 - x0\n const dy = y1 - y0\n return Math.sqrt((dx * dx) + (dy * dy))\n}\n\nexport function circleCollision(c0: ICircle, c1: ICircle) {\n return distance(c0, c1) <= c0.radius + c1.radius\n}\n\nexport function circlePointCollision(x: number, y:number, circle: ICircle) {\n return distanceXY(x, y, circle.x, circle.y) < circle.radius\n}\n\nexport function inRange(value: number, min: number, max: number) {\n return value >= Math.min(min, max) && value <= Math.max(min, max)\n}\n\nexport function pointInRect(p: IPoint, rect: IRect) {\n return inRange(p.x, rect.x, rect.x + rect.w) &&\n inRange(p.y, rect.y, rect.y + rect.h)\n}\n\nexport function rangeIntersect(min0: number, max0: number, min1: number, max1: number) {\n return Math.max(min0, max0) >= Math.min(min1, max1) &&\n Math.min(min0, max0) <= Math.max(min1, max1)\n}\n\nexport function rectIntersect(r0: IRect, r1: IRect) {\n return rangeIntersect(r0.x, r0.x + r0.w, r1.x, r1.x + r1.w) &&\n rangeIntersect(r0.y, r0.y + r0.h, r1.y, r1.y + r1.h)\n}\n\nexport function degreesToRads(degrees: number) {\n return degrees * Math.PI / 180\n}\n\nexport function radsToDegrees(radians: number) {\n return (radians * 180) / Math.PI\n}\n\nexport function randomRange(min: number, max: number) {\n return min + (Math.random() * (max - min))\n}\n\nexport function randomInt(min: number, max: number) {\n return Math.floor(min + (Math.random() * ((max - min) + 1)))\n}\n","import { IConfettiOptions } from './Confetti'\nimport { IRect } from './Rect'\nimport Particle from './Particle'\nimport { randomRange } from './utils'\n\nexport interface IParticleGenerator extends IRect {\n removeParticleAt: (index: number) => void\n getParticle: () => void\n animate: () => boolean\n particles: Particle[]\n particlesGenerated: number\n}\n\nexport default class ParticleGenerator implements IParticleGenerator {\n constructor(canvas: HTMLCanvasElement, getOptions: () => IConfettiOptions) {\n this.canvas = canvas\n const ctx = this.canvas.getContext('2d')\n if(!ctx) {\n throw new Error('Could not get canvas context')\n }\n this.context = ctx\n this.getOptions = getOptions\n }\n\n canvas: HTMLCanvasElement\n\n context: CanvasRenderingContext2D\n\n getOptions: () => IConfettiOptions\n\n x: number = 0\n\n y: number = 0\n\n w: number = 0\n\n h: number = 0\n\n lastNumberOfPieces: number = 0\n\n tweenInitTime: number = Date.now()\n\n particles: Particle[] = []\n\n particlesGenerated: number = 0\n\n removeParticleAt = (i: number) => {\n this.particles.splice(i, 1)\n }\n\n getParticle = () => {\n const newParticleX = randomRange(this.x, this.w + this.x)\n const newParticleY = randomRange(this.y, this.h + this.y)\n return new Particle(this.context, this.getOptions, newParticleX, newParticleY)\n }\n\n animate = (): boolean => {\n const {\n canvas,\n context,\n particlesGenerated,\n lastNumberOfPieces,\n } = this\n const {\n run,\n recycle,\n numberOfPieces,\n debug,\n tweenFunction,\n tweenDuration,\n } = this.getOptions()\n if(!run) {\n return false\n }\n\n const nP = this.particles.length\n const activeCount = recycle ? nP : particlesGenerated\n\n const now = Date.now()\n\n // Initial population\n if(activeCount < numberOfPieces) {\n // Use the numberOfPieces prop as a key to reset the easing timing\n if(lastNumberOfPieces !== numberOfPieces) {\n this.tweenInitTime = now\n this.lastNumberOfPieces = numberOfPieces\n }\n const { tweenInitTime } = this\n // Add more than one piece per loop, otherwise the number of pieces would\n // be limitted by the RAF framerate\n const progressTime = now - tweenInitTime > tweenDuration\n ? tweenDuration\n : Math.max(0, now - tweenInitTime)\n const tweenedVal = tweenFunction(progressTime, activeCount, numberOfPieces, tweenDuration)\n const numToAdd = Math.round(tweenedVal - activeCount)\n for(let i = 0; i < numToAdd; i++) {\n this.particles.push(this.getParticle())\n }\n this.particlesGenerated += numToAdd\n }\n if(debug) {\n // Draw debug text\n context.font = '12px sans-serif'\n context.fillStyle = '#333'\n context.textAlign = 'right'\n context.fillText(`Particles: ${nP}`, canvas.width - 10, canvas.height - 20)\n }\n\n // Maintain the population\n this.particles.forEach((p, i) => {\n // Update each particle's position\n p.update()\n // Prune the off-canvas particles\n if(p.y > canvas.height || p.y < -100 || p.x > canvas.width + 100 || p.x < -100) {\n if(recycle && activeCount <= numberOfPieces) {\n // Replace the particle with a brand new one\n this.particles[i] = this.getParticle()\n } else {\n this.removeParticleAt(i)\n }\n }\n })\n return nP > 0 || activeCount < numberOfPieces\n }\n}\n","import tweens from 'tween-functions'\nimport { IRect } from './Rect'\nimport ParticleGenerator from './ParticleGenerator'\n\nexport interface IConfettiOptions {\n /**\n * Width of the component\n * @default window.width\n */\n width: number\n /**\n * Height of the component\n * @default window.height\n */\n height: number\n /**\n * Max number of confetti pieces to render.\n * @default 200\n */\n numberOfPieces: number\n /**\n * Slows movement of pieces. (lower number = slower confetti)\n * @default 0.99\n */\n friction: number\n /**\n * Blows confetti along the X axis.\n * @default 0\n */\n wind: number\n /**\n * How fast it falls (pixels per frame)\n * @default 0.1\n */\n gravity: number\n /**\n * How fast the confetti is emitted horizontally\n * @default 4\n */\n initialVelocityX: {min: number, max: number} | number\n /**\n * How fast the confetti is emitted vertically\n * @default 10\n */\n initialVelocityY: {min: number, max: number} | number\n /**\n * Array of colors to choose from.\n */\n colors: string[]\n /**\n * Opacity of the confetti.\n * @default 1\n */\n opacity: number\n /**\n * If false, only numberOfPieces will be emitted and then stops. If true, when a confetto goes offscreen, a new one will be emitted.\n * @default true\n */\n recycle: boolean\n /**\n * If false, stops the requestAnimationFrame loop.\n * @default true\n */\n run: boolean\n /**\n * Renders some debug text on the canvas.\n * @default false\n */\n debug: boolean\n /**\n * A Rect defining the area where the confetti will spawn.\n * @default {\n * x: 0,\n * y: 0,\n * w: canvas.width,\n * h: 0\n * }\n */\n confettiSource: IRect\n /**\n * Controls the rate at which confetti is spawned.\n * @default easeInOutQuad\n */\n tweenFunction: (currentTime: number, currentValue: number, targetValue: number, duration: number, s?: number) => number\n /**\n * Number of milliseconds it should take to spawn numberOfPieces.\n * @default 5000\n */\n tweenDuration: number\n /**\n * Function to draw your own confetti shapes.\n */\n drawShape?: (context: CanvasRenderingContext2D) => void\n /**\n * Function called when all confetti has fallen off-canvas.\n */\n onConfettiComplete?: (confettiInstance?: Confetti) => void\n}\n\nexport const confettiDefaults: Pick> = {\n width: typeof window !== 'undefined' ? window.innerWidth : 300,\n height: typeof window !== 'undefined' ? window.innerHeight : 200,\n numberOfPieces: 200,\n friction: 0.99,\n wind: 0,\n gravity: 0.1,\n initialVelocityX: 4,\n initialVelocityY: 10,\n colors: [\n '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#3f51b5',\n '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#4CAF50',\n '#8BC34A', '#CDDC39', '#FFEB3B', '#FFC107', '#FF9800',\n '#FF5722', '#795548',\n ],\n opacity: 1.0,\n debug: false,\n tweenFunction: tweens.easeInOutQuad,\n tweenDuration: 5000,\n recycle: true,\n run: true,\n}\n\nexport class Confetti {\n constructor(canvas: HTMLCanvasElement, opts: Partial) {\n this.canvas = canvas\n const ctx = this.canvas.getContext('2d')\n if(!ctx) {\n throw new Error('Could not get canvas context')\n }\n this.context = ctx\n\n this.generator = new ParticleGenerator(this.canvas, () => (this.options as IConfettiOptions))\n this.options = opts\n this.update()\n }\n\n canvas: HTMLCanvasElement\n\n context: CanvasRenderingContext2D\n\n _options!: IConfettiOptions\n\n generator: ParticleGenerator\n\n rafId?: number\n\n get options(): Partial {\n return this._options\n }\n\n set options(opts: Partial) {\n const lastRunState = this._options && this._options.run\n const lastRecycleState = this._options && this._options.recycle\n this.setOptionsWithDefaults(opts)\n if(this.generator) {\n Object.assign(this.generator, this.options.confettiSource)\n if(typeof opts.recycle === 'boolean' && opts.recycle && lastRecycleState === false) {\n this.generator.lastNumberOfPieces = this.generator.particles.length\n }\n }\n if(typeof opts.run === 'boolean' && opts.run && lastRunState === false) {\n this.update()\n }\n }\n\n setOptionsWithDefaults = (opts: Partial) => {\n const computedConfettiDefaults = {\n confettiSource: {\n x: 0,\n y: 0,\n w: this.canvas.width,\n h: 0,\n },\n }\n this._options = { ...computedConfettiDefaults, ...confettiDefaults, ...opts }\n Object.assign(this, opts.confettiSource)\n }\n\n update = () => {\n const {\n options: {\n run,\n onConfettiComplete,\n },\n canvas,\n context,\n } = this\n if(run) {\n context.fillStyle = 'white'\n context.clearRect(0, 0, canvas.width, canvas.height)\n }\n if(this.generator.animate()) {\n this.rafId = requestAnimationFrame(this.update)\n } else {\n if(onConfettiComplete && typeof onConfettiComplete === 'function' && this.generator.particlesGenerated > 0) {\n onConfettiComplete.call(this, this)\n }\n this._options.run = false\n }\n }\n\n reset = () => {\n if(this.generator && this.generator.particlesGenerated > 0) {\n this.generator.particlesGenerated = 0\n this.generator.particles = []\n this.generator.lastNumberOfPieces = 0\n }\n }\n\n stop = () => {\n this.options = { run: false }\n if(this.rafId) {\n cancelAnimationFrame(this.rafId)\n this.rafId = undefined\n }\n }\n}\n\nexport default Confetti\n","import React, { Component, CanvasHTMLAttributes } from 'react'\nimport Confetti, { IConfettiOptions, confettiDefaults } from './Confetti'\n\nconst ref = React.createRef()\n\nexport type Props = Partial & CanvasHTMLAttributes & { canvasRef?: React.Ref }\n\nclass ReactConfettiInternal extends Component {\n static readonly defaultProps = {\n ...confettiDefaults,\n }\n\n static readonly displayName = 'ReactConfetti'\n\n constructor(props: Props, ...rest: any[]) {\n super(props, ...rest)\n this.canvas = props.canvasRef as React.RefObject || ref\n }\n\n canvas: React.RefObject = React.createRef()\n\n confetti?: Confetti\n\n componentDidMount() {\n if(this.canvas.current) {\n const opts = extractCanvasProps(this.props)[0]\n this.confetti = new Confetti(this.canvas.current, opts)\n }\n }\n\n componentDidUpdate() {\n const confettiOptions = extractCanvasProps(this.props)[0]\n if(this.confetti) {\n this.confetti.options = confettiOptions as IConfettiOptions\n }\n }\n\n componentWillUnmount() {\n if(this.confetti) {\n this.confetti.stop()\n }\n this.confetti = undefined\n }\n\n render() {\n const [confettiOptions, passedProps] = extractCanvasProps(this.props)\n const canvasStyles = {\n zIndex: 2,\n position: 'absolute' as 'absolute',\n pointerEvents: 'none' as 'none',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n ...passedProps.style,\n }\n return (\n \n )\n }\n}\n\ninterface Refs {\n [key: string]: React.Ref\n}\nfunction extractCanvasProps(props: Partial | any): [Partial, Partial>, Refs] {\n const confettiOptions: Partial = {}\n const refs: Refs = {}\n const rest: any = {}\n const confettiOptionKeys = [...Object.keys(confettiDefaults), 'confettiSource', 'drawShape', 'onConfettiComplete']\n const refProps = ['canvasRef']\n for(const prop in props) {\n const val = props[prop as string]\n if(confettiOptionKeys.includes(prop)) {\n confettiOptions[prop as keyof IConfettiOptions] = val\n } else if(refProps.includes(prop)) {\n refProps[prop as any] = val\n } else {\n rest[prop] = val\n }\n }\n return [confettiOptions, rest, refs]\n}\n\nexport const ReactConfetti = React.forwardRef((props, ref) => (\n \n))\n\nexport default ReactConfetti\n","/** @license React v16.14.0\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function u(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;dpc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;gzf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(gl&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;by?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;yy?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;cf))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(lN.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;hd.tailExpiration&&1b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTimea?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10 component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){awi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","'use strict';\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n\n var SideEffect =\n /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(React.PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n\n return SideEffect;\n };\n}\n\nmodule.exports = withSideEffect;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNavigator = exports.isBrowser = exports.off = exports.on = exports.noop = void 0;\nvar noop = function () { };\nexports.noop = noop;\nfunction on(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.addEventListener) {\n obj.addEventListener.apply(obj, args);\n }\n}\nexports.on = on;\nfunction off(obj) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (obj && obj.removeEventListener) {\n obj.removeEventListener.apply(obj, args);\n }\n}\nexports.off = off;\nexports.isBrowser = typeof window !== 'undefined';\nexports.isNavigator = typeof navigator !== 'undefined';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar useEffectOnce = function (effect) {\n react_1.useEffect(effect, []);\n};\nexports.default = useEffectOnce;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar react_1 = require(\"react\");\nvar useUnmount_1 = tslib_1.__importDefault(require(\"./useUnmount\"));\nvar useRafState = function (initialState) {\n var frame = react_1.useRef(0);\n var _a = react_1.useState(initialState), state = _a[0], setState = _a[1];\n var setRafState = react_1.useCallback(function (value) {\n cancelAnimationFrame(frame.current);\n frame.current = requestAnimationFrame(function () {\n setState(value);\n });\n }, []);\n useUnmount_1.default(function () {\n cancelAnimationFrame(frame.current);\n });\n return [state, setRafState];\n};\nexports.default = useRafState;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar react_1 = require(\"react\");\nvar useEffectOnce_1 = tslib_1.__importDefault(require(\"./useEffectOnce\"));\nvar useUnmount = function (fn) {\n var fnRef = react_1.useRef(fn);\n // update the ref each render so if it change the newest callback will be invoked\n fnRef.current = fn;\n useEffectOnce_1.default(function () { return function () { return fnRef.current(); }; });\n};\nexports.default = useUnmount;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar react_1 = require(\"react\");\nvar useRafState_1 = tslib_1.__importDefault(require(\"./useRafState\"));\nvar util_1 = require(\"./misc/util\");\nvar useWindowSize = function (initialWidth, initialHeight) {\n if (initialWidth === void 0) { initialWidth = Infinity; }\n if (initialHeight === void 0) { initialHeight = Infinity; }\n var _a = useRafState_1.default({\n width: util_1.isBrowser ? window.innerWidth : initialWidth,\n height: util_1.isBrowser ? window.innerHeight : initialHeight,\n }), state = _a[0], setState = _a[1];\n react_1.useEffect(function () {\n if (util_1.isBrowser) {\n var handler_1 = function () {\n setState({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n };\n util_1.on(window, 'resize', handler_1);\n return function () {\n util_1.off(window, 'resize', handler_1);\n };\n }\n }, []);\n return state;\n};\nexports.default = useWindowSize;\n","/** @license React v16.14.0\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","/** @license React v16.14.0\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cQ.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;k=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\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\t// no module.id needed\n\t\t// no module.loaded needed\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// Return the exports of the module\n\treturn module.exports;\n}\n\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__.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__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// 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__.p = \"/\";","import React from 'react';\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nconst defaultProps = {\n breakpointCols: undefined,\n // optional, number or object { default: number, [key: number]: number }\n className: undefined,\n // required, string\n columnClassName: undefined,\n // optional, string\n // Any React children. Typically an array of JSX items\n children: undefined,\n // Custom attributes, however it is advised against\n // using these to prevent unintended issues and future conflicts\n // ...any other attribute, will be added to the container\n columnAttrs: undefined,\n // object, added to the columns\n // Deprecated props\n // The column property is deprecated.\n // It is an alias of the `columnAttrs` property\n column: undefined\n};\nconst DEFAULT_COLUMNS = 2;\n\nclass Masonry extends React.Component {\n constructor(props) {\n super(props); // Correct scope for when methods are accessed externally\n\n this.reCalculateColumnCount = this.reCalculateColumnCount.bind(this);\n this.reCalculateColumnCountDebounce = this.reCalculateColumnCountDebounce.bind(this); // default state\n\n let columnCount;\n\n if (this.props.breakpointCols && this.props.breakpointCols.default) {\n columnCount = this.props.breakpointCols.default;\n } else {\n columnCount = parseInt(this.props.breakpointCols) || DEFAULT_COLUMNS;\n }\n\n this.state = {\n columnCount\n };\n }\n\n componentDidMount() {\n this.reCalculateColumnCount(); // window may not be available in some environments\n\n if (window) {\n window.addEventListener('resize', this.reCalculateColumnCountDebounce);\n }\n }\n\n componentDidUpdate() {\n this.reCalculateColumnCount();\n }\n\n componentWillUnmount() {\n if (window) {\n window.removeEventListener('resize', this.reCalculateColumnCountDebounce);\n }\n }\n\n reCalculateColumnCountDebounce() {\n if (!window || !window.requestAnimationFrame) {\n // IE10+\n this.reCalculateColumnCount();\n return;\n }\n\n if (window.cancelAnimationFrame) {\n // IE10+\n window.cancelAnimationFrame(this._lastRecalculateAnimationFrame);\n }\n\n this._lastRecalculateAnimationFrame = window.requestAnimationFrame(() => {\n this.reCalculateColumnCount();\n });\n }\n\n reCalculateColumnCount() {\n const windowWidth = window && window.innerWidth || Infinity;\n let breakpointColsObject = this.props.breakpointCols; // Allow passing a single number to `breakpointCols` instead of an object\n\n if (typeof breakpointColsObject !== 'object') {\n breakpointColsObject = {\n default: parseInt(breakpointColsObject) || DEFAULT_COLUMNS\n };\n }\n\n let matchedBreakpoint = Infinity;\n let columns = breakpointColsObject.default || DEFAULT_COLUMNS;\n\n for (let breakpoint in breakpointColsObject) {\n const optBreakpoint = parseInt(breakpoint);\n const isCurrentBreakpoint = optBreakpoint > 0 && windowWidth <= optBreakpoint;\n\n if (isCurrentBreakpoint && optBreakpoint < matchedBreakpoint) {\n matchedBreakpoint = optBreakpoint;\n columns = breakpointColsObject[breakpoint];\n }\n }\n\n columns = Math.max(1, parseInt(columns) || 1);\n\n if (this.state.columnCount !== columns) {\n this.setState({\n columnCount: columns\n });\n }\n }\n\n itemsInColumns() {\n const currentColumnCount = this.state.columnCount;\n const itemsInColumns = new Array(currentColumnCount); // Force children to be handled as an array\n\n const items = React.Children.toArray(this.props.children);\n\n for (let i = 0; i < items.length; i++) {\n const columnIndex = i % currentColumnCount;\n\n if (!itemsInColumns[columnIndex]) {\n itemsInColumns[columnIndex] = [];\n }\n\n itemsInColumns[columnIndex].push(items[i]);\n }\n\n return itemsInColumns;\n }\n\n renderColumns() {\n const {\n column,\n columnAttrs = {},\n columnClassName\n } = this.props;\n const childrenInColumns = this.itemsInColumns();\n const columnWidth = `${100 / childrenInColumns.length}%`;\n let className = columnClassName;\n\n if (className && typeof className !== 'string') {\n this.logDeprecated('The property \"columnClassName\" requires a string'); // This is a deprecated default and will be removed soon.\n\n if (typeof className === 'undefined') {\n className = 'my-masonry-grid_column';\n }\n }\n\n const columnAttributes = _objectSpread(_objectSpread(_objectSpread({}, column), columnAttrs), {}, {\n style: _objectSpread(_objectSpread({}, columnAttrs.style), {}, {\n width: columnWidth\n }),\n className\n });\n\n return childrenInColumns.map((items, i) => {\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, columnAttributes, {\n key: i\n }), items);\n });\n }\n\n logDeprecated(message) {\n console.error('[Masonry]', message);\n }\n\n render() {\n const _this$props = this.props,\n {\n // ignored\n children,\n breakpointCols,\n columnClassName,\n columnAttrs,\n column,\n // used\n className\n } = _this$props,\n rest = _objectWithoutProperties(_this$props, [\"children\", \"breakpointCols\", \"columnClassName\", \"columnAttrs\", \"column\", \"className\"]);\n\n let classNameOutput = className;\n\n if (typeof className !== 'string') {\n this.logDeprecated('The property \"className\" requires a string'); // This is a deprecated default and will be removed soon.\n\n if (typeof className === 'undefined') {\n classNameOutput = 'my-masonry-grid';\n }\n }\n\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, rest, {\n className: classNameOutput\n }), this.renderColumns());\n }\n\n}\n\nMasonry.defaultProps = defaultProps;\n\nexport default Masonry;\n","import React from \"react\";\nimport \"./Mason.css\";\nimport Masonry from \"react-masonry-css\";\n\n/* PHOTO IMPORTS*/\nimport Lava from \"../img/IMG_50.JPEG\";\nimport Scallops from \"../img/IMG_115.JPEG\";\nimport Omlette from \"../img/IMG_114.JPEG\";\nimport Tacos from \"../img/IMG_113.JPEG\";\nimport Steak from \"../img/IMG_112.JPEG\";\nimport Sandwhich from \"../img/IMG_111.JPEG\";\nimport Salad from \"../img/IMG_110.JPEG\";\nimport Cookies from \"../img/IMG_109.JPEG\";\nimport Shrimp from \"../img/IMG_108.JPEG\";\nimport SteakSandwhich from \"../img/IMG_107.JPEG\";\nimport LambRack from \"../img/IMG_106.JPEG\";\nimport EggsHam from \"../img/IMG_105.JPEG\";\nimport AvoToast from \"../img/IMG_104.JPEG\";\nimport Waffles from \"../img/IMG_103.JPEG\";\nimport Pho from \"../img/IMG_102.JPEG\";\nimport Ramen from \"../img/IMG_101.JPEG\";\nimport Lamb from \"../img/IMG-5515.jpg\";\nimport Eggs from \"../img/IMG-6072.jpg\";\nimport Hash from \"../img/IMG-6089.jpg\";\n\n\n\n\nfunction Mason() {\n\n const breakpointColumnsObj = {\n default: 3,\n 1100: 3,\n 700: 1,\n 500: 1\n };\n\n var maxWidth = \"500px\";\n\n var items = [\n {id: 1, src: Ramen, alt: \"Ramen\"},\n {id: 2, src: Pho, alt: \"Pho\"},\n {id: 3, src: Waffles, alt: \"Waffles\"},\n {id: 4, src: AvoToast, alt: \"AvoToast\"},\n {id: 5, src: EggsHam, alt: \"EggsHam\"},\n {id: 6, src: LambRack, alt: \"LambRack\"},\n {id: 7, src: SteakSandwhich, alt: \"SteakSandwhich\"},\n {id: 8, src: Shrimp, alt: \"Shrimp\"},\n {id: 9, src: Cookies, alt: \"Cookies\"},\n {id: 10, src: Salad, alt: \"Salad\"},\n {id: 11, src: Sandwhich, alt: \"Sandwhich\"},\n {id: 12, src: Steak, alt: \"Steak\"},\n {id: 13, src: Tacos, alt: \"Tacos\"},\n {id: 14, src: Omlette, alt: \"Omlette\"},\n {id: 15, src: Scallops, alt: \"Scallops\"},\n {id: 17, src: Lamb, alt: \"Lamb\"},\n {id: 18, src: Hash, alt: \"Hash\"},\n {id: 19, src: Eggs, alt: \"Eggs\"}\n ];\n \n // Convert array to JSX items\n items = items.map(function(item) {\n return {item.alt}\n });\n \n return (\n
\n \n {items}\n \n
\n );\n}\n\nexport default Mason;\n","import React from \"react\";\nimport \"./Dinner.css\";\n\nfunction Dinner() {\n\n return (\n
\n
\n
\n

Dinner Menu

\n

Tuesday May 2nd, 2023

\n
\n
\n {/*
Drinks
*/}\n
\n

Red Wine

\n

Red wine, bottle says \"dry\"

\n
\n
\n
\n {/*

Main

*/}\n
\n

Steak

\n

Sous vide filet, truffle butter

\n
\n
\n

Potatoes

\n

Kenji's potatoes, herb oil

\n
\n
\n

Broccoli

\n

Need a vegetable

\n
\n
\n
\n {/*

Dessert

*/}\n
\n

Chocolate Lava Cakes

\n

Vanilla ice cream, berries

\n
\n
\n
\n

Executive Chef Max Smith

\n
\n\n
\n \n
\n );\n}\n\nexport default Dinner;\n","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface HandlerResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => Promise\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise;\n}\n\nexport interface AgnosticPatchRoutesOnNavigationFunction<\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> {\n (opts: {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: AgnosticRouteObject[]) => void;\n }): void | Promise;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n HandlerResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n unstable_patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n unstable_dataStrategy?: DataStrategyFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.unstable_patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // FIFO queue of previously discovered routes to prevent re-calling on\n // subsequent navigations to the same path\n let discoveredRoutesMaxSize = 1000;\n let discoveredRoutes = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (\n typeof m.route.loader === \"function\" &&\n m.route.loader.hydrate === true\n ) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { boundaryId, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches\n );\n result = results[0];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { boundaryId, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n fetchRequest,\n [match],\n requestMatches\n );\n let actionResult = actionResults[0];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n fetchRequest,\n [match],\n matches\n );\n let result = results[0];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[]\n ): Promise {\n try {\n let results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e,\n }));\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let [loaderResults, ...fetcherResults] = await Promise.all([\n matchesToLoad.length\n ? callDataStrategy(\"loader\", request, matchesToLoad, matches)\n : [],\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(\n init.history,\n f.path,\n f.controller.signal\n );\n return callDataStrategy(\n \"loader\",\n fetcherRequest,\n [f.match],\n f.matches\n ).then((r) => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n });\n }\n }),\n ]);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function handleDiscoverRouteError(\n pathname: string,\n discoverResult: DiscoverRoutesErrorResult\n ) {\n return {\n boundaryId: findNearestBoundary(discoverResult.partialMatches).route.id,\n error: getInternalRouterError(400, {\n type: \"route-discovery\",\n pathname,\n message:\n discoverResult.error != null && \"message\" in discoverResult.error\n ? discoverResult.error\n : String(discoverResult.error),\n }),\n };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n // Don't bother re-calling patchRouteOnMiss for a path we've already\n // processed. the last execution would have patched the route tree\n // accordingly so `matches` here are already accurate.\n if (discoveredRoutes.has(pathname)) {\n return { active: false, matches };\n }\n\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n try {\n await loadLazyRouteChildren(\n patchRoutesOnNavigationImpl!,\n pathname,\n partialMatches,\n routesToUse,\n manifest,\n mapRouteProperties,\n pendingPatchRoutes,\n signal\n );\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n addToFifoQueue(pathname, discoveredRoutes);\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n addToFifoQueue(pathname, discoveredRoutes);\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function addToFifoQueue(path: string, queue: Set) {\n if (queue.size >= discoveredRoutesMaxSize) {\n let first = queue.values().next().value;\n queue.delete(first);\n }\n queue.add(path);\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n result = results[0];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null\n ): Promise {\n let results = await callDataStrategyImpl(\n unstable_dataStrategy || defaultDataStrategy,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[0]\n : undefined;\n let boundaryMatches = boundaryId\n ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n : matches;\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Idempotent utility to execute patchRoutesOnNavigation() to lazily load route\n * definitions and update the routes/routeManifest\n */\nasync function loadLazyRouteChildren(\n patchRoutesOnNavigationImpl: AgnosticPatchRoutesOnNavigationFunction,\n path: string,\n matches: AgnosticDataRouteMatch[],\n routes: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n pendingRouteChildren: Map<\n string,\n ReturnType\n >,\n signal: AbortSignal\n) {\n let key = [path, ...matches.map((m) => m.route.id)].join(\"-\");\n try {\n let pending = pendingRouteChildren.get(key);\n if (!pending) {\n pending = patchRoutesOnNavigationImpl({\n path,\n matches,\n patch: (routeId, children) => {\n if (!signal.aborted) {\n patchRoutesImpl(\n routeId,\n children,\n routes,\n manifest,\n mapRouteProperties\n );\n }\n },\n });\n pendingRouteChildren.set(key, pending);\n }\n\n if (pending && isPromise(pending)) {\n await pending;\n }\n } finally {\n pendingRouteChildren.delete(key);\n }\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [routeId, \"patch\", String(route.children?.length || \"0\")],\n manifest\n );\n if (route.children) {\n route.children.push(...dataChildren);\n } else {\n route.children = dataChildren;\n }\n } else {\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [\"patch\", String(routesToUse.length || \"0\")],\n manifest\n );\n routesToUse.push(...dataChildren);\n }\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(\n opts: DataStrategyFunctionArgs\n): ReturnType {\n return Promise.all(opts.matches.map((m) => m.resolve()));\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise {\n let routeIdsToLoad = matchesToLoad.reduce(\n (acc, m) => acc.add(m.route.id),\n new Set()\n );\n let loadedMatches = new Set();\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: matches.map((match) => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = (handlerOverride) => {\n loadedMatches.add(match.route.id);\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n manifest,\n mapRouteProperties,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n }),\n request,\n params: matches[0].params,\n context: requestContext,\n });\n\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach((m) =>\n invariant(\n loadedMatches.has(m.route.id),\n `\\`match.resolve()\\` was not called for route id \"${m.route.id}\". ` +\n \"You must call `match.resolve()` on every match passed to \" +\n \"`dataStrategy` to ensure all routes are properly loaded.\"\n )\n );\n\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: HandlerResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise;\n if (handlerOverride) {\n handlerPromise = handlerOverride((ctx: unknown) => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n }\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // HandlerResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertHandlerResultToDataResult(\n handlerResult: HandlerResult\n): Promise {\n let { result, type } = handlerResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n };\n }\n\n // Convert thrown unstable_data() to ErrorResponse instances\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n );\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\" | \"route-discovery\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (type === \"route-discovery\") {\n errorMessage =\n `Unable to match URL \"${pathname}\" - the \\`unstable_patchRoutesOnNavigation()\\` ` +\n `function threw the following error:\\n${message}`;\n } else if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isHandlerResult(result: unknown): result is HandlerResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectHandlerResult(result: HandlerResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_decodePath as decodePath,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

đź’ż Hey developer đź‘‹

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else if (\n future?.v7_partialHydration &&\n parentMatches.length === 0 &&\n !dataRouterState.initialized &&\n dataRouterState.matches.length > 0\n ) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // ``\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a