{"version":3,"file":"js/app.b2515c8b429955e3bd27.js","mappings":";qFAYA,SAASA,SAASC,GACd,OAAgB,OAARA,GACW,iBAARA,GACP,gBAAiBA,GACjBA,EAAIC,cAAgBC,MAC5B,CACA,SAASC,OAAOC,EAAQC,QACL,IAAXD,IAAqBA,EAAS,CAAC,QACvB,IAARC,IAAkBA,EAAM,CAAC,GAC7BH,OAAOI,KAAKD,GAAKE,SAAQ,SAAUC,QACJ,IAAhBJ,EAAOI,GACdJ,EAAOI,GAAOH,EAAIG,GACbT,SAASM,EAAIG,KAClBT,SAASK,EAAOI,KAChBN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GAC/BN,OAAOC,EAAOI,GAAMH,EAAIG,GAEhC,GACJ,gHAEA,IAAIE,EAA0B,oBAAbC,SAA2BA,SAAW,CAAC,EACpDC,EAAc,CACdC,KAAM,CAAC,EACPC,iBAAkB,WAAc,EAChCC,oBAAqB,WAAc,EACnCC,cAAe,CACXC,KAAM,WAAc,EACpBC,SAAU,IAEdC,cAAe,WACX,OAAO,IACX,EACAC,iBAAkB,WACd,MAAO,EACX,EACAC,eAAgB,WACZ,OAAO,IACX,EACAC,YAAa,WACT,MAAO,CACHC,UAAW,WAAc,EAEjC,EACAC,cAAe,WACX,MAAO,CACHC,SAAU,GACVC,WAAY,GACZC,MAAO,CAAC,EACRC,aAAc,WAAc,EAC5BC,qBAAsB,WAClB,MAAO,EACX,EAER,EACAC,gBAAiB,WACb,MAAO,CAAC,CACZ,EACAC,WAAY,WACR,OAAO,IACX,EACAC,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGhBrC,OAAOO,EAAKE,GAEZ,IAAI6B,EAAwB,oBAAXC,OAAyBA,OAAS,CAAC,EA2CpDvC,OAAOsC,EA1CS,CACZ9B,SAAUC,EACV+B,UAAW,CACPC,UAAW,IAEfZ,SAAU,CACNC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEZK,QAAS,CACLC,aAAc,WAAc,EAC5BC,UAAW,WAAc,EACzBC,GAAI,WAAc,EAClBC,KAAM,WAAc,GAExBC,YAAa,SAASA,cAClB,OAAOC,IACX,EACArC,iBAAkB,WAAc,EAChCC,oBAAqB,WAAc,EACnCqC,iBAAkB,WACd,MAAO,CACHC,iBAAkB,WACd,MAAO,EACX,EAER,EACAC,MAAO,WAAc,EACrBC,KAAM,WAAc,EACpBC,OAAQ,CAAC,EACTC,WAAY,WAAc,EAC1BC,aAAc,WAAc,EAC5BC,WAAY,WACR,MAAO,CAAC,CACZ,IC/GJ,MAAMC,KACJ3D,YAAY4D,GACV,MAAMC,EAAOX,KAEb,IAAK,IAAIY,EAAI,EAAGA,EAAIF,EAAIpD,OAAQsD,GAAK,EACnCD,EAAKC,GAAKF,EAAIE,GAIhB,OAFAD,EAAKrD,OAASoD,EAAIpD,OAEX0C,IACT,EAGF,SAASa,EAAEC,EAAUC,GACnB,MAAML,EAAM,GACZ,IAAIE,EAAI,EACR,GAAIE,IAAaC,GACXD,aAAoBL,KACtB,OAAOK,EAGX,GAAIA,EAEF,GAAwB,iBAAbA,EAAuB,CAChC,IAAIE,EACAC,EACJ,MAAMC,EAAOJ,EAASK,OACtB,GAAID,EAAKE,QAAQ,MAAQ,GAAKF,EAAKE,QAAQ,MAAQ,EAAG,CACpD,IAAIC,EAAW,MAQf,IAP4B,IAAxBH,EAAKE,QAAQ,SAAcC,EAAW,MACd,IAAxBH,EAAKE,QAAQ,SAAcC,EAAW,SACd,IAAxBH,EAAKE,QAAQ,QAAwC,IAAxBF,EAAKE,QAAQ,SAAcC,EAAW,MACxC,IAA3BH,EAAKE,QAAQ,YAAiBC,EAAW,SACb,IAA5BH,EAAKE,QAAQ,aAAkBC,EAAW,UAC9CJ,EAAa1D,EAAA,cAAuB8D,GACpCJ,EAAWK,UAAYJ,EAClBN,EAAI,EAAGA,EAAIK,EAAW1C,WAAWjB,OAAQsD,GAAK,EACjDF,EAAIa,KAAKN,EAAW1C,WAAWqC,GAEnC,MAQE,IAFEI,EALGD,GAA2B,MAAhBD,EAAS,IAAeA,EAASU,MAAM,aAK9CT,GAAWxD,GAAUU,iBAAiB6C,EAASK,QAHhD,CAAC5D,EAAA,eAAwBuD,EAASK,OAAOM,MAAM,KAAK,KAKvDb,EAAI,EAAGA,EAAII,EAAI1D,OAAQsD,GAAK,EAC3BI,EAAIJ,IAAIF,EAAIa,KAAKP,EAAIJ,GAG/B,MAAO,GAAIE,EAASY,UAAYZ,IAAaxB,GAAUwB,IAAavD,EAElEmD,EAAIa,KAAKT,QACJ,GAAIA,EAASxD,OAAS,GAAKwD,EAAS,GAAGY,SAE5C,IAAKd,EAAI,EAAGA,EAAIE,EAASxD,OAAQsD,GAAK,EACpCF,EAAIa,KAAKT,EAASF,IAIxB,OAAO,IAAIH,KAAKC,EAClB,CAMA,SAASiB,OAAOjB,GACd,MAAMkB,EAAc,GACpB,IAAK,IAAIhB,EAAI,EAAGA,EAAIF,EAAIpD,OAAQsD,GAAK,GACE,IAAjCgB,EAAYR,QAAQV,EAAIE,KAAYgB,EAAYL,KAAKb,EAAIE,IAE/D,OAAOgB,CACT,CAVAf,EAAEgB,GAAKpB,KAAKqB,UACZjB,EAAEkB,MAAQtB,KACVI,EAAEJ,KAAOA,KA+pCS,gBAAkBgB,MAAM,KCjuC1C,MAAMO,EAAU,CACdC,SD0FF,SAASA,SAASC,GAChB,QAAyB,IAAdA,EACT,OAAOlC,KAET,MAAMmC,EAAUD,EAAUT,MAAM,KAChC,IAAK,IAAIb,EAAI,EAAGA,EAAIuB,EAAQ7E,OAAQsD,GAAK,EACvC,IAAK,IAAIwB,EAAI,EAAGA,EAAIpC,KAAK1C,OAAQ8E,GAAK,OACb,IAAZpC,KAAKoC,SAAmD,IAAtBpC,KAAKoC,GAAGC,WAA2BrC,KAAKoC,GAAGC,UAAUC,IAAIH,EAAQvB,IAGlH,OAAOZ,IACT,ECpGEuC,YDqGF,SAASA,YAAYL,GACnB,MAAMC,EAAUD,EAAUT,MAAM,KAChC,IAAK,IAAIb,EAAI,EAAGA,EAAIuB,EAAQ7E,OAAQsD,GAAK,EACvC,IAAK,IAAIwB,EAAI,EAAGA,EAAIpC,KAAK1C,OAAQ8E,GAAK,OACb,IAAZpC,KAAKoC,SAAmD,IAAtBpC,KAAKoC,GAAGC,WAA2BrC,KAAKoC,GAAGC,UAAUG,OAAOL,EAAQvB,IAGrH,OAAOZ,IACT,EC5GEyC,SD6GF,SAASA,SAASP,GAChB,QAAKlC,KAAK,IACHA,KAAK,GAAGqC,UAAUK,SAASR,EACpC,EC/GES,YDgHF,SAASA,YAAYT,GACnB,MAAMC,EAAUD,EAAUT,MAAM,KAChC,IAAK,IAAIb,EAAI,EAAGA,EAAIuB,EAAQ7E,OAAQsD,GAAK,EACvC,IAAK,IAAIwB,EAAI,EAAGA,EAAIpC,KAAK1C,OAAQ8E,GAAK,OACb,IAAZpC,KAAKoC,SAAmD,IAAtBpC,KAAKoC,GAAGC,WAA2BrC,KAAKoC,GAAGC,UAAUO,OAAOT,EAAQvB,IAGrH,OAAOZ,IACT,ECvHE6C,KDwHF,SAASA,KAAKC,EAAOC,GACnB,GAAyB,IAArBC,UAAU1F,QAAiC,iBAAVwF,EAEnC,OAAI9C,KAAK,GAAWA,KAAK,GAAGiD,aAAaH,QACzC,EAIF,IAAK,IAAIlC,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EACpC,GAAyB,IAArBoC,UAAU1F,OAEZ0C,KAAKY,GAAGnC,aAAaqE,EAAOC,QAI5B,IAAK,MAAMG,KAAYJ,EACrB9C,KAAKY,GAAGsC,GAAYJ,EAAMI,GAC1BlD,KAAKY,GAAGnC,aAAayE,EAAUJ,EAAMI,IAI3C,OAAOlD,IACT,EC7IEmD,WD+IF,SAASA,WAAWN,GAClB,IAAK,IAAIjC,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EACpCZ,KAAKY,GAAGwC,gBAAgBP,GAE1B,OAAO7C,IACT,ECnJEqD,KD0KF,SAASA,KAAKhG,EAAK0F,GACjB,IAAIO,EACJ,QAAqB,IAAVP,EAAX,CAkBA,IAAK,IAAInC,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EACpC0C,EAAKtD,KAAKY,GACL0C,EAAGC,yBAAwBD,EAAGC,uBAAyB,CAAC,GAC7DD,EAAGC,uBAAuBlG,GAAO0F,EAEnC,OAAO/C,IARP,CAZE,GAFAsD,EAAKtD,KAAK,GAENsD,EAAI,CACN,GAAIA,EAAGC,wBAA2BlG,KAAOiG,EAAGC,uBAC1C,OAAOD,EAAGC,uBAAuBlG,GAGnC,MAAMmG,EAAUF,EAAGL,aAAa,QAAQ5F,KACxC,OAAImG,QAGJ,CACF,CAWJ,ECnMEC,UDqQF,SAASA,UAAUA,GACjB,IAAK,IAAI7C,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EAAG,CACvC,MAAM8C,EAAU1D,KAAKY,GAAGpC,MACxBkF,EAAQC,gBAAkBF,EAC1BC,EAAQD,UAAYA,CACtB,CACA,OAAOzD,IACT,EC3QE4D,WD4QF,SAASA,WAAWC,GACM,iBAAbA,IACTA,EAAW,GAAGA,OAEhB,IAAK,IAAIjD,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EAAG,CACvC,MAAM8C,EAAU1D,KAAKY,GAAGpC,MACxBkF,EAAQI,yBAA2BD,EACnCH,EAAQK,mBAAqBF,CAC/B,CACA,OAAO7D,IACT,ECrREgE,GDuRF,SAASA,MAAMC,GACb,IAAKC,EAAWC,EAAgBC,EAAUC,GAAWJ,EAOrD,SAASK,gBAAgBC,GACvB,MAAMtH,EAASsH,EAAEtH,OACjB,IAAKA,EAAQ,OACb,MAAMuH,EAAYD,EAAEtH,OAAOwH,eAAiB,GAI5C,GAHID,EAAUpD,QAAQmD,GAAK,GACzBC,EAAUE,QAAQH,GAEhB1D,EAAE5D,GAAQ0H,GAAGR,GAAiBC,EAASQ,MAAM3H,EAAQuH,OACpD,CACH,MAAMK,EAAUhE,EAAE5D,GAAQ4H,UAC1B,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAQvH,OAAQwH,GAAK,EACnCjE,EAAEgE,EAAQC,IAAIH,GAAGR,IAAiBC,EAASQ,MAAMC,EAAQC,GAAIN,EAErE,CACF,CACA,SAASO,YAAYR,GACnB,MAAMC,EAAYD,GAAKA,EAAEtH,QAASsH,EAAEtH,OAAOwH,eAAsB,GAC7DD,EAAUpD,QAAQmD,GAAK,GACzBC,EAAUE,QAAQH,GAEpBH,EAASQ,MAAM5E,KAAMwE,EACvB,CA3BuB,mBAAZP,EAAK,MACbC,EAAWE,EAAUC,GAAWJ,EACjCE,OAAiBa,GAEdX,IAASA,GAAU,GAwBxB,MAAMY,EAASf,EAAUzC,MAAM,KAC/B,IAAIW,EACJ,IAAK,IAAIxB,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EAAG,CACvC,MAAM0C,EAAKtD,KAAKY,GAChB,GAAKuD,EAaH,IAAK/B,EAAI,EAAGA,EAAI6C,EAAO3H,OAAQ8E,GAAK,EAAG,CACrC,MAAM8C,EAAQD,EAAO7C,GAChBkB,EAAG6B,oBAAmB7B,EAAG6B,kBAAoB,CAAC,GAC9C7B,EAAG6B,kBAAkBD,KAAQ5B,EAAG6B,kBAAkBD,GAAS,IAChE5B,EAAG6B,kBAAkBD,GAAO3D,KAAK,CAC/B6C,WACAgB,cAAed,kBAEjBhB,EAAG3F,iBAAiBuH,EAAOZ,gBAAiBD,EAC9C,MArBA,IAAKjC,EAAI,EAAGA,EAAI6C,EAAO3H,OAAQ8E,GAAK,EAAG,CACrC,MAAM8C,EAAQD,EAAO7C,GAChBkB,EAAG+B,gBAAe/B,EAAG+B,cAAgB,CAAC,GACtC/B,EAAG+B,cAAcH,KAAQ5B,EAAG+B,cAAcH,GAAS,IACxD5B,EAAG+B,cAAcH,GAAO3D,KAAK,CAC3B6C,WACAgB,cAAeL,cAEjBzB,EAAG3F,iBAAiBuH,EAAOH,YAAaV,EAC1C,CAcJ,CACA,OAAOrE,IACT,EClVEsF,IDmVF,SAASA,OAAOrB,GACd,IAAKC,EAAWC,EAAgBC,EAAUC,GAAWJ,EAC9B,mBAAZA,EAAK,MACbC,EAAWE,EAAUC,GAAWJ,EACjCE,OAAiBa,GAEdX,IAASA,GAAU,GAExB,MAAMY,EAASf,EAAUzC,MAAM,KAC/B,IAAK,IAAIb,EAAI,EAAGA,EAAIqE,EAAO3H,OAAQsD,GAAK,EAAG,CACzC,MAAMsE,EAAQD,EAAOrE,GACrB,IAAK,IAAIwB,EAAI,EAAGA,EAAIpC,KAAK1C,OAAQ8E,GAAK,EAAG,CACvC,MAAMkB,EAAKtD,KAAKoC,GAChB,IAAImD,EAMJ,IALKpB,GAAkBb,EAAG+B,cACxBE,EAAWjC,EAAG+B,cAAcH,GACnBf,GAAkBb,EAAG6B,oBAC9BI,EAAWjC,EAAG6B,kBAAkBD,IAE9BK,GAAYA,EAASjI,OACvB,IAAK,IAAIwH,EAAIS,EAASjI,OAAS,EAAGwH,GAAK,EAAGA,GAAK,EAAG,CAChD,MAAMU,EAAUD,EAAST,GACrBV,GAAYoB,EAAQpB,WAAaA,GAG1BA,GAAYoB,EAAQpB,UAAYoB,EAAQpB,SAASqB,WAAaD,EAAQpB,SAASqB,YAAcrB,GAFtGd,EAAG1F,oBAAoBsH,EAAOM,EAAQJ,cAAef,GACrDkB,EAASG,OAAOZ,EAAG,IAITV,IACVd,EAAG1F,oBAAoBsH,EAAOM,EAAQJ,cAAef,GACrDkB,EAASG,OAAOZ,EAAG,GAEvB,CAEJ,CACF,CACA,OAAO9E,IACT,ECvXE2F,QDyYF,SAASA,WAAW1B,GAClB,MAAMgB,EAAShB,EAAK,GAAGxC,MAAM,KACvB+C,EAAYP,EAAK,GACvB,IAAK,IAAIrD,EAAI,EAAGA,EAAIqE,EAAO3H,OAAQsD,GAAK,EAAG,CACzC,MAAMsE,EAAQD,EAAOrE,GACrB,IAAK,IAAIwB,EAAI,EAAGA,EAAIpC,KAAK1C,OAAQ8E,GAAK,EAAG,CACvC,MAAMkB,EAAKtD,KAAKoC,GAChB,IAAIwD,EACJ,IACEA,EAAM,IAAItG,EAAA,YAAmB4F,EAAO,CAClCW,OAAQrB,EACRsB,SAAS,EACTC,YAAY,GAMhB,CAJE,MAAOxB,GACPqB,EAAMrI,EAAA,YAAqB,SAC3BqI,EAAIxH,UAAU8G,GAAO,GAAM,GAC3BU,EAAIC,OAASrB,CACf,CAEAlB,EAAGmB,cAAgBR,EAAK+B,QAAO,CAAC3C,EAAM4C,IAAcA,EAAY,IAChE3C,EAAG4C,cAAcN,GACjBtC,EAAGmB,cAAgB,UACZnB,EAAGmB,aACZ,CACF,CACA,OAAOzE,IACT,ECnaEmG,cDoaF,SAASA,cAAcC,GACrB,MAAMnB,EAAS,CAAC,sBAAuB,iBACjCoB,EAAMrG,KACZ,IAAIY,EACJ,SAAS0F,aAAa/B,GAEpB,GAAIA,EAAEtH,SAAW+C,KAEjB,IADAoG,EAASG,KAAKvG,KAAMuE,GACf3D,EAAI,EAAGA,EAAIqE,EAAO3H,OAAQsD,GAAK,EAClCyF,EAAIf,IAAIL,EAAOrE,GAAI0F,aAEvB,CACA,GAAIF,EACF,IAAKxF,EAAI,EAAGA,EAAIqE,EAAO3H,OAAQsD,GAAK,EAClCyF,EAAIrC,GAAGiB,EAAOrE,GAAI0F,cAGtB,OAAOtG,IACT,ECrbEwG,WDodF,SAAS,wBAAWC,GAClB,GAAIzG,KAAK1C,OAAS,EAAG,CACnB,GAAImJ,EAAgB,CAElB,MAAMC,EAAS1G,KAAK0G,SACpB,OAAO1G,KAAK,GAAG2G,YAAcC,WAAWF,EAAOxG,iBAAiB,iBAAmB0G,WAAWF,EAAOxG,iBAAiB,eACxH,CACA,OAAOF,KAAK,GAAG2G,WACjB,CACA,OAAO,IACT,EC7dEE,YDyeF,SAAS,yBAAYJ,GACnB,GAAIzG,KAAK1C,OAAS,EAAG,CACnB,GAAImJ,EAAgB,CAElB,MAAMC,EAAS1G,KAAK0G,SACpB,OAAO1G,KAAK,GAAG8G,aAAeF,WAAWF,EAAOxG,iBAAiB,eAAiB0G,WAAWF,EAAOxG,iBAAiB,iBACvH,CACA,OAAOF,KAAK,GAAG8G,YACjB,CACA,OAAO,IACT,EClfEC,ODmfF,SAASA,SACP,GAAI/G,KAAK1C,OAAS,EAAG,CACnB,MAAMgG,EAAKtD,KAAK,GACVgH,EAAM1D,EAAG2D,wBACTvJ,EAAOH,EAAA,KACP2J,EAAY5D,EAAG4D,WAAaxJ,EAAKwJ,WAAa,EAC9CC,EAAa7D,EAAG6D,YAAczJ,EAAKyJ,YAAc,EACjDC,EAAY9D,IAAOhE,EAASA,EAAA,QAAiBgE,EAAG8D,UAChDC,EAAa/D,IAAOhE,EAASA,EAAA,QAAiBgE,EAAG+D,WACvD,MAAO,CACLC,IAAMN,EAAIM,IAAMF,EAAaF,EAC7BK,KAAOP,EAAIO,KAAOF,EAAcF,EAEpC,CAEA,OAAO,IACT,EClgBEK,ID0hBF,SAASA,IAAIC,EAAO1E,GAClB,IAAInC,EACJ,GAAyB,IAArBoC,UAAU1F,OAAc,CAC1B,GAAqB,iBAAVmK,EAEJ,CACL,IAAK7G,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EAEhC,IAAK,IAAI8G,KAAQD,EACfzH,KAAKY,GAAGpC,MAAMkJ,GAAQD,EAAMC,GAGhC,OAAO1H,IACT,CATE,GAAIA,KAAK,GAAI,OAAOV,EAAA,iBAAwBU,KAAK,GAAI,MAAME,iBAAiBuH,EAUhF,CACA,GAAyB,IAArBzE,UAAU1F,QAAiC,iBAAVmK,EAAoB,CACvD,IAAK7G,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EAChCZ,KAAKY,GAAGpC,MAAMiJ,GAAS1E,EAEzB,OAAO/C,IACT,CACA,OAAOA,IACT,EC/iBE2H,KD0jBF,SAASA,KAAKvB,GAEZ,IAAKA,EAAU,OAAOpG,KAEtB,IAAK,IAAIY,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EAEpC,IAA2C,IAAvCwF,EAASG,KAAKvG,KAAKY,GAAIA,EAAGZ,KAAKY,IAEjC,OAAOZ,KAIX,OAAOA,IACT,ECtkBEkB,KDsmBF,SAASA,KAAKA,GACZ,QAAoB,IAATA,EACT,OAAOlB,KAAK,GAAKA,KAAK,GAAGsB,eAAY0D,EAGvC,IAAK,IAAIpE,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EACpCZ,KAAKY,GAAGU,UAAYJ,EAEtB,OAAOlB,IACT,EC9mBE4H,KDgnBF,SAAS,kBAAKA,GACZ,QAAoB,IAATA,EACT,OAAI5H,KAAK,GACAA,KAAK,GAAG6H,YAAY1G,OAEtB,KAGT,IAAK,IAAIP,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EACpCZ,KAAKY,GAAGiH,YAAcD,EAExB,OAAO5H,IACT,EC3nBE2E,GD4nBF,SAASA,GAAG7D,GACV,MAAMwC,EAAKtD,KAAK,GAChB,IAAI8H,EACAlH,EACJ,IAAK0C,QAA0B,IAAbxC,EAA0B,OAAO,EACnD,GAAwB,iBAAbA,EAAuB,CAChC,GAAIwC,EAAGyE,QAAS,OAAOzE,EAAGyE,QAAQjH,GAC7B,GAAIwC,EAAG0E,sBAAuB,OAAO1E,EAAG0E,sBAAsBlH,GAC9D,GAAIwC,EAAG2E,kBAAmB,OAAO3E,EAAG2E,kBAAkBnH,GAG3D,IADAgH,EAAcjH,EAAEC,GACXF,EAAI,EAAGA,EAAIkH,EAAYxK,OAAQsD,GAAK,EACvC,GAAIkH,EAAYlH,KAAO0C,EAAI,OAAO,EAEpC,OAAO,CACT,CAAO,GAAIxC,IAAavD,EAAU,OAAO+F,IAAO/F,EAC3C,GAAIuD,IAAaxB,EAAQ,OAAOgE,IAAOhE,EAE5C,GAAIwB,EAASY,UAAYZ,aAAoBL,KAAM,CAEjD,IADAqH,EAAchH,EAASY,SAAW,CAACZ,GAAYA,EAC1CF,EAAI,EAAGA,EAAIkH,EAAYxK,OAAQsD,GAAK,EACvC,GAAIkH,EAAYlH,KAAO0C,EAAI,OAAO,EAEpC,OAAO,CACT,CACA,OAAO,CACT,ECrpBE4E,MD4pBF,SAASA,QACP,IACItH,EADAuH,EAAQnI,KAAK,GAEjB,GAAImI,EAAO,CAGT,IAFAvH,EAAI,EAEuC,QAAnCuH,EAAQA,EAAMC,kBACG,IAAnBD,EAAMzG,WAAgBd,GAAK,GAEjC,OAAOA,CACT,CAEF,ECvqBEyH,GDyqBF,SAASA,GAAGH,GACV,QAAqB,IAAVA,EAAuB,OAAOlI,KACzC,MAAM1C,EAAS0C,KAAK1C,OACpB,IAAIgL,EACJ,OAAIJ,EAAQ5K,EAAS,EACZ,IAAImD,KAAK,IAEdyH,EAAQ,GACVI,EAAchL,EAAS4K,EACK,IAAIzH,KAA5B6H,EAAc,EAAmB,GACrB,CAACtI,KAAKsI,MAEjB,IAAI7H,KAAK,CAACT,KAAKkI,IACxB,ECrrBEK,ODsrBF,SAASA,UAAUtE,GACjB,IAAIuE,EAEJ,IAAK,IAAI1D,EAAI,EAAGA,EAAIb,EAAK3G,OAAQwH,GAAK,EAAG,CACvC0D,EAAWvE,EAAKa,GAChB,IAAK,IAAIlE,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EACpC,GAAwB,iBAAb4H,EAAuB,CAChC,MAAMC,EAAUlL,EAAA,cAAuB,OAEvC,IADAkL,EAAQnH,UAAYkH,EACbC,EAAQC,YACb1I,KAAKY,GAAG+H,YAAYF,EAAQC,WAEhC,MAAO,GAAIF,aAAoB/H,KAC7B,IAAK,IAAI2B,EAAI,EAAGA,EAAIoG,EAASlL,OAAQ8E,GAAK,EACxCpC,KAAKY,GAAG+H,YAAYH,EAASpG,SAG/BpC,KAAKY,GAAG+H,YAAYH,EAG1B,CAEA,OAAOxI,IACT,EC5sBE4I,QDktBF,SAASA,QAAQJ,GACf,IAAI5H,EACAwB,EACJ,IAAKxB,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EAChC,GAAwB,iBAAb4H,EAAuB,CAChC,MAAMC,EAAUlL,EAAA,cAAuB,OAEvC,IADAkL,EAAQnH,UAAYkH,EACfpG,EAAIqG,EAAQlK,WAAWjB,OAAS,EAAG8E,GAAK,EAAGA,GAAK,EACnDpC,KAAKY,GAAGiI,aAAaJ,EAAQlK,WAAW6D,GAAIpC,KAAKY,GAAGrC,WAAW,GAEnE,MAAO,GAAIiK,aAAoB/H,KAC7B,IAAK2B,EAAI,EAAGA,EAAIoG,EAASlL,OAAQ8E,GAAK,EACpCpC,KAAKY,GAAGiI,aAAaL,EAASpG,GAAIpC,KAAKY,GAAGrC,WAAW,SAGvDyB,KAAKY,GAAGiI,aAAaL,EAAUxI,KAAKY,GAAGrC,WAAW,IAGtD,OAAOyB,IACT,ECpuBE8I,KDkwBF,SAASA,KAAKhI,GACZ,OAAId,KAAK1C,OAAS,EACZwD,EACEd,KAAK,GAAG+I,oBAAsBlI,EAAEb,KAAK,GAAG+I,oBAAoBpE,GAAG7D,GAC1D,IAAIL,KAAK,CAACT,KAAK,GAAG+I,qBAEpB,IAAItI,KAAK,IAGdT,KAAK,GAAG+I,mBAA2B,IAAItI,KAAK,CAACT,KAAK,GAAG+I,qBAClD,IAAItI,KAAK,IAEX,IAAIA,KAAK,GAClB,EC9wBEuI,QD+wBF,SAASA,QAAQlI,GACf,MAAMmI,EAAU,GAChB,IAAI3F,EAAKtD,KAAK,GACd,IAAKsD,EAAI,OAAO,IAAI7C,KAAK,IACzB,KAAO6C,EAAGyF,oBAAoB,CAC5B,MAAMD,EAAOxF,EAAGyF,mBACZjI,EACED,EAAEiI,GAAMnE,GAAG7D,IAAWmI,EAAQ1H,KAAKuH,GAClCG,EAAQ1H,KAAKuH,GACpBxF,EAAKwF,CACP,CACA,OAAO,IAAIrI,KAAKwI,EAClB,EC1xBEC,KD2xBF,SAASA,KAAKpI,GACZ,GAAId,KAAK1C,OAAS,EAAG,CACnB,MAAMgG,EAAKtD,KAAK,GAChB,OAAIc,EACEwC,EAAG6F,wBAA0BtI,EAAEyC,EAAG6F,wBAAwBxE,GAAG7D,GACxD,IAAIL,KAAK,CAAC6C,EAAG6F,yBAEf,IAAI1I,KAAK,IAGd6C,EAAG6F,uBAA+B,IAAI1I,KAAK,CAAC6C,EAAG6F,yBAC5C,IAAI1I,KAAK,GAClB,CACA,OAAO,IAAIA,KAAK,GAClB,ECxyBE2I,QDyyBF,SAASA,QAAQtI,GACf,MAAMuI,EAAU,GAChB,IAAI/F,EAAKtD,KAAK,GACd,IAAKsD,EAAI,OAAO,IAAI7C,KAAK,IACzB,KAAO6C,EAAG6F,wBAAwB,CAChC,MAAMD,EAAO5F,EAAG6F,uBACZrI,EACED,EAAEqI,GAAMvE,GAAG7D,IAAWuI,EAAQ9H,KAAK2H,GAClCG,EAAQ9H,KAAK2H,GACpB5F,EAAK4F,CACP,CACA,OAAO,IAAIzI,KAAK4I,EAClB,ECpzBEC,ODwzBF,SAAS,oBAAOxI,GACd,MAAM+D,EAAU,GAChB,IAAK,IAAIjE,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EACT,OAAvBZ,KAAKY,GAAG2I,aACNzI,EACED,EAAEb,KAAKY,GAAG2I,YAAY5E,GAAG7D,IAAW+D,EAAQtD,KAAKvB,KAAKY,GAAG2I,YAE7D1E,EAAQtD,KAAKvB,KAAKY,GAAG2I,aAI3B,OAAO1I,EAAEc,OAAOkD,GAClB,ECn0BEA,QDo0BF,SAASA,QAAQ/D,GACf,MAAM+D,EAAU,GAChB,IAAK,IAAIjE,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EAAG,CACvC,IAAI0I,EAAStJ,KAAKY,GAAG2I,WACrB,KAAOD,GACDxI,EACED,EAAEyI,GAAQ3E,GAAG7D,IAAW+D,EAAQtD,KAAK+H,GAEzCzE,EAAQtD,KAAK+H,GAEfA,EAASA,EAAOC,UAEpB,CACA,OAAO1I,EAAEc,OAAOkD,GAClB,ECj1BE2E,QDk1BF,SAASA,QAAQ1I,GACf,IAAI0I,EAAUxJ,KACd,YAAwB,IAAbc,EACF,IAAIL,KAAK,KAEb+I,EAAQ7E,GAAG7D,KACd0I,EAAUA,EAAQ3E,QAAQ/D,GAAUuH,GAAG,IAElCmB,EACT,EC11BEC,KD21BF,SAASA,KAAK3I,GACZ,MAAM4I,EAAgB,GACtB,IAAK,IAAI9I,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EAAG,CACvC,MAAM+I,EAAQ3J,KAAKY,GAAG3C,iBAAiB6C,GACvC,IAAK,IAAIsB,EAAI,EAAGA,EAAIuH,EAAMrM,OAAQ8E,GAAK,EACrCsH,EAAcnI,KAAKoI,EAAMvH,GAE7B,CACA,OAAO,IAAI3B,KAAKiJ,EAClB,ECn2BEpL,SDo2BF,SAASA,SAASwC,GAChB,MAAMxC,EAAW,GACjB,IAAK,IAAIsC,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EAAG,CACvC,MAAMrC,EAAayB,KAAKY,GAAGrC,WAE3B,IAAK,IAAI6D,EAAI,EAAGA,EAAI7D,EAAWjB,OAAQ8E,GAAK,EACrCtB,EAEiC,IAA3BvC,EAAW6D,GAAGV,UAAkBb,EAAEtC,EAAW6D,IAAIuC,GAAG7D,IAC7DxC,EAASiD,KAAKhD,EAAW6D,IAFM,IAA3B7D,EAAW6D,GAAGV,UAAgBpD,EAASiD,KAAKhD,EAAW6D,GAKjE,CACA,OAAO,IAAI3B,KAAKkB,OAAOrD,GACzB,ECj3BE0H,ODqkBF,SAASA,OAAOI,GACd,MAAMwD,EAAe,GACfvD,EAAMrG,KACZ,IAAK,IAAIY,EAAI,EAAGA,EAAIyF,EAAI/I,OAAQsD,GAAK,EAC/BwF,EAASG,KAAKF,EAAIzF,GAAIA,EAAGyF,EAAIzF,KAAKgJ,EAAarI,KAAK8E,EAAIzF,IAE9D,OAAO,IAAIH,KAAKmJ,EAClB,EC3kBEpH,ODi3BF,SAASA,SACP,IAAK,IAAI5B,EAAI,EAAGA,EAAIZ,KAAK1C,OAAQsD,GAAK,EAChCZ,KAAKY,GAAG2I,YAAYvJ,KAAKY,GAAG2I,WAAWM,YAAY7J,KAAKY,IAE9D,OAAOZ,IACT,ECr3BEsC,IDy3BF,SAASA,OAAO2B,GACd,MAAMoC,EAAMrG,KACZ,IAAIY,EACAwB,EACJ,IAAKxB,EAAI,EAAGA,EAAIqD,EAAK3G,OAAQsD,GAAK,EAAG,CACnC,MAAMkJ,EAAQjJ,EAAEoD,EAAKrD,IACrB,IAAKwB,EAAI,EAAGA,EAAI0H,EAAMxM,OAAQ8E,GAAK,EACjCiE,EAAIA,EAAI/I,QAAUwM,EAAM1H,GACxBiE,EAAI/I,QAAU,CAElB,CACA,OAAO+I,CACT,ECp4BEK,ODigBF,SAASA,SACP,OAAI1G,KAAK,GAAWV,EAAA,iBAAwBU,KAAK,GAAI,MAC9C,CAAC,CACV,GCjgBAjD,OAAOI,KAAK6E,GAAS5E,SAAS2M,IAC5BlJ,EAAEgB,GAAGkI,GAAclJ,EAAEgB,GAAGkI,IAAe/H,EAAQ+H,EAAW,IAG5D,MAAMC,EAAQ,CACZC,YAAYpN,GACV,MAAMqN,EAASrN,EACfE,OAAOI,KAAK+M,GAAQ9M,SAASC,IAC3B,IACE6M,EAAO7M,GAAO,IAGhB,CAFE,MAAOkH,GAET,CACA,WACS2F,EAAO7M,EAGhB,CAFE,MAAOkH,GAET,IAEJ,EACA4F,SAAQ,CAAC/D,EAAUgE,EAAQ,IAClB9J,WAAW8F,EAAUgE,GAE9BC,IAAG,IACMjK,KAAKiK,MAEdC,aAAahH,EAAIiH,EAAO,KACtB,IAAIC,EACAC,EACAC,EAEJ,MAAMC,EAAWrL,EAAA,iBAAwBgE,EAAI,MA+B7C,OA7BIhE,EAAA,iBACFmL,EAAeE,EAASlH,WAAakH,EAAShH,gBAC1C8G,EAAahJ,MAAM,KAAKnE,OAAS,IACnCmN,EAAeA,EAAahJ,MAAM,MAAMmJ,KAAKC,GAAMA,EAAEC,QAAQ,IAAK,OAAMC,KAAK,OAI/EL,EAAkB,IAAIpL,EAAA,gBAAwC,SAAjBmL,EAA0B,GAAKA,KAE5EC,EAAkBC,EAASK,cAAgBL,EAASM,YAAcN,EAASO,aAAeP,EAASQ,aAAeR,EAASlH,WAAakH,EAASzK,iBAAiB,aAAa4K,QAAQ,aAAc,sBACrMN,EAASE,EAAgBU,WAAW3J,MAAM,MAG/B,MAAT8I,IAE0BE,EAAxBnL,EAAA,gBAAuCoL,EAAgBW,IAEhC,KAAlBb,EAAOlN,OAA8BsJ,WAAW4D,EAAO,KAE5C5D,WAAW4D,EAAO,KAE3B,MAATD,IAE0BE,EAAxBnL,EAAA,gBAAuCoL,EAAgBY,IAEhC,KAAlBd,EAAOlN,OAA8BsJ,WAAW4D,EAAO,KAE5C5D,WAAW4D,EAAO,KAEjCC,GAAgB,CACzB,EACAc,cAAcC,GACZ,MAAMC,EAAQ,CAAC,EACf,IACI7K,EACA8K,EACAC,EACArO,EAJAsO,EAAaJ,GAAOlM,EAAA,cAKxB,GAA0B,iBAAfsM,GAA2BA,EAAWtO,OAK/C,IAJAsO,EAAaA,EAAWxK,QAAQ,MAAQ,EAAIwK,EAAWd,QAAQ,QAAS,IAAM,GAC9EY,EAASE,EAAWnK,MAAM,KAAKuE,QAAQ6F,GAA8B,KAAfA,IACtDvO,EAASoO,EAAOpO,OAEXsD,EAAI,EAAGA,EAAItD,EAAQsD,GAAK,EAC3B+K,EAAQD,EAAO9K,GAAGkK,QAAQ,QAAS,IAAIrJ,MAAM,KAC7CgK,EAAMK,mBAAmBH,EAAM,UAA2B,IAAbA,EAAM,QAAqB3G,EAAY8G,mBAAmBH,EAAM,KAAO,GAGxH,OAAOF,CACT,EACA7O,SAASmP,GACa,iBAANA,GAAwB,OAANA,GAAcA,EAAEjP,aAAeiP,EAAEjP,cAAgBC,OAEnFC,UAAUiH,GACR,MAAM+H,EAAKjP,OAAOkH,EAAK,IACvB,IAAK,IAAIrD,EAAI,EAAGA,EAAIqD,EAAK3G,OAAQsD,GAAK,EAAG,CACvC,MAAMqL,EAAahI,EAAKrD,GACxB,GAAIqL,QAAiD,CACnD,MAAMC,EAAYnP,OAAOI,KAAKJ,OAAOkP,IACrC,IAAK,IAAIE,EAAY,EAAGC,EAAMF,EAAU5O,OAAQ6O,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUH,EAAUC,GACpBG,EAAOvP,OAAOwP,yBAAyBN,EAAYI,QAC5CrH,IAATsH,GAAsBA,EAAKE,aACzBxC,EAAMpN,SAASoP,EAAGK,KAAarC,EAAMpN,SAASqP,EAAWI,IAC3DrC,EAAMhN,OAAOgP,EAAGK,GAAUJ,EAAWI,KAC3BrC,EAAMpN,SAASoP,EAAGK,KAAarC,EAAMpN,SAASqP,EAAWI,KACnEL,EAAGK,GAAW,CAAC,EACfrC,EAAMhN,OAAOgP,EAAGK,GAAUJ,EAAWI,KAErCL,EAAGK,GAAWJ,EAAWI,GAG/B,CACF,CACF,CACA,OAAOL,CACT,GAGIS,EAAW,SAASA,UACxB,MAAO,CACLC,SAAW,iBAAkBpN,GAAYA,EAAA,eAAwB/B,aAAsB+B,EAAA,eAEvFqN,gBAAiBrN,EAAA,cAAwB,mBAAoBA,EAAA,WAAqBA,EAAA,0BAAmC,EAErHsN,SAAW,SAASC,gBAClB,MAAQ,qBAAsBvN,GAAU,2BAA4BA,CACtE,CAFU,GAIVwN,gBAAkB,SAASC,uBACzB,IAAIC,GAAkB,EACtB,IACE,MAAMC,EAAOlQ,OAAOmQ,eAAe,CAAC,EAAG,UAAW,CAEhDC,MACEH,GAAkB,CACpB,IAEF1N,EAAA,iBAAwB,sBAAuB,KAAM2N,EAGvD,CAFE,MAAO1I,GAET,CACA,OAAOyI,CACT,CAdiB,GAgBjBI,SAAW,SAASC,gBAClB,MAAO,mBAAoB/N,CAC7B,CAFU,GAId,CA9BgB,GAgChB,MAAMgO,YACJxQ,YAAY4O,EAAS,CAAC,GACpB,MAAM/K,EAAOX,KACbW,EAAK+K,OAASA,EAGd/K,EAAK4M,gBAAkB,CAAC,EAEpB5M,EAAK+K,QAAU/K,EAAK+K,OAAO1H,IAC7BjH,OAAOI,KAAKwD,EAAK+K,OAAO1H,IAAI5G,SAASoQ,IACnC7M,EAAKqD,GAAGwJ,EAAW7M,EAAK+K,OAAO1H,GAAGwJ,GAAW,GAGnD,CAEAxJ,GAAGiB,EAAQO,EAASiI,GAClB,MAAM9M,EAAOX,KACb,GAAuB,mBAAZwF,EAAwB,OAAO7E,EAC1C,MAAM+M,EAASD,EAAW,UAAY,OAKtC,OAJAxI,EAAOxD,MAAM,KAAKrE,SAAS8H,IACpBvE,EAAK4M,gBAAgBrI,KAAQvE,EAAK4M,gBAAgBrI,GAAS,IAChEvE,EAAK4M,gBAAgBrI,GAAOwI,GAAQlI,EAAQ,IAEvC7E,CACT,CAEAgN,KAAK1I,EAAQO,EAASiI,GACpB,MAAM9M,EAAOX,KACb,GAAuB,mBAAZwF,EAAwB,OAAO7E,EAC1C,SAASiN,eAAe3J,GACtBtD,EAAK2E,IAAIL,EAAQ2I,aACbA,YAAYC,gBACPD,YAAYC,QAErBrI,EAAQZ,MAAMjE,EAAMsD,EACtB,CAEA,OADA2J,YAAYC,QAAUrI,EACf7E,EAAKqD,GAAGiB,EAAQ2I,YAAaH,EACtC,CAEAnI,IAAIL,EAAQO,GACV,MAAM7E,EAAOX,KACb,OAAKW,EAAK4M,iBACVtI,EAAOxD,MAAM,KAAKrE,SAAS8H,SACF,IAAZM,EACT7E,EAAK4M,gBAAgBrI,GAAS,GACrBvE,EAAK4M,gBAAgBrI,IAAUvE,EAAK4M,gBAAgBrI,GAAO5H,QACpEqD,EAAK4M,gBAAgBrI,GAAO9H,SAAQ,CAAC0Q,EAAc5F,MAC7C4F,IAAiBtI,GAAYsI,EAAaD,SAAWC,EAAaD,UAAYrI,IAChF7E,EAAK4M,gBAAgBrI,GAAOQ,OAAOwC,EAAO,EAC5C,GAEJ,IAEKvH,GAZ2BA,CAapC,CAEAoN,QAAQ9J,GACN,MAAMtD,EAAOX,KACb,IAAKW,EAAK4M,gBAAiB,OAAO5M,EAClC,IAAIsE,EACA5B,EACAtC,EACmB,iBAAZkD,EAAK,IAAmB+J,MAAMC,QAAQhK,EAAK,KACpDgB,EAAShB,EAAK,GACdZ,EAAOY,EAAKiK,MAAM,EAAGjK,EAAK3G,QAC1ByD,EAAUJ,IAEVsE,EAAShB,EAAK,GAAGgB,OACjB5B,EAAOY,EAAK,GAAGZ,KACftC,EAAUkD,EAAK,GAAGlD,SAAWJ,GAc/B,OAZoBqN,MAAMC,QAAQhJ,GAAUA,EAASA,EAAOxD,MAAM,MACtDrE,SAAS8H,IACnB,GAAIvE,EAAK4M,iBAAmB5M,EAAK4M,gBAAgBrI,GAAQ,CACvD,MAAMK,EAAW,GACjB5E,EAAK4M,gBAAgBrI,GAAO9H,SAAS0Q,IACnCvI,EAAShE,KAAKuM,EAAa,IAE7BvI,EAASnI,SAAS0Q,IAChBA,EAAalJ,MAAM7D,EAASsC,EAAK,GAErC,KAEK1C,CACT,CAEAwN,iBAAiBC,GACf,MAAMC,EAAWrO,KACZqO,EAASC,SACdvR,OAAOI,KAAKkR,EAASC,SAASlR,SAASmR,IACrC,MAAMC,EAASH,EAASC,QAAQC,GAE5BC,EAAO9C,QACT1B,EAAMhN,OAAOoR,EAAgBI,EAAO9C,OACtC,GAEJ,CAEA+C,WAAWC,EAAgB,CAAC,GAC1B,MAAML,EAAWrO,KACZqO,EAASC,SACdvR,OAAOI,KAAKkR,EAASC,SAASlR,SAASmR,IACrC,MAAMC,EAASH,EAASC,QAAQC,GAC1BI,EAAeD,EAAcH,IAAe,CAAC,EAE/CC,EAAOH,UACTtR,OAAOI,KAAKqR,EAAOH,UAAUjR,SAASwR,IACpC,MAAMC,EAAaL,EAAOH,SAASO,GAEjCP,EAASO,GADe,mBAAfC,EACkBA,EAAWC,KAAKT,GAEhBQ,CAC7B,IAIAL,EAAOxK,IAAMqK,EAASrK,IACxBjH,OAAOI,KAAKqR,EAAOxK,IAAI5G,SAAS2R,IAC9BV,EAASrK,GAAG+K,EAAiBP,EAAOxK,GAAG+K,GAAiB,IAKxDP,EAAOQ,QACTR,EAAOQ,OAAOF,KAAKT,EAAnBG,CAA6BG,EAC/B,GAEJ,CAEWM,sBAAWA,GACNjP,KACHkP,KADGlP,KAERkP,IAAID,EACZ,CAEAE,qBAAqBX,KAAW9C,GAC9B,MAAM3J,EAAQ/B,KACT+B,EAAMD,UAAUwM,UAASvM,EAAMD,UAAUwM,QAAU,CAAC,GACzD,MAAMc,EAAOZ,EAAOY,MAAQ,GAAIrS,OAAOI,KAAK4E,EAAMD,UAAUwM,SAAShR,UAAU0M,EAAMK,QAkBrF,OAjBAtI,EAAMD,UAAUwM,QAAQc,GAAQZ,EAE5BA,EAAOa,OACTtS,OAAOI,KAAKqR,EAAOa,OAAOjS,SAASC,IACjC0E,EAAMD,UAAUzE,GAAOmR,EAAOa,MAAMhS,EAAI,IAIxCmR,EAAOW,QACTpS,OAAOI,KAAKqR,EAAOW,QAAQ/R,SAASC,IAClC0E,EAAM1E,GAAOmR,EAAOW,OAAO9R,EAAI,IAI/BmR,EAAOc,SACTd,EAAOc,QAAQ1K,MAAM7C,EAAO2J,GAEvB3J,CACT,CAEAoN,WAAWX,KAAW9C,GACpB,MAAM3J,EAAQ/B,KACd,OAAIgO,MAAMC,QAAQO,IAChBA,EAAOpR,SAASmS,GAAMxN,EAAMyN,cAAcD,KACnCxN,GAEFA,EAAMyN,cAAchB,KAAW9C,EACxC,EAmnBF,IAAI+D,EAAS,CACXC,WAjnBF,SAASA,aACP,MAAMC,EAAS3P,KACf,IAAI4P,EACAC,EACJ,MAAMC,EAAMH,EAAOG,IAEjBF,OADiC,IAAxBD,EAAOjE,OAAOkE,MACfD,EAAOjE,OAAOkE,MAEdE,EAAI,GAAGC,YAGfF,OADkC,IAAzBF,EAAOjE,OAAOmE,OACdF,EAAOjE,OAAOmE,OAEdC,EAAI,GAAGE,aAEH,IAAVJ,GAAeD,EAAOM,gBAA+B,IAAXJ,GAAgBF,EAAOO,eAKtEN,EAAQA,EAAQO,SAASL,EAAItI,IAAI,gBAAiB,IAAM2I,SAASL,EAAItI,IAAI,iBAAkB,IAC3FqI,EAASA,EAASM,SAASL,EAAItI,IAAI,eAAgB,IAAM2I,SAASL,EAAItI,IAAI,kBAAmB,IAE7FwC,EAAMhN,OAAO2S,EAAQ,CACnBC,QACAC,SACAO,KAAMT,EAAOM,eAAiBL,EAAQC,IAE1C,EAslBEQ,aAplBF,SAASA,eACP,MAAMV,EAAS3P,KACT0L,EAASiE,EAAOjE,QAEhB,WACJ4E,EAAYF,KAAMG,EAAYC,aAAcC,EAAG,SAAEC,GAC/Cf,EACEgB,EAAYhB,EAAOiB,SAAWlF,EAAOkF,QAAQC,QAC7CC,EAAuBH,EAAYhB,EAAOiB,QAAQG,OAAOzT,OAASqS,EAAOoB,OAAOzT,OAChFyT,EAAST,EAAWhS,SAAS,IAAIqR,EAAOjE,OAAOsF,cAC/CC,EAAeN,EAAYhB,EAAOiB,QAAQG,OAAOzT,OAASyT,EAAOzT,OACvE,IAAI4T,EAAW,GACf,MAAMC,EAAa,GACbC,EAAkB,GAExB,SAASC,gBAAgBC,GACvB,OAAK5F,EAAO6F,SACRD,IAAeP,EAAOzT,OAAS,CAIrC,CAEA,IAAIkU,EAAe9F,EAAO+F,mBACE,mBAAjBD,IACTA,EAAe9F,EAAO+F,mBAAmBlL,KAAKoJ,IAGhD,IAAI+B,EAAchG,EAAOiG,kBACE,mBAAhBD,IACTA,EAAchG,EAAOiG,kBAAkBpL,KAAKoJ,IAG9C,MAAMiC,EAAyBjC,EAAOuB,SAAS5T,OACzCuU,EAA2BlC,EAAOuB,SAAS5T,OAEjD,IAiBIwU,EAaAC,EA9BAC,EAAetG,EAAOsG,aACtBC,GAAiBT,EACjBU,EAAgB,EAChBhK,EAAQ,EACZ,QAA0B,IAAfqI,EACT,OAE0B,iBAAjByB,GAA6BA,EAAa5Q,QAAQ,MAAQ,IACnE4Q,EAAgBpL,WAAWoL,EAAalH,QAAQ,IAAK,KAAO,IAAOyF,GAGrEZ,EAAOwC,aAAeH,EAGlBvB,EAAKM,EAAOvJ,IAAI,CAAE4K,WAAY,GAAIC,UAAW,KAC5CtB,EAAOvJ,IAAI,CAAE8K,YAAa,GAAIC,aAAc,KAG7C7G,EAAO8G,gBAAkB,IAEzBV,EADEW,KAAKC,MAAMzB,EAAevF,EAAO8G,mBAAqBvB,EAAetB,EAAOjE,OAAO8G,gBAC5DvB,EAEAwB,KAAKE,KAAK1B,EAAevF,EAAO8G,iBAAmB9G,EAAO8G,gBAExD,SAAzB9G,EAAOkH,eAA2D,QAA/BlH,EAAOmH,sBAC5Cf,EAAyBW,KAAKK,IAAIhB,EAAwBpG,EAAOkH,cAAgBlH,EAAO8G,mBAM5F,MAAMA,EAAkB9G,EAAO8G,gBACzBO,EAAejB,EAAyBU,EACxCQ,EAAiBP,KAAKC,MAAMzB,EAAevF,EAAO8G,iBACxD,IAAK,IAAI5R,EAAI,EAAGA,EAAIqQ,EAAcrQ,GAAK,EAAG,CACxCmR,EAAY,EACZ,MAAMkB,EAAQlC,EAAO1I,GAAGzH,GACxB,GAAI8K,EAAO8G,gBAAkB,EAAG,CAE9B,IAAIU,EACAC,EACAC,EACJ,GAAmC,QAA/B1H,EAAOmH,qBAAiCnH,EAAO2H,eAAiB,EAAG,CACrE,MAAMC,EAAab,KAAKC,MAAM9R,GAAK8K,EAAO2H,eAAiB3H,EAAO8G,kBAC5De,EAAoB3S,EAAI8K,EAAO8G,gBAAkB9G,EAAO2H,eAAiBC,EACzEE,EAAgC,IAAfF,EACnB5H,EAAO2H,eACPZ,KAAKgB,IAAIhB,KAAKE,MAAM1B,EAAeqC,EAAad,EAAkB9G,EAAO2H,gBAAkBb,GAAkB9G,EAAO2H,gBACxHD,EAAMX,KAAKC,MAAMa,EAAoBC,GACrCL,EAAUI,EAAoBH,EAAMI,EAAkBF,EAAa5H,EAAO2H,eAE1EH,EAAqBC,EAAWC,EAAMtB,EAA0BU,EAChES,EACGzL,IAAI,CACH,4BAA6B0L,EAC7B,yBAA0BA,EAC1B,iBAAkBA,EAClB,gBAAiBA,EACjBQ,MAAOR,GAEb,KAA0C,WAA/BxH,EAAOmH,qBAChBM,EAASV,KAAKC,MAAM9R,EAAI4R,GACxBY,EAAMxS,EAAKuS,EAASX,GAChBW,EAASH,GAAmBG,IAAWH,GAAkBI,IAAQZ,EAAkB,KACrFY,GAAO,EACHA,GAAOZ,IACTY,EAAM,EACND,GAAU,MAIdC,EAAMX,KAAKC,MAAM9R,EAAImS,GACrBI,EAASvS,EAAKwS,EAAML,GAEtBE,EAAMzL,IACJ,WAAUmI,EAAOM,eAAiB,MAAQ,QACjC,IAARmD,GAAa1H,EAAOsG,cAAiB,GAAItG,EAAOsG,iBAErD,CACA,GAA6B,SAAzBiB,EAAMzL,IAAI,WAAd,CAEA,GAA6B,SAAzBkE,EAAOkH,cAA0B,CACnC,MAAMe,EAAcrU,EAAA,iBAAwB2T,EAAM,GAAI,MAChDW,EAAmBX,EAAM,GAAGzU,MAAMiF,UAClCoQ,EAAyBZ,EAAM,GAAGzU,MAAMmF,gBAO9C,GANIiQ,IACFX,EAAM,GAAGzU,MAAMiF,UAAY,QAEzBoQ,IACFZ,EAAM,GAAGzU,MAAMmF,gBAAkB,QAE/B+H,EAAOoI,aACT/B,EAAYpC,EAAOM,eACfgD,EAAMzM,YAAW,GACjByM,EAAMpM,aAAY,QAGtB,GAAI8I,EAAOM,eAAgB,CACzB,MAAML,EAAQhJ,WAAW+M,EAAYzT,iBAAiB,UAChD6T,EAAcnN,WAAW+M,EAAYzT,iBAAiB,iBACtD8T,EAAepN,WAAW+M,EAAYzT,iBAAiB,kBACvDkS,EAAaxL,WAAW+M,EAAYzT,iBAAiB,gBACrDoS,EAAc1L,WAAW+M,EAAYzT,iBAAiB,iBACtD+T,EAAYN,EAAYzT,iBAAiB,cAE7C6R,EADEkC,GAA2B,eAAdA,EACHrE,EAAQwC,EAAaE,EAErB1C,EAAQmE,EAAcC,EAAe5B,EAAaE,CAElE,KAAO,CACL,MAAMzC,EAASjJ,WAAW+M,EAAYzT,iBAAiB,WACjDgU,EAAatN,WAAW+M,EAAYzT,iBAAiB,gBACrDiU,EAAgBvN,WAAW+M,EAAYzT,iBAAiB,mBACxDmS,EAAYzL,WAAW+M,EAAYzT,iBAAiB,eACpDqS,EAAe3L,WAAW+M,EAAYzT,iBAAiB,kBACvD+T,EAAYN,EAAYzT,iBAAiB,cAE7C6R,EADEkC,GAA2B,eAAdA,EACHpE,EAASwC,EAAYE,EAErB1C,EAASqE,EAAaC,EAAgB9B,EAAYE,CAElE,CAEEqB,IACFX,EAAM,GAAGzU,MAAMiF,UAAYmQ,GAEzBC,IACFZ,EAAM,GAAGzU,MAAMmF,gBAAkBkQ,GAE/BnI,EAAOoI,eAAc/B,EAAYU,KAAKC,MAAMX,GAClD,MACEA,GAAaxB,GAAe7E,EAAOkH,cAAgB,GAAKZ,GAAiBtG,EAAOkH,cAC5ElH,EAAOoI,eAAc/B,EAAYU,KAAKC,MAAMX,IAE5ChB,EAAOnQ,KACL+O,EAAOM,eACTc,EAAOnQ,GAAGpC,MAAMoR,MAAQ,GAAGmC,MAE3BhB,EAAOnQ,GAAGpC,MAAMqR,OAAS,GAAGkC,OAI9BhB,EAAOnQ,KACTmQ,EAAOnQ,GAAGwT,gBAAkBrC,GAE9BX,EAAgB7P,KAAKwQ,GAGjBrG,EAAO2I,gBACTpC,EAAgBA,EAAiBF,EAAY,EAAMG,EAAgB,EAAKF,EAClD,IAAlBE,GAA6B,IAANtR,IAASqR,EAAgBA,EAAiB1B,EAAa,EAAKyB,GAC7E,IAANpR,IAASqR,EAAgBA,EAAiB1B,EAAa,EAAKyB,GAC5DS,KAAK6B,IAAIrC,GAAiB,OAAUA,EAAgB,GACpDvG,EAAOoI,eAAc7B,EAAgBQ,KAAKC,MAAMT,IAChD,EAAUvG,EAAO2H,gBAAmB,GAAGnC,EAAS3P,KAAK0Q,GACzDd,EAAW5P,KAAK0Q,KAEZvG,EAAOoI,eAAc7B,EAAgBQ,KAAKC,MAAMT,KAC/C/J,EAAQuK,KAAKgB,IAAI9D,EAAOjE,OAAO6I,mBAAoBrM,IAAUyH,EAAOjE,OAAO2H,gBAAmB,GAAGnC,EAAS3P,KAAK0Q,GACpHd,EAAW5P,KAAK0Q,GAChBA,EAAgBA,EAAgBF,EAAYC,GAG9CrC,EAAOwC,aAAeJ,EAAYC,EAElCE,EAAgBH,EAEhB7J,GAAS,CAxFoC,CAyF/C,CAEA,IAAIsM,EAWJ,GAZA7E,EAAOwC,YAAcM,KAAKK,IAAInD,EAAOwC,YAAa5B,GAAcmB,EAI9DjB,GAAOC,IAA+B,UAAlBhF,EAAO+I,QAAwC,cAAlB/I,EAAO+I,SACxDnE,EAAW9I,IAAI,CAAEoI,MAAO,GAAGD,EAAOwC,YAAczG,EAAOsG,mBAErDtG,EAAOgJ,iBACL/E,EAAOM,eAAgBK,EAAW9I,IAAI,CAAEoI,MAAO,GAAGD,EAAOwC,YAAczG,EAAOsG,mBAC7E1B,EAAW9I,IAAI,CAAEqI,OAAQ,GAAGF,EAAOwC,YAAczG,EAAOsG,oBAG3DtG,EAAO8G,gBAAkB,IAC3B7C,EAAOwC,aAAeJ,EAAYrG,EAAOsG,cAAgBF,EACzDnC,EAAOwC,YAAcM,KAAKE,KAAKhD,EAAOwC,YAAczG,EAAO8G,iBAAmB9G,EAAOsG,aACjFrC,EAAOM,eAAgBK,EAAW9I,IAAI,CAAEoI,MAAO,GAAGD,EAAOwC,YAAczG,EAAOsG,mBAC7E1B,EAAW9I,IAAI,CAAEqI,OAAQ,GAAGF,EAAOwC,YAAczG,EAAOsG,mBACzDtG,EAAO2I,gBAAgB,CACzBG,EAAgB,GAChB,IAAK,IAAI5T,EAAI,EAAGA,EAAIsQ,EAAS5T,OAAQsD,GAAK,EAAG,CAC3C,IAAI+T,EAAiBzD,EAAStQ,GAC1B8K,EAAOoI,eAAca,EAAiBlC,KAAKC,MAAMiC,IACjDzD,EAAStQ,GAAK+O,EAAOwC,YAAcjB,EAAS,IAAIsD,EAAcjT,KAAKoT,EACzE,CACAzD,EAAWsD,CACb,CAIF,IAAK9I,EAAO2I,eAAgB,CAC1BG,EAAgB,GAChB,IAAK,IAAI5T,EAAI,EAAGA,EAAIsQ,EAAS5T,OAAQsD,GAAK,EAAG,CAC3C,IAAI+T,EAAiBzD,EAAStQ,GAC1B8K,EAAOoI,eAAca,EAAiBlC,KAAKC,MAAMiC,IACjDzD,EAAStQ,IAAM+O,EAAOwC,YAAc5B,GACtCiE,EAAcjT,KAAKoT,EAEvB,CACAzD,EAAWsD,EACP/B,KAAKC,MAAM/C,EAAOwC,YAAc5B,GAAckC,KAAKC,MAAMxB,EAASA,EAAS5T,OAAS,IAAM,GAC5F4T,EAAS3P,KAAKoO,EAAOwC,YAAc5B,EAEvC,CAUA,GATwB,IAApBW,EAAS5T,SAAc4T,EAAW,CAAC,IAEX,IAAxBxF,EAAOsG,eACLrC,EAAOM,eACLQ,EAAKM,EAAO/K,OAAOqL,iBAAiB7J,IAAI,CAAE4K,WAAY,GAAGJ,QACxDjB,EAAO/K,OAAOqL,iBAAiB7J,IAAI,CAAE8K,YAAa,GAAGN,QACrDjB,EAAO/K,OAAOqL,iBAAiB7J,IAAI,CAAE+K,aAAc,GAAGP,SAG3DtG,EAAO2I,gBAAkB3I,EAAOkJ,qBAAsB,CACxD,IAAIC,EAAgB,EACpBzD,EAAgBhU,SAAS0X,IACvBD,GAAiBC,GAAkBpJ,EAAOsG,aAAetG,EAAOsG,aAAe,EAAE,IAEnF6C,GAAiBnJ,EAAOsG,aACxB,MAAM+C,EAAUF,EAAgBtE,EAChCW,EAAWA,EAAStG,KAAKoK,GACnBA,EAAO,GAAWxD,EAClBwD,EAAOD,EAAgBA,EAAUrD,EAC9BsD,GAEX,CAEA,GAAItJ,EAAOuJ,yBAA0B,CACnC,IAAIJ,EAAgB,EAKpB,GAJAzD,EAAgBhU,SAAS0X,IACvBD,GAAiBC,GAAkBpJ,EAAOsG,aAAetG,EAAOsG,aAAe,EAAE,IAEnF6C,GAAiBnJ,EAAOsG,aACpB6C,EAAgBtE,EAAY,CAC9B,MAAM2E,GAAmB3E,EAAasE,GAAiB,EACvD3D,EAAS9T,SAAQ,CAAC4X,EAAMG,KACtBjE,EAASiE,GAAaH,EAAOE,CAAe,IAE9C/D,EAAW/T,SAAQ,CAAC4X,EAAMG,KACxBhE,EAAWgE,GAAaH,EAAOE,CAAe,GAElD,CACF,CAEAlL,EAAMhN,OAAO2S,EAAQ,CACnBoB,SACAG,WACAC,aACAC,oBAGEH,IAAiBH,GACnBnB,EAAO5B,KAAK,sBAEVmD,EAAS5T,SAAWsU,IAClBjC,EAAOjE,OAAO0J,eAAezF,EAAO0F,gBACxC1F,EAAO5B,KAAK,yBAEVoD,EAAW7T,SAAWuU,GACxBlC,EAAO5B,KAAK,2BAGVrC,EAAO4J,qBAAuB5J,EAAO6J,wBACvC5F,EAAO6F,oBAEX,EAgSEC,iBA9RF,SAASA,iBAAkBC,GACzB,MAAM/F,EAAS3P,KACT2V,EAAe,GACrB,IACI/U,EADAgV,EAAY,EAQhB,GANqB,iBAAVF,EACT/F,EAAOkG,cAAcH,IACF,IAAVA,GACT/F,EAAOkG,cAAclG,EAAOjE,OAAOgK,OAGD,SAAhC/F,EAAOjE,OAAOkH,eAA4BjD,EAAOjE,OAAOkH,cAAgB,EAC1E,GAAIjD,EAAOjE,OAAO2I,eAChB1E,EAAOmG,cAAcnO,MAAK,CAACO,EAAO+K,KAChC0C,EAAapU,KAAK0R,EAAM,SAG1B,IAAKrS,EAAI,EAAGA,EAAI6R,KAAKE,KAAKhD,EAAOjE,OAAOkH,eAAgBhS,GAAK,EAAG,CAC9D,MAAMsH,EAAQyH,EAAOoG,YAAcnV,EACnC,GAAIsH,EAAQyH,EAAOoB,OAAOzT,OAAQ,MAClCqY,EAAapU,KAAKoO,EAAOoB,OAAO1I,GAAGH,GAAO,GAC5C,MAGFyN,EAAapU,KAAKoO,EAAOoB,OAAO1I,GAAGsH,EAAOoG,aAAa,IAIzD,IAAKnV,EAAI,EAAGA,EAAI+U,EAAarY,OAAQsD,GAAK,EACxC,QAA+B,IAApB+U,EAAa/U,GAAoB,CAC1C,MAAMiP,EAAS8F,EAAa/U,GAAGkG,aAC/B8O,EAAY/F,EAAS+F,EAAY/F,EAAS+F,CAC5C,CAIEA,GAAWjG,EAAOW,WAAW9I,IAAI,SAAU,GAAGoO,MACpD,EA0PEJ,mBAxPF,SAASA,qBACP,MAAM7F,EAAS3P,KACT+Q,EAASpB,EAAOoB,OACtB,IAAK,IAAInQ,EAAI,EAAGA,EAAImQ,EAAOzT,OAAQsD,GAAK,EACtCmQ,EAAOnQ,GAAGoV,kBAAoBrG,EAAOM,eAAiBc,EAAOnQ,GAAGqV,WAAalF,EAAOnQ,GAAGsV,SAE3F,EAmPEC,qBAjPF,SAASA,qBAAsBC,EAAapW,MAAQA,KAAKoW,WAAc,GACrE,MAAMzG,EAAS3P,KACT0L,EAASiE,EAAOjE,QAEhB,OAAEqF,EAAQP,aAAcC,GAAQd,EAEtC,GAAsB,IAAlBoB,EAAOzT,OAAc,YACkB,IAAhCyT,EAAO,GAAGiF,mBAAmCrG,EAAO6F,qBAE/D,IAAIa,GAAgBD,EAChB3F,IAAK4F,EAAeD,GAGxBrF,EAAOxO,YAAYmJ,EAAO4K,mBAE1B3G,EAAO4G,qBAAuB,GAC9B5G,EAAOmG,cAAgB,GAEvB,IAAK,IAAIlV,EAAI,EAAGA,EAAImQ,EAAOzT,OAAQsD,GAAK,EAAG,CACzC,MAAMqS,EAAQlC,EAAOnQ,GACf4V,GACHH,GAAgB3K,EAAO2I,eAAiB1E,EAAO8G,eAAiB,GAAMxD,EAAM+C,oBAC1E/C,EAAMmB,gBAAkB1I,EAAOsG,cACpC,GAAItG,EAAO6J,uBAA0B7J,EAAO2I,gBAAkB3I,EAAOgL,WAAa,CAChF,MAAMC,IAAgBN,EAAepD,EAAM+C,mBACrCY,EAAaD,EAAchH,EAAOyB,gBAAgBxQ,IACrC+V,GAAe,GAAKA,EAAchH,EAAOS,KAAO,GACrDwG,EAAa,GAAKA,GAAcjH,EAAOS,MACvCuG,GAAe,GAAKC,GAAcjH,EAAOS,QAErDT,EAAOmG,cAAcvU,KAAK0R,GAC1BtD,EAAO4G,qBAAqBhV,KAAKX,GACjCmQ,EAAO1I,GAAGzH,GAAGqB,SAASyJ,EAAO4K,mBAEjC,CACArD,EAAM4D,SAAWpG,GAAO+F,EAAgBA,CAC1C,CACA7G,EAAOmG,cAAgBjV,EAAE8O,EAAOmG,cAClC,EA4MEgB,eA1MF,SAASA,eAAgBV,GACvB,MAAMzG,EAAS3P,KACf,QAAyB,IAAdoW,EAA2B,CACpC,MAAMW,EAAapH,EAAOa,cAAgB,EAAI,EAE9C4F,EAAazG,GAAUA,EAAOyG,WAAczG,EAAOyG,UAAYW,GAAgB,CACjF,CACA,MAAMrL,EAASiE,EAAOjE,OAChBsL,EAAiBrH,EAAOsH,eAAiBtH,EAAO8G,eACtD,IAAI,SAAEI,EAAQ,YAAEK,EAAW,MAAEC,GAAUxH,EACvC,MAAMyH,EAAeF,EACfG,EAASF,EACQ,IAAnBH,GACFH,EAAW,EACXK,GAAc,EACdC,GAAQ,IAERN,GAAYT,EAAYzG,EAAO8G,gBAAkB,EACjDS,EAAcL,GAAY,EAC1BM,EAAQN,GAAY,GAEtB7M,EAAMhN,OAAO2S,EAAQ,CACnBkH,WACAK,cACAC,WAGEzL,EAAO4J,qBAAuB5J,EAAO6J,uBAA0B7J,EAAO2I,gBAAkB3I,EAAOgL,aAAa/G,EAAOwG,qBAAqBC,GAExIc,IAAgBE,GAClBzH,EAAO5B,KAAK,yBAEVoJ,IAAUE,GACZ1H,EAAO5B,KAAK,oBAETqJ,IAAiBF,GAAiBG,IAAWF,IAChDxH,EAAO5B,KAAK,YAGd4B,EAAO5B,KAAK,WAAY8I,EAC1B,EAmKES,oBAjKF,SAASA,sBACP,MAAM3H,EAAS3P,MAET,OACJ+Q,EAAM,OAAErF,EAAM,WAAE4E,EAAU,YAAEyF,EAAW,UAAEwB,GACvC5H,EACEgB,EAAYhB,EAAOiB,SAAWlF,EAAOkF,QAAQC,QAInD,IAAI2G,EAFJzG,EAAOxO,YAAY,GAAGmJ,EAAO+L,oBAAoB/L,EAAOgM,kBAAkBhM,EAAOiM,kBAAkBjM,EAAOkM,6BAA6BlM,EAAOmM,2BAA2BnM,EAAOoM,2BAI9KN,EADE7G,EACYhB,EAAOW,WAAW7G,KAAK,IAAIiC,EAAOsF,uCAAuC+E,OAEzEhF,EAAO1I,GAAG0N,GAI1ByB,EAAYvV,SAASyJ,EAAO+L,kBAExB/L,EAAOqM,OAELP,EAAY/U,SAASiJ,EAAOsM,qBAC9B1H,EACGhS,SAAS,IAAIoN,EAAOsF,mBAAmBtF,EAAOsM,iDAAiDT,OAC/FtV,SAASyJ,EAAOkM,2BAEnBtH,EACGhS,SAAS,IAAIoN,EAAOsF,cAActF,EAAOsM,gDAAgDT,OACzFtV,SAASyJ,EAAOkM,4BAIvB,IAAIK,EAAYT,EAAYxO,QAAQ,IAAI0C,EAAOsF,cAAc3I,GAAG,GAAGpG,SAASyJ,EAAOgM,gBAC/EhM,EAAOqM,MAA6B,IAArBE,EAAU3a,SAC3B2a,EAAYlH,EAAO1I,GAAG,GACtB4P,EAAUhW,SAASyJ,EAAOgM,iBAG5B,IAAIQ,EAAYV,EAAYpO,QAAQ,IAAIsC,EAAOsF,cAAc3I,GAAG,GAAGpG,SAASyJ,EAAOiM,gBAC/EjM,EAAOqM,MAA6B,IAArBG,EAAU5a,SAC3B4a,EAAYnH,EAAO1I,IAAI,GACvB6P,EAAUjW,SAASyJ,EAAOiM,iBAExBjM,EAAOqM,OAELE,EAAUxV,SAASiJ,EAAOsM,qBAC5B1H,EACGhS,SAAS,IAAIoN,EAAOsF,mBAAmBtF,EAAOsM,iDAAiDC,EAAUpV,KAAK,gCAC9GZ,SAASyJ,EAAOmM,yBAEnBvH,EACGhS,SAAS,IAAIoN,EAAOsF,cAActF,EAAOsM,gDAAgDC,EAAUpV,KAAK,gCACxGZ,SAASyJ,EAAOmM,yBAEjBK,EAAUzV,SAASiJ,EAAOsM,qBAC5B1H,EACGhS,SAAS,IAAIoN,EAAOsF,mBAAmBtF,EAAOsM,iDAAiDE,EAAUrV,KAAK,gCAC9GZ,SAASyJ,EAAOoM,yBAEnBxH,EACGhS,SAAS,IAAIoN,EAAOsF,cAActF,EAAOsM,gDAAgDE,EAAUrV,KAAK,gCACxGZ,SAASyJ,EAAOoM,yBAGzB,EAiGEK,kBA/FF,SAASA,kBAAmBC,GAC1B,MAAMzI,EAAS3P,KACToW,EAAYzG,EAAOa,aAAeb,EAAOyG,WAAazG,EAAOyG,WAC7D,WACJjF,EAAU,SAAED,EAAQ,OAAExF,EAAQqK,YAAasC,EAAed,UAAWe,EAAmBnD,UAAWoD,GACjG5I,EACJ,IACIwF,EADAY,EAAcqC,EAElB,QAA2B,IAAhBrC,EAA6B,CACtC,IAAK,IAAInV,EAAI,EAAGA,EAAIuQ,EAAW7T,OAAQsD,GAAK,OACT,IAAtBuQ,EAAWvQ,EAAI,GACpBwV,GAAajF,EAAWvQ,IAAMwV,EAAYjF,EAAWvQ,EAAI,IAAOuQ,EAAWvQ,EAAI,GAAKuQ,EAAWvQ,IAAM,EACvGmV,EAAcnV,EACLwV,GAAajF,EAAWvQ,IAAMwV,EAAYjF,EAAWvQ,EAAI,KAClEmV,EAAcnV,EAAI,GAEXwV,GAAajF,EAAWvQ,KACjCmV,EAAcnV,GAId8K,EAAO8M,sBACLzC,EAAc,QAA4B,IAAhBA,KAA6BA,EAAc,EAE7E,CACA,GAAI7E,EAAS9P,QAAQgV,IAAc,EACjCjB,EAAYjE,EAAS9P,QAAQgV,OACxB,CACL,MAAMqC,EAAOhG,KAAKgB,IAAI/H,EAAO6I,mBAAoBwB,GACjDZ,EAAYsD,EAAOhG,KAAKC,OAAOqD,EAAc0C,GAAQ/M,EAAO2H,eAC9D,CAEA,GADI8B,GAAajE,EAAS5T,SAAQ6X,EAAYjE,EAAS5T,OAAS,GAC5DyY,IAAgBsC,EAKlB,YAJIlD,IAAcoD,IAChB5I,EAAOwF,UAAYA,EACnBxF,EAAO5B,KAAK,qBAMhB,MAAMwJ,EAAYpH,SAASR,EAAOoB,OAAO1I,GAAG0N,GAAalT,KAAK,4BAA8BkT,EAAa,IAEzG/L,EAAMhN,OAAO2S,EAAQ,CACnBwF,YACAoC,YACAc,gBACAtC,gBAEFpG,EAAO5B,KAAK,qBACZ4B,EAAO5B,KAAK,mBACRuK,IAAsBf,GACxB5H,EAAO5B,KAAK,oBAEV4B,EAAO+I,aAAe/I,EAAOjE,OAAOiN,qBACtChJ,EAAO5B,KAAK,cAEhB,EAuCE6K,mBArCF,SAASA,mBAAoBrU,GAC3B,MAAMoL,EAAS3P,KACT0L,EAASiE,EAAOjE,OAChBuH,EAAQpS,EAAE0D,EAAEtH,QAAQuM,QAAQ,IAAIkC,EAAOsF,cAAc,GAC3D,IAAI6H,GAAa,EACjB,GAAI5F,EACF,IAAK,IAAIrS,EAAI,EAAGA,EAAI+O,EAAOoB,OAAOzT,OAAQsD,GAAK,EACzC+O,EAAOoB,OAAOnQ,KAAOqS,IAAO4F,GAAa,GAIjD,IAAI5F,IAAS4F,EAUX,OAFAlJ,EAAOmJ,kBAAe9T,OACtB2K,EAAOoJ,kBAAe/T,GARtB2K,EAAOmJ,aAAe7F,EAClBtD,EAAOiB,SAAWjB,EAAOjE,OAAOkF,QAAQC,QAC1ClB,EAAOoJ,aAAe5I,SAAStP,EAAEoS,GAAOpQ,KAAK,2BAA4B,IAEzE8M,EAAOoJ,aAAelY,EAAEoS,GAAO/K,QAO/BwD,EAAOsN,0BAA+ChU,IAAxB2K,EAAOoJ,cAA8BpJ,EAAOoJ,eAAiBpJ,EAAOoG,aACpGpG,EAAOqJ,qBAEX,GAkKA,IAAI5C,EAAY,CACd9L,aArJF,SAASA,aAAcC,GAAOvK,KAAKiQ,eAAiB,IAAM,MACxD,MAEM,OACJvE,EAAQ8E,aAAcC,EAAG,UAAE2F,EAAS,WAAE9F,GAHzBtQ,KAMf,GAAI0L,EAAOuN,iBACT,OAAOxI,GAAO2F,EAAYA,EAE5B,GAAI1K,EAAO6F,QACT,OAAO6E,EAGT,IAAI8C,EAAmBlP,EAAMM,aAAagG,EAAW,GAAI/F,GAGzD,OAFIkG,IAAKyI,GAAoBA,GAEtBA,GAAoB,CAC7B,EAoIEC,aAlIF,SAASA,aAAc/C,EAAWgD,GAChC,MAAMzJ,EAAS3P,MAEbwQ,aAAcC,EAAG,OAAE/E,EAAM,WAAE4E,EAAU,UAAE+I,EAAS,SAAExC,GAChDlH,EACJ,IAwBI2J,EAxBAC,EAAI,EACJC,EAAI,EAGJ7J,EAAOM,eACTsJ,EAAI9I,GAAO2F,EAAYA,EAEvBoD,EAAIpD,EAGF1K,EAAOoI,eACTyF,EAAI9G,KAAKC,MAAM6G,GACfC,EAAI/G,KAAKC,MAAM8G,IAGb9N,EAAO6F,QACT8H,EAAU1J,EAAOM,eAAiB,aAAe,aAAeN,EAAOM,gBAAkBsJ,GAAKC,EACpF9N,EAAOuN,kBACjB3I,EAAW7M,UAAU,eAAe8V,QAAQC,aAE9C7J,EAAO8J,kBAAoB9J,EAAOyG,UAClCzG,EAAOyG,UAAYzG,EAAOM,eAAiBsJ,EAAIC,EAI/C,MAAMxC,EAAiBrH,EAAOsH,eAAiBtH,EAAO8G,eAEpD6C,EADqB,IAAnBtC,EACY,GAECZ,EAAYzG,EAAO8G,gBAAkB,EAElD6C,IAAgBzC,GAClBlH,EAAOmH,eAAeV,GAGxBzG,EAAO5B,KAAK,eAAgB4B,EAAOyG,UAAWgD,EAChD,EA0FE3C,aAxFF,SAASA,eACP,OAASzW,KAAKkR,SAAS,EACzB,EAuFE+F,aArFF,SAASA,eACP,OAASjX,KAAKkR,SAASlR,KAAKkR,SAAS5T,OAAS,EAChD,EAoFEoc,YAlFF,SAASA,YAAatD,EAAY,EAAGV,EAAQ1V,KAAK0L,OAAOgK,MAAOiE,GAAe,EAAMC,GAAkB,EAAMC,GAC3G,MAAMlK,EAAS3P,MAET,OACJ0L,EAAM,UACN2N,GACE1J,EAEJ,GAAIA,EAAOmK,WAAapO,EAAOqO,+BAC7B,OAAO,EAGT,MAAMtD,EAAe9G,EAAO8G,eACtBQ,EAAetH,EAAOsH,eAC5B,IAAI+C,EAQJ,GAPiDA,EAA7CJ,GAAmBxD,EAAYK,EAA6BA,EACvDmD,GAAmBxD,EAAYa,EAA6BA,EACjDb,EAGpBzG,EAAOmH,eAAekD,GAElBtO,EAAO6F,QAAS,CAClB,MAAM0I,EAAMtK,EAAOM,eAcnB,OAbc,IAAVyF,EACF2D,EAAUY,EAAM,aAAe,cAAgBD,EAG3CX,EAAUa,SACZb,EAAUa,SAAS,CACjB,CAACD,EAAM,OAAS,QAASD,EACzBG,SAAU,WAGZd,EAAUY,EAAM,aAAe,cAAgBD,GAG5C,CACT,CAoCA,OAlCc,IAAVtE,GACF/F,EAAOkG,cAAc,GACrBlG,EAAOwJ,aAAaa,GAChBL,IACFhK,EAAO5B,KAAK,wBAAyB2H,EAAOmE,GAC5ClK,EAAO5B,KAAK,oBAGd4B,EAAOkG,cAAcH,GACrB/F,EAAOwJ,aAAaa,GAChBL,IACFhK,EAAO5B,KAAK,wBAAyB2H,EAAOmE,GAC5ClK,EAAO5B,KAAK,oBAET4B,EAAOmK,YACVnK,EAAOmK,WAAY,EACdnK,EAAOyK,oCACVzK,EAAOyK,kCAAoC,SAASjU,cAAc5B,GAC3DoL,IAAUA,EAAO0K,WAClB9V,EAAEtH,SAAW+C,OACjB2P,EAAOW,WAAW,GAAG1S,oBAAoB,gBAAiB+R,EAAOyK,mCACjEzK,EAAOW,WAAW,GAAG1S,oBAAoB,sBAAuB+R,EAAOyK,mCACvEzK,EAAOyK,kCAAoC,YACpCzK,EAAOyK,kCACVT,GACFhK,EAAO5B,KAAK,iBAEhB,GAEF4B,EAAOW,WAAW,GAAG3S,iBAAiB,gBAAiBgS,EAAOyK,mCAC9DzK,EAAOW,WAAW,GAAG3S,iBAAiB,sBAAuBgS,EAAOyK,sCAIjE,CACT,GAiFA,IAAI,EAAa,CACfvE,cAxEF,SAASA,cAAehS,EAAUuV,GAChC,MAAMzJ,EAAS3P,KAEV2P,EAAOjE,OAAO6F,SACjB5B,EAAOW,WAAW1M,WAAWC,GAG/B8L,EAAO5B,KAAK,gBAAiBlK,EAAUuV,EACzC,EAiEEkB,gBA/DF,SAASA,gBAAiBX,GAAe,EAAMY,GAC7C,MAAM5K,EAAS3P,MACT,YAAE+V,EAAW,OAAErK,EAAM,cAAE2M,GAAkB1I,EAC/C,GAAIjE,EAAO6F,QAAS,OAChB7F,EAAOgL,YACT/G,EAAO8F,mBAGT,IAAI+E,EAAMD,EASV,GARKC,IAC8BA,EAA7BzE,EAAcsC,EAAqB,OAC9BtC,EAAcsC,EAAqB,OACjC,SAGb1I,EAAO5B,KAAK,mBAER4L,GAAgB5D,IAAgBsC,EAAe,CACjD,GAAY,UAARmC,EAEF,YADA7K,EAAO5B,KAAK,6BAGd4B,EAAO5B,KAAK,8BACA,SAARyM,EACF7K,EAAO5B,KAAK,4BAEZ4B,EAAO5B,KAAK,2BAEhB,CACF,EAmCE5H,cAjCF,SAAS,gCAAewT,GAAe,EAAMY,GAC3C,MAAM5K,EAAS3P,MACT,YAAE+V,EAAW,cAAEsC,EAAa,OAAE3M,GAAWiE,EAE/C,GADAA,EAAOmK,WAAY,EACfpO,EAAO6F,QAAS,OACpB5B,EAAOkG,cAAc,GAErB,IAAI2E,EAAMD,EASV,GARKC,IAC8BA,EAA7BzE,EAAcsC,EAAqB,OAC9BtC,EAAcsC,EAAqB,OACjC,SAGb1I,EAAO5B,KAAK,iBAER4L,GAAgB5D,IAAgBsC,EAAe,CACjD,GAAY,UAARmC,EAEF,YADA7K,EAAO5B,KAAK,2BAGd4B,EAAO5B,KAAK,4BACA,SAARyM,EACF7K,EAAO5B,KAAK,0BAEZ4B,EAAO5B,KAAK,yBAEhB,CACF,GAoRA,IAAIkF,EAAQ,CACVwH,QA7QF,SAASA,QAASvS,EAAQ,EAAGwN,EAAQ1V,KAAK0L,OAAOgK,MAAOiE,GAAe,EAAME,GAC3E,MAAMlK,EAAS3P,KACf,IAAIsR,EAAapJ,EACboJ,EAAa,IAAGA,EAAa,GAEjC,MAAM,OACJ5F,EAAM,SAAEwF,EAAQ,WAAEC,EAAU,cAAEkH,EAAa,YAAEtC,EAAavF,aAAcC,EAAG,UAAE4I,GAC3E1J,EACJ,GAAIA,EAAOmK,WAAapO,EAAOqO,+BAC7B,OAAO,EAGT,MAAMtB,EAAOhG,KAAKgB,IAAI9D,EAAOjE,OAAO6I,mBAAoBjD,GACxD,IAAI6D,EAAYsD,EAAOhG,KAAKC,OAAOpB,EAAamH,GAAQ9I,EAAOjE,OAAO2H,gBAClE8B,GAAajE,EAAS5T,SAAQ6X,EAAYjE,EAAS5T,OAAS,IAE3DyY,GAAerK,EAAOgP,cAAgB,MAAQrC,GAAiB,IAAMsB,GACxEhK,EAAO5B,KAAK,0BAGd,MAAMqI,GAAalF,EAASiE,GAM5B,GAHAxF,EAAOmH,eAAeV,GAGlB1K,EAAO8M,oBACT,IAAK,IAAI5X,EAAI,EAAGA,EAAIuQ,EAAW7T,OAAQsD,GAAK,GACrC6R,KAAKC,MAAkB,IAAZ0D,IAAoB3D,KAAKC,MAAsB,IAAhBvB,EAAWvQ,MACxD0Q,EAAa1Q,GAKnB,GAAI+O,EAAO+I,aAAepH,IAAeyE,EAAa,CACpD,IAAKpG,EAAOgL,gBAAkBvE,EAAYzG,EAAOyG,WAAaA,EAAYzG,EAAO8G,eAC/E,OAAO,EAET,IAAK9G,EAAOiL,gBAAkBxE,EAAYzG,EAAOyG,WAAaA,EAAYzG,EAAOsH,iBAC1ElB,GAAe,KAAOzE,EAAY,OAAO,CAElD,CAEA,IAAIiJ,EAOJ,GAN8BA,EAA1BjJ,EAAayE,EAAyB,OACjCzE,EAAayE,EAAyB,OAC9B,QAIZtF,IAAQ2F,IAAczG,EAAOyG,YAAgB3F,GAAO2F,IAAczG,EAAOyG,UAc5E,OAbAzG,EAAOwI,kBAAkB7G,GAErB5F,EAAOgL,YACT/G,EAAO8F,mBAET9F,EAAO2H,sBACe,UAAlB5L,EAAO+I,QACT9E,EAAOwJ,aAAa/C,GAEJ,UAAdmE,IACF5K,EAAO2K,gBAAgBX,EAAcY,GACrC5K,EAAOxJ,cAAcwT,EAAcY,KAE9B,EAET,GAAI7O,EAAO6F,QAAS,CAClB,MAAM0I,EAAMtK,EAAOM,eACnB,IAAI4K,GAAKzE,EAiBT,OAhBI3F,IACFoK,EAAIxB,EAAUyB,YAAczB,EAAU1S,YAAckU,GAExC,IAAVnF,EACF2D,EAAUY,EAAM,aAAe,aAAeY,EAG1CxB,EAAUa,SACZb,EAAUa,SAAS,CACjB,CAACD,EAAM,OAAS,OAAQY,EACxBV,SAAU,WAGZd,EAAUY,EAAM,aAAe,aAAeY,GAG3C,CACT,CAmCA,OAjCc,IAAVnF,GACF/F,EAAOkG,cAAc,GACrBlG,EAAOwJ,aAAa/C,GACpBzG,EAAOwI,kBAAkB7G,GACzB3B,EAAO2H,sBACP3H,EAAO5B,KAAK,wBAAyB2H,EAAOmE,GAC5ClK,EAAO2K,gBAAgBX,EAAcY,GACrC5K,EAAOxJ,cAAcwT,EAAcY,KAEnC5K,EAAOkG,cAAcH,GACrB/F,EAAOwJ,aAAa/C,GACpBzG,EAAOwI,kBAAkB7G,GACzB3B,EAAO2H,sBACP3H,EAAO5B,KAAK,wBAAyB2H,EAAOmE,GAC5ClK,EAAO2K,gBAAgBX,EAAcY,GAChC5K,EAAOmK,YACVnK,EAAOmK,WAAY,EACdnK,EAAOoL,gCACVpL,EAAOoL,8BAAgC,SAAS5U,cAAc5B,GACvDoL,IAAUA,EAAO0K,WAClB9V,EAAEtH,SAAW+C,OACjB2P,EAAOW,WAAW,GAAG1S,oBAAoB,gBAAiB+R,EAAOoL,+BACjEpL,EAAOW,WAAW,GAAG1S,oBAAoB,sBAAuB+R,EAAOoL,+BACvEpL,EAAOoL,8BAAgC,YAChCpL,EAAOoL,8BACdpL,EAAOxJ,cAAcwT,EAAcY,GACrC,GAEF5K,EAAOW,WAAW,GAAG3S,iBAAiB,gBAAiBgS,EAAOoL,+BAC9DpL,EAAOW,WAAW,GAAG3S,iBAAiB,sBAAuBgS,EAAOoL,kCAIjE,CACT,EAoJEC,YAlJF,SAASA,YAAa9S,EAAQ,EAAGwN,EAAQ1V,KAAK0L,OAAOgK,MAAOiE,GAAe,EAAME,GAC/E,MAAMlK,EAAS3P,KACf,IAAIib,EAAW/S,EAKf,OAJIyH,EAAOjE,OAAOqM,OAChBkD,GAAYtL,EAAOuL,cAGdvL,EAAO8K,QAAQQ,EAAUvF,EAAOiE,EAAcE,EACvD,EA2IEsB,UAxIF,SAASA,UAAWzF,EAAQ1V,KAAK0L,OAAOgK,MAAOiE,GAAe,EAAME,GAClE,MAAMlK,EAAS3P,MACT,OAAE0L,EAAM,UAAEoO,GAAcnK,EACxByL,EAAYzL,EAAOoG,YAAcrK,EAAO6I,mBAAqB,EAAI7I,EAAO2H,eAC9E,GAAI3H,EAAOqM,KAAM,CACf,GAAI+B,EAAW,OAAO,EACtBnK,EAAO0L,UAEP1L,EAAO2L,YAAc3L,EAAOW,WAAW,GAAGnJ,UAC5C,CACA,OAAOwI,EAAO8K,QAAQ9K,EAAOoG,YAAcqF,EAAW1F,EAAOiE,EAAcE,EAC7E,EA8HE0B,UA3HF,SAASA,UAAW7F,EAAQ1V,KAAK0L,OAAOgK,MAAOiE,GAAe,EAAME,GAClE,MAAMlK,EAAS3P,MACT,OACJ0L,EAAM,UAAEoO,EAAS,SAAE5I,EAAQ,WAAEC,EAAU,aAAEX,GACvCb,EAEJ,GAAIjE,EAAOqM,KAAM,CACf,GAAI+B,EAAW,OAAO,EACtBnK,EAAO0L,UAEP1L,EAAO2L,YAAc3L,EAAOW,WAAW,GAAGnJ,UAC5C,CAEA,SAASqU,UAAUC,GACjB,OAAIA,EAAM,GAAWhJ,KAAKC,MAAMD,KAAK6B,IAAImH,IAClChJ,KAAKC,MAAM+I,EACpB,CACA,MAAMC,EAAsBF,UALVhL,EAAeb,EAAOyG,WAAazG,EAAOyG,WAMtDuF,EAAqBzK,EAAStG,KAAK6Q,GAAQD,UAAUC,KAC9BtK,EAAWvG,KAAK6Q,GAAQD,UAAUC,KAE3CvK,EAASyK,EAAmBva,QAAQsa,IACxD,IAMIE,EANAC,EAAW3K,EAASyK,EAAmBva,QAAQsa,GAAuB,GAW1E,YAVwB,IAAbG,GAA4BnQ,EAAO6F,SAC5CL,EAAS9T,SAAS4X,KACX6G,GAAYH,GAAuB1G,IAAM6G,EAAW7G,EAAI,SAIzC,IAAb6G,IACTD,EAAYzK,EAAW/P,QAAQya,GAC3BD,EAAY,IAAGA,EAAYjM,EAAOoG,YAAc,IAE/CpG,EAAO8K,QAAQmB,EAAWlG,EAAOiE,EAAcE,EACxD,EA0FEiC,WAvFF,SAASA,WAAYpG,EAAQ1V,KAAK0L,OAAOgK,MAAOiE,GAAe,EAAME,GAEnE,OADe7Z,KACDya,QADCza,KACc+V,YAAaL,EAAOiE,EAAcE,EACjE,EAqFEkC,eAlFF,SAASA,eAAgBrG,EAAQ1V,KAAK0L,OAAOgK,MAAOiE,GAAe,EAAME,EAAUmC,EAAY,IAC7F,MAAMrM,EAAS3P,KACf,IAAIkI,EAAQyH,EAAOoG,YACnB,MAAM0C,EAAOhG,KAAKgB,IAAI9D,EAAOjE,OAAO6I,mBAAoBrM,GAClDiN,EAAYsD,EAAOhG,KAAKC,OAAOxK,EAAQuQ,GAAQ9I,EAAOjE,OAAO2H,gBAE7D+C,EAAYzG,EAAOa,aAAeb,EAAOyG,WAAazG,EAAOyG,UAEnE,GAAIA,GAAazG,EAAOuB,SAASiE,GAAY,CAG3C,MAAM8G,EAActM,EAAOuB,SAASiE,GAE/BiB,EAAY6F,GADAtM,EAAOuB,SAASiE,EAAY,GACD8G,GAAeD,IACzD9T,GAASyH,EAAOjE,OAAO2H,eAE3B,KAAO,CAGL,MAAMwI,EAAWlM,EAAOuB,SAASiE,EAAY,GAExCiB,EAAYyF,IADGlM,EAAOuB,SAASiE,GACS0G,GAAYG,IACvD9T,GAASyH,EAAOjE,OAAO2H,eAE3B,CAIA,OAHAnL,EAAQuK,KAAKK,IAAI5K,EAAO,GACxBA,EAAQuK,KAAKgB,IAAIvL,EAAOyH,EAAOwB,WAAW7T,OAAS,GAE5CqS,EAAO8K,QAAQvS,EAAOwN,EAAOiE,EAAcE,EACpD,EAsDEb,oBApDF,SAASA,sBACP,MAAMrJ,EAAS3P,MACT,OAAE0L,EAAM,WAAE4E,GAAeX,EAEzBiD,EAAyC,SAAzBlH,EAAOkH,cAA2BjD,EAAOuM,uBAAyBxQ,EAAOkH,cAC/F,IACI2E,EADA4E,EAAexM,EAAOoJ,aAE1B,GAAIrN,EAAOqM,KAAM,CACf,GAAIpI,EAAOmK,UAAW,OACtBvC,EAAYpH,SAAStP,EAAE8O,EAAOmJ,cAAcjW,KAAK,2BAA4B,IACzE6I,EAAO2I,eAEN8H,EAAexM,EAAOuL,aAAgBtI,EAAgB,GACnDuJ,EAAgBxM,EAAOoB,OAAOzT,OAASqS,EAAOuL,aAAiBtI,EAAgB,GAEnFjD,EAAO0L,UACPc,EAAe7L,EACZhS,SAAS,IAAIoN,EAAOsF,uCAAuCuG,YAAoB7L,EAAOsM,wBACtF3P,GAAG,GACHH,QAEH8B,EAAMG,UAAS,KACbwF,EAAO8K,QAAQ0B,EAAa,KAG9BxM,EAAO8K,QAAQ0B,GAERA,EAAexM,EAAOoB,OAAOzT,OAASsV,GAC/CjD,EAAO0L,UACPc,EAAe7L,EACZhS,SAAS,IAAIoN,EAAOsF,uCAAuCuG,YAAoB7L,EAAOsM,wBACtF3P,GAAG,GACHH,QAEH8B,EAAMG,UAAS,KACbwF,EAAO8K,QAAQ0B,EAAa,KAG9BxM,EAAO8K,QAAQ0B,EAEnB,MACExM,EAAO8K,QAAQ0B,EAEnB,GAoGA,IAAIpE,EAAO,CACTqE,WAzFF,SAASA,aACP,MAAMzM,EAAS3P,MACT,OAAE0L,EAAM,WAAE4E,GAAeX,EAE/BW,EAAWhS,SAAS,IAAIoN,EAAOsF,cAActF,EAAOsM,uBAAuBxV,SAE3E,IAAIuO,EAAST,EAAWhS,SAAS,IAAIoN,EAAOsF,cAE5C,GAAItF,EAAO2Q,uBAAwB,CACjC,MAAMC,EAAiB5Q,EAAO2H,eAAkBtC,EAAOzT,OAASoO,EAAO2H,eACvE,GAAIiJ,IAAmB5Q,EAAO2H,eAAgB,CAC5C,IAAK,IAAIzS,EAAI,EAAGA,EAAI0b,EAAgB1b,GAAK,EAAG,CAC1C,MAAM2b,EAAY1b,EAAEtD,EAAA,cAAyB,QAAQ0E,SAAS,GAAGyJ,EAAOsF,cAActF,EAAO8Q,mBAC7FlM,EAAW/H,OAAOgU,EACpB,CACAxL,EAAST,EAAWhS,SAAS,IAAIoN,EAAOsF,aAC1C,CACF,CAE6B,SAAzBtF,EAAOkH,eAA6BlH,EAAOwP,eAAcxP,EAAOwP,aAAenK,EAAOzT,QAE1FqS,EAAOuL,aAAezI,KAAKE,KAAK/L,WAAW8E,EAAOwP,cAAgBxP,EAAOkH,cAAe,KACxFjD,EAAOuL,cAAgBxP,EAAO+Q,qBAC1B9M,EAAOuL,aAAenK,EAAOzT,SAC/BqS,EAAOuL,aAAenK,EAAOzT,QAG/B,MAAMof,EAAgB,GAChBC,EAAe,GACrB5L,EAAOpJ,MAAK,CAACO,EAAO5E,KAClB,MAAM2P,EAAQpS,EAAEyC,GACZ4E,EAAQyH,EAAOuL,cAAcyB,EAAapb,KAAK+B,GAC/C4E,EAAQ6I,EAAOzT,QAAU4K,GAAS6I,EAAOzT,OAASqS,EAAOuL,cAAcwB,EAAcnb,KAAK+B,GAC9F2P,EAAMpQ,KAAK,0BAA2BqF,EAAM,IAE9C,IAAK,IAAItH,EAAI,EAAGA,EAAI+b,EAAarf,OAAQsD,GAAK,EAC5C0P,EAAW/H,OAAO1H,EAAE8b,EAAa/b,GAAGgc,WAAU,IAAO3a,SAASyJ,EAAOsM,sBAEvE,IAAK,IAAIpX,EAAI8b,EAAcpf,OAAS,EAAGsD,GAAK,EAAGA,GAAK,EAClD0P,EAAW1H,QAAQ/H,EAAE6b,EAAc9b,GAAGgc,WAAU,IAAO3a,SAASyJ,EAAOsM,qBAE3E,EAiDEqD,QA/CF,SAASA,UACP,MAAM1L,EAAS3P,KAEf2P,EAAO5B,KAAK,iBAEZ,MAAM,YACJgI,EAAW,OAAEhF,EAAM,aAAEmK,EAAY,eAAEN,EAAc,eAAED,EAAc,SAAEzJ,EAAUV,aAAcC,GACzFd,EACJ,IAAIsL,EACJtL,EAAOiL,gBAAiB,EACxBjL,EAAOgL,gBAAiB,EAExB,MACMkC,GADiB3L,EAAS6E,GACHpG,EAAOrF,eAGpC,GAAIyL,EAAcmF,EAAc,CAC9BD,EAAYlK,EAAOzT,OAAyB,EAAf4d,EAAqBnF,EAClDkF,GAAYC,EACSvL,EAAO8K,QAAQQ,EAAU,GAAG,GAAO,IAC3B,IAAT4B,GAClBlN,EAAOwJ,cAAc1I,GAAOd,EAAOyG,UAAYzG,EAAOyG,WAAayG,EAEvE,MAAO,GAAI9G,GAAehF,EAAOzT,OAAS4d,EAAc,CAEtDD,GAAYlK,EAAOzT,OAASyY,EAAcmF,EAC1CD,GAAYC,EACSvL,EAAO8K,QAAQQ,EAAU,GAAG,GAAO,IAC3B,IAAT4B,GAClBlN,EAAOwJ,cAAc1I,GAAOd,EAAOyG,UAAYzG,EAAOyG,WAAayG,EAEvE,CACAlN,EAAOiL,eAAiBA,EACxBjL,EAAOgL,eAAiBA,EAExBhL,EAAO5B,KAAK,UACd,EAYE+O,YAVF,SAASA,cACP,MACM,WAAExM,EAAU,OAAE5E,EAAM,OAAEqF,GADb/Q,KAEfsQ,EAAWhS,SAAS,IAAIoN,EAAOsF,cAActF,EAAOsM,wBAAwBtM,EAAOsF,cAActF,EAAO8Q,mBAAmBha,SAC3HuO,EAAO5N,WAAW,0BACpB,GAwBA,IAAI4Z,EAAa,CACfC,cAjBF,SAASA,cAAeC,GACtB,MAAMtN,EAAS3P,KACf,GAAIyM,EAAQC,QAAUiD,EAAOjE,OAAOwR,eAAkBvN,EAAOjE,OAAO0J,eAAiBzF,EAAOwN,UAAaxN,EAAOjE,OAAO6F,QAAS,OAChI,MAAMjO,EAAKqM,EAAOrM,GAClBA,EAAG9E,MAAM4e,OAAS,OAClB9Z,EAAG9E,MAAM4e,OAASH,EAAS,mBAAqB,eAChD3Z,EAAG9E,MAAM4e,OAASH,EAAS,eAAiB,YAC5C3Z,EAAG9E,MAAM4e,OAASH,EAAS,WAAa,MAC1C,EAUEI,gBARF,SAASA,kBACP,MAAM1N,EAAS3P,KACXyM,EAAQC,OAAUiD,EAAOjE,OAAO0J,eAAiBzF,EAAOwN,UAAaxN,EAAOjE,OAAO6F,UACvF5B,EAAOrM,GAAG9E,MAAM4e,OAAS,GAC3B,GA6JA,IAAIE,EAAe,CACjBC,YAvJF,SAASA,YAAaxM,GACpB,MAAMpB,EAAS3P,MACT,WAAEsQ,EAAU,OAAE5E,GAAWiE,EAI/B,GAHIjE,EAAOqM,MACTpI,EAAOmN,cAEa,iBAAX/L,GAAuB,WAAYA,EAC5C,IAAK,IAAInQ,EAAI,EAAGA,EAAImQ,EAAOzT,OAAQsD,GAAK,EAClCmQ,EAAOnQ,IAAI0P,EAAW/H,OAAOwI,EAAOnQ,SAG1C0P,EAAW/H,OAAOwI,GAEhBrF,EAAOqM,MACTpI,EAAOyM,aAEH1Q,EAAOkB,UAAYH,EAAQG,UAC/B+C,EAAOF,QAEX,EAqIE+N,aAnIF,SAASA,aAAczM,GACrB,MAAMpB,EAAS3P,MACT,OAAE0L,EAAM,WAAE4E,EAAU,YAAEyF,GAAgBpG,EAExCjE,EAAOqM,MACTpI,EAAOmN,cAET,IAAI1E,EAAiBrC,EAAc,EACnC,GAAsB,iBAAXhF,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAInQ,EAAI,EAAGA,EAAImQ,EAAOzT,OAAQsD,GAAK,EAClCmQ,EAAOnQ,IAAI0P,EAAW1H,QAAQmI,EAAOnQ,IAE3CwX,EAAiBrC,EAAchF,EAAOzT,MACxC,MACEgT,EAAW1H,QAAQmI,GAEjBrF,EAAOqM,MACTpI,EAAOyM,aAEH1Q,EAAOkB,UAAYH,EAAQG,UAC/B+C,EAAOF,SAETE,EAAO8K,QAAQrC,EAAgB,GAAG,EACpC,EA6GEqF,SA3GF,SAASA,SAAUvV,EAAO6I,GACxB,MAAMpB,EAAS3P,MACT,WAAEsQ,EAAU,OAAE5E,EAAM,YAAEqK,GAAgBpG,EAC5C,IAAI+N,EAAoB3H,EACpBrK,EAAOqM,OACT2F,GAAqB/N,EAAOuL,aAC5BvL,EAAOmN,cACPnN,EAAOoB,OAAST,EAAWhS,SAAS,IAAIoN,EAAOsF,eAEjD,MAAM2M,EAAahO,EAAOoB,OAAOzT,OACjC,GAAI4K,GAAS,EAEX,YADAyH,EAAO6N,aAAazM,GAGtB,GAAI7I,GAASyV,EAEX,YADAhO,EAAO4N,YAAYxM,GAGrB,IAAIqH,EAAiBsF,EAAoBxV,EAAQwV,EAAoB,EAAIA,EAEzE,MAAME,EAAe,GACrB,IAAK,IAAIhd,EAAI+c,EAAa,EAAG/c,GAAKsH,EAAOtH,GAAK,EAAG,CAC/C,MAAMid,EAAelO,EAAOoB,OAAO1I,GAAGzH,GACtCid,EAAarb,SACbob,EAAalZ,QAAQmZ,EACvB,CAEA,GAAsB,iBAAX9M,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAInQ,EAAI,EAAGA,EAAImQ,EAAOzT,OAAQsD,GAAK,EAClCmQ,EAAOnQ,IAAI0P,EAAW/H,OAAOwI,EAAOnQ,IAE1CwX,EAAiBsF,EAAoBxV,EAAQwV,EAAoB3M,EAAOzT,OAASogB,CACnF,MACEpN,EAAW/H,OAAOwI,GAGpB,IAAK,IAAInQ,EAAI,EAAGA,EAAIgd,EAAatgB,OAAQsD,GAAK,EAC5C0P,EAAW/H,OAAOqV,EAAahd,IAG7B8K,EAAOqM,MACTpI,EAAOyM,aAEH1Q,EAAOkB,UAAYH,EAAQG,UAC/B+C,EAAOF,SAEL/D,EAAOqM,KACTpI,EAAO8K,QAAQrC,EAAiBzI,EAAOuL,aAAc,GAAG,GAExDvL,EAAO8K,QAAQrC,EAAgB,GAAG,EAEtC,EAyDE0F,YAvDF,SAASA,YAAaC,GACpB,MAAMpO,EAAS3P,MACT,OAAE0L,EAAM,WAAE4E,EAAU,YAAEyF,GAAgBpG,EAE5C,IAAI+N,EAAoB3H,EACpBrK,EAAOqM,OACT2F,GAAqB/N,EAAOuL,aAC5BvL,EAAOmN,cACPnN,EAAOoB,OAAST,EAAWhS,SAAS,IAAIoN,EAAOsF,eAEjD,IACIgN,EADA5F,EAAiBsF,EAGrB,GAA6B,iBAAlBK,GAA8B,WAAYA,EAAe,CAClE,IAAK,IAAInd,EAAI,EAAGA,EAAImd,EAAczgB,OAAQsD,GAAK,EAC7Cod,EAAgBD,EAAcnd,GAC1B+O,EAAOoB,OAAOiN,IAAgBrO,EAAOoB,OAAO1I,GAAG2V,GAAexb,SAC9Dwb,EAAgB5F,IAAgBA,GAAkB,GAExDA,EAAiB3F,KAAKK,IAAIsF,EAAgB,EAC5C,MACE4F,EAAgBD,EACZpO,EAAOoB,OAAOiN,IAAgBrO,EAAOoB,OAAO1I,GAAG2V,GAAexb,SAC9Dwb,EAAgB5F,IAAgBA,GAAkB,GACtDA,EAAiB3F,KAAKK,IAAIsF,EAAgB,GAGxC1M,EAAOqM,MACTpI,EAAOyM,aAGH1Q,EAAOkB,UAAYH,EAAQG,UAC/B+C,EAAOF,SAEL/D,EAAOqM,KACTpI,EAAO8K,QAAQrC,EAAiBzI,EAAOuL,aAAc,GAAG,GAExDvL,EAAO8K,QAAQrC,EAAgB,GAAG,EAEtC,EAiBE6F,gBAfF,SAASA,kBACP,MAAMtO,EAAS3P,KAET+d,EAAgB,GACtB,IAAK,IAAInd,EAAI,EAAGA,EAAI+O,EAAOoB,OAAOzT,OAAQsD,GAAK,EAC7Cmd,EAAcxc,KAAKX,GAErB+O,EAAOmO,YAAYC,EACrB,GAUA,MAAMG,EAAU,SAASA,SACvB,MAAMC,EAAW7e,EAAA,mBACX8e,EAAK9e,EAAA,oBAEL+e,EAAS,CACbC,KAAK,EACLC,SAAS,EACTC,eAAe,EACfC,SAAS,EACTC,QAAQ,EACRC,MAAM,EACNC,MAAM,EACNC,MAAM,EACNC,IAAI,EACJC,SAAS,EACTC,OAAO,EACPC,SAAS,EACTC,WAAY5f,EAAA,UAAkBA,EAAA,UAC9B6f,YAAa7f,EAAA,UAAkBA,EAAA,UAC/B8f,UAAU,GAGNC,EAAc/f,EAAA,aACdggB,EAAehgB,EAAA,cAEfif,EAAUH,EAAG5c,MAAM,+BACzB,IAAIod,EAAOR,EAAG5c,MAAM,wBACpB,MAAMmd,EAAOP,EAAG5c,MAAM,2BAChBkd,GAAUE,GAAQR,EAAG5c,MAAM,8BAC3Bsd,EAAKV,EAAGhd,QAAQ,UAAY,GAAKgd,EAAGhd,QAAQ,aAAe,EAC3Dyd,EAAOT,EAAGhd,QAAQ,UAAY,EAC9B2d,EAAUX,EAAGhd,QAAQ,WAAa,GAAKgd,EAAGhd,QAAQ,aAAe,EACjE6d,EAAuB,UAAbd,EACViB,EAAWhB,EAAGmB,cAAcne,QAAQ,aAAe,EACzD,IAAI4d,EAAqB,aAAbb,EA4EZ,OAzEKS,GACAI,GACAvS,EAAQC,QAEQ,OAAhB2S,GAAyC,OAAjBC,GACL,MAAhBD,GAAwC,OAAjBC,GACP,MAAhBD,GAAwC,OAAjBC,GACP,MAAhBD,GAAwC,OAAjBC,KAG7BV,EAAOR,EAAG5c,MAAM,uBAChBwd,GAAQ,GAGVX,EAAOS,GAAKA,EACZT,EAAOQ,KAAOA,EACdR,EAAOU,QAAUA,EAGbR,IAAYU,IACdZ,EAAOmB,GAAK,UACZnB,EAAOoB,UAAYlB,EAAQ,GAC3BF,EAAOE,SAAU,EACjBF,EAAOG,cAAgBJ,EAAGmB,cAAcne,QAAQ,WAAa,IAE3Dwd,GAAQF,GAAUC,KACpBN,EAAOmB,GAAK,MACZnB,EAAOC,KAAM,GAGXI,IAAWC,IACbN,EAAOoB,UAAYf,EAAO,GAAG5T,QAAQ,KAAM,KAC3CuT,EAAOK,QAAS,GAEdE,IACFP,EAAOoB,UAAYb,EAAK,GAAG9T,QAAQ,KAAM,KACzCuT,EAAOO,MAAO,GAEZD,IACFN,EAAOoB,UAAYd,EAAK,GAAKA,EAAK,GAAG7T,QAAQ,KAAM,KAAO,KAC1DuT,EAAOM,MAAO,GAGZN,EAAOC,KAAOD,EAAOoB,WAAarB,EAAGhd,QAAQ,aAAe,GACvB,OAAnCid,EAAOoB,UAAUhe,MAAM,KAAK,KAC9B4c,EAAOoB,UAAYrB,EAAGmB,cAAc9d,MAAM,YAAY,GAAGA,MAAM,KAAK,IAKxE4c,EAAOqB,YAAchB,GAAUE,GAAQD,KAAUP,EAAG5c,MAAM,gCAAiClC,EAAA,uBACrFA,EAAA,YAAqBA,EAAA,WAAkB,8BAA8ByI,QAC3EsW,EAAOsB,QAAUtB,EAAOqB,QACxBrB,EAAOuB,WAAavB,EAAOqB,QAG3BrB,EAAOI,UAAYJ,EAAOC,KAAOD,EAAOE,UAAYa,EAChDf,EAAOI,UACTJ,EAAOe,SAAWA,EAClBf,EAAOW,MAAQA,EACfX,EAAOY,QAAUA,EACbZ,EAAOW,QACTX,EAAOmB,GAAK,SAEVnB,EAAOY,UACTZ,EAAOmB,GAAK,YAKhBnB,EAAOwB,WAAavgB,EAAA,kBAA2B,EAGxC+e,CACT,CA/Ge,GAiHf,SAASyB,aAAc5a,GACrB,MAAMyK,EAAS3P,KACTqD,EAAOsM,EAAOoQ,iBACd,OAAErU,EAAM,QAAEsU,GAAYrQ,EAE5B,GAAIA,EAAOmK,WAAapO,EAAOqO,+BAC7B,OAEF,IAAIxV,EAAIW,EACJX,EAAE0b,gBAAe1b,EAAIA,EAAE0b,eAC3B,MAAMC,EAAYrf,EAAE0D,EAAEtH,QAEtB,GAAiC,YAA7ByO,EAAOyU,oBACJD,EAAU1W,QAAQmG,EAAO0J,WAAW/b,OAAQ,OAGnD,GADA+F,EAAK+c,aAA0B,eAAX7b,EAAE8b,MACjBhd,EAAK+c,cAAgB,UAAW7b,GAAiB,IAAZA,EAAE+b,MAAa,OACzD,IAAKjd,EAAK+c,cAAgB,WAAY7b,GAAKA,EAAEgc,OAAS,EAAG,OACzD,GAAIld,EAAKmd,WAAand,EAAKod,QAAS,OACpC,GAAI/U,EAAOgV,WAAaR,EAAU1W,QAAQkC,EAAOiV,kBAAoBjV,EAAOiV,kBAAoB,IAAIjV,EAAOkV,kBAAkB,GAE3H,YADAjR,EAAOkR,YAAa,GAGtB,GAAInV,EAAOoV,eACJZ,EAAU1W,QAAQkC,EAAOoV,cAAc,GAAI,OAGlDd,EAAQe,SAAsB,eAAXxc,EAAE8b,KAAwB9b,EAAEyc,cAAc,GAAGC,MAAQ1c,EAAE0c,MAC1EjB,EAAQkB,SAAsB,eAAX3c,EAAE8b,KAAwB9b,EAAEyc,cAAc,GAAGG,MAAQ5c,EAAE4c,MAC1E,MAAMC,EAASpB,EAAQe,SACjBM,EAASrB,EAAQkB,SAIjBI,EAAqB5V,EAAO4V,oBAAsB5V,EAAO6V,sBACzDC,EAAqB9V,EAAO8V,oBAAsB9V,EAAO+V,sBAC/D,IACEH,KACKF,GAAUI,GACXJ,GAAU9hB,EAAA,aAAsBkiB,GAHtC,CAuBA,GAfAxX,EAAMhN,OAAOqG,EAAM,CACjBmd,WAAW,EACXC,SAAS,EACTiB,qBAAqB,EACrBC,iBAAa3c,EACb4c,iBAAa5c,IAGfgb,EAAQoB,OAASA,EACjBpB,EAAQqB,OAASA,EACjBhe,EAAKwe,eAAiB7X,EAAMK,MAC5BsF,EAAOkR,YAAa,EACpBlR,EAAOD,aACPC,EAAOmS,oBAAiB9c,EACpB0G,EAAOsQ,UAAY,IAAG3Y,EAAK0e,oBAAqB,GACrC,eAAXxd,EAAE8b,KAAuB,CAC3B,IAAI2B,GAAiB,EACjB9B,EAAUvb,GAAGtB,EAAK4e,gBAAeD,GAAiB,GAEpDzkB,EAAA,eACGsD,EAAEtD,EAAA,eAA0BoH,GAAGtB,EAAK4e,eACpC1kB,EAAA,gBAA6B2iB,EAAU,IAE1C3iB,EAAA,qBAGF,MAAM2kB,EAAuBF,GAAkBrS,EAAOwS,gBAAkBzW,EAAO0W,0BAC3E1W,EAAO2W,+BAAiCH,IAC1C3d,EAAEyd,gBAEN,CACArS,EAAO5B,KAAK,aAAcxJ,EAjC1B,CAkCF,CAEA,SAAS+d,YAAapd,GACpB,MAAMyK,EAAS3P,KACTqD,EAAOsM,EAAOoQ,iBACd,OAAErU,EAAM,QAAEsU,EAASxP,aAAcC,GAAQd,EAC/C,IAAIpL,EAAIW,EAER,GADIX,EAAE0b,gBAAe1b,EAAIA,EAAE0b,gBACtB5c,EAAKmd,UAIR,YAHInd,EAAKue,aAAeve,EAAKse,aAC3BhS,EAAO5B,KAAK,oBAAqBxJ,IAIrC,GAAIlB,EAAK+c,cAA2B,cAAX7b,EAAE8b,KAAsB,OACjD,MAAMkC,EAAyB,cAAXhe,EAAE8b,MAAwB9b,EAAEyc,gBAAkBzc,EAAEyc,cAAc,IAAMzc,EAAEie,eAAe,IACnGvB,EAAmB,cAAX1c,EAAE8b,KAAuBkC,EAAYtB,MAAQ1c,EAAE0c,MACvDE,EAAmB,cAAX5c,EAAE8b,KAAuBkC,EAAYpB,MAAQ5c,EAAE4c,MAC7D,GAAI5c,EAAEke,wBAGJ,OAFAzC,EAAQoB,OAASH,OACjBjB,EAAQqB,OAASF,GAGnB,IAAKxR,EAAOwS,eAYV,OAVAxS,EAAOkR,YAAa,OAChBxd,EAAKmd,YACPxW,EAAMhN,OAAOgjB,EAAS,CACpBoB,OAAQH,EACRI,OAAQF,EACRJ,SAAUE,EACVC,SAAUC,IAEZ9d,EAAKwe,eAAiB7X,EAAMK,QAIhC,GAAIhH,EAAK+c,cAAgB1U,EAAOgX,sBAAwBhX,EAAOqM,KAC7D,GAAIpI,EAAOO,cAET,GACGiR,EAAQnB,EAAQqB,QAAU1R,EAAOyG,WAAazG,EAAOsH,gBAClDkK,EAAQnB,EAAQqB,QAAU1R,EAAOyG,WAAazG,EAAO8G,eAIzD,OAFApT,EAAKmd,WAAY,OACjBnd,EAAKod,SAAU,QAGZ,GACJQ,EAAQjB,EAAQoB,QAAUzR,EAAOyG,WAAazG,EAAOsH,gBAClDgK,EAAQjB,EAAQoB,QAAUzR,EAAOyG,WAAazG,EAAO8G,eAEzD,OAGJ,GAAIpT,EAAK+c,cAAgB7iB,EAAA,eACnBgH,EAAEtH,SAAWM,EAAA,eAA4BsD,EAAE0D,EAAEtH,QAAQ0H,GAAGtB,EAAK4e,cAG/D,OAFA5e,EAAKod,SAAU,OACf9Q,EAAOkR,YAAa,GAOxB,GAHIxd,EAAKqe,qBACP/R,EAAO5B,KAAK,YAAaxJ,GAEvBA,EAAEyc,eAAiBzc,EAAEyc,cAAc1jB,OAAS,EAAG,OAEnD0iB,EAAQe,SAAWE,EACnBjB,EAAQkB,SAAWC,EAEnB,MAAMwB,EAAQ3C,EAAQe,SAAWf,EAAQoB,OACnCwB,EAAQ5C,EAAQkB,SAAWlB,EAAQqB,OACzC,GAAI1R,EAAOjE,OAAOsQ,WAAavJ,KAAKoQ,KAAMF,GAAS,EAAMC,GAAS,GAAMjT,EAAOjE,OAAOsQ,UAAW,OAEjG,QAAgC,IAArB3Y,EAAKse,YAA6B,CAC3C,IAAImB,EACCnT,EAAOM,gBAAkB+P,EAAQkB,WAAalB,EAAQqB,QAAY1R,EAAOO,cAAgB8P,EAAQe,WAAaf,EAAQoB,OACzH/d,EAAKse,aAAc,EAGdgB,EAAQA,EAAUC,EAAQA,GAAU,KACvCE,EAA6D,IAA/CrQ,KAAKsQ,MAAMtQ,KAAK6B,IAAIsO,GAAQnQ,KAAK6B,IAAIqO,IAAiBlQ,KAAKuQ,GACzE3f,EAAKse,YAAchS,EAAOM,eAAiB6S,EAAapX,EAAOoX,WAAc,GAAKA,EAAapX,EAAOoX,WAG5G,CASA,GARIzf,EAAKse,aACPhS,EAAO5B,KAAK,oBAAqBxJ,QAEH,IAArBlB,EAAKue,cACV5B,EAAQe,WAAaf,EAAQoB,QAAUpB,EAAQkB,WAAalB,EAAQqB,SACtEhe,EAAKue,aAAc,IAGnBve,EAAKse,YAEP,YADAte,EAAKmd,WAAY,GAGnB,IAAKnd,EAAKue,YACR,OAEFjS,EAAOkR,YAAa,GACfnV,EAAO6F,SAAWhN,EAAEwB,YACvBxB,EAAEyd,iBAEAtW,EAAOuX,2BAA6BvX,EAAOwX,QAC7C3e,EAAE4e,kBAGC9f,EAAKod,UACJ/U,EAAOqM,MACTpI,EAAO0L,UAEThY,EAAK+f,eAAiBzT,EAAOrF,eAC7BqF,EAAOkG,cAAc,GACjBlG,EAAOmK,WACTnK,EAAOW,WAAW3K,QAAQ,qCAE5BtC,EAAKggB,qBAAsB,GAEvB3X,EAAOqR,aAAyC,IAA1BpN,EAAOgL,iBAAqD,IAA1BhL,EAAOiL,gBACjEjL,EAAOqN,eAAc,GAEvBrN,EAAO5B,KAAK,kBAAmBxJ,IAEjCoL,EAAO5B,KAAK,aAAcxJ,GAC1BlB,EAAKod,SAAU,EAEf,IAAI5D,EAAOlN,EAAOM,eAAiB0S,EAAQC,EAC3C5C,EAAQnD,KAAOA,EAEfA,GAAQnR,EAAO4X,WACX7S,IAAKoM,GAAQA,GAEjBlN,EAAOmS,eAAiBjF,EAAO,EAAI,OAAS,OAC5CxZ,EAAK6V,iBAAmB2D,EAAOxZ,EAAK+f,eAEpC,IAAIG,GAAsB,EACtBC,EAAkB9X,EAAO8X,gBA0B7B,GAzBI9X,EAAOgX,sBACTc,EAAkB,GAEf3G,EAAO,GAAKxZ,EAAK6V,iBAAmBvJ,EAAO8G,gBAC9C8M,GAAsB,EAClB7X,EAAO+X,aAAYpgB,EAAK6V,iBAAoBvJ,EAAO8G,eAAiB,IAAQ9G,EAAO8G,eAAiBpT,EAAK+f,eAAiBvG,IAAS2G,IAC9H3G,EAAO,GAAKxZ,EAAK6V,iBAAmBvJ,EAAOsH,iBACpDsM,GAAsB,EAClB7X,EAAO+X,aAAYpgB,EAAK6V,iBAAoBvJ,EAAOsH,eAAiB,GAAOtH,EAAOsH,eAAiB5T,EAAK+f,eAAiBvG,IAAS2G,IAGpID,IACFhf,EAAEke,yBAA0B,IAIzB9S,EAAOgL,gBAA4C,SAA1BhL,EAAOmS,gBAA6Bze,EAAK6V,iBAAmB7V,EAAK+f,iBAC7F/f,EAAK6V,iBAAmB7V,EAAK+f,iBAE1BzT,EAAOiL,gBAA4C,SAA1BjL,EAAOmS,gBAA6Bze,EAAK6V,iBAAmB7V,EAAK+f,iBAC7F/f,EAAK6V,iBAAmB7V,EAAK+f,gBAK3B1X,EAAOsQ,UAAY,EAAG,CACxB,KAAIvJ,KAAK6B,IAAIuI,GAAQnR,EAAOsQ,WAAa3Y,EAAK0e,oBAW5C,YADA1e,EAAK6V,iBAAmB7V,EAAK+f,gBAT7B,IAAK/f,EAAK0e,mBAMR,OALA1e,EAAK0e,oBAAqB,EAC1B/B,EAAQoB,OAASpB,EAAQe,SACzBf,EAAQqB,OAASrB,EAAQkB,SACzB7d,EAAK6V,iBAAmB7V,EAAK+f,oBAC7BpD,EAAQnD,KAAOlN,EAAOM,eAAiB+P,EAAQe,SAAWf,EAAQoB,OAASpB,EAAQkB,SAAWlB,EAAQqB,OAO5G,CAEK3V,EAAOgY,eAAgBhY,EAAO6F,WAG/B7F,EAAOiY,UAAYjY,EAAO4J,qBAAuB5J,EAAO6J,yBAC1D5F,EAAOwI,oBACPxI,EAAO2H,uBAEL5L,EAAOiY,WAEsB,IAA3BtgB,EAAKugB,WAAWtmB,QAClB+F,EAAKugB,WAAWriB,KAAK,CACnBsiB,SAAU7D,EAAQrQ,EAAOM,eAAiB,SAAW,UACrD6T,KAAMzgB,EAAKwe,iBAGfxe,EAAKugB,WAAWriB,KAAK,CACnBsiB,SAAU7D,EAAQrQ,EAAOM,eAAiB,WAAa,YACvD6T,KAAM9Z,EAAMK,SAIhBsF,EAAOmH,eAAezT,EAAK6V,kBAE3BvJ,EAAOwJ,aAAa9V,EAAK6V,kBAC3B,CAEA,SAAS6K,WAAY7e,GACnB,MAAMyK,EAAS3P,KACTqD,EAAOsM,EAAOoQ,iBAEd,OACJrU,EAAM,QAAEsU,EAASxP,aAAcC,EAAG,WAAEH,EAAU,WAAEa,EAAU,SAAED,GAC1DvB,EACJ,IAAIpL,EAAIW,EAMR,GALIX,EAAE0b,gBAAe1b,EAAIA,EAAE0b,eACvB5c,EAAKqe,qBACP/R,EAAO5B,KAAK,WAAYxJ,GAE1BlB,EAAKqe,qBAAsB,GACtBre,EAAKmd,UAMR,OALInd,EAAKod,SAAW/U,EAAOqR,YACzBpN,EAAOqN,eAAc,GAEvB3Z,EAAKod,SAAU,OACfpd,EAAKue,aAAc,GAIjBlW,EAAOqR,YAAc1Z,EAAKod,SAAWpd,EAAKmd,aAAwC,IAA1B7Q,EAAOgL,iBAAqD,IAA1BhL,EAAOiL,iBACnGjL,EAAOqN,eAAc,GAIvB,MAAMgH,EAAeha,EAAMK,MACrB4Z,EAAWD,EAAe3gB,EAAKwe,eAgBrC,GAbIlS,EAAOkR,aACTlR,EAAOiJ,mBAAmBrU,GAC1BoL,EAAO5B,KAAK,YAAaxJ,GACrB0f,EAAW,KAAQD,EAAe3gB,EAAK6gB,cAAiB,KAC1DvU,EAAO5B,KAAK,wBAAyBxJ,IAIzClB,EAAK6gB,cAAgBla,EAAMK,MAC3BL,EAAMG,UAAS,KACRwF,EAAO0K,YAAW1K,EAAOkR,YAAa,EAAI,KAG5Cxd,EAAKmd,YAAcnd,EAAKod,UAAY9Q,EAAOmS,gBAAmC,IAAjB9B,EAAQnD,MAAcxZ,EAAK6V,mBAAqB7V,EAAK+f,eAIrH,OAHA/f,EAAKmd,WAAY,EACjBnd,EAAKod,SAAU,OACfpd,EAAKue,aAAc,GAOrB,IAAIuC,EAOJ,GAXA9gB,EAAKmd,WAAY,EACjBnd,EAAKod,SAAU,EACfpd,EAAKue,aAAc,EAIjBuC,EADEzY,EAAOgY,aACIjT,EAAMd,EAAOyG,WAAazG,EAAOyG,WAEhC/S,EAAK6V,iBAGjBxN,EAAO6F,QACT,OAGF,GAAI7F,EAAOiY,SAAU,CACnB,GAAIQ,GAAcxU,EAAO8G,eAEvB,YADA9G,EAAO8K,QAAQ9K,EAAOoG,aAGxB,GAAIoO,GAAcxU,EAAOsH,eAMvB,YALItH,EAAOoB,OAAOzT,OAAS4T,EAAS5T,OAClCqS,EAAO8K,QAAQvJ,EAAS5T,OAAS,GAEjCqS,EAAO8K,QAAQ9K,EAAOoB,OAAOzT,OAAS,IAK1C,GAAIoO,EAAO0Y,iBAAkB,CAC3B,GAAI/gB,EAAKugB,WAAWtmB,OAAS,EAAG,CAC9B,MAAM+mB,EAAgBhhB,EAAKugB,WAAWU,MAChCC,EAAgBlhB,EAAKugB,WAAWU,MAEhCE,EAAWH,EAAcR,SAAWU,EAAcV,SAClDC,EAAOO,EAAcP,KAAOS,EAAcT,KAChDnU,EAAO8U,SAAWD,EAAWV,EAC7BnU,EAAO8U,UAAY,EACfhS,KAAK6B,IAAI3E,EAAO8U,UAAY/Y,EAAOgZ,0BACrC/U,EAAO8U,SAAW,IAIhBX,EAAO,KAAQ9Z,EAAMK,MAAQga,EAAcP,KAAQ,OACrDnU,EAAO8U,SAAW,EAEtB,MACE9U,EAAO8U,SAAW,EAEpB9U,EAAO8U,UAAY/Y,EAAOiZ,8BAE1BthB,EAAKugB,WAAWtmB,OAAS,EACzB,IAAIsnB,EAAmB,IAAOlZ,EAAOmZ,sBACrC,MAAMC,EAAmBnV,EAAO8U,SAAWG,EAE3C,IAAIG,EAAcpV,EAAOyG,UAAY0O,EACjCrU,IAAKsU,GAAeA,GAExB,IACIC,EADAC,GAAW,EAEf,MAAMC,EAA2C,GAA5BzS,KAAK6B,IAAI3E,EAAO8U,UAAiB/Y,EAAOyZ,4BAC7D,IAAIC,EACJ,GAAIL,EAAcpV,EAAOsH,eACnBvL,EAAO2Z,wBACLN,EAAcpV,EAAOsH,gBAAkBiO,IACzCH,EAAcpV,EAAOsH,eAAiBiO,GAExCF,EAAsBrV,EAAOsH,eAC7BgO,GAAW,EACX5hB,EAAKggB,qBAAsB,GAE3B0B,EAAcpV,EAAOsH,eAEnBvL,EAAOqM,MAAQrM,EAAO2I,iBAAgB+Q,GAAe,QACpD,GAAIL,EAAcpV,EAAO8G,eAC1B/K,EAAO2Z,wBACLN,EAAcpV,EAAO8G,eAAiByO,IACxCH,EAAcpV,EAAO8G,eAAiByO,GAExCF,EAAsBrV,EAAO8G,eAC7BwO,GAAW,EACX5hB,EAAKggB,qBAAsB,GAE3B0B,EAAcpV,EAAO8G,eAEnB/K,EAAOqM,MAAQrM,EAAO2I,iBAAgB+Q,GAAe,QACpD,GAAI1Z,EAAO4Z,eAAgB,CAChC,IAAIrN,EACJ,IAAK,IAAI7V,EAAI,EAAGA,EAAI8O,EAAS5T,OAAQ8E,GAAK,EACxC,GAAI8O,EAAS9O,IAAM2iB,EAAa,CAC9B9M,EAAY7V,EACZ,KACF,CAIA2iB,EADEtS,KAAK6B,IAAIpD,EAAS+G,GAAa8M,GAAetS,KAAK6B,IAAIpD,EAAS+G,EAAY,GAAK8M,IAA0C,SAA1BpV,EAAOmS,eAC5F5Q,EAAS+G,GAET/G,EAAS+G,EAAY,GAErC8M,GAAeA,CACjB,CAOA,GANIK,GACFzV,EAAOhC,KAAK,iBAAiB,KAC3BgC,EAAO0L,SAAS,IAII,IAApB1L,EAAO8U,UAMT,GAJEG,EADEnU,EACiBgC,KAAK6B,MAAMyQ,EAAcpV,EAAOyG,WAAazG,EAAO8U,UAEpDhS,KAAK6B,KAAKyQ,EAAcpV,EAAOyG,WAAazG,EAAO8U,UAEpE/Y,EAAO4Z,eAAgB,CAQzB,MAAMC,EAAe9S,KAAK6B,KAAK7D,GAAOsU,EAAcA,GAAepV,EAAOyG,WACpEoP,EAAmB7V,EAAOyB,gBAAgBzB,EAAOoG,aAErD6O,EADEW,EAAeC,EACE9Z,EAAOgK,MACjB6P,EAAe,EAAIC,EACM,IAAf9Z,EAAOgK,MAEQ,IAAfhK,EAAOgK,KAE9B,OACK,GAAIhK,EAAO4Z,eAEhB,YADA3V,EAAOoM,iBAILrQ,EAAO2Z,wBAA0BJ,GACnCtV,EAAOmH,eAAekO,GACtBrV,EAAOkG,cAAc+O,GACrBjV,EAAOwJ,aAAa4L,GACpBpV,EAAO2K,iBAAgB,EAAM3K,EAAOmS,gBACpCnS,EAAOmK,WAAY,EACnBxJ,EAAWnK,eAAc,KAClBwJ,IAAUA,EAAO0K,WAAchX,EAAKggB,sBACzC1T,EAAO5B,KAAK,kBACZ4B,EAAOkG,cAAcnK,EAAOgK,OAC5BpV,YAAW,KACTqP,EAAOwJ,aAAa6L,GACpB1U,EAAWnK,eAAc,KAClBwJ,IAAUA,EAAO0K,WACtB1K,EAAOxJ,eAAe,GACtB,GACD,GAAE,KAEEwJ,EAAO8U,UAChB9U,EAAOmH,eAAeiO,GACtBpV,EAAOkG,cAAc+O,GACrBjV,EAAOwJ,aAAa4L,GACpBpV,EAAO2K,iBAAgB,EAAM3K,EAAOmS,gBAC/BnS,EAAOmK,YACVnK,EAAOmK,WAAY,EACnBxJ,EAAWnK,eAAc,KAClBwJ,IAAUA,EAAO0K,WACtB1K,EAAOxJ,eAAe,MAI1BwJ,EAAOmH,eAAeiO,GAGxBpV,EAAOwI,oBACPxI,EAAO2H,qBACT,MAAO,GAAI5L,EAAO4Z,eAEhB,YADA3V,EAAOoM,iBAST,cALKrQ,EAAO0Y,kBAAoBH,GAAYvY,EAAO+Z,gBACjD9V,EAAOmH,iBACPnH,EAAOwI,oBACPxI,EAAO2H,uBAGX,CAGA,IAAIoO,EAAY,EACZC,EAAYhW,EAAOyB,gBAAgB,GACvC,IAAK,IAAIxQ,EAAI,EAAGA,EAAIuQ,EAAW7T,OAAQsD,GAAMA,EAAI8K,EAAO6I,mBAAqB,EAAI7I,EAAO2H,eAAiB,CACvG,MAAM+H,EAAaxa,EAAI8K,EAAO6I,mBAAqB,EAAI,EAAI7I,EAAO2H,oBACzB,IAA9BlC,EAAWvQ,EAAIwa,GACpB+I,GAAchT,EAAWvQ,IAAMujB,EAAahT,EAAWvQ,EAAIwa,KAC7DsK,EAAY9kB,EACZ+kB,EAAYxU,EAAWvQ,EAAIwa,GAAajK,EAAWvQ,IAE5CujB,GAAchT,EAAWvQ,KAClC8kB,EAAY9kB,EACZ+kB,EAAYxU,EAAWA,EAAW7T,OAAS,GAAK6T,EAAWA,EAAW7T,OAAS,GAEnF,CAGA,MAAMsoB,GAASzB,EAAahT,EAAWuU,IAAcC,EAC/CvK,EAAasK,EAAYha,EAAO6I,mBAAqB,EAAI,EAAI7I,EAAO2H,eAE1E,GAAI4Q,EAAWvY,EAAO+Z,aAAc,CAElC,IAAK/Z,EAAOma,WAEV,YADAlW,EAAO8K,QAAQ9K,EAAOoG,aAGM,SAA1BpG,EAAOmS,iBACL8D,GAASla,EAAOoa,gBAAiBnW,EAAO8K,QAAQiL,EAAYtK,GAC3DzL,EAAO8K,QAAQiL,IAEQ,SAA1B/V,EAAOmS,iBACL8D,EAAS,EAAIla,EAAOoa,gBAAkBnW,EAAO8K,QAAQiL,EAAYtK,GAChEzL,EAAO8K,QAAQiL,GAExB,KAAO,CAEL,IAAKha,EAAOqa,YAEV,YADApW,EAAO8K,QAAQ9K,EAAOoG,aAGEpG,EAAOqW,aAAezhB,EAAEtH,SAAW0S,EAAOqW,WAAWC,QAAU1hB,EAAEtH,SAAW0S,EAAOqW,WAAWE,QAQ7G3hB,EAAEtH,SAAW0S,EAAOqW,WAAWC,OACxCtW,EAAO8K,QAAQiL,EAAYtK,GAE3BzL,EAAO8K,QAAQiL,IATe,SAA1B/V,EAAOmS,gBACTnS,EAAO8K,QAAQiL,EAAYtK,GAEC,SAA1BzL,EAAOmS,gBACTnS,EAAO8K,QAAQiL,GAOrB,CACF,CAEA,SAASS,WACP,MAAMxW,EAAS3P,MAET,OAAE0L,EAAM,GAAEpI,GAAOqM,EAEvB,GAAIrM,GAAyB,IAAnBA,EAAGqD,YAAmB,OAG5B+E,EAAO0a,aACTzW,EAAO0W,gBAIT,MAAM,eAAE1L,EAAc,eAAEC,EAAc,SAAE1J,GAAavB,EAGrDA,EAAOgL,gBAAiB,EACxBhL,EAAOiL,gBAAiB,EAExBjL,EAAOD,aACPC,EAAOU,eAEPV,EAAO2H,uBACuB,SAAzB5L,EAAOkH,eAA4BlH,EAAOkH,cAAgB,IAAMjD,EAAOwH,QAAUxH,EAAOuH,cAAgBvH,EAAOjE,OAAO2I,eACzH1E,EAAO8K,QAAQ9K,EAAOoB,OAAOzT,OAAS,EAAG,GAAG,GAAO,GAEnDqS,EAAO8K,QAAQ9K,EAAOoG,YAAa,GAAG,GAAO,GAG3CpG,EAAO2W,UAAY3W,EAAO2W,SAASC,SAAW5W,EAAO2W,SAASE,QAChE7W,EAAO2W,SAASG,MAGlB9W,EAAOiL,eAAiBA,EACxBjL,EAAOgL,eAAiBA,EAEpBhL,EAAOjE,OAAO0J,eAAiBlE,IAAavB,EAAOuB,UACrDvB,EAAO0F,eAEX,CAEA,SAASqR,QAASniB,GAChB,MAAMoL,EAAS3P,KACV2P,EAAOkR,aACNlR,EAAOjE,OAAOib,eAAepiB,EAAEyd,iBAC/BrS,EAAOjE,OAAOkb,0BAA4BjX,EAAOmK,YACnDvV,EAAE4e,kBACF5e,EAAEsiB,4BAGR,CAEA,SAASC,WACP,MAAMnX,EAAS3P,MACT,UAAEqZ,EAAS,aAAE7I,GAAiBb,EAiBpC,IAAI2J,EAhBJ3J,EAAO8J,kBAAoB9J,EAAOyG,UAC9BzG,EAAOM,eAEPN,EAAOyG,UADL5F,EACmB6I,EAAUyB,YAAczB,EAAU1S,YAAe0S,EAAUhS,YAE5DgS,EAAUhS,WAGhCsI,EAAOyG,WAAaiD,EAAUjS,WAGN,IAAtBuI,EAAOyG,YAAkBzG,EAAOyG,UAAY,GAEhDzG,EAAOwI,oBACPxI,EAAO2H,sBAGP,MAAMN,EAAiBrH,EAAOsH,eAAiBtH,EAAO8G,eAEpD6C,EADqB,IAAnBtC,EACY,GAECrH,EAAOyG,UAAYzG,EAAO8G,gBAAkB,EAEzD6C,IAAgB3J,EAAOkH,UACzBlH,EAAOmH,eAAetG,GAAgBb,EAAOyG,UAAYzG,EAAOyG,WAGlEzG,EAAO5B,KAAK,eAAgB4B,EAAOyG,WAAW,EAChD,CAEA,IAAI2Q,GAAqB,EACzB,SAASC,qBAAsB,CAgV/B,IAEIC,EAAW,CACbC,MAAM,EACN3M,UAAW,aACX4F,kBAAmB,YACnBzF,aAAc,EACdhF,MAAO,IACPnE,SAAS,EACT4V,sBAAsB,EAEtBpN,gCAAgC,EAGhCuH,oBAAoB,EACpBE,mBAAoB,GAGpBmC,UAAU,EACVS,kBAAkB,EAClBS,sBAAuB,EACvBQ,wBAAwB,EACxBF,4BAA6B,EAC7BR,8BAA+B,EAC/BW,gBAAgB,EAChBZ,wBAAyB,IAGzBhO,YAAY,EAGZhC,gBAAgB,EAGhBuE,kBAAkB,EAGlBxE,OAAQ,QAGR2R,iBAAaphB,EAGbgN,aAAc,EACdY,cAAe,EACfJ,gBAAiB,EACjBK,oBAAqB,SACrBQ,eAAgB,EAChBkB,mBAAoB,EACpBF,gBAAgB,EAChBO,sBAAsB,EACtBnD,mBAAoB,EACpBE,kBAAmB,EACnB6G,qBAAqB,EACrBvD,0BAA0B,EAG1BG,eAAe,EAGftB,cAAc,EAGdwP,WAAY,EACZR,WAAY,GACZ5F,eAAe,EACf6I,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBL,aAAc,IACd/B,cAAc,EACdvB,gBAAgB,EAChBnG,UAAW,EACXiH,0BAA0B,EAC1Bb,0BAA0B,EAC1BC,+BAA+B,EAC/BK,qBAAqB,EAGrB0E,mBAAmB,EAGnB3D,YAAY,EACZD,gBAAiB,IAGjBlO,qBAAqB,EACrBC,uBAAuB,EAGvBwH,YAAY,EAGZ4J,eAAe,EACfC,0BAA0B,EAC1B5N,qBAAqB,EAGrBqO,eAAe,EACfC,qBAAqB,EAGrBvP,MAAM,EACN0E,qBAAsB,EACtBvB,aAAc,KACdmB,wBAAwB,EAGxBzB,gBAAgB,EAChBD,gBAAgB,EAChBmG,aAAc,KACdJ,WAAW,EACXE,eAAgB,oBAChBD,kBAAmB,KAGnB4G,kBAAkB,EAGlBC,uBAAwB,oBACxBxW,WAAY,eACZwL,gBAAiB,+BACjB/E,iBAAkB,sBAClBG,0BAA2B,gCAC3BtB,kBAAmB,uBACnB0B,oBAAqB,yBACrBN,eAAgB,oBAChBG,wBAAyB,8BACzBF,eAAgB,oBAChBG,wBAAyB,8BACzB2P,aAAc,iBAGd9O,oBAAoB,GAKtB,MAAM+O,EAAa,CACjBjY,SACA2G,YACAxS,WAAU,EACVqP,QACA8E,OACAgF,aACAO,eACArY,OA3XW,CACX0iB,aAtGF,SAASA,eACP,MAAMhY,EAAS3P,MACT,OACJ0L,EAAM,YAAEkc,EAAW,GAAEtkB,EAAE,UAAE+V,GACvB1J,EAEJA,EAAOmQ,aAAeA,aAAahR,KAAKa,GACxCA,EAAO2S,YAAcA,YAAYxT,KAAKa,GACtCA,EAAOoU,WAAaA,WAAWjV,KAAKa,GAChCjE,EAAO6F,UACT5B,EAAOmX,SAAWA,SAAShY,KAAKa,IAGlCA,EAAO+W,QAAUA,QAAQ5X,KAAKa,GAE9B,MAAMtL,IAAYqH,EAAOwX,OAGzB,IAAKzW,EAAQC,OAASD,EAAQE,cAC5BrJ,EAAG3F,iBAAiBiqB,EAAYC,MAAOlY,EAAOmQ,cAAc,GAC5DviB,EAAA,iBAA4BqqB,EAAYE,KAAMnY,EAAO2S,YAAaje,GAClE9G,EAAA,iBAA4BqqB,EAAYG,IAAKpY,EAAOoU,YAAY,OAC3D,CACL,GAAItX,EAAQC,MAAO,CACjB,MAAMI,IAAwC,eAAtB8a,EAAYC,QAA0Bpb,EAAQK,kBAAmBpB,EAAO6b,mBAAmB,CAAES,SAAS,EAAM3jB,SAAS,GAC7If,EAAG3F,iBAAiBiqB,EAAYC,MAAOlY,EAAOmQ,aAAchT,GAC5DxJ,EAAG3F,iBAAiBiqB,EAAYE,KAAMnY,EAAO2S,YAAa7V,EAAQK,gBAAkB,CAAEkb,SAAS,EAAO3jB,WAAYA,GAClHf,EAAG3F,iBAAiBiqB,EAAYG,IAAKpY,EAAOoU,WAAYjX,GACpD8a,EAAYK,QACd3kB,EAAG3F,iBAAiBiqB,EAAYK,OAAQtY,EAAOoU,WAAYjX,GAExDia,IACHxpB,EAAA,iBAA4B,aAAcypB,oBAC1CD,GAAqB,EAEzB,EACKrb,EAAOwR,gBAAkBgB,EAAOI,MAAQJ,EAAOK,SAAa7S,EAAOwR,gBAAkBzQ,EAAQC,OAASwR,EAAOI,OAChHhb,EAAG3F,iBAAiB,YAAagS,EAAOmQ,cAAc,GACtDviB,EAAA,iBAA4B,YAAaoS,EAAO2S,YAAaje,GAC7D9G,EAAA,iBAA4B,UAAWoS,EAAOoU,YAAY,GAE9D,EAEIrY,EAAOib,eAAiBjb,EAAOkb,2BACjCtjB,EAAG3F,iBAAiB,QAASgS,EAAO+W,SAAS,GAE3Chb,EAAO6F,SACT8H,EAAU1b,iBAAiB,SAAUgS,EAAOmX,UAI1Cpb,EAAOyb,qBACTxX,EAAO3L,GAAIka,EAAOI,KAAOJ,EAAOK,QAAU,0CAA4C,wBAA0B4H,UAAU,GAE1HxW,EAAO3L,GAAG,iBAAkBmiB,UAAU,EAE1C,EA+CE+B,aA7CF,SAASA,eACP,MAAMvY,EAAS3P,MAET,OACJ0L,EAAM,YAAEkc,EAAW,GAAEtkB,EAAE,UAAE+V,GACvB1J,EAEEtL,IAAYqH,EAAOwX,OAGzB,IAAKzW,EAAQC,OAASD,EAAQE,cAC5BrJ,EAAG1F,oBAAoBgqB,EAAYC,MAAOlY,EAAOmQ,cAAc,GAC/DviB,EAAA,oBAA+BqqB,EAAYE,KAAMnY,EAAO2S,YAAaje,GACrE9G,EAAA,oBAA+BqqB,EAAYG,IAAKpY,EAAOoU,YAAY,OAC9D,CACL,GAAItX,EAAQC,MAAO,CACjB,MAAMI,IAAwC,iBAAtB8a,EAAYC,QAA4Bpb,EAAQK,kBAAmBpB,EAAO6b,mBAAmB,CAAES,SAAS,EAAM3jB,SAAS,GAC/If,EAAG1F,oBAAoBgqB,EAAYC,MAAOlY,EAAOmQ,aAAchT,GAC/DxJ,EAAG1F,oBAAoBgqB,EAAYE,KAAMnY,EAAO2S,YAAaje,GAC7Df,EAAG1F,oBAAoBgqB,EAAYG,IAAKpY,EAAOoU,WAAYjX,GACvD8a,EAAYK,QACd3kB,EAAG1F,oBAAoBgqB,EAAYK,OAAQtY,EAAOoU,WAAYjX,EAElE,EACKpB,EAAOwR,gBAAkBgB,EAAOI,MAAQJ,EAAOK,SAAa7S,EAAOwR,gBAAkBzQ,EAAQC,OAASwR,EAAOI,OAChHhb,EAAG1F,oBAAoB,YAAa+R,EAAOmQ,cAAc,GACzDviB,EAAA,oBAA+B,YAAaoS,EAAO2S,YAAaje,GAChE9G,EAAA,oBAA+B,UAAWoS,EAAOoU,YAAY,GAEjE,EAEIrY,EAAOib,eAAiBjb,EAAOkb,2BACjCtjB,EAAG1F,oBAAoB,QAAS+R,EAAO+W,SAAS,GAG9Chb,EAAO6F,SACT8H,EAAUzb,oBAAoB,SAAU+R,EAAOmX,UAIjDnX,EAAOrK,IAAK4Y,EAAOI,KAAOJ,EAAOK,QAAU,0CAA4C,wBAA0B4H,SACnH,GA8XEC,YA5RgB,CAAEC,cA3FpB,SAASA,gBACP,MAAM1W,EAAS3P,MACT,YACJ+V,EAAW,YAAE2C,EAAW,aAAEwC,EAAe,EAAC,OAAExP,EAAM,IAAEoE,GAClDH,EACEyW,EAAc1a,EAAO0a,YAC3B,IAAKA,GAAgBA,GAAmD,IAApCrpB,OAAOI,KAAKipB,GAAa9oB,OAAe,OAG5E,MAAM6qB,EAAaxY,EAAOyY,cAAchC,GAExC,GAAI+B,GAAcxY,EAAO0Y,oBAAsBF,EAAY,CACzD,MAAMG,EAAuBH,KAAc/B,EAAcA,EAAY+B,QAAcnjB,EAC/EsjB,GACF,CAAC,gBAAiB,eAAgB,iBAAkB,qBAAsB,mBAAmBlrB,SAASuO,IACpG,MAAM4c,EAAaD,EAAqB3c,QACd,IAAf4c,IAITD,EAAqB3c,GAHT,kBAAVA,GAA6C,SAAf4c,GAAwC,SAAfA,EAEtC,kBAAV5c,EACqB/E,WAAW2hB,GAEXpY,SAASoY,EAAY,IAJrB,OAKhC,IAIJ,MAAMC,EAAmBF,GAAwB3Y,EAAO8Y,eAClDC,EAAchd,EAAO8G,gBAAkB,EACvCmW,EAAaH,EAAiBhW,gBAAkB,EAClDkW,IAAgBC,EAClB7Y,EAAIvN,YAAY,GAAGmJ,EAAO8b,kCAAkC9b,EAAO8b,0CACzDkB,GAAeC,IACzB7Y,EAAI7N,SAAS,GAAGyJ,EAAO8b,kCACsB,WAAzCgB,EAAiB3V,qBACnB/C,EAAI7N,SAAS,GAAGyJ,EAAO8b,0CAI3B,MAAMoB,EAAmBJ,EAAiBjO,WAAaiO,EAAiBjO,YAAc7O,EAAO6O,UACvFsO,EAAcnd,EAAOqM,OAASyQ,EAAiB5V,gBAAkBlH,EAAOkH,eAAiBgW,GAE3FA,GAAoBlQ,GACtB/I,EAAOmZ,kBAGT9e,EAAMhN,OAAO2S,EAAOjE,OAAQ8c,GAE5Bxe,EAAMhN,OAAO2S,EAAQ,CACnBwS,eAAgBxS,EAAOjE,OAAOyW,eAC9BxH,eAAgBhL,EAAOjE,OAAOiP,eAC9BC,eAAgBjL,EAAOjE,OAAOkP,iBAGhCjL,EAAO0Y,kBAAoBF,EAEvBU,GAAenQ,IACjB/I,EAAOmN,cACPnN,EAAOyM,aACPzM,EAAOU,eACPV,EAAO8K,QAAS1E,EAAcmF,EAAgBvL,EAAOuL,aAAc,GAAG,IAGxEvL,EAAO5B,KAAK,aAAcya,EAC5B,CACF,EA0BmCJ,cAxBnC,SAASA,cAAehC,GAEtB,IAAKA,EAAa,OAClB,IAAI+B,GAAa,EAEjB,MAAMY,EAAShsB,OAAOI,KAAKipB,GAAaxb,KAAKoe,IAC3C,GAAqB,iBAAVA,GAA6C,IAAvBA,EAAM5nB,QAAQ,KAAY,CACzD,MAAM6nB,EAAWriB,WAAWoiB,EAAME,OAAO,IAEzC,MAAO,CAAEnmB,MADKzD,EAAA,YAAqB2pB,EACnBD,QAClB,CACA,MAAO,CAAEjmB,MAAOimB,EAAOA,QAAO,IAGhCD,EAAOI,MAAK,CAACte,EAAGue,IAAMjZ,SAAStF,EAAE9H,MAAO,IAAMoN,SAASiZ,EAAErmB,MAAO,MAChE,IAAK,IAAInC,EAAI,EAAGA,EAAImoB,EAAOzrB,OAAQsD,GAAK,EAAG,CACzC,MAAM,MAAEooB,EAAK,MAAEjmB,GAAUgmB,EAAOnoB,GAC5BmC,GAASzD,EAAA,aACX6oB,EAAaa,EAEjB,CACA,OAAOb,GAAc,KACvB,GA+RE9S,cApJoB,CAAEA,cAxBxB,SAASA,gBACP,MAAM1F,EAAS3P,KACT0L,EAASiE,EAAOjE,OAChB2d,EAAY1Z,EAAOwN,SACnBmM,EAAoB3Z,EAAOoB,OAAOzT,OAAS,GAAMoO,EAAO+F,mBAAsB/F,EAAOsG,cAAgBrC,EAAOoB,OAAOzT,OAAS,GAAQqS,EAAOoB,OAAO,GAAe,YAAIpB,EAAOoB,OAAOzT,OAErLoO,EAAO+F,oBAAsB/F,EAAOiG,mBAAqB2X,EAC3D3Z,EAAOwN,SAAWmM,GAAqB3Z,EAAOS,KAE9CT,EAAOwN,SAAsC,IAA3BxN,EAAOuB,SAAS5T,OAGpCqS,EAAOgL,gBAAkBhL,EAAOwN,SAChCxN,EAAOiL,gBAAkBjL,EAAOwN,SAG5BkM,IAAc1Z,EAAOwN,UAAUxN,EAAO5B,KAAK4B,EAAOwN,SAAW,OAAS,UAEtEkM,GAAaA,IAAc1Z,EAAOwN,WACpCxN,EAAOwH,OAAQ,EACXxH,EAAOqW,YAAYrW,EAAOqW,WAAWvW,SAE7C,GAuJEtN,QA1OY,CAAEonB,WAlDhB,SAASA,aACP,MACM,WACJC,EAAU,OAAE9d,EAAM,IAAE+E,EAAG,IAAEX,GAFZ9P,KAITypB,EAAW,GAEjBA,EAASloB,KAAK,eACdkoB,EAASloB,KAAKmK,EAAO6O,WAEjB7O,EAAOiY,UACT8F,EAASloB,KAAK,aAEZmK,EAAOgL,YACT+S,EAASloB,KAAK,cAEZkP,GACFgZ,EAASloB,KAAK,OAEZmK,EAAO8G,gBAAkB,IAC3BiX,EAASloB,KAAK,YACqB,WAA/BmK,EAAOmH,qBACT4W,EAASloB,KAAK,oBAGd2c,EAAOK,SACTkL,EAASloB,KAAK,WAEZ2c,EAAOI,KACTmL,EAASloB,KAAK,OAGZmK,EAAO6F,SACTkY,EAASloB,KAAK,YAGhBkoB,EAASrsB,SAASssB,IAChBF,EAAWjoB,KAAKmK,EAAO8b,uBAAyBkC,EAAO,IAGzD5Z,EAAI7N,SAASunB,EAAWze,KAAK,KAC/B,EAS4B4e,cAP5B,SAASA,gBACP,MACM,IAAE7Z,EAAG,WAAE0Z,GADExpB,KAGf8P,EAAIvN,YAAYinB,EAAWze,KAAK,KAClC,GA6OE6e,OAnLW,CACXC,UAvDF,SAASA,UAAWC,EAAS5sB,EAAK6sB,EAAQC,EAAOC,EAAkB7jB,GACjE,IAAI8jB,EACJ,SAASC,UACH/jB,GAAUA,GAChB,CACkBvF,EAAEipB,GAASxgB,OAAO,WAAW,IAE3BwgB,EAAQM,UAAaH,EAmBvCE,UAlBIjtB,GACFgtB,EAAQ,IAAI5qB,EAAA,MACZ4qB,EAAMG,OAASF,QACfD,EAAMI,QAAUH,QACZH,IACFE,EAAMF,MAAQA,GAEZD,IACFG,EAAMH,OAASA,GAEb7sB,IACFgtB,EAAMhtB,IAAMA,IAGditB,SAMN,EA4BE9C,cA1BF,SAASA,gBACP,MAAM1X,EAAS3P,KAEf,SAASmqB,UACH,MAAOxa,GAA8CA,IAAUA,EAAO0K,iBAC9CrV,IAAxB2K,EAAO4a,eAA4B5a,EAAO4a,cAAgB,GAC1D5a,EAAO4a,eAAiB5a,EAAO6a,aAAaltB,SAC1CqS,EAAOjE,OAAO4b,qBAAqB3X,EAAOF,SAC9CE,EAAO5B,KAAK,gBAEhB,CARA4B,EAAO6a,aAAe7a,EAAOG,IAAIrG,KAAK,OAStC,IAAK,IAAI7I,EAAI,EAAGA,EAAI+O,EAAO6a,aAAaltB,OAAQsD,GAAK,EAAG,CACtD,MAAMkpB,EAAUna,EAAO6a,aAAa5pB,GACpC+O,EAAOka,UACLC,EACAA,EAAQW,YAAcX,EAAQ7mB,aAAa,OAC3C6mB,EAAQC,QAAUD,EAAQ7mB,aAAa,UACvC6mB,EAAQE,OAASF,EAAQ7mB,aAAa,UACtC,EACAknB,QAEJ,CACF,IAwLMO,EAAmB,CAAC,EAE1B,MAAMC,eAAerd,YACnBxQ,eAAemH,GACb,IAAIX,EACAoI,EACgB,IAAhBzH,EAAK3G,QAAgB2G,EAAK,GAAGnH,aAAemH,EAAK,GAAGnH,cAAgBC,OACtE2O,EAASzH,EAAK,IAEbX,EAAIoI,GAAUzH,EAEZyH,IAAQA,EAAS,CAAC,GAEvBA,EAAS1B,EAAMhN,OAAO,CAAC,EAAG0O,GACtBpI,IAAOoI,EAAOpI,KAAIoI,EAAOpI,GAAKA,GAElCsnB,MAAMlf,GAEN3O,OAAOI,KAAKuqB,GAAYtqB,SAASytB,IAC/B9tB,OAAOI,KAAKuqB,EAAWmD,IAAiBztB,SAAS0tB,IAC1CH,OAAO7oB,UAAUgpB,KACpBH,OAAO7oB,UAAUgpB,GAAepD,EAAWmD,GAAgBC,GAC7D,GACA,IAIJ,MAAMnb,EAAS3P,UACe,IAAnB2P,EAAOrB,UAChBqB,EAAOrB,QAAU,CAAC,GAEpBvR,OAAOI,KAAKwS,EAAOrB,SAASlR,SAASmR,IACnC,MAAMC,EAASmB,EAAOrB,QAAQC,GAC9B,GAAIC,EAAO9C,OAAQ,CACjB,MAAMqf,EAAkBhuB,OAAOI,KAAKqR,EAAO9C,QAAQ,GAC7CiD,EAAeH,EAAO9C,OAAOqf,GACnC,GAA4B,iBAAjBpc,GAA8C,OAAjBA,EAAuB,OAC/D,KAAMoc,KAAmBrf,MAAU,YAAaiD,GAAe,QAC/B,IAA5BjD,EAAOqf,KACTrf,EAAOqf,GAAmB,CAAEla,SAAS,IAGF,iBAA5BnF,EAAOqf,IACT,YAAarf,EAAOqf,KAEzBrf,EAAOqf,GAAiBla,SAAU,GAE/BnF,EAAOqf,KAAkBrf,EAAOqf,GAAmB,CAAEla,SAAS,GACrE,KAIF,MAAMma,EAAehhB,EAAMhN,OAAO,CAAC,EAAGiqB,GACtCtX,EAAOxB,iBAAiB6c,GAGxBrb,EAAOjE,OAAS1B,EAAMhN,OAAO,CAAC,EAAGguB,EAAcN,EAAkBhf,GACjEiE,EAAO8Y,eAAiBze,EAAMhN,OAAO,CAAC,EAAG2S,EAAOjE,QAChDiE,EAAOsb,aAAejhB,EAAMhN,OAAO,CAAC,EAAG0O,GAGvCiE,EAAO9O,EAAIA,EAGX,MAAMiP,EAAMjP,EAAE8O,EAAOjE,OAAOpI,IAG5B,GAFAA,EAAKwM,EAAI,IAEJxM,EACH,OAGF,GAAIwM,EAAIxS,OAAS,EAAG,CAClB,MAAM4tB,EAAU,GAKhB,OAJApb,EAAInI,MAAK,CAACO,EAAOijB,KACf,MAAMC,EAAYphB,EAAMhN,OAAO,CAAC,EAAG0O,EAAQ,CAAEpI,GAAI6nB,IACjDD,EAAQ3pB,KAAK,IAAIopB,OAAOS,GAAW,IAE9BF,CACT,CAMA,IAAI5a,EA6HJ,OAjIAhN,EAAGqM,OAASA,EACZG,EAAIzM,KAAK,SAAUsM,GAIfrM,GAAMA,EAAG+nB,YAAc/nB,EAAG+nB,WAAWrtB,eACvCsS,EAAazP,EAAEyC,EAAG+nB,WAAWrtB,cAAc,IAAI2R,EAAOjE,OAAO+b,iBAE7DnX,EAAWhS,SAAYgtB,GAAYxb,EAAIxR,SAASgtB,IAEhDhb,EAAaR,EAAIxR,SAAS,IAAIqR,EAAOjE,OAAO+b,gBAG9Czd,EAAMhN,OAAO2S,EAAQ,CACnBG,MACAxM,KACAgN,aACA+I,UAAW/I,EAAW,GAGtBkZ,WAAY,GAGZzY,OAAQlQ,IACRsQ,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAGjBnB,aAAY,IACyB,eAA5BN,EAAOjE,OAAO6O,UAEvBrK,WAAU,IAC2B,aAA5BP,EAAOjE,OAAO6O,UAGvB9J,IAA+B,QAAzBnN,EAAGkX,IAAI+E,eAAoD,QAAzBzP,EAAItI,IAAI,aAChDgJ,aAA0C,eAA5Bb,EAAOjE,OAAO6O,YAAwD,QAAzBjX,EAAGkX,IAAI+E,eAAoD,QAAzBzP,EAAItI,IAAI,cACrGkJ,SAAwC,gBAA9BJ,EAAW9I,IAAI,WAGzBuO,YAAa,EACbwB,UAAW,EAGXL,aAAa,EACbC,OAAO,EAGPf,UAAW,EACXqD,kBAAmB,EACnB5C,SAAU,EACV4N,SAAU,EACV3K,WAAW,EAGXa,eAAgBhL,EAAOjE,OAAOiP,eAC9BC,eAAgBjL,EAAOjE,OAAOkP,eAG9BgN,YAAc,SAASA,cACrB,MAAMlb,EAAQ,CAAC,aAAc,YAAa,WAAY,eACtD,IAAI+R,EAAU,CAAC,YAAa,YAAa,WAezC,OAdIhS,EAAQE,gBACV8R,EAAU,CAAC,cAAe,cAAe,cAE3C9O,EAAO4b,iBAAmB,CACxB1D,MAAOnb,EAAM,GACbob,KAAMpb,EAAM,GACZqb,IAAKrb,EAAM,GACXub,OAAQvb,EAAM,IAEhBiD,EAAO6b,mBAAqB,CAC1B3D,MAAOpJ,EAAQ,GACfqJ,KAAMrJ,EAAQ,GACdsJ,IAAKtJ,EAAQ,IAERhS,EAAQC,QAAUiD,EAAOjE,OAAOwR,cAAgBvN,EAAO4b,iBAAmB5b,EAAO6b,kBAC1F,CAlBa,GAmBbzL,gBAAiB,CACfS,eAAWxb,EACXyb,aAASzb,EACT0c,yBAAqB1c,EACrB6c,oBAAgB7c,EAChB2c,iBAAa3c,EACbkU,sBAAkBlU,EAClBoe,oBAAgBpe,EAChB+c,wBAAoB/c,EAEpBid,aAAc,wDAEdiC,cAAela,EAAMK,MACrBohB,kBAAczmB,EAEd4e,WAAY,GACZP,yBAAqBre,EACrBob,kBAAcpb,EACd4c,iBAAa5c,GAIf6b,YAAY,EAGZsB,eAAgBxS,EAAOjE,OAAOyW,eAE9BnC,QAAS,CACPoB,OAAQ,EACRC,OAAQ,EACRN,SAAU,EACVG,SAAU,EACVrE,KAAM,GAIR2N,aAAc,GACdD,aAAc,IAKhB5a,EAAOlB,aAGHkB,EAAOjE,OAAOwb,MAChBvX,EAAOuX,OAIFvX,CACT,CAEAuM,uBACE,MACM,OACJxQ,EAAM,OAAEqF,EAAM,WAAEI,EAAYf,KAAMG,EAAU,YAAEwF,GAFjC/V,KAIf,IAAI0rB,EAAM,EACV,GAAIhgB,EAAO2I,eAAgB,CACzB,IACIsX,EADA5Z,EAAYhB,EAAOgF,GAAa3B,gBAEpC,IAAK,IAAIxT,EAAImV,EAAc,EAAGnV,EAAImQ,EAAOzT,OAAQsD,GAAK,EAChDmQ,EAAOnQ,KAAO+qB,IAChB5Z,GAAahB,EAAOnQ,GAAGwT,gBACvBsX,GAAO,EACH3Z,EAAYxB,IAAYob,GAAY,IAG5C,IAAK,IAAI/qB,EAAImV,EAAc,EAAGnV,GAAK,EAAGA,GAAK,EACrCmQ,EAAOnQ,KAAO+qB,IAChB5Z,GAAahB,EAAOnQ,GAAGwT,gBACvBsX,GAAO,EACH3Z,EAAYxB,IAAYob,GAAY,GAG9C,MACE,IAAK,IAAI/qB,EAAImV,EAAc,EAAGnV,EAAImQ,EAAOzT,OAAQsD,GAAK,EAChDuQ,EAAWvQ,GAAKuQ,EAAW4E,GAAexF,IAC5Cmb,GAAO,GAIb,OAAOA,CACT,CAEAjc,SACE,MAAME,EAAS3P,KACf,IAAK2P,GAAUA,EAAO0K,UAAW,OACjC,MAAM,SAAEnJ,EAAQ,OAAExF,GAAWiE,EAU7B,SAASwJ,eACP,MAAMyS,EAAiBjc,EAAOa,cAAmC,EAApBb,EAAOyG,UAAiBzG,EAAOyG,UACtE4D,EAAevH,KAAKgB,IAAIhB,KAAKK,IAAI8Y,EAAgBjc,EAAOsH,gBAAiBtH,EAAO8G,gBACtF9G,EAAOwJ,aAAaa,GACpBrK,EAAOwI,oBACPxI,EAAO2H,qBACT,CACA,IAAIuU,EAfAngB,EAAO0a,aACTzW,EAAO0W,gBAET1W,EAAOD,aACPC,EAAOU,eACPV,EAAOmH,iBACPnH,EAAO2H,sBAUH3H,EAAOjE,OAAOiY,UAChBxK,eACIxJ,EAAOjE,OAAOgL,YAChB/G,EAAO8F,qBAIPoW,GADmC,SAAhClc,EAAOjE,OAAOkH,eAA4BjD,EAAOjE,OAAOkH,cAAgB,IAAMjD,EAAOwH,QAAUxH,EAAOjE,OAAO2I,eACnG1E,EAAO8K,QAAQ9K,EAAOoB,OAAOzT,OAAS,EAAG,GAAG,GAAO,GAEnDqS,EAAO8K,QAAQ9K,EAAOoG,YAAa,GAAG,GAAO,GAEvD8V,GACH1S,gBAGAzN,EAAO0J,eAAiBlE,IAAavB,EAAOuB,UAC9CvB,EAAO0F,gBAET1F,EAAO5B,KAAK,SACd,CAEA+a,gBAAgBgD,EAAcC,GAAa,GACzC,MAAMpc,EAAS3P,KACTgsB,EAAmBrc,EAAOjE,OAAO6O,UAKvC,OAJKuR,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAE7DF,IAAiBE,GAAuC,eAAjBF,GAAkD,aAAjBA,IAI7Enc,EAAOG,IACJvN,YAAY,GAAGoN,EAAOjE,OAAO8b,yBAAyBwE,KACtD/pB,SAAS,GAAG0N,EAAOjE,OAAO8b,yBAAyBsE,KAEtDnc,EAAOjE,OAAO6O,UAAYuR,EAE1Bnc,EAAOoB,OAAOpJ,MAAK,CAAC2J,EAAY2a,KACT,aAAjBH,EACFG,EAAQztB,MAAMoR,MAAQ,GAEtBqc,EAAQztB,MAAMqR,OAAS,EACzB,IAGFF,EAAO5B,KAAK,mBACRge,GAAYpc,EAAOF,UAlBdE,CAqBX,CAEAuX,OACE,MAAMvX,EAAS3P,KACX2P,EAAO+I,cAEX/I,EAAO5B,KAAK,cAGR4B,EAAOjE,OAAO0a,aAChBzW,EAAO0W,gBAIT1W,EAAO4Z,aAGH5Z,EAAOjE,OAAOqM,MAChBpI,EAAOyM,aAITzM,EAAOD,aAGPC,EAAOU,eAEHV,EAAOjE,OAAO0J,eAChBzF,EAAO0F,gBAIL1F,EAAOjE,OAAOqR,YAChBpN,EAAOqN,gBAGLrN,EAAOjE,OAAO2b,eAChB1X,EAAO0X,gBAIL1X,EAAOjE,OAAOqM,KAChBpI,EAAO8K,QAAQ9K,EAAOjE,OAAOgP,aAAe/K,EAAOuL,aAAc,EAAGvL,EAAOjE,OAAOiN,oBAElFhJ,EAAO8K,QAAQ9K,EAAOjE,OAAOgP,aAAc,EAAG/K,EAAOjE,OAAOiN,oBAI9DhJ,EAAOgY,eAGPhY,EAAO+I,aAAc,EAGrB/I,EAAO5B,KAAK,QACd,CAEAme,QAAQC,GAAiB,EAAMC,GAAc,GAC3C,MAAMzc,EAAS3P,MACT,OACJ0L,EAAM,IAAEoE,EAAG,WAAEQ,EAAU,OAAES,GACvBpB,EAEJ,YAA6B,IAAlBA,EAAOjE,QAA0BiE,EAAO0K,YAInD1K,EAAO5B,KAAK,iBAGZ4B,EAAO+I,aAAc,EAGrB/I,EAAOuY,eAGHxc,EAAOqM,MACTpI,EAAOmN,cAILsP,IACFzc,EAAOga,gBACP7Z,EAAI3M,WAAW,SACfmN,EAAWnN,WAAW,SAClB4N,GAAUA,EAAOzT,QACnByT,EACGxO,YAAY,CACXmJ,EAAO4K,kBACP5K,EAAO+L,iBACP/L,EAAOgM,eACPhM,EAAOiM,gBACP5M,KAAK,MACN5H,WAAW,SACXA,WAAW,4BAIlBwM,EAAO5B,KAAK,WAGZhR,OAAOI,KAAKwS,EAAOpC,iBAAiBnQ,SAASoQ,IAC3CmC,EAAOrK,IAAIkI,EAAU,KAGA,IAAnB2e,IACFxc,EAAOG,IAAI,GAAGH,OAAS,KACvBA,EAAOG,IAAIzM,KAAK,SAAU,MAC1B2G,EAAMC,YAAY0F,IAEpBA,EAAO0K,WAAY,GA9CV,IAiDX,CAEAlL,sBAAsBkd,GACpBriB,EAAMhN,OAAO0tB,EAAkB2B,EACjC,CAEW3B,8BACT,OAAOA,CACT,CAEWzD,sBACT,OAAOA,CACT,CAEWllB,mBACT,OAAOuL,WACT,CAEWzM,eACT,OAAOA,CACT,EAGF,IAAIyrB,EAAW,CACbld,KAAM,SACNC,MAAO,CACLgP,OAAQH,GAEV/O,OAAQ,CACNkP,OAAQH,IAIRqO,EAAY,CACdnd,KAAM,UACNC,MAAO,CACLmd,QAAS/f,GAEX0C,OAAQ,CACNqd,QAAS/f,IAIb,MAAMggB,EAAW,SAASA,UAKxB,MAAO,CACLC,SAAUptB,EAAA,0BAAiC,SAC3CqtB,SANF,SAASA,WACP,MAAMvO,EAAK9e,EAAA,kCACX,OAAQ8e,EAAGhd,QAAQ,WAAa,GAAKgd,EAAGhd,QAAQ,UAAY,GAAKgd,EAAGhd,QAAQ,WAAa,CAC3F,CAGYurB,GACVC,UAAW,+CAA+CC,KAAKvtB,EAAA,qBAEnE,CAVgB,GAYhB,IAAIwtB,EAAY,CACd1d,KAAM,UACNC,MAAO,CACL0d,QAASN,GAEXtd,OAAQ,CACN4d,QAASN,IAITO,EAAS,CACX5d,KAAM,SACNJ,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnBsd,OAAQ,CACNC,gBACOvd,IAAUA,EAAO0K,WAAc1K,EAAO+I,cAC3C/I,EAAO5B,KAAK,gBACZ4B,EAAO5B,KAAK,UACd,EACAof,2BACOxd,IAAUA,EAAO0K,WAAc1K,EAAO+I,aAC3C/I,EAAO5B,KAAK,oBACd,IAGN,EACA/J,GAAI,CACFkjB,OAGE5nB,EAAA,iBAAwB,SAFTU,KAE0BitB,OAAOC,eAGhD5tB,EAAA,iBAAwB,oBALTU,KAKqCitB,OAAOE,yBAC7D,EACAjB,UAEE5sB,EAAA,oBAA2B,SADZU,KAC6BitB,OAAOC,eACnD5tB,EAAA,oBAA2B,oBAFZU,KAEwCitB,OAAOE,yBAChE,IAIJ,MAAMC,EAAW,CACfC,KAAM/tB,EAAA,kBAA2BA,EAAA,uBACjCguB,OAAOrwB,EAAQquB,EAAU,CAAC,GACxB,MAAM3b,EAAS3P,KAGT4M,EAAW,IAAI2gB,EADAH,EAASC,OACKG,IAIjC,GAAyB,IAArBA,EAAUlwB,OAEZ,YADAqS,EAAO5B,KAAK,iBAAkByf,EAAU,IAG1C,MAAMC,EAAiB,SAASA,iBAC9B9d,EAAO5B,KAAK,iBAAkByf,EAAU,GAC1C,EAEIluB,EAAA,sBACFA,EAAA,sBAA6BmuB,GAE7BnuB,EAAA,WAAkBmuB,EAAgB,EACpC,IAGF7gB,EAAS8gB,QAAQzwB,EAAQ,CACvB0wB,gBAA0C,IAAvBrC,EAAQqC,YAAoCrC,EAAQqC,WACvEC,eAAwC,IAAtBtC,EAAQsC,WAAmCtC,EAAQsC,UACrEC,mBAAgD,IAA1BvC,EAAQuC,eAAuCvC,EAAQuC,gBAG/Ele,EAAO/C,SAASkhB,UAAUvsB,KAAKqL,EACjC,EACAsa,OACE,MAAMvX,EAAS3P,KACf,GAAKyM,EAAQG,UAAa+C,EAAOjE,OAAOkB,SAAxC,CACA,GAAI+C,EAAOjE,OAAOqiB,eAAgB,CAChC,MAAMC,EAAmBre,EAAOG,IAAIjL,UACpC,IAAK,IAAIjE,EAAI,EAAGA,EAAIotB,EAAiB1wB,OAAQsD,GAAK,EAChD+O,EAAO/C,SAAS0gB,OAAOU,EAAiBptB,GAE5C,CAEA+O,EAAO/C,SAAS0gB,OAAO3d,EAAOG,IAAI,GAAI,CAAE8d,UAAWje,EAAOjE,OAAOuiB,uBAGjEte,EAAO/C,SAAS0gB,OAAO3d,EAAOW,WAAW,GAAI,CAAEqd,YAAY,GAXH,CAY1D,EACAzB,UACiBlsB,KACR4M,SAASkhB,UAAU1wB,SAASwP,IACjCA,EAASshB,YAAY,IAFRluB,KAIR4M,SAASkhB,UAAY,EAC9B,GAGF,IAAIK,EAAa,CACf/e,KAAM,WACN1D,OAAQ,CACNkB,UAAU,EACVmhB,gBAAgB,EAChBE,sBAAsB,GAExBjf,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnB/C,SAAU,CACRsa,KAAMkG,EAASlG,KAAKpY,KAAKa,GACzB2d,OAAQF,EAASE,OAAOxe,KAAKa,GAC7Buc,QAASkB,EAASlB,QAAQpd,KAAKa,GAC/Bme,UAAW,KAGjB,EACA9pB,GAAI,CACFkjB,OACiBlnB,KACR4M,SAASsa,MAClB,EACAgF,UACiBlsB,KACR4M,SAASsf,SAClB,IAIJ,MAAMkC,EAAU,CACd3e,OAAO4e,GACL,MAAM1e,EAAS3P,MACT,cAAE4S,EAAa,eAAES,EAAc,eAAEgB,GAAmB1E,EAAOjE,QAC3D,gBAAE4iB,EAAe,eAAEC,GAAmB5e,EAAOjE,OAAOkF,SAExD4d,KAAMC,EACNziB,GAAI0iB,EAAU,OACd3d,EACAI,WAAYwd,EAAkB,YAC9BC,EACA7nB,OAAQ8nB,GACNlf,EAAOiB,QACXjB,EAAOwI,oBACP,MAAMpC,EAAcpG,EAAOoG,aAAe,EAE1C,IAAI+Y,EAIAC,EACAC,EAJqBF,EAArBnf,EAAOa,aAA2B,QACpBb,EAAOM,eAAiB,OAAS,MAI/CoE,GACF0a,EAActc,KAAKC,MAAME,EAAgB,GAAKS,EAAiBib,EAC/DU,EAAevc,KAAKC,MAAME,EAAgB,GAAKS,EAAiBkb,IAEhEQ,EAAcnc,GAAiBS,EAAiB,GAAKib,EACrDU,EAAe3b,EAAiBkb,GAElC,MAAMC,EAAO/b,KAAKK,KAAKiD,GAAe,GAAKiZ,EAAc,GACnDhjB,EAAKyG,KAAKgB,KAAKsC,GAAe,GAAKgZ,EAAahe,EAAOzT,OAAS,GAChEyJ,GAAU4I,EAAOwB,WAAWqd,IAAS,IAAM7e,EAAOwB,WAAW,IAAM,GASzE,SAAS8d,aACPtf,EAAOU,eACPV,EAAOmH,iBACPnH,EAAO2H,sBACH3H,EAAOuf,MAAQvf,EAAOjE,OAAOwjB,KAAKre,SACpClB,EAAOuf,KAAKC,MAEhB,CAEA,GAhBAnlB,EAAMhN,OAAO2S,EAAOiB,QAAS,CAC3B4d,OACAxiB,KACAjF,SACAoK,WAAYxB,EAAOwB,aAYjBsd,IAAiBD,GAAQE,IAAe1iB,IAAOqiB,EAKjD,OAJI1e,EAAOwB,aAAewd,GAAsB5nB,IAAW8nB,GACzDlf,EAAOoB,OAAOvJ,IAAIsnB,EAAY,GAAG/nB,YAEnC4I,EAAOmH,iBAGT,GAAInH,EAAOjE,OAAOkF,QAAQwe,eAcxB,OAbAzf,EAAOjE,OAAOkF,QAAQwe,eAAe7oB,KAAKoJ,EAAQ,CAChD5I,SACAynB,OACAxiB,KACA+E,OAAS,SAASse,YAChB,MAAMC,EAAiB,GACvB,IAAK,IAAI1uB,EAAI4tB,EAAM5tB,GAAKoL,EAAIpL,GAAK,EAC/B0uB,EAAe/tB,KAAKwP,EAAOnQ,IAE7B,OAAO0uB,CACT,CANQ,UAQVL,aAGF,MAAMM,EAAiB,GACjBC,EAAgB,GACtB,GAAInB,EACF1e,EAAOW,WAAW7G,KAAK,IAAIkG,EAAOjE,OAAOsF,cAAcxO,cAEvD,IAAK,IAAI5B,EAAI6tB,EAAc7tB,GAAK8tB,EAAY9tB,GAAK,GAC3CA,EAAI4tB,GAAQ5tB,EAAIoL,IAClB2D,EAAOW,WAAW7G,KAAK,IAAIkG,EAAOjE,OAAOsF,uCAAuCpQ,OAAO4B,SAI7F,IAAK,IAAI5B,EAAI,EAAGA,EAAImQ,EAAOzT,OAAQsD,GAAK,EAClCA,GAAK4tB,GAAQ5tB,GAAKoL,SACM,IAAf0iB,GAA8BL,EACvCmB,EAAcjuB,KAAKX,IAEfA,EAAI8tB,GAAYc,EAAcjuB,KAAKX,GACnCA,EAAI6tB,GAAcc,EAAehuB,KAAKX,KAIhD4uB,EAAcpyB,SAAS8K,IACrByH,EAAOW,WAAW/H,OAAOqmB,EAAY7d,EAAO7I,GAAQA,GAAO,IAE7DqnB,EAAepG,MAAK,CAACte,EAAGue,IAAMA,EAAIve,IAAGzN,SAAS8K,IAC5CyH,EAAOW,WAAW1H,QAAQgmB,EAAY7d,EAAO7I,GAAQA,GAAO,IAE9DyH,EAAOW,WAAWhS,SAAS,iBAAiBkJ,IAAIsnB,EAAY,GAAG/nB,OAC/DkoB,YACF,EACAL,YAAY3b,EAAO/K,GACjB,MAAMyH,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAOkF,QAC7B,GAAIlF,EAAO+jB,OAAS9f,EAAOiB,QAAQ6e,MAAMvnB,GACvC,OAAOyH,EAAOiB,QAAQ6e,MAAMvnB,GAE9B,MAAMwnB,EAAWhkB,EAAOkjB,YACpB/tB,EAAE6K,EAAOkjB,YAAYroB,KAAKoJ,EAAQsD,EAAO/K,IACzCrH,EAAE,eAAe8O,EAAOjE,OAAOsF,wCAAwC9I,MAAU+K,WAGrF,OAFKyc,EAAS7sB,KAAK,4BAA4B6sB,EAAS7sB,KAAK,0BAA2BqF,GACpFwD,EAAO+jB,QAAO9f,EAAOiB,QAAQ6e,MAAMvnB,GAASwnB,GACzCA,CACT,EACAnS,YAAYxM,GACV,MAAMpB,EAAS3P,KACf,GAAsB,iBAAX+Q,GAAuB,WAAYA,EAC5C,IAAK,IAAInQ,EAAI,EAAGA,EAAImQ,EAAOzT,OAAQsD,GAAK,EAClCmQ,EAAOnQ,IAAI+O,EAAOiB,QAAQG,OAAOxP,KAAKwP,EAAOnQ,SAGnD+O,EAAOiB,QAAQG,OAAOxP,KAAKwP,GAE7BpB,EAAOiB,QAAQnB,QAAO,EACxB,EACA+N,aAAazM,GACX,MAAMpB,EAAS3P,KACT+V,EAAcpG,EAAOoG,YAC3B,IAAIqC,EAAiBrC,EAAc,EAC/B4Z,EAAoB,EAExB,GAAI3hB,MAAMC,QAAQ8C,GAAS,CACzB,IAAK,IAAInQ,EAAI,EAAGA,EAAImQ,EAAOzT,OAAQsD,GAAK,EAClCmQ,EAAOnQ,IAAI+O,EAAOiB,QAAQG,OAAOrM,QAAQqM,EAAOnQ,IAEtDwX,EAAiBrC,EAAchF,EAAOzT,OACtCqyB,EAAoB5e,EAAOzT,MAC7B,MACEqS,EAAOiB,QAAQG,OAAOrM,QAAQqM,GAEhC,GAAIpB,EAAOjE,OAAOkF,QAAQ6e,MAAO,CAC/B,MAAMA,EAAQ9f,EAAOiB,QAAQ6e,MACvBG,EAAW,CAAC,EAClB7yB,OAAOI,KAAKsyB,GAAOryB,SAASyyB,IAC1B,MAAMC,EAAYL,EAAMI,GAClBE,EAAgBD,EAAUjtB,KAAK,2BACjCktB,GACFD,EAAUjtB,KAAK,0BAA2BsN,SAAS4f,EAAe,IAAM,GAE1EH,EAASzf,SAAS0f,EAAa,IAAMF,GAAqBG,CAAS,IAErEngB,EAAOiB,QAAQ6e,MAAQG,CACzB,CACAjgB,EAAOiB,QAAQnB,QAAO,GACtBE,EAAO8K,QAAQrC,EAAgB,EACjC,EACA0F,YAAYC,GACV,MAAMpO,EAAS3P,KACf,GAAI,MAAO+d,EAAyD,OACpE,IAAIhI,EAAcpG,EAAOoG,YACzB,GAAI/H,MAAMC,QAAQ8P,GAChB,IAAK,IAAInd,EAAImd,EAAczgB,OAAS,EAAGsD,GAAK,EAAGA,GAAK,EAClD+O,EAAOiB,QAAQG,OAAOrL,OAAOqY,EAAcnd,GAAI,GAC3C+O,EAAOjE,OAAOkF,QAAQ6e,cACjB9f,EAAOiB,QAAQ6e,MAAM1R,EAAcnd,IAExCmd,EAAcnd,GAAKmV,IAAaA,GAAe,GACnDA,EAActD,KAAKK,IAAIiD,EAAa,QAGtCpG,EAAOiB,QAAQG,OAAOrL,OAAOqY,EAAe,GACxCpO,EAAOjE,OAAOkF,QAAQ6e,cACjB9f,EAAOiB,QAAQ6e,MAAM1R,GAE1BA,EAAgBhI,IAAaA,GAAe,GAChDA,EAActD,KAAKK,IAAIiD,EAAa,GAEtCpG,EAAOiB,QAAQnB,QAAO,GACtBE,EAAO8K,QAAQ1E,EAAa,EAC9B,EACAkI,kBACE,MAAMtO,EAAS3P,KACf2P,EAAOiB,QAAQG,OAAS,GACpBpB,EAAOjE,OAAOkF,QAAQ6e,QACxB9f,EAAOiB,QAAQ6e,MAAQ,CAAC,GAE1B9f,EAAOiB,QAAQnB,QAAO,GACtBE,EAAO8K,QAAQ,EAAG,EACpB,GAGF,IAAIuV,EAAY,CACd5gB,KAAM,UACN1D,OAAQ,CACNkF,QAAS,CACPC,SAAS,EACTE,OAAQ,GACR0e,OAAO,EACPb,YAAa,KACbQ,eAAgB,KAChBd,gBAAiB,EACjBC,eAAgB,IAGpBvf,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnBiB,QAAS,CACPnB,OAAQ2e,EAAQ3e,OAAOX,KAAKa,GAC5B4N,YAAa6Q,EAAQ7Q,YAAYzO,KAAKa,GACtC6N,aAAc4Q,EAAQ5Q,aAAa1O,KAAKa,GACxCmO,YAAasQ,EAAQtQ,YAAYhP,KAAKa,GACtCsO,gBAAiBmQ,EAAQnQ,gBAAgBnP,KAAKa,GAC9Cif,YAAaR,EAAQQ,YAAY9f,KAAKa,GACtCoB,OAAQpB,EAAOjE,OAAOkF,QAAQG,OAC9B0e,MAAO,CAAC,IAGd,EACAzrB,GAAI,CACFisB,aACE,MAAMtgB,EAAS3P,KACf,IAAK2P,EAAOjE,OAAOkF,QAAQC,QAAS,OACpClB,EAAO6Z,WAAWjoB,KAAK,GAAGoO,EAAOjE,OAAO8b,iCACxC,MAAM0I,EAAkB,CACtB5a,qBAAqB,GAEvBtL,EAAMhN,OAAO2S,EAAOjE,OAAQwkB,GAC5BlmB,EAAMhN,OAAO2S,EAAO8Y,eAAgByH,GAE/BvgB,EAAOjE,OAAOgP,cACjB/K,EAAOiB,QAAQnB,QAEnB,EACA0J,eACiBnZ,KACH0L,OAAOkF,QAAQC,SADZ7Q,KAER4Q,QAAQnB,QACjB,IAIJ,MAAM0gB,EAAW,CACfC,OAAOlrB,GACL,MAAMyK,EAAS3P,MACPwQ,aAAcC,GAAQd,EAC9B,IAAIpL,EAAIW,EACJX,EAAE0b,gBAAe1b,EAAIA,EAAE0b,eAC3B,MAAMoQ,EAAK9rB,EAAE+rB,SAAW/rB,EAAEgsB,SACpBC,EAAa7gB,EAAOjE,OAAO+kB,SAASD,WACpCE,EAAWF,GAAqB,KAAPH,EACzBM,EAAaH,GAAqB,KAAPH,EAC3BO,EAAqB,KAAPP,EACdQ,EAAsB,KAAPR,EACfS,EAAmB,KAAPT,EACZU,EAAqB,KAAPV,EAEpB,IAAK1gB,EAAOgL,iBAAoBhL,EAAOM,gBAAkB4gB,GAAkBlhB,EAAOO,cAAgB6gB,GAAgBJ,GAChH,OAAO,EAET,IAAKhhB,EAAOiL,iBAAoBjL,EAAOM,gBAAkB2gB,GAAiBjhB,EAAOO,cAAgB4gB,GAAcJ,GAC7G,OAAO,EAET,KAAInsB,EAAEysB,UAAYzsB,EAAE0sB,QAAU1sB,EAAE2sB,SAAW3sB,EAAE4sB,SAGzC5zB,EAAA,eAA4BA,EAAA,yBAA0F,UAApDA,EAAA,sCAAmH,aAApDA,EAAA,uCAArI,CAGA,GAAIoS,EAAOjE,OAAO+kB,SAASW,iBAAmBV,GAAYC,GAAcC,GAAeC,GAAgBC,GAAaC,GAAc,CAChI,IAAIM,GAAS,EAEb,GAAI1hB,EAAOG,IAAIjL,QAAQ,IAAI8K,EAAOjE,OAAOsF,cAAc1T,OAAS,GAAyE,IAApEqS,EAAOG,IAAIjL,QAAQ,IAAI8K,EAAOjE,OAAO+L,oBAAoBna,OAC5H,OAEF,MAAMg0B,EAAchyB,EAAA,WACdiyB,EAAejyB,EAAA,YACfkyB,EAAe7hB,EAAOG,IAAI/I,SAC5B0J,IAAK+gB,EAAajqB,MAAQoI,EAAOG,IAAI,GAAGzI,YAC5C,MAAMoqB,EAAc,CAClB,CAACD,EAAajqB,KAAMiqB,EAAalqB,KACjC,CAACkqB,EAAajqB,KAAOoI,EAAOC,MAAO4hB,EAAalqB,KAChD,CAACkqB,EAAajqB,KAAMiqB,EAAalqB,IAAMqI,EAAOE,QAC9C,CAAC2hB,EAAajqB,KAAOoI,EAAOC,MAAO4hB,EAAalqB,IAAMqI,EAAOE,SAE/D,IAAK,IAAIjP,EAAI,EAAGA,EAAI6wB,EAAYn0B,OAAQsD,GAAK,EAAG,CAC9C,MAAMooB,EAAQyI,EAAY7wB,GAExBooB,EAAM,IAAM,GAAKA,EAAM,IAAMsI,GAC1BtI,EAAM,IAAM,GAAKA,EAAM,IAAMuI,IAEhCF,GAAS,EAEb,CACA,IAAKA,EAAQ,MACf,CACI1hB,EAAOM,iBACLygB,GAAYC,GAAcC,GAAeC,KACvCtsB,EAAEyd,eAAgBzd,EAAEyd,iBACnBzd,EAAEmtB,aAAc,KAEjBf,GAAcE,KAAkBpgB,IAAUigB,GAAYE,IAAgBngB,IAAMd,EAAOwL,cACnFuV,GAAYE,KAAiBngB,IAAUkgB,GAAcE,IAAiBpgB,IAAMd,EAAO4L,eAErFmV,GAAYC,GAAcG,GAAaC,KACrCxsB,EAAEyd,eAAgBzd,EAAEyd,iBACnBzd,EAAEmtB,aAAc,IAEnBf,GAAcI,IAAaphB,EAAOwL,aAClCuV,GAAYI,IAAWnhB,EAAO4L,aAEpC5L,EAAO5B,KAAK,WAAYsiB,EA3CxB,CA6CF,EACAsB,SACE,MAAMhiB,EAAS3P,KACX2P,EAAO8gB,SAAS5f,UACpBhQ,EAAEtD,GAAYyG,GAAG,UAAW2L,EAAO8gB,SAASL,QAC5CzgB,EAAO8gB,SAAS5f,SAAU,EAC5B,EACA+gB,UACE,MAAMjiB,EAAS3P,KACV2P,EAAO8gB,SAAS5f,UACrBhQ,EAAEtD,GAAY+H,IAAI,UAAWqK,EAAO8gB,SAASL,QAC7CzgB,EAAO8gB,SAAS5f,SAAU,EAC5B,GAGF,IAAIghB,EAAa,CACfziB,KAAM,WACN1D,OAAQ,CACN+kB,SAAU,CACR5f,SAAS,EACTugB,gBAAgB,EAChBZ,YAAY,IAGhBxhB,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnB8gB,SAAU,CACR5f,SAAS,EACT8gB,OAAQxB,EAASwB,OAAO7iB,KAAKa,GAC7BiiB,QAASzB,EAASyB,QAAQ9iB,KAAKa,GAC/BygB,OAAQD,EAASC,OAAOthB,KAAKa,KAGnC,EACA3L,GAAI,CACFkjB,OACE,MAAMvX,EAAS3P,KACX2P,EAAOjE,OAAO+kB,SAAS5f,SACzBlB,EAAO8gB,SAASkB,QAEpB,EACAzF,UACE,MAAMvc,EAAS3P,KACX2P,EAAO8gB,SAAS5f,SAClBlB,EAAO8gB,SAASmB,SAEpB,IA2BJ,MAAME,EAAa,CACjBC,eAAgB/nB,EAAMK,MACtB2nB,yBAAqBhtB,EACrBitB,kBAAmB,GACnB/sB,MAAK,IACC5F,EAAA,4BAAmC,YAAc,EAAU,iBA5BnE,SAAS4yB,mBACP,MAAM1kB,EAAY,UAClB,IAAI2kB,EAAc3kB,KAAajQ,EAE/B,IAAK40B,EAAa,CAChB,MAAMC,EAAU70B,EAAA,cAAyB,OACzC60B,EAAQ3zB,aAAa+O,EAAW,WAChC2kB,EAA4C,mBAAvBC,EAAiB,OACxC,CAaA,OAXKD,GACA50B,EAAA,gBACAA,EAAA,4BAGiD,IAAjDA,EAAA,0BAAqC,GAAI,MAG5C40B,EAAc50B,EAAA,0BAAqC,eAAgB,QAG9D40B,CACT,CAOWD,GAAqB,QAAU,aAExC1W,UAAUjX,GAMR,IAAI8tB,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAuDT,MApDI,WAAYjuB,IACd+tB,EAAK/tB,EAAEsB,QAEL,eAAgBtB,IAClB+tB,GAAM/tB,EAAEkuB,WAAa,KAEnB,gBAAiBluB,IACnB+tB,GAAM/tB,EAAEmuB,YAAc,KAEpB,gBAAiBnuB,IACnB8tB,GAAM9tB,EAAEouB,YAAc,KAIpB,SAAUpuB,GAAKA,EAAEgG,OAAShG,EAAEquB,kBAC9BP,EAAKC,EACLA,EAAK,GAGPC,EA7BmB,GA6BdF,EACLG,EA9BmB,GA8BdF,EAED,WAAY/tB,IACdiuB,EAAKjuB,EAAEsuB,QAEL,WAAYtuB,IACdguB,EAAKhuB,EAAEuuB,QAGLvuB,EAAEysB,WAAauB,IACjBA,EAAKC,EACLA,EAAK,IAGFD,GAAMC,IAAOjuB,EAAEwuB,YACE,IAAhBxuB,EAAEwuB,WACJR,GA7CgB,GA8ChBC,GA9CgB,KAgDhBD,GA/CgB,IAgDhBC,GAhDgB,MAqDhBD,IAAOF,IACTA,EAAME,EAAK,GAAM,EAAI,GAEnBC,IAAOF,IACTA,EAAME,EAAK,GAAM,EAAI,GAGhB,CACLQ,MAAOX,EACPY,MAAOX,EACPY,OAAQX,EACRY,OAAQX,EAEZ,EACAY,mBACiBpzB,KACRqzB,cAAe,CACxB,EACAC,mBACiBtzB,KACRqzB,cAAe,CACxB,EACAjD,OAAOlrB,GACL,IAAIX,EAAIW,EACR,MAAMyK,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAO6nB,WAEzB5jB,EAAOjE,OAAO6F,SAChBhN,EAAEyd,iBAGJ,IAAI/kB,EAAS0S,EAAOG,IAIpB,GAH8C,cAA1CH,EAAOjE,OAAO6nB,WAAWC,eAC3Bv2B,EAAS4D,EAAE8O,EAAOjE,OAAO6nB,WAAWC,gBAEjC7jB,EAAO0jB,eAAiBp2B,EAAO,GAAGyF,SAAS6B,EAAEtH,UAAYyO,EAAO+nB,eAAgB,OAAO,EAExFlvB,EAAE0b,gBAAe1b,EAAIA,EAAE0b,eAC3B,IAAIyT,EAAQ,EACZ,MAAMC,EAAYhkB,EAAOa,cAAgB,EAAI,EAEvCnN,EAAOyuB,EAAWtW,UAAUjX,GAElC,GAAImH,EAAOkoB,YACT,GAAIjkB,EAAOM,eAAgB,CACzB,KAAIwC,KAAK6B,IAAIjR,EAAK6vB,QAAUzgB,KAAK6B,IAAIjR,EAAK8vB,SACrC,OAAO,EADuCO,GAASrwB,EAAK6vB,OAASS,CAE5E,KAAO,MAAIlhB,KAAK6B,IAAIjR,EAAK8vB,QAAU1gB,KAAK6B,IAAIjR,EAAK6vB,SAC5C,OAAO,EAD8CQ,GAASrwB,EAAK8vB,MACxD,MAEhBO,EAAQjhB,KAAK6B,IAAIjR,EAAK6vB,QAAUzgB,KAAK6B,IAAIjR,EAAK8vB,SAAW9vB,EAAK6vB,OAASS,GAAatwB,EAAK8vB,OAG3F,GAAc,IAAVO,EAAa,OAAO,EAIxB,GAFIhoB,EAAOmoB,SAAQH,GAASA,GAEvB/jB,EAAOjE,OAAOiY,SAoCZ,CAOL,MAAMmQ,EAAW,CAAEhQ,KAAM9Z,EAAMK,MAAOqpB,MAAOjhB,KAAK6B,IAAIof,GAAQnZ,UAAW9H,KAAKshB,KAAKL,KAC7E,oBAAE1B,GAAwBriB,EAAO4jB,WACjCS,EAAoBhC,GACrB8B,EAAShQ,KAAOkO,EAAoBlO,KAAO,KAC3CgQ,EAASJ,OAAS1B,EAAoB0B,OACtCI,EAASvZ,YAAcyX,EAAoBzX,UAChD,IAAKyZ,EAAmB,CACtBrkB,EAAO4jB,WAAWvB,yBAAsBhtB,EAEpC2K,EAAOjE,OAAOqM,MAChBpI,EAAO0L,UAET,IAAIwI,EAAWlU,EAAOrF,eAAkBopB,EAAQhoB,EAAOuoB,YACvD,MAAM7c,EAAezH,EAAOuH,YACtBG,EAAS1H,EAAOwH,MAetB,GAbI0M,GAAYlU,EAAO8G,iBAAgBoN,EAAWlU,EAAO8G,gBACrDoN,GAAYlU,EAAOsH,iBAAgB4M,EAAWlU,EAAOsH,gBAEzDtH,EAAOkG,cAAc,GACrBlG,EAAOwJ,aAAa0K,GACpBlU,EAAOmH,iBACPnH,EAAOwI,oBACPxI,EAAO2H,wBAEDF,GAAgBzH,EAAOuH,cAAkBG,GAAU1H,EAAOwH,QAC9DxH,EAAO2H,sBAGL3H,EAAOjE,OAAO4Z,eAAgB,CAYhC/kB,aAAaoP,EAAO4jB,WAAWW,SAC/BvkB,EAAO4jB,WAAWW,aAAUlvB,EAC5B,MAAMitB,EAAoBtiB,EAAO4jB,WAAWtB,kBACxCA,EAAkB30B,QAAU,IAC9B20B,EAAkBkC,QAEpB,MAAMC,EAAYnC,EAAkB30B,OAAS20B,EAAkBA,EAAkB30B,OAAS,QAAK0H,EACzFqvB,EAAapC,EAAkB,GAErC,GADAA,EAAkB1wB,KAAKuyB,GACnBM,IAAcN,EAASJ,MAAQU,EAAUV,OAASI,EAASvZ,YAAc6Z,EAAU7Z,WAErF0X,EAAkBvsB,OAAO,QACpB,GAAIusB,EAAkB30B,QAAU,IAChCw2B,EAAShQ,KAAOuQ,EAAWvQ,KAAO,KAClCuQ,EAAWX,MAAQI,EAASJ,OAAS,GACrCI,EAASJ,OAAS,EACvB,CAOA,MAAMY,EAAkBZ,EAAQ,EAAI,GAAM,GAC1C/jB,EAAO4jB,WAAWvB,oBAAsB8B,EACxC7B,EAAkBvsB,OAAO,GACzBiK,EAAO4jB,WAAWW,QAAUlqB,EAAMG,UAAS,KACzCwF,EAAOoM,eAAepM,EAAOjE,OAAOgK,OAAO,OAAM1Q,EAAWsvB,EAAgB,GAC3E,EACL,CACK3kB,EAAO4jB,WAAWW,UAIrBvkB,EAAO4jB,WAAWW,QAAUlqB,EAAMG,UAAS,KAEzCwF,EAAO4jB,WAAWvB,oBAAsB8B,EACxC7B,EAAkBvsB,OAAO,GACzBiK,EAAOoM,eAAepM,EAAOjE,OAAOgK,OAAO,OAAM1Q,EAHzB,GAGoD,GAC3E,KAEP,CAQA,GALKgvB,GAAmBrkB,EAAO5B,KAAK,SAAUxJ,GAG1CoL,EAAOjE,OAAO4a,UAAY3W,EAAOjE,OAAO6oB,8BAA8B5kB,EAAO2W,SAASkO,OAEtF3Q,IAAalU,EAAO8G,gBAAkBoN,IAAalU,EAAOsH,eAAgB,OAAO,CACvF,CACF,KAvI6B,CAE3B,MAAM6c,EAAW,CACfhQ,KAAM9Z,EAAMK,MACZqpB,MAAOjhB,KAAK6B,IAAIof,GAChBnZ,UAAW9H,KAAKshB,KAAKL,GACrBe,IAAKvvB,GAID+sB,EAAoBtiB,EAAO4jB,WAAWtB,kBACxCA,EAAkB30B,QAAU,GAC9B20B,EAAkBkC,QAEpB,MAAMC,EAAYnC,EAAkB30B,OAAS20B,EAAkBA,EAAkB30B,OAAS,QAAK0H,EAmB/F,GAlBAitB,EAAkB1wB,KAAKuyB,GAQnBM,GACEN,EAASvZ,YAAc6Z,EAAU7Z,WAAauZ,EAASJ,MAAQU,EAAUV,OAASI,EAAShQ,KAAOsQ,EAAUtQ,KAAO,MACrHnU,EAAO4jB,WAAWmB,cAAcZ,GAGlCnkB,EAAO4jB,WAAWmB,cAAcZ,GAK9BnkB,EAAO4jB,WAAWoB,cAAcb,GAClC,OAAO,CAEX,CAuGA,OAFIvvB,EAAEyd,eAAgBzd,EAAEyd,iBACnBzd,EAAEmtB,aAAc,GACd,CACT,EACAgD,cAAcZ,GACZ,MAAMnkB,EAAS3P,KAIf,OAAI8zB,EAASJ,OAAS,GAAK1pB,EAAMK,MAAQsF,EAAO4jB,WAAWxB,eAAiB,KAgBxE+B,EAASvZ,UAAY,EACjB5K,EAAOwH,QAASxH,EAAOjE,OAAOqM,MAAUpI,EAAOmK,YACnDnK,EAAOwL,YACPxL,EAAO5B,KAAK,SAAU+lB,EAASW,MAEtB9kB,EAAOuH,cAAevH,EAAOjE,OAAOqM,MAAUpI,EAAOmK,YAChEnK,EAAO4L,YACP5L,EAAO5B,KAAK,SAAU+lB,EAASW,MAGjC9kB,EAAO4jB,WAAWxB,gBAAiB,IAAKzyB,EAAA,MAAes1B,WAEhD,EACT,EACAD,cAAcb,GACZ,MAAMnkB,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAO6nB,WAC7B,GAAIO,EAASvZ,UAAY,GACvB,GAAI5K,EAAOwH,QAAUxH,EAAOjE,OAAOqM,MAAQrM,EAAO+nB,eAEhD,OAAO,OAEJ,GAAI9jB,EAAOuH,cAAgBvH,EAAOjE,OAAOqM,MAAQrM,EAAO+nB,eAE7D,OAAO,EAET,OAAO,CACT,EACA9B,SACE,MAAMhiB,EAAS3P,KACTkF,EAAQ4sB,EAAW5sB,QACzB,GAAIyK,EAAOjE,OAAO6F,QAEhB,OADA5B,EAAO0J,UAAUzb,oBAAoBsH,EAAOyK,EAAO4jB,WAAWnD,SACvD,EAET,IAAKlrB,EAAO,OAAO,EACnB,GAAIyK,EAAO4jB,WAAW1iB,QAAS,OAAO,EACtC,IAAI5T,EAAS0S,EAAOG,IAQpB,MAP8C,cAA1CH,EAAOjE,OAAO6nB,WAAWC,eAC3Bv2B,EAAS4D,EAAE8O,EAAOjE,OAAO6nB,WAAWC,eAEtCv2B,EAAO+G,GAAG,aAAc2L,EAAO4jB,WAAWH,kBAC1Cn2B,EAAO+G,GAAG,aAAc2L,EAAO4jB,WAAWD,kBAC1Cr2B,EAAO+G,GAAGkB,EAAOyK,EAAO4jB,WAAWnD,QACnCzgB,EAAO4jB,WAAW1iB,SAAU,GACrB,CACT,EACA+gB,UACE,MAAMjiB,EAAS3P,KACTkF,EAAQ4sB,EAAW5sB,QACzB,GAAIyK,EAAOjE,OAAO6F,QAEhB,OADA5B,EAAO0J,UAAU1b,iBAAiBuH,EAAOyK,EAAO4jB,WAAWnD,SACpD,EAET,IAAKlrB,EAAO,OAAO,EACnB,IAAKyK,EAAO4jB,WAAW1iB,QAAS,OAAO,EACvC,IAAI5T,EAAS0S,EAAOG,IAMpB,MAL8C,cAA1CH,EAAOjE,OAAO6nB,WAAWC,eAC3Bv2B,EAAS4D,EAAE8O,EAAOjE,OAAO6nB,WAAWC,eAEtCv2B,EAAOqI,IAAIJ,EAAOyK,EAAO4jB,WAAWnD,QACpCzgB,EAAO4jB,WAAW1iB,SAAU,GACrB,CACT,GAmDF,MAAMgkB,EAAa,CACjBplB,SAEE,MAAME,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAOsa,WAE7B,GAAIrW,EAAOjE,OAAOqM,KAAM,OACxB,MAAM,QAAE+c,EAAO,QAAEC,GAAYplB,EAAOqW,WAEhC+O,GAAWA,EAAQz3B,OAAS,IAC1BqS,EAAOuH,YACT6d,EAAQ9yB,SAASyJ,EAAOspB,eAExBD,EAAQxyB,YAAYmJ,EAAOspB,eAE7BD,EAAQplB,EAAOjE,OAAO0J,eAAiBzF,EAAOwN,SAAW,WAAa,eAAezR,EAAOupB,YAE1FH,GAAWA,EAAQx3B,OAAS,IAC1BqS,EAAOwH,MACT2d,EAAQ7yB,SAASyJ,EAAOspB,eAExBF,EAAQvyB,YAAYmJ,EAAOspB,eAE7BF,EAAQnlB,EAAOjE,OAAO0J,eAAiBzF,EAAOwN,SAAW,WAAa,eAAezR,EAAOupB,WAEhG,EACAC,YAAY3wB,GACV,MAAMoL,EAAS3P,KACfuE,EAAEyd,iBACErS,EAAOuH,cAAgBvH,EAAOjE,OAAOqM,MACzCpI,EAAO4L,WACT,EACA4Z,YAAY5wB,GACV,MAAMoL,EAAS3P,KACfuE,EAAEyd,iBACErS,EAAOwH,QAAUxH,EAAOjE,OAAOqM,MACnCpI,EAAOwL,WACT,EACA+L,OACE,MAAMvX,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAOsa,WAC7B,IAAMta,EAAOua,SAAUva,EAAOwa,OAAS,OAEvC,IAAI4O,EACAC,EACArpB,EAAOua,SACT6O,EAAUj0B,EAAE6K,EAAOua,QAEjBtW,EAAOjE,OAAO0b,mBACc,iBAAlB1b,EAAOua,QACd6O,EAAQx3B,OAAS,GACyB,IAA1CqS,EAAOG,IAAIrG,KAAKiC,EAAOua,QAAQ3oB,SAElCw3B,EAAUnlB,EAAOG,IAAIrG,KAAKiC,EAAOua,UAGjCva,EAAOwa,SACT6O,EAAUl0B,EAAE6K,EAAOwa,QAEjBvW,EAAOjE,OAAO0b,mBACc,iBAAlB1b,EAAOwa,QACd6O,EAAQz3B,OAAS,GACyB,IAA1CqS,EAAOG,IAAIrG,KAAKiC,EAAOwa,QAAQ5oB,SAElCy3B,EAAUplB,EAAOG,IAAIrG,KAAKiC,EAAOwa,UAIjC4O,GAAWA,EAAQx3B,OAAS,GAC9Bw3B,EAAQ9wB,GAAG,QAAS2L,EAAOqW,WAAWmP,aAEpCJ,GAAWA,EAAQz3B,OAAS,GAC9By3B,EAAQ/wB,GAAG,QAAS2L,EAAOqW,WAAWkP,aAGxClrB,EAAMhN,OAAO2S,EAAOqW,WAAY,CAC9B8O,UACA7O,OAAQ6O,GAAWA,EAAQ,GAC3BC,UACA7O,OAAQ6O,GAAWA,EAAQ,IAE/B,EACA7I,UACE,MAAMvc,EAAS3P,MACT,QAAE80B,EAAO,QAAEC,GAAYplB,EAAOqW,WAChC8O,GAAWA,EAAQx3B,SACrBw3B,EAAQxvB,IAAI,QAASqK,EAAOqW,WAAWmP,aACvCL,EAAQvyB,YAAYoN,EAAOjE,OAAOsa,WAAWgP,gBAE3CD,GAAWA,EAAQz3B,SACrBy3B,EAAQzvB,IAAI,QAASqK,EAAOqW,WAAWkP,aACvCH,EAAQxyB,YAAYoN,EAAOjE,OAAOsa,WAAWgP,eAEjD,GA4EF,MAAMI,EAAa,CACjB3lB,SAEE,MAAME,EAAS3P,KACTyQ,EAAMd,EAAOc,IACb/E,EAASiE,EAAOjE,OAAO2pB,WAC7B,IAAK3pB,EAAOpI,KAAOqM,EAAO0lB,WAAW/xB,KAAOqM,EAAO0lB,WAAWvlB,KAAwC,IAAjCH,EAAO0lB,WAAWvlB,IAAIxS,OAAc,OACzG,MAAM2T,EAAetB,EAAOiB,SAAWjB,EAAOjE,OAAOkF,QAAQC,QAAUlB,EAAOiB,QAAQG,OAAOzT,OAASqS,EAAOoB,OAAOzT,OAC9GwS,EAAMH,EAAO0lB,WAAWvlB,IAE9B,IAAIwlB,EACJ,MAAMC,EAAQ5lB,EAAOjE,OAAOqM,KAAOtF,KAAKE,MAAM1B,EAAsC,EAAtBtB,EAAOuL,cAAqBvL,EAAOjE,OAAO2H,gBAAkB1D,EAAOuB,SAAS5T,OAc1I,GAbIqS,EAAOjE,OAAOqM,MAChBud,EAAU7iB,KAAKE,MAAMhD,EAAOoG,YAAcpG,EAAOuL,cAAgBvL,EAAOjE,OAAO2H,gBAC3EiiB,EAAUrkB,EAAe,EAA2B,EAAtBtB,EAAOuL,eACvCoa,GAAYrkB,EAAsC,EAAtBtB,EAAOuL,cAEjCoa,EAAUC,EAAQ,IAAGD,GAAWC,GAChCD,EAAU,GAAsC,YAAjC3lB,EAAOjE,OAAO8pB,iBAA8BF,EAAUC,EAAQD,IAEjFA,OADqC,IAArB3lB,EAAOwF,UACbxF,EAAOwF,UAEPxF,EAAOoG,aAAe,EAGd,YAAhBrK,EAAO2U,MAAsB1Q,EAAO0lB,WAAWI,SAAW9lB,EAAO0lB,WAAWI,QAAQn4B,OAAS,EAAG,CAClG,MAAMm4B,EAAU9lB,EAAO0lB,WAAWI,QAClC,IAAIC,EACAC,EACAC,EAiBJ,GAhBIlqB,EAAOmqB,iBACTlmB,EAAO0lB,WAAWS,WAAaL,EAAQptB,GAAG,GAAGsH,EAAOM,eAAiB,aAAe,gBAAe,GACnGH,EAAItI,IAAImI,EAAOM,eAAiB,QAAU,SAAaN,EAAO0lB,WAAWS,YAAcpqB,EAAOqqB,mBAAqB,GAA/D,MAChDrqB,EAAOqqB,mBAAqB,QAA8B/wB,IAAzB2K,EAAO0I,gBAC1C1I,EAAO0lB,WAAWW,oBAAuBV,EAAU3lB,EAAO0I,cACtD1I,EAAO0lB,WAAWW,mBAAsBtqB,EAAOqqB,mBAAqB,EACtEpmB,EAAO0lB,WAAWW,mBAAqBtqB,EAAOqqB,mBAAqB,EAC1DpmB,EAAO0lB,WAAWW,mBAAqB,IAChDrmB,EAAO0lB,WAAWW,mBAAqB,IAG3CN,EAAaJ,EAAU3lB,EAAO0lB,WAAWW,mBACzCL,EAAYD,GAAcjjB,KAAKgB,IAAIgiB,EAAQn4B,OAAQoO,EAAOqqB,oBAAsB,GAChFH,GAAYD,EAAYD,GAAc,GAExCD,EAAQlzB,YAAY,GAAGmJ,EAAOuqB,qBAAqBvqB,EAAOuqB,0BAA0BvqB,EAAOuqB,+BAA+BvqB,EAAOuqB,0BAA0BvqB,EAAOuqB,+BAA+BvqB,EAAOuqB,0BACpMnmB,EAAIxS,OAAS,EACfm4B,EAAQ9tB,MAAK,CAACO,EAAOguB,KACnB,MAAMC,EAAUt1B,EAAEq1B,GACZE,EAAcD,EAAQjuB,QACxBkuB,IAAgBd,GAClBa,EAAQl0B,SAASyJ,EAAOuqB,mBAEtBvqB,EAAOmqB,iBACLO,GAAeV,GAAcU,GAAeT,GAC9CQ,EAAQl0B,SAAS,GAAGyJ,EAAOuqB,0BAEzBG,IAAgBV,GAClBS,EACGjtB,OACAjH,SAAS,GAAGyJ,EAAOuqB,0BACnB/sB,OACAjH,SAAS,GAAGyJ,EAAOuqB,+BAEpBG,IAAgBT,GAClBQ,EACGrtB,OACA7G,SAAS,GAAGyJ,EAAOuqB,0BACnBntB,OACA7G,SAAS,GAAGyJ,EAAOuqB,+BAE1B,QAEG,CACL,MAAME,EAAUV,EAAQptB,GAAGitB,GACrBc,EAAcD,EAAQjuB,QAE5B,GADAiuB,EAAQl0B,SAASyJ,EAAOuqB,mBACpBvqB,EAAOmqB,eAAgB,CACzB,MAAMQ,EAAwBZ,EAAQptB,GAAGqtB,GACnCY,EAAuBb,EAAQptB,GAAGstB,GACxC,IAAK,IAAI/0B,EAAI80B,EAAY90B,GAAK+0B,EAAW/0B,GAAK,EAC5C60B,EAAQptB,GAAGzH,GAAGqB,SAAS,GAAGyJ,EAAOuqB,0BAEnC,GAAItmB,EAAOjE,OAAOqM,KAChB,GAAIqe,GAAeX,EAAQn4B,OAASoO,EAAOqqB,mBAAoB,CAC7D,IAAK,IAAIn1B,EAAI8K,EAAOqqB,mBAAoBn1B,GAAK,EAAGA,GAAK,EACnD60B,EAAQptB,GAAGotB,EAAQn4B,OAASsD,GAAGqB,SAAS,GAAGyJ,EAAOuqB,0BAEpDR,EAAQptB,GAAGotB,EAAQn4B,OAASoO,EAAOqqB,mBAAqB,GAAG9zB,SAAS,GAAGyJ,EAAOuqB,yBAChF,MACEI,EACGntB,OACAjH,SAAS,GAAGyJ,EAAOuqB,0BACnB/sB,OACAjH,SAAS,GAAGyJ,EAAOuqB,+BACtBK,EACGxtB,OACA7G,SAAS,GAAGyJ,EAAOuqB,0BACnBntB,OACA7G,SAAS,GAAGyJ,EAAOuqB,oCAGxBI,EACGntB,OACAjH,SAAS,GAAGyJ,EAAOuqB,0BACnB/sB,OACAjH,SAAS,GAAGyJ,EAAOuqB,+BACtBK,EACGxtB,OACA7G,SAAS,GAAGyJ,EAAOuqB,0BACnBntB,OACA7G,SAAS,GAAGyJ,EAAOuqB,8BAE1B,CACF,CACA,GAAIvqB,EAAOmqB,eAAgB,CACzB,MAAMU,EAAuB9jB,KAAKgB,IAAIgiB,EAAQn4B,OAAQoO,EAAOqqB,mBAAqB,GAC5ES,GAAmB7mB,EAAO0lB,WAAWS,WAAaS,EAAyB5mB,EAAO0lB,WAAqB,YAAK,EAAMO,EAAWjmB,EAAO0lB,WAAWS,WAC/IhH,EAAare,EAAM,QAAU,OACnCglB,EAAQjuB,IAAImI,EAAOM,eAAiB6e,EAAa,MAAO,GAAG0H,MAC7D,CACF,CAKA,GAJoB,aAAhB9qB,EAAO2U,OACTvQ,EAAIrG,KAAK,IAAIiC,EAAO+qB,gBAAgB7uB,KAAK8D,EAAOgrB,sBAAsBpB,EAAU,IAChFxlB,EAAIrG,KAAK,IAAIiC,EAAOirB,cAAc/uB,KAAK8D,EAAOkrB,oBAAoBrB,KAEhD,gBAAhB7pB,EAAO2U,KAAwB,CACjC,IAAIwW,EAEFA,EADEnrB,EAAOorB,oBACcnnB,EAAOM,eAAiB,WAAa,aAErCN,EAAOM,eAAiB,aAAe,WAEhE,MAAM8mB,GAASzB,EAAU,GAAKC,EAC9B,IAAIyB,EAAS,EACTC,EAAS,EACgB,eAAzBJ,EACFG,EAASD,EAETE,EAASF,EAEXjnB,EAAIrG,KAAK,IAAIiC,EAAOwrB,wBAAwBzzB,UAAU,6BAA6BuzB,aAAkBC,MAAWrzB,WAAW+L,EAAOjE,OAAOgK,MAC3I,CACoB,WAAhBhK,EAAO2U,MAAqB3U,EAAOyrB,cACrCrnB,EAAI5O,KAAKwK,EAAOyrB,aAAaxnB,EAAQ2lB,EAAU,EAAGC,IAClD5lB,EAAO5B,KAAK,mBAAoB4B,EAAQG,EAAI,KAE5CH,EAAO5B,KAAK,mBAAoB4B,EAAQG,EAAI,IAE9CA,EAAIH,EAAOjE,OAAO0J,eAAiBzF,EAAOwN,SAAW,WAAa,eAAezR,EAAOupB,UAC1F,EACAmC,SAEE,MAAMznB,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAO2pB,WAC7B,IAAK3pB,EAAOpI,KAAOqM,EAAO0lB,WAAW/xB,KAAOqM,EAAO0lB,WAAWvlB,KAAwC,IAAjCH,EAAO0lB,WAAWvlB,IAAIxS,OAAc,OACzG,MAAM2T,EAAetB,EAAOiB,SAAWjB,EAAOjE,OAAOkF,QAAQC,QAAUlB,EAAOiB,QAAQG,OAAOzT,OAASqS,EAAOoB,OAAOzT,OAE9GwS,EAAMH,EAAO0lB,WAAWvlB,IAC9B,IAAIunB,EAAiB,GACrB,GAAoB,YAAhB3rB,EAAO2U,KAAoB,CAC7B,MAAMiX,EAAkB3nB,EAAOjE,OAAOqM,KAAOtF,KAAKE,MAAM1B,EAAsC,EAAtBtB,EAAOuL,cAAqBvL,EAAOjE,OAAO2H,gBAAkB1D,EAAOuB,SAAS5T,OACpJ,IAAK,IAAIsD,EAAI,EAAGA,EAAI02B,EAAiB12B,GAAK,EACpC8K,EAAO6rB,aACTF,GAAkB3rB,EAAO6rB,aAAahxB,KAAKoJ,EAAQ/O,EAAG8K,EAAO8rB,aAE7DH,GAAkB,IAAI3rB,EAAO+rB,wBAAwB/rB,EAAO8rB,kBAAkB9rB,EAAO+rB,iBAGzF3nB,EAAI5O,KAAKm2B,GACT1nB,EAAO0lB,WAAWI,QAAU3lB,EAAIrG,KAAK,IAAIiC,EAAO8rB,cAClD,CACoB,aAAhB9rB,EAAO2U,OAEPgX,EADE3rB,EAAOgsB,eACQhsB,EAAOgsB,eAAenxB,KAAKoJ,EAAQjE,EAAO+qB,aAAc/qB,EAAOirB,YAE/D,gBAAgBjrB,EAAO+qB,wCAEtB/qB,EAAOirB,sBAE3B7mB,EAAI5O,KAAKm2B,IAES,gBAAhB3rB,EAAO2U,OAEPgX,EADE3rB,EAAOisB,kBACQjsB,EAAOisB,kBAAkBpxB,KAAKoJ,EAAQjE,EAAOwrB,sBAE7C,gBAAgBxrB,EAAOwrB,gCAE1CpnB,EAAI5O,KAAKm2B,IAES,WAAhB3rB,EAAO2U,MACT1Q,EAAO5B,KAAK,mBAAoB4B,EAAO0lB,WAAWvlB,IAAI,GAE1D,EACAoX,OACE,MAAMvX,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAO2pB,WAC7B,IAAK3pB,EAAOpI,GAAI,OAEhB,IAAIwM,EAAMjP,EAAE6K,EAAOpI,IACA,IAAfwM,EAAIxS,SAGNqS,EAAOjE,OAAO0b,mBACU,iBAAd1b,EAAOpI,IACdwM,EAAIxS,OAAS,IAEhBwS,EAAMH,EAAOG,IAAIrG,KAAKiC,EAAOpI,KAGX,YAAhBoI,EAAO2U,MAAsB3U,EAAOksB,WACtC9nB,EAAI7N,SAASyJ,EAAOmsB,gBAGtB/nB,EAAI7N,SAASyJ,EAAOosB,cAAgBpsB,EAAO2U,MAEvB,YAAhB3U,EAAO2U,MAAsB3U,EAAOmqB,iBACtC/lB,EAAI7N,SAAS,GAAGyJ,EAAOosB,gBAAgBpsB,EAAO2U,gBAC9C1Q,EAAO0lB,WAAWW,mBAAqB,EACnCtqB,EAAOqqB,mBAAqB,IAC9BrqB,EAAOqqB,mBAAqB,IAGZ,gBAAhBrqB,EAAO2U,MAA0B3U,EAAOorB,qBAC1ChnB,EAAI7N,SAASyJ,EAAOqsB,0BAGlBrsB,EAAOksB,WACT9nB,EAAI9L,GAAG,QAAS,IAAI0H,EAAO8rB,eAAe,SAAS9Q,QAAQniB,GACzDA,EAAEyd,iBACF,IAAI9Z,EAAQrH,EAAEb,MAAMkI,QAAUyH,EAAOjE,OAAO2H,eACxC1D,EAAOjE,OAAOqM,OAAM7P,GAASyH,EAAOuL,cACxCvL,EAAO8K,QAAQvS,EACjB,IAGF8B,EAAMhN,OAAO2S,EAAO0lB,WAAY,CAC9BvlB,MACAxM,GAAIwM,EAAI,KAEZ,EACAoc,UACE,MAAMvc,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAO2pB,WAC7B,IAAK3pB,EAAOpI,KAAOqM,EAAO0lB,WAAW/xB,KAAOqM,EAAO0lB,WAAWvlB,KAAwC,IAAjCH,EAAO0lB,WAAWvlB,IAAIxS,OAAc,OACzG,MAAMwS,EAAMH,EAAO0lB,WAAWvlB,IAE9BA,EAAIvN,YAAYmJ,EAAOssB,aACvBloB,EAAIvN,YAAYmJ,EAAOosB,cAAgBpsB,EAAO2U,MAC1C1Q,EAAO0lB,WAAWI,SAAS9lB,EAAO0lB,WAAWI,QAAQlzB,YAAYmJ,EAAOuqB,mBACxEvqB,EAAOksB,WACT9nB,EAAIxK,IAAI,QAAS,IAAIoG,EAAO8rB,cAEhC,GAwGF,MAAMS,EAAY,CAChB9e,eACE,MAAMxJ,EAAS3P,KACf,IAAK2P,EAAOjE,OAAOwsB,UAAU50B,KAAOqM,EAAOuoB,UAAU50B,GAAI,OACzD,MAAM,UAAE40B,EAAW1nB,aAAcC,EAAG,SAAEoG,GAAalH,GAC7C,SACJwoB,EAAQ,UAAEC,EAAS,QAAEC,EAAO,IAAEvoB,GAC5BooB,EACExsB,EAASiE,EAAOjE,OAAOwsB,UAE7B,IAAII,EAAUH,EACVI,GAAUH,EAAYD,GAAYthB,EAClCpG,GACF8nB,GAAUA,EACNA,EAAS,GACXD,EAAUH,EAAWI,EACrBA,EAAS,IACCA,EAASJ,EAAWC,IAC9BE,EAAUF,EAAYG,IAEfA,EAAS,GAClBD,EAAUH,EAAWI,EACrBA,EAAS,GACAA,EAASJ,EAAWC,IAC7BE,EAAUF,EAAYG,GAEpB5oB,EAAOM,gBACTooB,EAAQ50B,UAAU,eAAe80B,cACjCF,EAAQ,GAAG75B,MAAMoR,MAAQ,GAAG0oB,QAE5BD,EAAQ50B,UAAU,oBAAoB80B,WACtCF,EAAQ,GAAG75B,MAAMqR,OAAS,GAAGyoB,OAE3B5sB,EAAO8sB,OACTj4B,aAAaoP,EAAOuoB,UAAUhE,SAC9BpkB,EAAI,GAAGtR,MAAMi6B,QAAU,EACvB9oB,EAAOuoB,UAAUhE,QAAU5zB,YAAW,KACpCwP,EAAI,GAAGtR,MAAMi6B,QAAU,EACvB3oB,EAAIlM,WAAW,IAAI,GAClB,KAEP,EACAiS,cAAchS,GACZ,MAAM8L,EAAS3P,KACV2P,EAAOjE,OAAOwsB,UAAU50B,IAAOqM,EAAOuoB,UAAU50B,IACrDqM,EAAOuoB,UAAUG,QAAQz0B,WAAWC,EACtC,EACA6L,aACE,MAAMC,EAAS3P,KACf,IAAK2P,EAAOjE,OAAOwsB,UAAU50B,KAAOqM,EAAOuoB,UAAU50B,GAAI,OAEzD,MAAM,UAAE40B,GAAcvoB,GAChB,QAAE0oB,EAAO,IAAEvoB,GAAQooB,EAEzBG,EAAQ,GAAG75B,MAAMoR,MAAQ,GACzByoB,EAAQ,GAAG75B,MAAMqR,OAAS,GAC1B,MAAMuoB,EAAYzoB,EAAOM,eAAiBH,EAAI,GAAGnJ,YAAcmJ,EAAI,GAAGhJ,aAEhE4xB,EAAU/oB,EAAOS,KAAOT,EAAOwC,YAC/BwmB,EAAcD,GAAWN,EAAYzoB,EAAOS,MAClD,IAAI+nB,EAEFA,EADuC,SAArCxoB,EAAOjE,OAAOwsB,UAAUC,SACfC,EAAYM,EAEZvoB,SAASR,EAAOjE,OAAOwsB,UAAUC,SAAU,IAGpDxoB,EAAOM,eACTooB,EAAQ,GAAG75B,MAAMoR,MAAQ,GAAGuoB,MAE5BE,EAAQ,GAAG75B,MAAMqR,OAAS,GAAGsoB,MAI7BroB,EAAI,GAAGtR,MAAMo6B,QADXF,GAAW,EACU,OAEA,GAErB/oB,EAAOjE,OAAOwsB,UAAUM,OAC1B1oB,EAAI,GAAGtR,MAAMi6B,QAAU,GAEzBzuB,EAAMhN,OAAOk7B,EAAW,CACtBE,YACAM,UACAC,cACAR,aAEFD,EAAUpoB,IAAIH,EAAOjE,OAAO0J,eAAiBzF,EAAOwN,SAAW,WAAa,eAAexN,EAAOjE,OAAOwsB,UAAUjD,UACrH,EACA4D,mBAAmBt0B,GAEjB,OADevE,KACJiQ,eACW,eAAX1L,EAAE8b,MAAoC,cAAX9b,EAAE8b,KAAwB9b,EAAEyc,cAAc,GAAG8X,QAAUv0B,EAAEu0B,QAE3E,eAAXv0B,EAAE8b,MAAoC,cAAX9b,EAAE8b,KAAwB9b,EAAEyc,cAAc,GAAG+X,QAAUx0B,EAAEw0B,OAC/F,EACAC,gBAAgBz0B,GACd,MAAMoL,EAAS3P,MACT,UAAEk4B,EAAW1nB,aAAcC,GAAQd,GACnC,IACJG,EAAG,SACHqoB,EAAQ,UACRC,EAAS,aACTa,GACEf,EAEJ,IAAIgB,EACJA,GAAkBhB,EAAUW,mBAAmBt0B,GAAMuL,EAAI/I,SAAS4I,EAAOM,eAAiB,OAAS,QAC7E,OAAjBgpB,EAAwBA,EAAed,EAAW,KAAOC,EAAYD,GAC1Ee,EAAgBzmB,KAAKK,IAAIL,KAAKgB,IAAIylB,EAAe,GAAI,GACjDzoB,IACFyoB,EAAgB,EAAIA,GAGtB,MAAMrV,EAAWlU,EAAO8G,gBAAmB9G,EAAOsH,eAAiBtH,EAAO8G,gBAAkByiB,EAE5FvpB,EAAOmH,eAAe+M,GACtBlU,EAAOwJ,aAAa0K,GACpBlU,EAAOwI,oBACPxI,EAAO2H,qBACT,EACA6hB,YAAY50B,GACV,MAAMoL,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAOwsB,WACvB,UAAEA,EAAS,WAAE5nB,GAAeX,GAC5B,IAAEG,EAAG,QAAEuoB,GAAYH,EACzBvoB,EAAOuoB,UAAU1X,WAAY,EAC7B7Q,EAAOuoB,UAAUe,aAAgB10B,EAAEtH,SAAWo7B,EAAQ,IAAM9zB,EAAEtH,SAAWo7B,EACrEH,EAAUW,mBAAmBt0B,GAAKA,EAAEtH,OAAOgK,wBAAwB0I,EAAOM,eAAiB,OAAS,OAAS,KACjH1L,EAAEyd,iBACFzd,EAAE4e,kBAEF7S,EAAW1M,WAAW,KACtBy0B,EAAQz0B,WAAW,KACnBs0B,EAAUc,gBAAgBz0B,GAE1BhE,aAAaoP,EAAOuoB,UAAUkB,aAE9BtpB,EAAIlM,WAAW,GACX8H,EAAO8sB,MACT1oB,EAAItI,IAAI,UAAW,GAEjBmI,EAAOjE,OAAO6F,SAChB5B,EAAOW,WAAW9I,IAAI,mBAAoB,QAE5CmI,EAAO5B,KAAK,qBAAsBxJ,EACpC,EACA80B,WAAW90B,GACT,MAAMoL,EAAS3P,MACT,UAAEk4B,EAAS,WAAE5nB,GAAeX,GAC5B,IAAEG,EAAG,QAAEuoB,GAAYH,EAEpBvoB,EAAOuoB,UAAU1X,YAClBjc,EAAEyd,eAAgBzd,EAAEyd,iBACnBzd,EAAEmtB,aAAc,EACrBwG,EAAUc,gBAAgBz0B,GAC1B+L,EAAW1M,WAAW,GACtBkM,EAAIlM,WAAW,GACfy0B,EAAQz0B,WAAW,GACnB+L,EAAO5B,KAAK,oBAAqBxJ,GACnC,EACA+0B,UAAU/0B,GACR,MAAMoL,EAAS3P,KAET0L,EAASiE,EAAOjE,OAAOwsB,WACvB,UAAEA,EAAS,WAAE5nB,GAAeX,GAC5B,IAAEG,GAAQooB,EAEXvoB,EAAOuoB,UAAU1X,YACtB7Q,EAAOuoB,UAAU1X,WAAY,EACzB7Q,EAAOjE,OAAO6F,UAChB5B,EAAOW,WAAW9I,IAAI,mBAAoB,IAC1C8I,EAAW1M,WAAW,KAEpB8H,EAAO8sB,OACTj4B,aAAaoP,EAAOuoB,UAAUkB,aAC9BzpB,EAAOuoB,UAAUkB,YAAcpvB,EAAMG,UAAS,KAC5C2F,EAAItI,IAAI,UAAW,GACnBsI,EAAIlM,WAAW,IAAI,GAClB,MAEL+L,EAAO5B,KAAK,mBAAoBxJ,GAC5BmH,EAAO6tB,eACT5pB,EAAOoM,iBAEX,EACAyd,kBACE,MAAM7pB,EAAS3P,KACf,IAAK2P,EAAOjE,OAAOwsB,UAAU50B,GAAI,OACjC,MAAM,UACJ40B,EAAS,iBAAE3M,EAAgB,mBAAEC,EAAkB,OAAE9f,GAC/CiE,EAEE1S,EADMi7B,EAAUpoB,IACH,GACb2pB,KAAiBhtB,EAAQK,kBAAmBpB,EAAO6b,mBAAmB,CAAES,SAAS,EAAO3jB,SAAS,GACjGyI,KAAkBL,EAAQK,kBAAmBpB,EAAO6b,mBAAmB,CAAES,SAAS,EAAM3jB,SAAS,GAClGoI,EAAQC,OAKXzP,EAAOU,iBAAiB4tB,EAAiB1D,MAAOlY,EAAOuoB,UAAUiB,YAAaM,GAC9Ex8B,EAAOU,iBAAiB4tB,EAAiBzD,KAAMnY,EAAOuoB,UAAUmB,WAAYI,GAC5Ex8B,EAAOU,iBAAiB4tB,EAAiBxD,IAAKpY,EAAOuoB,UAAUoB,UAAWxsB,KAN1E7P,EAAOU,iBAAiB6tB,EAAmB3D,MAAOlY,EAAOuoB,UAAUiB,YAAaM,GAChFl8B,EAAA,iBAA4BiuB,EAAmB1D,KAAMnY,EAAOuoB,UAAUmB,WAAYI,GAClFl8B,EAAA,iBAA4BiuB,EAAmBzD,IAAKpY,EAAOuoB,UAAUoB,UAAWxsB,GAMpF,EACA4sB,mBACE,MAAM/pB,EAAS3P,KACf,IAAK2P,EAAOjE,OAAOwsB,UAAU50B,GAAI,OACjC,MAAM,UACJ40B,EAAS,iBAAE3M,EAAgB,mBAAEC,EAAkB,OAAE9f,GAC/CiE,EAEE1S,EADMi7B,EAAUpoB,IACH,GACb2pB,KAAiBhtB,EAAQK,kBAAmBpB,EAAO6b,mBAAmB,CAAES,SAAS,EAAO3jB,SAAS,GACjGyI,KAAkBL,EAAQK,kBAAmBpB,EAAO6b,mBAAmB,CAAES,SAAS,EAAM3jB,SAAS,GAClGoI,EAAQC,OAKXzP,EAAOW,oBAAoB2tB,EAAiB1D,MAAOlY,EAAOuoB,UAAUiB,YAAaM,GACjFx8B,EAAOW,oBAAoB2tB,EAAiBzD,KAAMnY,EAAOuoB,UAAUmB,WAAYI,GAC/Ex8B,EAAOW,oBAAoB2tB,EAAiBxD,IAAKpY,EAAOuoB,UAAUoB,UAAWxsB,KAN7E7P,EAAOW,oBAAoB4tB,EAAmB3D,MAAOlY,EAAOuoB,UAAUiB,YAAaM,GACnFl8B,EAAA,oBAA+BiuB,EAAmB1D,KAAMnY,EAAOuoB,UAAUmB,WAAYI,GACrFl8B,EAAA,oBAA+BiuB,EAAmBzD,IAAKpY,EAAOuoB,UAAUoB,UAAWxsB,GAMvF,EACAoa,OACE,MAAMvX,EAAS3P,KACf,IAAK2P,EAAOjE,OAAOwsB,UAAU50B,GAAI,OACjC,MAAM,UAAE40B,EAAWpoB,IAAK6pB,GAAchqB,EAChCjE,EAASiE,EAAOjE,OAAOwsB,UAE7B,IAAIpoB,EAAMjP,EAAE6K,EAAOpI,IACfqM,EAAOjE,OAAO0b,mBAA0C,iBAAd1b,EAAOpI,IAAmBwM,EAAIxS,OAAS,GAA0C,IAArCq8B,EAAUlwB,KAAKiC,EAAOpI,IAAIhG,SAClHwS,EAAM6pB,EAAUlwB,KAAKiC,EAAOpI,KAG9B,IAAI+0B,EAAUvoB,EAAIrG,KAAK,IAAIkG,EAAOjE,OAAOwsB,UAAU0B,aAC5B,IAAnBvB,EAAQ/6B,SACV+6B,EAAUx3B,EAAE,eAAe8O,EAAOjE,OAAOwsB,UAAU0B,qBACnD9pB,EAAIvH,OAAO8vB,IAGbruB,EAAMhN,OAAOk7B,EAAW,CACtBpoB,MACAxM,GAAIwM,EAAI,GACRuoB,UACAwB,OAAQxB,EAAQ,KAGd3sB,EAAOouB,WACT5B,EAAUsB,iBAEd,EACAtN,UACiBlsB,KACRk4B,UAAUwB,kBACnB,GAwEF,MAAMK,EAAW,CACfC,aAAa12B,EAAIuT,GACf,MACM,IAAEpG,GADOzQ,KAGT8P,EAAMjP,EAAEyC,GACRqwB,EAAYljB,GAAO,EAAI,EAEvBwpB,EAAInqB,EAAIjN,KAAK,yBAA2B,IAC9C,IAAI0W,EAAIzJ,EAAIjN,KAAK,0BACb2W,EAAI1J,EAAIjN,KAAK,0BACjB,MAAMk0B,EAAQjnB,EAAIjN,KAAK,8BACjB41B,EAAU3oB,EAAIjN,KAAK,gCAwBzB,GAtBI0W,GAAKC,GACPD,EAAIA,GAAK,IACTC,EAAIA,GAAK,KAdIxZ,KAeGiQ,gBAChBsJ,EAAI0gB,EACJzgB,EAAI,MAEJA,EAAIygB,EACJ1gB,EAAI,KAIJA,EADE,EAAInY,QAAQ,MAAQ,EACf+O,SAASoJ,EAAG,IAAM1C,EAAW8c,EAAhC,IAEGpa,EAAI1C,EAAW8c,EAAlB,KAGJna,EADE,EAAIpY,QAAQ,MAAQ,EACf+O,SAASqJ,EAAG,IAAM3C,EAArB,IAEG2C,EAAI3C,EAAP,KAGF,MAAO4hB,EAA6C,CACtD,MAAMyB,EAAiBzB,GAAYA,EAAU,IAAM,EAAIhmB,KAAK6B,IAAIuC,IAChE/G,EAAI,GAAGtR,MAAMi6B,QAAUyB,CACzB,CACA,GAAI,MAAOnD,EACTjnB,EAAIrM,UAAU,eAAe8V,MAAMC,eAC9B,CACL,MAAM2gB,EAAepD,GAAUA,EAAQ,IAAM,EAAItkB,KAAK6B,IAAIuC,IAC1D/G,EAAIrM,UAAU,eAAe8V,MAAMC,iBAAiB2gB,KACtD,CACF,EACAhhB,eACE,MAAMxJ,EAAS3P,MACT,IACJ8P,EAAG,OAAEiB,EAAM,SAAE8F,EAAQ,SAAE3F,GACrBvB,EACJG,EAAIxR,SAAS,4IACVqJ,MAAK,CAACO,EAAO5E,KACZqM,EAAOyqB,SAASJ,aAAa12B,EAAIuT,EAAS,IAE9C9F,EAAOpJ,MAAK,CAAC2J,EAAY2a,KACvB,IAAIzV,EAAgByV,EAAQpV,SACxBlH,EAAOjE,OAAO2H,eAAiB,GAAqC,SAAhC1D,EAAOjE,OAAOkH,gBACpD4D,GAAiB/D,KAAKE,KAAKrB,EAAa,GAAMuF,GAAY3F,EAAS5T,OAAS,IAE9EkZ,EAAgB/D,KAAKgB,IAAIhB,KAAKK,IAAI0D,GAAgB,GAAI,GACtD3V,EAAEorB,GAASxiB,KAAK,4IACb9B,MAAK,CAACO,EAAO5E,KACZqM,EAAOyqB,SAASJ,aAAa12B,EAAIkT,EAAc,GAC/C,GAER,EACAX,cAAchS,EAAW7D,KAAK0L,OAAOgK,OACnC,MACM,IAAE5F,GADO9P,KAEf8P,EAAIrG,KAAK,4IACN9B,MAAK,CAACO,EAAOmyB,KACZ,MAAMC,EAAcz5B,EAAEw5B,GACtB,IAAIE,EAAmBpqB,SAASmqB,EAAYz3B,KAAK,iCAAkC,KAAOgB,EACzE,IAAbA,IAAgB02B,EAAmB,GACvCD,EAAY12B,WAAW22B,EAAiB,GAE9C,GA6CF,MAAMC,EAAO,CAEXC,0BAA0Bl2B,GACxB,GAAIA,EAAEyc,cAAc1jB,OAAS,EAAG,OAAO,EACvC,MAAMo9B,EAAKn2B,EAAEyc,cAAc,GAAGC,MACxB0Z,EAAKp2B,EAAEyc,cAAc,GAAGG,MACxByZ,EAAKr2B,EAAEyc,cAAc,GAAGC,MACxB4Z,EAAKt2B,EAAEyc,cAAc,GAAGG,MAE9B,OADiB1O,KAAKoQ,MAAO+X,EAAKF,IAAO,GAAOG,EAAKF,IAAO,EAE9D,EAEAG,eAAev2B,GACb,MAAMoL,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAOqvB,KACvBA,EAAOprB,EAAOorB,MACd,QAAEC,GAAYD,EAGpB,GAFAA,EAAKE,oBAAqB,EAC1BF,EAAKG,kBAAmB,GACnBzuB,EAAQW,SAAU,CACrB,GAAe,eAAX7I,EAAE8b,MAAqC,eAAX9b,EAAE8b,MAAyB9b,EAAEyc,cAAc1jB,OAAS,EAClF,OAEFy9B,EAAKE,oBAAqB,EAC1BD,EAAQG,WAAaX,EAAKC,0BAA0Bl2B,EACtD,CACKy2B,EAAQtL,UAAasL,EAAQtL,SAASpyB,SACzC09B,EAAQtL,SAAW7uB,EAAE0D,EAAEtH,QAAQuM,QAAQ,IAAImG,EAAOjE,OAAOsF,cACzB,IAA5BgqB,EAAQtL,SAASpyB,SAAc09B,EAAQtL,SAAW/f,EAAOoB,OAAO1I,GAAGsH,EAAOoG,cAC9EilB,EAAQI,SAAWJ,EAAQtL,SAASjmB,KAAK,kDACzCuxB,EAAQK,aAAeL,EAAQI,SAAS9xB,OAAO,IAAIoC,EAAO4vB,kBAC1DN,EAAQO,SAAWP,EAAQK,aAAax4B,KAAK,qBAAuB6I,EAAO6vB,SACvC,IAAhCP,EAAQK,aAAa/9B,SAKvB09B,EAAQI,UACVJ,EAAQI,SAASx3B,WAAW,GAE9B+L,EAAOorB,KAAKS,WAAY,GAPpBR,EAAQI,cAAWp2B,CAQzB,EACAy2B,gBAAgBl3B,GACd,MACMmH,EADS1L,KACO0L,OAAOqvB,KACvBA,EAFS/6B,KAEK+6B,MACd,QAAEC,GAAYD,EACpB,IAAKtuB,EAAQW,SAAU,CACrB,GAAe,cAAX7I,EAAE8b,MAAoC,cAAX9b,EAAE8b,MAAwB9b,EAAEyc,cAAc1jB,OAAS,EAChF,OAEFy9B,EAAKG,kBAAmB,EACxBF,EAAQU,UAAYlB,EAAKC,0BAA0Bl2B,EACrD,CACKy2B,EAAQI,UAAwC,IAA5BJ,EAAQI,SAAS99B,SACtCmP,EAAQW,SACV2tB,EAAKhE,MAAQxyB,EAAEwyB,MAAQgE,EAAKZ,aAE5BY,EAAKhE,MAASiE,EAAQU,UAAYV,EAAQG,WAAcJ,EAAKZ,aAE3DY,EAAKhE,MAAQiE,EAAQO,WACvBR,EAAKhE,MAASiE,EAAQO,SAAW,GAAQR,EAAKhE,MAAQiE,EAAQO,SAAY,IAAM,IAE9ER,EAAKhE,MAAQrrB,EAAOud,WACtB8R,EAAKhE,MAASrrB,EAAOud,SAAW,GAAQvd,EAAOud,SAAW8R,EAAKhE,MAAS,IAAM,IAEhFiE,EAAQI,SAAS33B,UAAU,4BAA4Bs3B,EAAKhE,UAC9D,EACA4E,aAAap3B,GACX,MAAMoL,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAOqvB,KACvBA,EAAOprB,EAAOorB,MACd,QAAEC,GAAYD,EACpB,IAAKtuB,EAAQW,SAAU,CACrB,IAAK2tB,EAAKE,qBAAuBF,EAAKG,iBACpC,OAEF,GAAe,aAAX32B,EAAE8b,MAAmC,aAAX9b,EAAE8b,MAAuB9b,EAAEie,eAAellB,OAAS,IAAM4gB,EAAOK,QAC5F,OAEFwc,EAAKE,oBAAqB,EAC1BF,EAAKG,kBAAmB,CAC1B,CACKF,EAAQI,UAAwC,IAA5BJ,EAAQI,SAAS99B,SAC1Cy9B,EAAKhE,MAAQtkB,KAAKK,IAAIL,KAAKgB,IAAIsnB,EAAKhE,MAAOiE,EAAQO,UAAW7vB,EAAOud,UACrE+R,EAAQI,SAASx3B,WAAW+L,EAAOjE,OAAOgK,OAAOjS,UAAU,4BAA4Bs3B,EAAKhE,UAC5FgE,EAAKZ,aAAeY,EAAKhE,MACzBgE,EAAKS,WAAY,EACE,IAAfT,EAAKhE,QAAaiE,EAAQtL,cAAW1qB,GAC3C,EACA8a,aAAavb,GACX,MACMw2B,EADS/6B,KACK+6B,MACd,QAAEC,EAAO,MAAE9Q,GAAU6Q,EACtBC,EAAQI,UAAwC,IAA5BJ,EAAQI,SAAS99B,SACtC4sB,EAAM1J,YACNtC,EAAOK,SAAWha,EAAEwB,YAAYxB,EAAEyd,iBACtCkI,EAAM1J,WAAY,EAClB0J,EAAM0R,aAAariB,EAAe,eAAXhV,EAAE8b,KAAwB9b,EAAEyc,cAAc,GAAGC,MAAQ1c,EAAE0c,MAC9EiJ,EAAM0R,aAAapiB,EAAe,eAAXjV,EAAE8b,KAAwB9b,EAAEyc,cAAc,GAAGG,MAAQ5c,EAAE4c,OAChF,EACAmB,YAAY/d,GACV,MAAMoL,EAAS3P,KACT+6B,EAAOprB,EAAOorB,MACd,QAAEC,EAAO,MAAE9Q,EAAK,SAAEzF,GAAasW,EACrC,IAAKC,EAAQI,UAAwC,IAA5BJ,EAAQI,SAAS99B,OAAc,OAExD,GADAqS,EAAOkR,YAAa,GACfqJ,EAAM1J,YAAcwa,EAAQtL,SAAU,OAEtCxF,EAAMzJ,UACTyJ,EAAMta,MAAQorB,EAAQI,SAAS,GAAGz0B,YAClCujB,EAAMra,OAASmrB,EAAQI,SAAS,GAAGt0B,aACnCojB,EAAM9I,OAASpX,EAAMM,aAAa0wB,EAAQK,aAAa,GAAI,MAAQ,EACnEnR,EAAM7I,OAASrX,EAAMM,aAAa0wB,EAAQK,aAAa,GAAI,MAAQ,EACnEL,EAAQa,WAAab,EAAQtL,SAAS,GAAG/oB,YACzCq0B,EAAQc,YAAcd,EAAQtL,SAAS,GAAG5oB,aAC1Ck0B,EAAQK,aAAaz3B,WAAW,GAC5B+L,EAAOc,MACTyZ,EAAM9I,QAAU8I,EAAM9I,OACtB8I,EAAM7I,QAAU6I,EAAM7I,SAI1B,MAAM0a,EAAc7R,EAAMta,MAAQmrB,EAAKhE,MACjCiF,EAAe9R,EAAMra,OAASkrB,EAAKhE,MAEzC,KAAIgF,EAAcf,EAAQa,YAAcG,EAAehB,EAAQc,aAA/D,CAUA,GARA5R,EAAM+R,KAAOxpB,KAAKgB,IAAMunB,EAAQa,WAAa,EAAME,EAAc,EAAK,GACtE7R,EAAMgS,MAAQhS,EAAM+R,KACpB/R,EAAMiS,KAAO1pB,KAAKgB,IAAMunB,EAAQc,YAAc,EAAME,EAAe,EAAK,GACxE9R,EAAMkS,MAAQlS,EAAMiS,KAEpBjS,EAAMmS,eAAe9iB,EAAe,cAAXhV,EAAE8b,KAAuB9b,EAAEyc,cAAc,GAAGC,MAAQ1c,EAAE0c,MAC/EiJ,EAAMmS,eAAe7iB,EAAe,cAAXjV,EAAE8b,KAAuB9b,EAAEyc,cAAc,GAAGG,MAAQ5c,EAAE4c,OAE1E+I,EAAMzJ,UAAYsa,EAAKS,UAAW,CACrC,GACE7rB,EAAOM,iBAEJwC,KAAKC,MAAMwX,EAAM+R,QAAUxpB,KAAKC,MAAMwX,EAAM9I,SAAW8I,EAAMmS,eAAe9iB,EAAI2Q,EAAM0R,aAAariB,GAChG9G,KAAKC,MAAMwX,EAAMgS,QAAUzpB,KAAKC,MAAMwX,EAAM9I,SAAW8I,EAAMmS,eAAe9iB,EAAI2Q,EAAM0R,aAAariB,GAIzG,YADA2Q,EAAM1J,WAAY,GAElB,IACC7Q,EAAOM,iBAELwC,KAAKC,MAAMwX,EAAMiS,QAAU1pB,KAAKC,MAAMwX,EAAM7I,SAAW6I,EAAMmS,eAAe7iB,EAAI0Q,EAAM0R,aAAapiB,GAChG/G,KAAKC,MAAMwX,EAAMkS,QAAU3pB,KAAKC,MAAMwX,EAAM7I,SAAW6I,EAAMmS,eAAe7iB,EAAI0Q,EAAM0R,aAAapiB,GAIzG,YADA0Q,EAAM1J,WAAY,EAGtB,CACIjc,EAAEwB,YACJxB,EAAEyd,iBAEJzd,EAAE4e,kBAEF+G,EAAMzJ,SAAU,EAChByJ,EAAMnJ,SAAYmJ,EAAMmS,eAAe9iB,EAAI2Q,EAAM0R,aAAariB,EAAK2Q,EAAM9I,OACzE8I,EAAMhJ,SAAYgJ,EAAMmS,eAAe7iB,EAAI0Q,EAAM0R,aAAapiB,EAAK0Q,EAAM7I,OAErE6I,EAAMnJ,SAAWmJ,EAAM+R,OACzB/R,EAAMnJ,SAAYmJ,EAAM+R,KAAO,GAAQ/R,EAAM+R,KAAO/R,EAAMnJ,SAAY,IAAM,IAE1EmJ,EAAMnJ,SAAWmJ,EAAMgS,OACzBhS,EAAMnJ,SAAYmJ,EAAMgS,KAAO,GAAQhS,EAAMnJ,SAAWmJ,EAAMgS,KAAQ,IAAM,IAG1EhS,EAAMhJ,SAAWgJ,EAAMiS,OACzBjS,EAAMhJ,SAAYgJ,EAAMiS,KAAO,GAAQjS,EAAMiS,KAAOjS,EAAMhJ,SAAY,IAAM,IAE1EgJ,EAAMhJ,SAAWgJ,EAAMkS,OACzBlS,EAAMhJ,SAAYgJ,EAAMkS,KAAO,GAAQlS,EAAMhJ,SAAWgJ,EAAMkS,KAAQ,IAAM,IAIzE3X,EAAS6X,gBAAe7X,EAAS6X,cAAgBpS,EAAMmS,eAAe9iB,GACtEkL,EAAS8X,gBAAe9X,EAAS8X,cAAgBrS,EAAMmS,eAAe7iB,GACtEiL,EAAS+X,WAAU/X,EAAS+X,SAAWp8B,KAAKiK,OACjDoa,EAASlL,GAAK2Q,EAAMmS,eAAe9iB,EAAIkL,EAAS6X,gBAAkBl8B,KAAKiK,MAAQoa,EAAS+X,UAAY,EACpG/X,EAASjL,GAAK0Q,EAAMmS,eAAe7iB,EAAIiL,EAAS8X,gBAAkBn8B,KAAKiK,MAAQoa,EAAS+X,UAAY,EAChG/pB,KAAK6B,IAAI4V,EAAMmS,eAAe9iB,EAAIkL,EAAS6X,eAAiB,IAAG7X,EAASlL,EAAI,GAC5E9G,KAAK6B,IAAI4V,EAAMmS,eAAe7iB,EAAIiL,EAAS8X,eAAiB,IAAG9X,EAASjL,EAAI,GAChFiL,EAAS6X,cAAgBpS,EAAMmS,eAAe9iB,EAC9CkL,EAAS8X,cAAgBrS,EAAMmS,eAAe7iB,EAC9CiL,EAAS+X,SAAWp8B,KAAKiK,MAEzB2wB,EAAQK,aAAa53B,UAAU,eAAeymB,EAAMnJ,eAAemJ,EAAMhJ,gBAlES,CAmEpF,EACA6C,aACE,MACMgX,EADS/6B,KACK+6B,MACd,QAAEC,EAAO,MAAE9Q,EAAK,SAAEzF,GAAasW,EACrC,IAAKC,EAAQI,UAAwC,IAA5BJ,EAAQI,SAAS99B,OAAc,OACxD,IAAK4sB,EAAM1J,YAAc0J,EAAMzJ,QAG7B,OAFAyJ,EAAM1J,WAAY,OAClB0J,EAAMzJ,SAAU,GAGlByJ,EAAM1J,WAAY,EAClB0J,EAAMzJ,SAAU,EAChB,IAAIgc,EAAoB,IACpBC,EAAoB,IACxB,MAAMC,EAAoBlY,EAASlL,EAAIkjB,EACjCG,EAAe1S,EAAMnJ,SAAW4b,EAChCE,EAAoBpY,EAASjL,EAAIkjB,EACjCI,EAAe5S,EAAMhJ,SAAW2b,EAGnB,IAAfpY,EAASlL,IAASkjB,EAAoBhqB,KAAK6B,KAAKsoB,EAAe1S,EAAMnJ,UAAY0D,EAASlL,IAC3E,IAAfkL,EAASjL,IAASkjB,EAAoBjqB,KAAK6B,KAAKwoB,EAAe5S,EAAMhJ,UAAYuD,EAASjL,IAC9F,MAAMoL,EAAmBnS,KAAKK,IAAI2pB,EAAmBC,GAErDxS,EAAMnJ,SAAW6b,EACjB1S,EAAMhJ,SAAW4b,EAGjB,MAAMf,EAAc7R,EAAMta,MAAQmrB,EAAKhE,MACjCiF,EAAe9R,EAAMra,OAASkrB,EAAKhE,MACzC7M,EAAM+R,KAAOxpB,KAAKgB,IAAMunB,EAAQa,WAAa,EAAME,EAAc,EAAK,GACtE7R,EAAMgS,MAAQhS,EAAM+R,KACpB/R,EAAMiS,KAAO1pB,KAAKgB,IAAMunB,EAAQc,YAAc,EAAME,EAAe,EAAK,GACxE9R,EAAMkS,MAAQlS,EAAMiS,KACpBjS,EAAMnJ,SAAWtO,KAAKK,IAAIL,KAAKgB,IAAIyW,EAAMnJ,SAAUmJ,EAAMgS,MAAOhS,EAAM+R,MACtE/R,EAAMhJ,SAAWzO,KAAKK,IAAIL,KAAKgB,IAAIyW,EAAMhJ,SAAUgJ,EAAMkS,MAAOlS,EAAMiS,MAEtEnB,EAAQK,aAAaz3B,WAAWghB,GAAkBnhB,UAAU,eAAeymB,EAAMnJ,eAAemJ,EAAMhJ,gBACxG,EACA6b,kBACE,MAAMptB,EAAS3P,KACT+6B,EAAOprB,EAAOorB,MACd,QAAEC,GAAYD,EAChBC,EAAQtL,UAAY/f,EAAO0I,gBAAkB1I,EAAOoG,cAClDilB,EAAQI,UACVJ,EAAQI,SAAS33B,UAAU,+BAEzBu3B,EAAQK,cACVL,EAAQK,aAAa53B,UAAU,sBAGjCs3B,EAAKhE,MAAQ,EACbgE,EAAKZ,aAAe,EAEpBa,EAAQtL,cAAW1qB,EACnBg2B,EAAQI,cAAWp2B,EACnBg2B,EAAQK,kBAAer2B,EAE3B,EAEApC,OAAO2B,GACL,MACMw2B,EADS/6B,KACK+6B,KAEhBA,EAAKhE,OAAwB,IAAfgE,EAAKhE,MAErBgE,EAAKiC,MAGLjC,EAAKkC,GAAG14B,EAEZ,EACA04B,GAAG14B,GACD,MAAMoL,EAAS3P,KAET+6B,EAAOprB,EAAOorB,KACdrvB,EAASiE,EAAOjE,OAAOqvB,MACvB,QAAEC,EAAO,MAAE9Q,GAAU6Q,EAW3B,GATKC,EAAQtL,WACP/f,EAAOjE,OAAOkF,SAAWjB,EAAOjE,OAAOkF,QAAQC,SAAWlB,EAAOiB,QACnEoqB,EAAQtL,SAAW/f,EAAOW,WAAWhS,SAAS,IAAIqR,EAAOjE,OAAO+L,oBAEhEujB,EAAQtL,SAAW/f,EAAOoB,OAAO1I,GAAGsH,EAAOoG,aAE7CilB,EAAQI,SAAWJ,EAAQtL,SAASjmB,KAAK,kDACzCuxB,EAAQK,aAAeL,EAAQI,SAAS9xB,OAAO,IAAIoC,EAAO4vB,oBAEvDN,EAAQI,UAAwC,IAA5BJ,EAAQI,SAAS99B,OAAc,OAIxD,IAAI4/B,EACAC,EACAC,EACAC,EACA1a,EACAC,EACA0a,EACAC,EACAC,EACAC,EACA1B,EACAC,EACA0B,EACAC,EACAC,EACAC,EACAhC,EACAC,EAnBJd,EAAQtL,SAASztB,SAAS,GAAGyJ,EAAOoyB,yBAqBA,IAAzB5T,EAAM0R,aAAariB,GAAqBhV,GACjD24B,EAAoB,aAAX34B,EAAE8b,KAAsB9b,EAAEie,eAAe,GAAGvB,MAAQ1c,EAAE0c,MAC/Dkc,EAAoB,aAAX54B,EAAE8b,KAAsB9b,EAAEie,eAAe,GAAGrB,MAAQ5c,EAAE4c,QAE/D+b,EAAShT,EAAM0R,aAAariB,EAC5B4jB,EAASjT,EAAM0R,aAAapiB,GAG9BuhB,EAAKhE,MAAQiE,EAAQK,aAAax4B,KAAK,qBAAuB6I,EAAO6vB,SACrER,EAAKZ,aAAea,EAAQK,aAAax4B,KAAK,qBAAuB6I,EAAO6vB,SACxEh3B,GACFs3B,EAAab,EAAQtL,SAAS,GAAG/oB,YACjCm1B,EAAcd,EAAQtL,SAAS,GAAG5oB,aAClCs2B,EAAUpC,EAAQtL,SAAS3oB,SAASQ,KACpC81B,EAAUrC,EAAQtL,SAAS3oB,SAASO,IACpCqb,EAASya,EAAWvB,EAAa,EAAMqB,EACvCta,EAASya,EAAWvB,EAAc,EAAMqB,EAExCK,EAAaxC,EAAQI,SAAS,GAAGz0B,YACjC82B,EAAczC,EAAQI,SAAS,GAAGt0B,aAClCi1B,EAAcyB,EAAazC,EAAKhE,MAChCiF,EAAeyB,EAAc1C,EAAKhE,MAElC2G,EAAgBjrB,KAAKgB,IAAMooB,EAAa,EAAME,EAAc,EAAK,GACjE4B,EAAgBlrB,KAAKgB,IAAMqoB,EAAc,EAAME,EAAe,EAAK,GACnE4B,GAAiBF,EACjBG,GAAiBF,EAEjBL,EAAa3a,EAAQoY,EAAKhE,MAC1BwG,EAAa3a,EAAQmY,EAAKhE,MAEtBuG,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,GAGXL,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,KAGfP,EAAa,EACbC,EAAa,GAEfvC,EAAQK,aAAaz3B,WAAW,KAAKH,UAAU,eAAe65B,QAAiBC,UAC/EvC,EAAQI,SAASx3B,WAAW,KAAKH,UAAU,4BAA4Bs3B,EAAKhE,SAC9E,EACAiG,MACE,MAAMrtB,EAAS3P,KAET+6B,EAAOprB,EAAOorB,KACdrvB,EAASiE,EAAOjE,OAAOqvB,MACvB,QAAEC,GAAYD,EAEfC,EAAQtL,WACP/f,EAAOjE,OAAOkF,SAAWjB,EAAOjE,OAAOkF,QAAQC,SAAWlB,EAAOiB,QACnEoqB,EAAQtL,SAAW/f,EAAOW,WAAWhS,SAAS,IAAIqR,EAAOjE,OAAO+L,oBAEhEujB,EAAQtL,SAAW/f,EAAOoB,OAAO1I,GAAGsH,EAAOoG,aAE7CilB,EAAQI,SAAWJ,EAAQtL,SAASjmB,KAAK,kDACzCuxB,EAAQK,aAAeL,EAAQI,SAAS9xB,OAAO,IAAIoC,EAAO4vB,mBAEvDN,EAAQI,UAAwC,IAA5BJ,EAAQI,SAAS99B,SAE1Cy9B,EAAKhE,MAAQ,EACbgE,EAAKZ,aAAe,EACpBa,EAAQK,aAAaz3B,WAAW,KAAKH,UAAU,sBAC/Cu3B,EAAQI,SAASx3B,WAAW,KAAKH,UAAU,+BAC3Cu3B,EAAQtL,SAASntB,YAAY,GAAGmJ,EAAOoyB,oBACvC9C,EAAQtL,cAAW1qB,EACrB,EAEA2sB,SACE,MAAMhiB,EAAS3P,KACT+6B,EAAOprB,EAAOorB,KACpB,GAAIA,EAAKlqB,QAAS,OAClBkqB,EAAKlqB,SAAU,EAEf,MAAM/D,IAA+C,eAA7B6C,EAAOiY,YAAYC,QAA0Bpb,EAAQK,kBAAmB6C,EAAOjE,OAAO6b,mBAAmB,CAAES,SAAS,EAAM3jB,SAAS,GACrJ05B,GAA4BtxB,EAAQK,iBAAkB,CAAEkb,SAAS,EAAO3jB,SAAS,GAEjF25B,EAAgB,IAAIruB,EAAOjE,OAAOsF,aAGpCvE,EAAQW,UACVuC,EAAOW,WAAWtM,GAAG,eAAgBg6B,EAAejD,EAAKD,eAAgBhuB,GACzE6C,EAAOW,WAAWtM,GAAG,gBAAiBg6B,EAAejD,EAAKU,gBAAiB3uB,GAC3E6C,EAAOW,WAAWtM,GAAG,aAAcg6B,EAAejD,EAAKY,aAAc7uB,IAC/B,eAA7B6C,EAAOiY,YAAYC,QAC5BlY,EAAOW,WAAWtM,GAAG2L,EAAOiY,YAAYC,MAAOmW,EAAejD,EAAKD,eAAgBhuB,GACnF6C,EAAOW,WAAWtM,GAAG2L,EAAOiY,YAAYE,KAAMkW,EAAejD,EAAKU,gBAAiBsC,GACnFpuB,EAAOW,WAAWtM,GAAG2L,EAAOiY,YAAYG,IAAKiW,EAAejD,EAAKY,aAAc7uB,GAC3E6C,EAAOiY,YAAYK,QACrBtY,EAAOW,WAAWtM,GAAG2L,EAAOiY,YAAYK,OAAQ+V,EAAejD,EAAKY,aAAc7uB,IAKtF6C,EAAOW,WAAWtM,GAAG2L,EAAOiY,YAAYE,KAAM,IAAInY,EAAOjE,OAAOqvB,KAAKO,iBAAkBP,EAAKzY,YAAayb,EAC3G,EACAnM,UACE,MAAMjiB,EAAS3P,KACT+6B,EAAOprB,EAAOorB,KACpB,IAAKA,EAAKlqB,QAAS,OAEnBlB,EAAOorB,KAAKlqB,SAAU,EAEtB,MAAM/D,IAA+C,eAA7B6C,EAAOiY,YAAYC,QAA0Bpb,EAAQK,kBAAmB6C,EAAOjE,OAAO6b,mBAAmB,CAAES,SAAS,EAAM3jB,SAAS,GACrJ05B,GAA4BtxB,EAAQK,iBAAkB,CAAEkb,SAAS,EAAO3jB,SAAS,GAEjF25B,EAAgB,IAAIruB,EAAOjE,OAAOsF,aAGpCvE,EAAQW,UACVuC,EAAOW,WAAWhL,IAAI,eAAgB04B,EAAejD,EAAKD,eAAgBhuB,GAC1E6C,EAAOW,WAAWhL,IAAI,gBAAiB04B,EAAejD,EAAKU,gBAAiB3uB,GAC5E6C,EAAOW,WAAWhL,IAAI,aAAc04B,EAAejD,EAAKY,aAAc7uB,IAChC,eAA7B6C,EAAOiY,YAAYC,QAC5BlY,EAAOW,WAAWhL,IAAIqK,EAAOiY,YAAYC,MAAOmW,EAAejD,EAAKD,eAAgBhuB,GACpF6C,EAAOW,WAAWhL,IAAIqK,EAAOiY,YAAYE,KAAMkW,EAAejD,EAAKU,gBAAiBsC,GACpFpuB,EAAOW,WAAWhL,IAAIqK,EAAOiY,YAAYG,IAAKiW,EAAejD,EAAKY,aAAc7uB,GAC5E6C,EAAOiY,YAAYK,QACrBtY,EAAOW,WAAWhL,IAAIqK,EAAOiY,YAAYK,OAAQ+V,EAAejD,EAAKY,aAAc7uB,IAKvF6C,EAAOW,WAAWhL,IAAIqK,EAAOiY,YAAYE,KAAM,IAAInY,EAAOjE,OAAOqvB,KAAKO,iBAAkBP,EAAKzY,YAAayb,EAC5G,GAuHF,MAAME,EAAO,CACXC,YAAYh2B,EAAOi2B,GAAkB,GACnC,MAAMxuB,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAOwjB,KAC7B,QAAqB,IAAVhnB,EAAuB,OAClC,GAA6B,IAAzByH,EAAOoB,OAAOzT,OAAc,OAChC,MAEMoyB,EAFY/f,EAAOiB,SAAWjB,EAAOjE,OAAOkF,QAAQC,QAGtDlB,EAAOW,WAAWhS,SAAS,IAAIqR,EAAOjE,OAAOsF,uCAAuC9I,OACpFyH,EAAOoB,OAAO1I,GAAGH,GAErB,IAAIk2B,EAAU1O,EAASjmB,KAAK,IAAIiC,EAAO2yB,qBAAqB3yB,EAAO4yB,qBAAqB5yB,EAAO6yB,kBAC3F7O,EAASjtB,SAASiJ,EAAO2yB,eAAkB3O,EAASjtB,SAASiJ,EAAO4yB,cAAiB5O,EAASjtB,SAASiJ,EAAO6yB,gBAChHH,EAAUA,EAAQ97B,IAAIotB,EAAS,KAEV,IAAnB0O,EAAQ9gC,QAEZ8gC,EAAQz2B,MAAK,CAAC62B,EAAY1U,KACxB,MAAMsR,EAAWv6B,EAAEipB,GACnBsR,EAASn5B,SAASyJ,EAAO6yB,cAEzB,MAAME,EAAarD,EAASv4B,KAAK,mBAC3B3F,EAAMk+B,EAASv4B,KAAK,YACpBknB,EAASqR,EAASv4B,KAAK,eACvBmnB,EAAQoR,EAASv4B,KAAK,cACtB67B,EAAatD,EAAS9xB,OAAO,WAEnCqG,EAAOka,UAAUuR,EAAS,GAAKl+B,GAAOuhC,EAAa1U,EAAQC,GAAO,GAAO,KACvE,GAAI,MAAOra,GAA8CA,KAAWA,GAAWA,EAAOjE,UAAWiE,EAAO0K,UAAxG,CA+BA,GA9BIokB,GACFrD,EAAS5zB,IAAI,mBAAoB,QAAQi3B,OACzCrD,EAASj4B,WAAW,qBAEhB4mB,IACFqR,EAASv4B,KAAK,SAAUknB,GACxBqR,EAASj4B,WAAW,gBAElB6mB,IACFoR,EAASv4B,KAAK,QAASmnB,GACvBoR,EAASj4B,WAAW,eAElBu7B,EAAWphC,QACbohC,EAAWpgC,SAAS,UAAUqJ,MAAK,CAACg3B,EAAaC,KAC/C,MAAMC,EAAUh+B,EAAE+9B,GAEdC,EAAQh8B,KAAK,iBACfg8B,EAAQh8B,KAAK,SAAUg8B,EAAQh8B,KAAK,gBACpCg8B,EAAQ17B,WAAW,eACrB,IAGAjG,IACFk+B,EAASv4B,KAAK,MAAO3F,GACrBk+B,EAASj4B,WAAW,cAIxBi4B,EAASn5B,SAASyJ,EAAO4yB,aAAa/7B,YAAYmJ,EAAO6yB,cACzD7O,EAASjmB,KAAK,IAAIiC,EAAOozB,kBAAkBt8B,SACvCmN,EAAOjE,OAAOqM,MAAQomB,EAAiB,CACzC,MAAMY,EAAqBrP,EAAS7sB,KAAK,2BACzC,GAAI6sB,EAASjtB,SAASkN,EAAOjE,OAAOsM,qBAAsB,CACxD,MAAMgnB,EAAgBrvB,EAAOW,WAAWhS,SAAS,6BAA6BygC,YAA6BpvB,EAAOjE,OAAOsM,wBACzHrI,EAAOuf,KAAKgP,YAAYc,EAAc92B,SAAS,EACjD,KAAO,CACL,MAAM+2B,EAAkBtvB,EAAOW,WAAWhS,SAAS,IAAIqR,EAAOjE,OAAOsM,gDAAgD+mB,OACrHpvB,EAAOuf,KAAKgP,YAAYe,EAAgB/2B,SAAS,EACnD,CACF,CACAyH,EAAO5B,KAAK,iBAAkB2hB,EAAS,GAAI0L,EAAS,IAChDzrB,EAAOjE,OAAOgL,YAChB/G,EAAO8F,kBA3CgH,CA4CzH,IAGF9F,EAAO5B,KAAK,gBAAiB2hB,EAAS,GAAI0L,EAAS,GAAG,GAE1D,EACAjM,OACE,MAAMxf,EAAS3P,MACT,WACJsQ,EAAY5E,OAAQsf,EAAY,OAAEja,EAAM,YAAEgF,GACxCpG,EACEgB,EAAYhB,EAAOiB,SAAWoa,EAAapa,QAAQC,QACnDnF,EAASsf,EAAakE,KAE5B,IAAItc,EAAgBoY,EAAapY,cAKjC,SAASssB,WAAWh3B,GAClB,GAAIyI,GACF,GAAIL,EAAWhS,SAAS,IAAI0sB,EAAaha,uCAAuC9I,OAAW5K,OACzF,OAAO,OAEJ,GAAIyT,EAAO7I,GAAQ,OAAO,EACjC,OAAO,CACT,CAEA,SAASoJ,WAAW2a,GAClB,OAAItb,EACK9P,EAAEorB,GAASppB,KAAK,2BAElBhC,EAAEorB,GAAS/jB,OACpB,CAGA,GArBsB,SAAlB0K,IACFA,EAAgB,GAmBbjD,EAAOuf,KAAKiQ,qBAAoBxvB,EAAOuf,KAAKiQ,oBAAqB,GAClExvB,EAAOjE,OAAO6J,sBAChBjF,EAAWhS,SAAS,IAAI0sB,EAAa1U,qBAAqB3O,MAAK,CAACy3B,EAASnT,KACvE,MAAM/jB,EAAQyI,EAAY9P,EAAEorB,GAASppB,KAAK,2BAA6BhC,EAAEorB,GAAS/jB,QAClFyH,EAAOuf,KAAKgP,YAAYh2B,EAAM,SAE3B,GAAI0K,EAAgB,EACzB,IAAK,IAAIhS,EAAImV,EAAanV,EAAImV,EAAcnD,EAAehS,GAAK,EAC1Ds+B,WAAWt+B,IAAI+O,EAAOuf,KAAKgP,YAAYt9B,QAG7C+O,EAAOuf,KAAKgP,YAAYnoB,GAE1B,GAAIrK,EAAO2zB,aACT,GAAIzsB,EAAgB,GAAMlH,EAAO4zB,oBAAsB5zB,EAAO4zB,mBAAqB,EAAI,CACrF,MAAMC,EAAS7zB,EAAO4zB,mBAChB5T,EAAM9Y,EACN4sB,EAAW/sB,KAAKgB,IAAIsC,EAAc2V,EAAMjZ,KAAKK,IAAIysB,EAAQ7T,GAAM3a,EAAOzT,QACtEmiC,EAAWhtB,KAAKK,IAAIiD,EAActD,KAAKK,IAAI4Y,EAAK6T,GAAS,GAE/D,IAAK,IAAI3+B,EAAImV,EAAcnD,EAAehS,EAAI4+B,EAAU5+B,GAAK,EACvDs+B,WAAWt+B,IAAI+O,EAAOuf,KAAKgP,YAAYt9B,GAG7C,IAAK,IAAIA,EAAI6+B,EAAU7+B,EAAImV,EAAanV,GAAK,EACvCs+B,WAAWt+B,IAAI+O,EAAOuf,KAAKgP,YAAYt9B,EAE/C,KAAO,CACL,MAAMqX,EAAY3H,EAAWhS,SAAS,IAAI0sB,EAAatT,kBACnDO,EAAU3a,OAAS,GAAGqS,EAAOuf,KAAKgP,YAAY5sB,WAAW2G,IAE7D,MAAMC,EAAY5H,EAAWhS,SAAS,IAAI0sB,EAAarT,kBACnDO,EAAU5a,OAAS,GAAGqS,EAAOuf,KAAKgP,YAAY5sB,WAAW4G,GAC/D,CAEJ,GAoFF,MAAMwnB,EAAa,CACjBC,aAAc,SAASA,aAAapmB,EAAGC,GACrC,MAAMomB,EAAgB,SAASvgC,SAC7B,IAAImgC,EACAC,EACAI,EACJ,MAAO,CAACC,EAAOrkB,KAGb,IAFAgkB,GAAY,EACZD,EAAWM,EAAMxiC,OACVkiC,EAAWC,EAAW,GAC3BI,EAAQL,EAAWC,GAAY,EAC3BK,EAAMD,IAAUpkB,EAClBgkB,EAAWI,EAEXL,EAAWK,EAGf,OAAOL,CAAQ,CAEnB,CAjBqB,GAwBrB,IAAIO,EACAC,EAaJ,OApBAhgC,KAAKuZ,EAAIA,EACTvZ,KAAKwZ,EAAIA,EACTxZ,KAAK21B,UAAYpc,EAAEjc,OAAS,EAO5B0C,KAAKigC,YAAc,SAASA,YAAYrF,GACtC,OAAKA,GAGLoF,EAAKJ,EAAa5/B,KAAKuZ,EAAGqhB,GAC1BmF,EAAKC,EAAK,GAIApF,EAAK56B,KAAKuZ,EAAEwmB,KAAQ//B,KAAKwZ,EAAEwmB,GAAMhgC,KAAKwZ,EAAEumB,KAAS//B,KAAKuZ,EAAEymB,GAAMhgC,KAAKuZ,EAAEwmB,IAAQ//B,KAAKwZ,EAAEumB,IAR9E,CASlB,EACO//B,IACT,EAEAkgC,uBAAuBC,GACrB,MAAMxwB,EAAS3P,KACV2P,EAAOywB,WAAWC,SACrB1wB,EAAOywB,WAAWC,OAAS1wB,EAAOjE,OAAOqM,KACrC,IAAI2nB,EAAWC,aAAahwB,EAAOwB,WAAYgvB,EAAEhvB,YACjD,IAAIuuB,EAAWC,aAAahwB,EAAOuB,SAAUivB,EAAEjvB,UAEvD,EACAiI,aAAaA,EAAcC,GACzB,MAAMzJ,EAAS3P,KACTsgC,EAAa3wB,EAAOywB,WAAWG,QACrC,IAAIxpB,EACAypB,EACJ,SAASC,uBAAuBN,GAK9B,MAAM/pB,EAAYzG,EAAOa,cAAgBb,EAAOyG,UAAYzG,EAAOyG,UAC/B,UAAhCzG,EAAOjE,OAAO00B,WAAWM,KAC3B/wB,EAAOywB,WAAWF,uBAAuBC,GAGzCK,GAAuB7wB,EAAOywB,WAAWC,OAAOJ,aAAa7pB,IAG1DoqB,GAAuD,cAAhC7wB,EAAOjE,OAAO00B,WAAWM,KACnD3pB,GAAcopB,EAAElpB,eAAiBkpB,EAAE1pB,iBAAmB9G,EAAOsH,eAAiBtH,EAAO8G,gBACrF+pB,GAAwBpqB,EAAYzG,EAAO8G,gBAAkBM,EAAcopB,EAAE1pB,gBAG3E9G,EAAOjE,OAAO00B,WAAWO,UAC3BH,EAAsBL,EAAElpB,eAAiBupB,GAE3CL,EAAErpB,eAAe0pB,GACjBL,EAAEhnB,aAAaqnB,EAAqB7wB,GACpCwwB,EAAEhoB,oBACFgoB,EAAE7oB,qBACJ,CACA,GAAItJ,MAAMC,QAAQqyB,GAChB,IAAK,IAAI1/B,EAAI,EAAGA,EAAI0/B,EAAWhjC,OAAQsD,GAAK,EACtC0/B,EAAW1/B,KAAOwY,GAAgBknB,EAAW1/B,aAAc+pB,QAC7D8V,uBAAuBH,EAAW1/B,SAG7B0/B,aAAsB3V,QAAUvR,IAAiBknB,GAC1DG,uBAAuBH,EAE3B,EACAzqB,cAAchS,EAAUuV,GACtB,MAAMzJ,EAAS3P,KACTsgC,EAAa3wB,EAAOywB,WAAWG,QACrC,IAAI3/B,EACJ,SAASggC,wBAAwBT,GAC/BA,EAAEtqB,cAAchS,EAAU8L,GACT,IAAb9L,IACFs8B,EAAE7lB,kBACE6lB,EAAEz0B,OAAOgL,YACX1M,EAAMG,UAAS,KACbg2B,EAAE1qB,kBAAkB,IAGxB0qB,EAAE7vB,WAAWnK,eAAc,KACpBm6B,IACDH,EAAEz0B,OAAOqM,MAAwC,UAAhCpI,EAAOjE,OAAO00B,WAAWM,IAC5CP,EAAE9kB,UAEJ8kB,EAAEh6B,gBAAe,IAGvB,CACA,GAAI6H,MAAMC,QAAQqyB,GAChB,IAAK1/B,EAAI,EAAGA,EAAI0/B,EAAWhjC,OAAQsD,GAAK,EAClC0/B,EAAW1/B,KAAOwY,GAAgBknB,EAAW1/B,aAAc+pB,QAC7DiW,wBAAwBN,EAAW1/B,SAG9B0/B,aAAsB3V,QAAUvR,IAAiBknB,GAC1DM,wBAAwBN,EAE5B,GAEF,IAAIO,EAAe,CACjBzxB,KAAM,aACN1D,OAAQ,CACN00B,WAAY,CACVG,aAASv7B,EACT27B,SAAS,EACTD,GAAI,UAGR1xB,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnBywB,WAAY,CACVG,QAAS5wB,EAAOjE,OAAO00B,WAAWG,QAClCL,uBAAwBR,EAAWQ,uBAAuBpxB,KAAKa,GAC/DwJ,aAAcumB,EAAWvmB,aAAarK,KAAKa,GAC3CkG,cAAe6pB,EAAW7pB,cAAc/G,KAAKa,KAGnD,EACA3L,GAAI,CACFyL,SACE,MAAME,EAAS3P,KACV2P,EAAOywB,WAAWG,SACnB5wB,EAAOywB,WAAWC,SACpB1wB,EAAOywB,WAAWC,YAASr7B,SACpB2K,EAAOywB,WAAWC,OAE7B,EACApT,SACE,MAAMtd,EAAS3P,KACV2P,EAAOywB,WAAWG,SACnB5wB,EAAOywB,WAAWC,SACpB1wB,EAAOywB,WAAWC,YAASr7B,SACpB2K,EAAOywB,WAAWC,OAE7B,EACA5S,iBACE,MAAM9d,EAAS3P,KACV2P,EAAOywB,WAAWG,SACnB5wB,EAAOywB,WAAWC,SACpB1wB,EAAOywB,WAAWC,YAASr7B,SACpB2K,EAAOywB,WAAWC,OAE7B,EACAlnB,aAAa/C,EAAWgD,GACPpZ,KACHogC,WAAWG,SADRvgC,KAERogC,WAAWjnB,aAAa/C,EAAWgD,EAC5C,EACAvD,cAAchS,EAAUuV,GACPpZ,KACHogC,WAAWG,SADRvgC,KAERogC,WAAWvqB,cAAchS,EAAUuV,EAC5C,IAIJ,MAAM0nB,EAAO,CACXC,gBAAgBjxB,IACdA,EAAIjN,KAAK,WAAY,KACdiN,GAETkxB,mBAAmBlxB,IACjBA,EAAIjN,KAAK,WAAY,MACdiN,GAETmxB,UAAS,CAACnxB,EAAKoxB,KACbpxB,EAAIjN,KAAK,OAAQq+B,GACVpxB,GAETqxB,WAAU,CAACrxB,EAAKsxB,KACdtxB,EAAIjN,KAAK,aAAcu+B,GAChBtxB,GAETuxB,UAAUvxB,IACRA,EAAIjN,KAAK,iBAAiB,GACnBiN,GAETwxB,SAASxxB,IACPA,EAAIjN,KAAK,iBAAiB,GACnBiN,GAETyxB,WAAWh9B,GACT,MAAMoL,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAOo1B,KAC7B,GAAkB,KAAdv8B,EAAE+rB,QAAgB,OACtB,MAAMpQ,EAAYrf,EAAE0D,EAAEtH,QAClB0S,EAAOqW,YAAcrW,EAAOqW,WAAW8O,SAAW5U,EAAUvb,GAAGgL,EAAOqW,WAAW8O,WAC7EnlB,EAAOwH,QAAUxH,EAAOjE,OAAOqM,MACnCpI,EAAOwL,YAELxL,EAAOwH,MACTxH,EAAOmxB,KAAKU,OAAO91B,EAAO+1B,kBAE1B9xB,EAAOmxB,KAAKU,OAAO91B,EAAOg2B,mBAG1B/xB,EAAOqW,YAAcrW,EAAOqW,WAAW+O,SAAW7U,EAAUvb,GAAGgL,EAAOqW,WAAW+O,WAC7EplB,EAAOuH,cAAgBvH,EAAOjE,OAAOqM,MACzCpI,EAAO4L,YAEL5L,EAAOuH,YACTvH,EAAOmxB,KAAKU,OAAO91B,EAAOi2B,mBAE1BhyB,EAAOmxB,KAAKU,OAAO91B,EAAOk2B,mBAG1BjyB,EAAO0lB,YAAcnV,EAAUvb,GAAG,IAAIgL,EAAOjE,OAAO2pB,WAAWmC,gBACjEtX,EAAU,GAAG2hB,OAEjB,EACAL,OAAOM,GACL,MACMC,EADS/hC,KACa8gC,KAAKkB,WACL,IAAxBD,EAAazkC,SACjBykC,EAAa7gC,KAAK,IAClB6gC,EAAa7gC,KAAK4gC,GACpB,EACAG,mBACE,MAAMtyB,EAAS3P,KAEf,GAAI2P,EAAOjE,OAAOqM,OAASpI,EAAOqW,WAAY,OAC9C,MAAM,QAAE8O,EAAO,QAAEC,GAAYplB,EAAOqW,WAEhC+O,GAAWA,EAAQz3B,OAAS,IAC1BqS,EAAOuH,aACTvH,EAAOmxB,KAAKO,UAAUtM,GACtBplB,EAAOmxB,KAAKE,mBAAmBjM,KAE/BplB,EAAOmxB,KAAKQ,SAASvM,GACrBplB,EAAOmxB,KAAKC,gBAAgBhM,KAG5BD,GAAWA,EAAQx3B,OAAS,IAC1BqS,EAAOwH,OACTxH,EAAOmxB,KAAKO,UAAUvM,GACtBnlB,EAAOmxB,KAAKE,mBAAmBlM,KAE/BnlB,EAAOmxB,KAAKQ,SAASxM,GACrBnlB,EAAOmxB,KAAKC,gBAAgBjM,IAGlC,EACAoN,mBACE,MAAMvyB,EAAS3P,KACT0L,EAASiE,EAAOjE,OAAOo1B,KACzBnxB,EAAO0lB,YAAc1lB,EAAOjE,OAAO2pB,WAAWuC,WAAajoB,EAAO0lB,WAAWI,SAAW9lB,EAAO0lB,WAAWI,QAAQn4B,QACpHqS,EAAO0lB,WAAWI,QAAQ9tB,MAAK,CAACyuB,EAAa+L,KAC3C,MAAMC,EAAYvhC,EAAEshC,GACpBxyB,EAAOmxB,KAAKC,gBAAgBqB,GAC5BzyB,EAAOmxB,KAAKG,UAAUmB,EAAW,UACjCzyB,EAAOmxB,KAAKK,WAAWiB,EAAW12B,EAAO22B,wBAAwBv3B,QAAQ,gBAAiBs3B,EAAUl6B,QAAU,GAAG,GAGvH,EACAgf,OACE,MAAMvX,EAAS3P,KAEf2P,EAAOG,IAAIvH,OAAOoH,EAAOmxB,KAAKkB,YAG9B,MAAMt2B,EAASiE,EAAOjE,OAAOo1B,KAC7B,IAAIhM,EACAC,EACAplB,EAAOqW,YAAcrW,EAAOqW,WAAW8O,UACzCA,EAAUnlB,EAAOqW,WAAW8O,SAE1BnlB,EAAOqW,YAAcrW,EAAOqW,WAAW+O,UACzCA,EAAUplB,EAAOqW,WAAW+O,SAE1BD,IACFnlB,EAAOmxB,KAAKC,gBAAgBjM,GAC5BnlB,EAAOmxB,KAAKG,UAAUnM,EAAS,UAC/BnlB,EAAOmxB,KAAKK,WAAWrM,EAASppB,EAAOg2B,kBACvC5M,EAAQ9wB,GAAG,UAAW2L,EAAOmxB,KAAKS,aAEhCxM,IACFplB,EAAOmxB,KAAKC,gBAAgBhM,GAC5BplB,EAAOmxB,KAAKG,UAAUlM,EAAS,UAC/BplB,EAAOmxB,KAAKK,WAAWpM,EAASrpB,EAAOk2B,kBACvC7M,EAAQ/wB,GAAG,UAAW2L,EAAOmxB,KAAKS,aAIhC5xB,EAAO0lB,YAAc1lB,EAAOjE,OAAO2pB,WAAWuC,WAAajoB,EAAO0lB,WAAWI,SAAW9lB,EAAO0lB,WAAWI,QAAQn4B,QACpHqS,EAAO0lB,WAAWvlB,IAAI9L,GAAG,UAAW,IAAI2L,EAAOjE,OAAO2pB,WAAWmC,cAAe7nB,EAAOmxB,KAAKS,WAEhG,EACArV,UACE,MAAMvc,EAAS3P,KAGf,IAAI80B,EACAC,EAHAplB,EAAOmxB,KAAKkB,YAAcryB,EAAOmxB,KAAKkB,WAAW1kC,OAAS,GAAGqS,EAAOmxB,KAAKkB,WAAWx/B,SAIpFmN,EAAOqW,YAAcrW,EAAOqW,WAAW8O,UACzCA,EAAUnlB,EAAOqW,WAAW8O,SAE1BnlB,EAAOqW,YAAcrW,EAAOqW,WAAW+O,UACzCA,EAAUplB,EAAOqW,WAAW+O,SAE1BD,GACFA,EAAQxvB,IAAI,UAAWqK,EAAOmxB,KAAKS,YAEjCxM,GACFA,EAAQzvB,IAAI,UAAWqK,EAAOmxB,KAAKS,YAIjC5xB,EAAO0lB,YAAc1lB,EAAOjE,OAAO2pB,WAAWuC,WAAajoB,EAAO0lB,WAAWI,SAAW9lB,EAAO0lB,WAAWI,QAAQn4B,QACpHqS,EAAO0lB,WAAWvlB,IAAIxK,IAAI,UAAW,IAAIqK,EAAOjE,OAAO2pB,WAAWmC,cAAe7nB,EAAOmxB,KAAKS,WAEjG,GAwDF,MAAMe,EAAU,CACdpb,OACE,MAAMvX,EAAS3P,KACf,IAAK2P,EAAOjE,OAAOhM,QAAS,OAC5B,IAAKJ,EAAA,UAAmBA,EAAA,kBAGtB,OAFAqQ,EAAOjE,OAAOhM,QAAQmR,SAAU,OAChClB,EAAOjE,OAAO62B,eAAe1xB,SAAU,GAGzC,MAAMnR,EAAUiQ,EAAOjQ,QACvBA,EAAQgZ,aAAc,EACtBhZ,EAAQ8iC,MAAQF,EAAQG,iBACnB/iC,EAAQ8iC,MAAMnlC,KAAQqC,EAAQ8iC,MAAMz/B,SACzCrD,EAAQgjC,cAAc,EAAGhjC,EAAQ8iC,MAAMz/B,MAAO4M,EAAOjE,OAAOiN,oBACvDhJ,EAAOjE,OAAOhM,QAAQC,cACzBL,EAAA,iBAAwB,WAAYqQ,EAAOjQ,QAAQijC,oBAEvD,EACAzW,UACE,MAAMvc,EAAS3P,KACV2P,EAAOjE,OAAOhM,QAAQC,cACzBL,EAAA,oBAA2B,WAAYqQ,EAAOjQ,QAAQijC,mBAE1D,EACAA,qBACE,MAAMhzB,EAAS3P,KACf2P,EAAOjQ,QAAQ8iC,MAAQF,EAAQG,gBAC/B9yB,EAAOjQ,QAAQgjC,cAAc/yB,EAAOjE,OAAOgK,MAAO/F,EAAOjQ,QAAQ8iC,MAAMz/B,OAAO,EAChF,EACA0/B,gBACE,MAAMG,EAAYtjC,EAAA,wBAA+B,GAAGmC,MAAM,KAAKuE,QAAQ68B,GAAkB,KAATA,IAC1EtN,EAAQqN,EAAUtlC,OAGxB,MAAO,CAAED,IAFGulC,EAAUrN,EAAQ,GAEhBxyB,MADA6/B,EAAUrN,EAAQ,GAElC,EACAuN,WAAWzlC,EAAK6K,GACd,MAAMyH,EAAS3P,KACf,IAAK2P,EAAOjQ,QAAQgZ,cAAgB/I,EAAOjE,OAAOhM,QAAQmR,QAAS,OACnE,MAAMoC,EAAQtD,EAAOoB,OAAO1I,GAAGH,GAC/B,IAAInF,EAAQu/B,EAAQS,QAAQ9vB,EAAMpQ,KAAK,iBAClCvD,EAAA,2BAAkCjC,KACrC0F,EAAQ,GAAG1F,KAAO0F,KAEpB,MAAMigC,EAAe1jC,EAAA,cACjB0jC,GAAgBA,EAAajgC,QAAUA,IAGvC4M,EAAOjE,OAAOhM,QAAQC,aACxBL,EAAA,qBAA4B,CAAEyD,SAAS,KAAMA,GAE7CzD,EAAA,kBAAyB,CAAEyD,SAAS,KAAMA,GAE9C,EACAggC,QAAQn7B,GACCA,EAAKwD,WACTN,QAAQ,OAAQ,KAChBA,QAAQ,WAAY,IACpBA,QAAQ,OAAQ,KAChBA,QAAQ,MAAO,IACfA,QAAQ,MAAO,IAEpB43B,cAAchtB,EAAO3S,EAAO4W,GAC1B,MAAMhK,EAAS3P,KACf,GAAI+C,EACF,IAAK,IAAInC,EAAI,EAAGtD,EAASqS,EAAOoB,OAAOzT,OAAQsD,EAAItD,EAAQsD,GAAK,EAAG,CACjE,MAAMqS,EAAQtD,EAAOoB,OAAO1I,GAAGzH,GAE/B,GADqB0hC,EAAQS,QAAQ9vB,EAAMpQ,KAAK,mBAC3BE,IAAUkQ,EAAMxQ,SAASkN,EAAOjE,OAAOsM,qBAAsB,CAChF,MAAM9P,EAAQ+K,EAAM/K,QACpByH,EAAO8K,QAAQvS,EAAOwN,EAAOiE,EAC/B,CACF,MAEAhK,EAAO8K,QAAQ,EAAG/E,EAAOiE,EAE7B,GAoDF,MAAMspB,EAAiB,CACrBC,cACE,MAAMvzB,EAAS3P,KACf2P,EAAO5B,KAAK,cACZ,MAAMo1B,EAAU5lC,EAAA,sBAAiC,IAAK,IAEtD,GAAI4lC,IADoBxzB,EAAOoB,OAAO1I,GAAGsH,EAAOoG,aAAalT,KAAK,aACjC,CAC/B,MAAMoY,EAAWtL,EAAOW,WAAWhS,SAAS,IAAIqR,EAAOjE,OAAOsF,yBAAyBmyB,OAAaj7B,QACpG,QAAwB,IAAb+S,EAA0B,OACrCtL,EAAO8K,QAAQQ,EACjB,CACF,EACAmoB,UACE,MAAMzzB,EAAS3P,KACf,GAAK2P,EAAO4yB,eAAe7pB,aAAgB/I,EAAOjE,OAAO62B,eAAe1xB,QACxE,GAAIlB,EAAOjE,OAAO62B,eAAe5iC,cAAgBL,EAAA,SAAkBA,EAAA,qBACjEA,EAAA,qBAA4B,KAAM,KAAO,IAAIqQ,EAAOoB,OAAO1I,GAAGsH,EAAOoG,aAAalT,KAAK,gBAAkB,IACzG8M,EAAO5B,KAAK,eACP,CACL,MAAMkF,EAAQtD,EAAOoB,OAAO1I,GAAGsH,EAAOoG,aAChCjX,EAAOmU,EAAMpQ,KAAK,cAAgBoQ,EAAMpQ,KAAK,gBACnDtF,EAAA,cAA2BuB,GAAQ,GACnC6Q,EAAO5B,KAAK,UACd,CACF,EACAmZ,OACE,MAAMvX,EAAS3P,KACf,IAAK2P,EAAOjE,OAAO62B,eAAe1xB,SAAYlB,EAAOjE,OAAOhM,SAAWiQ,EAAOjE,OAAOhM,QAAQmR,QAAU,OACvGlB,EAAO4yB,eAAe7pB,aAAc,EACpC,MAAM5Z,EAAOvB,EAAA,sBAAiC,IAAK,IACnD,GAAIuB,EAAM,CACR,MAAM4W,EAAQ,EACd,IAAK,IAAI9U,EAAI,EAAGtD,EAASqS,EAAOoB,OAAOzT,OAAQsD,EAAItD,EAAQsD,GAAK,EAAG,CACjE,MAAMqS,EAAQtD,EAAOoB,OAAO1I,GAAGzH,GAE/B,IADkBqS,EAAMpQ,KAAK,cAAgBoQ,EAAMpQ,KAAK,mBACtC/D,IAASmU,EAAMxQ,SAASkN,EAAOjE,OAAOsM,qBAAsB,CAC5E,MAAM9P,EAAQ+K,EAAM/K,QACpByH,EAAO8K,QAAQvS,EAAOwN,EAAO/F,EAAOjE,OAAOiN,oBAAoB,EACjE,CACF,CACF,CACIhJ,EAAOjE,OAAO62B,eAAec,YAC/BxiC,EAAEvB,GAAQ0E,GAAG,aAAc2L,EAAO4yB,eAAeW,YAErD,EACAhX,UACE,MAAMvc,EAAS3P,KACX2P,EAAOjE,OAAO62B,eAAec,YAC/BxiC,EAAEvB,GAAQgG,IAAI,aAAcqK,EAAO4yB,eAAeW,YAEtD,GAqDF,MAAMI,EAAW,CACf7c,MACE,MAAM9W,EAAS3P,KACTujC,EAAiB5zB,EAAOoB,OAAO1I,GAAGsH,EAAOoG,aAC/C,IAAI3L,EAAQuF,EAAOjE,OAAO4a,SAASlc,MAC/Bm5B,EAAe1gC,KAAK,0BACtBuH,EAAQm5B,EAAe1gC,KAAK,yBAA2B8M,EAAOjE,OAAO4a,SAASlc,OAEhF7J,aAAaoP,EAAO2W,SAAS4N,SAC7BvkB,EAAO2W,SAAS4N,QAAUlqB,EAAMG,UAAS,KACnCwF,EAAOjE,OAAO4a,SAASkd,iBACrB7zB,EAAOjE,OAAOqM,MAChBpI,EAAO0L,UACP1L,EAAO4L,UAAU5L,EAAOjE,OAAOgK,OAAO,GAAM,GAC5C/F,EAAO5B,KAAK,aACF4B,EAAOuH,YAGPvH,EAAOjE,OAAO4a,SAASmd,gBAIjC9zB,EAAO2W,SAASkO,QAHhB7kB,EAAO8K,QAAQ9K,EAAOoB,OAAOzT,OAAS,EAAGqS,EAAOjE,OAAOgK,OAAO,GAAM,GACpE/F,EAAO5B,KAAK,cAJZ4B,EAAO4L,UAAU5L,EAAOjE,OAAOgK,OAAO,GAAM,GAC5C/F,EAAO5B,KAAK,aAOL4B,EAAOjE,OAAOqM,MACvBpI,EAAO0L,UACP1L,EAAOwL,UAAUxL,EAAOjE,OAAOgK,OAAO,GAAM,GAC5C/F,EAAO5B,KAAK,aACF4B,EAAOwH,MAGPxH,EAAOjE,OAAO4a,SAASmd,gBAIjC9zB,EAAO2W,SAASkO,QAHhB7kB,EAAO8K,QAAQ,EAAG9K,EAAOjE,OAAOgK,OAAO,GAAM,GAC7C/F,EAAO5B,KAAK,cAJZ4B,EAAOwL,UAAUxL,EAAOjE,OAAOgK,OAAO,GAAM,GAC5C/F,EAAO5B,KAAK,aAOV4B,EAAOjE,OAAO6F,SAAW5B,EAAO2W,SAASC,SAAS5W,EAAO2W,SAASG,KAAK,GAC1Erc,EACL,EACAyd,QACE,MAAMlY,EAAS3P,KACf,YAAuC,IAA5B2P,EAAO2W,SAAS4N,WACvBvkB,EAAO2W,SAASC,UACpB5W,EAAO2W,SAASC,SAAU,EAC1B5W,EAAO5B,KAAK,iBACZ4B,EAAO2W,SAASG,OACT,GACT,EACA+N,OACE,MAAM7kB,EAAS3P,KACf,QAAK2P,EAAO2W,SAASC,eACkB,IAA5B5W,EAAO2W,SAAS4N,UAEvBvkB,EAAO2W,SAAS4N,UAClB3zB,aAAaoP,EAAO2W,SAAS4N,SAC7BvkB,EAAO2W,SAAS4N,aAAUlvB,GAE5B2K,EAAO2W,SAASC,SAAU,EAC1B5W,EAAO5B,KAAK,iBACL,GACT,EACA21B,MAAMhuB,GACJ,MAAM/F,EAAS3P,KACV2P,EAAO2W,SAASC,UACjB5W,EAAO2W,SAASE,SAChB7W,EAAO2W,SAAS4N,SAAS3zB,aAAaoP,EAAO2W,SAAS4N,SAC1DvkB,EAAO2W,SAASE,QAAS,EACX,IAAV9Q,GAAgB/F,EAAOjE,OAAO4a,SAASqd,mBAIzCh0B,EAAOW,WAAW,GAAG3S,iBAAiB,gBAAiBgS,EAAO2W,SAASyW,iBACvEptB,EAAOW,WAAW,GAAG3S,iBAAiB,sBAAuBgS,EAAO2W,SAASyW,mBAJ7EptB,EAAO2W,SAASE,QAAS,EACzB7W,EAAO2W,SAASG,QAKpB,GA6FF,MAAMmd,EAAO,CACXzqB,eACE,MAAMxJ,EAAS3P,MACT,OAAE+Q,GAAWpB,EACnB,IAAK,IAAI/O,EAAI,EAAGA,EAAImQ,EAAOzT,OAAQsD,GAAK,EAAG,CACzC,MAAM8uB,EAAW/f,EAAOoB,OAAO1I,GAAGzH,GAElC,IAAIijC,GADWnU,EAAS,GAAG1Z,kBAEtBrG,EAAOjE,OAAOuN,mBAAkB4qB,GAAMl0B,EAAOyG,WAClD,IAAI0tB,EAAK,EACJn0B,EAAOM,iBACV6zB,EAAKD,EACLA,EAAK,GAEP,MAAME,EAAep0B,EAAOjE,OAAOs4B,WAAWC,UAC1CxxB,KAAKK,IAAI,EAAIL,KAAK6B,IAAIob,EAAS,GAAG7Y,UAAW,GAC7C,EAAIpE,KAAKgB,IAAIhB,KAAKK,IAAI4c,EAAS,GAAG7Y,UAAW,GAAI,GACrD6Y,EACGloB,IAAI,CACHixB,QAASsL,IAEVtgC,UAAU,eAAeogC,QAASC,YACvC,CACF,EACAjuB,cAAchS,GACZ,MAAM8L,EAAS3P,MACT,OAAE+Q,EAAM,WAAET,GAAeX,EAE/B,GADAoB,EAAOnN,WAAWC,GACd8L,EAAOjE,OAAOuN,kBAAiC,IAAbpV,EAAgB,CACpD,IAAIqgC,GAAiB,EACrBnzB,EAAO5K,eAAc,KACnB,GAAI+9B,EAAgB,OACpB,IAAKv0B,GAAUA,EAAO0K,UAAW,OACjC6pB,GAAiB,EACjBv0B,EAAOmK,WAAY,EACnB,MAAMqqB,EAAgB,CAAC,sBAAuB,iBAC9C,IAAK,IAAIvjC,EAAI,EAAGA,EAAIujC,EAAc7mC,OAAQsD,GAAK,EAC7C0P,EAAW3K,QAAQw+B,EAAcvjC,GACnC,GAEJ,CACF,GAgDF,MAAMwjC,EAAO,CACXjrB,eACE,MAAMxJ,EAAS3P,MACT,IACJ8P,EAAG,WAAEQ,EAAU,OAAES,EAAQnB,MAAOy0B,EAAax0B,OAAQy0B,EAAc9zB,aAAcC,EAAKL,KAAMG,GAC1FZ,EACEjE,EAASiE,EAAOjE,OAAO64B,WACvBt0B,EAAeN,EAAOM,eACtBU,EAAYhB,EAAOiB,SAAWjB,EAAOjE,OAAOkF,QAAQC,QAC1D,IACI2zB,EADAC,EAAgB,EAEhB/4B,EAAOg5B,SACLz0B,GACFu0B,EAAgBl0B,EAAW7G,KAAK,uBACH,IAAzB+6B,EAAclnC,SAChBknC,EAAgB3jC,EAAE,0CAClByP,EAAW/H,OAAOi8B,IAEpBA,EAAch9B,IAAI,CAAEqI,OAAQ,GAAGw0B,UAE/BG,EAAgB10B,EAAIrG,KAAK,uBACI,IAAzB+6B,EAAclnC,SAChBknC,EAAgB3jC,EAAE,0CAClBiP,EAAIvH,OAAOi8B,MAIjB,IAAK,IAAI5jC,EAAI,EAAGA,EAAImQ,EAAOzT,OAAQsD,GAAK,EAAG,CACzC,MAAM8uB,EAAW3e,EAAO1I,GAAGzH,GAC3B,IAAI0Q,EAAa1Q,EACb+P,IACFW,EAAanB,SAASuf,EAAS7sB,KAAK,2BAA4B,KAElE,IAAI8hC,EAA0B,GAAbrzB,EACbszB,EAAQnyB,KAAKC,MAAMiyB,EAAa,KAChCl0B,IACFk0B,GAAcA,EACdC,EAAQnyB,KAAKC,OAAOiyB,EAAa,MAEnC,MAAM9tB,EAAWpE,KAAKK,IAAIL,KAAKgB,IAAIic,EAAS,GAAG7Y,SAAU,IAAK,GAC9D,IAAIgtB,EAAK,EACLC,EAAK,EACLe,EAAK,EACLvzB,EAAa,GAAM,GACrBuyB,EAAc,GAARe,EAAYr0B,EAClBs0B,EAAK,IACKvzB,EAAa,GAAK,GAAM,GAClCuyB,EAAK,EACLgB,EAAc,GAARD,EAAYr0B,IACRe,EAAa,GAAK,GAAM,GAClCuyB,EAAKtzB,EAAsB,EAARq0B,EAAYr0B,EAC/Bs0B,EAAKt0B,IACKe,EAAa,GAAK,GAAM,IAClCuyB,GAAMtzB,EACNs0B,EAAM,EAAIt0B,EAA4B,EAAbA,EAAiBq0B,GAExCn0B,IACFozB,GAAMA,GAGH5zB,IACH6zB,EAAKD,EACLA,EAAK,GAGP,MAAMpgC,EAAY,WAAWwM,EAAe,GAAK00B,iBAA0B10B,EAAe00B,EAAa,qBAAqBd,QAASC,QAASe,OAM9I,GALIhuB,GAAY,GAAKA,GAAY,IAC/B4tB,EAA8B,GAAbnzB,EAA+B,GAAXuF,EACjCpG,IAAKg0B,EAA+B,IAAbnzB,EAA+B,GAAXuF,IAEjD6Y,EAASjsB,UAAUA,GACfiI,EAAOo5B,aAAc,CAEvB,IAAIC,EAAe90B,EAAeyf,EAASjmB,KAAK,6BAA+BimB,EAASjmB,KAAK,4BACzFu7B,EAAc/0B,EAAeyf,EAASjmB,KAAK,8BAAgCimB,EAASjmB,KAAK,+BACjE,IAAxBs7B,EAAaznC,SACfynC,EAAelkC,EAAE,mCAAmCoP,EAAe,OAAS,iBAC5Eyf,EAASnnB,OAAOw8B,IAES,IAAvBC,EAAY1nC,SACd0nC,EAAcnkC,EAAE,mCAAmCoP,EAAe,QAAU,oBAC5Eyf,EAASnnB,OAAOy8B,IAEdD,EAAaznC,SAAQynC,EAAa,GAAGvmC,MAAMi6B,QAAUhmB,KAAKK,KAAK+D,EAAU,IACzEmuB,EAAY1nC,SAAQ0nC,EAAY,GAAGxmC,MAAMi6B,QAAUhmB,KAAKK,IAAI+D,EAAU,GAC5E,CACF,CAQA,GAPAvG,EAAW9I,IAAI,CACb,2BAA4B,YAAY+I,EAAa,MACrD,wBAAyB,YAAYA,EAAa,MAClD,uBAAwB,YAAYA,EAAa,MACjD,mBAAoB,YAAYA,EAAa,QAG3C7E,EAAOg5B,OACT,GAAIz0B,EACFu0B,EAAc/gC,UAAU,oBAAqB4gC,EAAc,EAAK34B,EAAOu5B,oBAAoBZ,EAAc,2CAA2C34B,EAAOw5B,oBACtJ,CACL,MAAMC,EAAc1yB,KAAK6B,IAAImwB,GAA6D,GAA3ChyB,KAAKC,MAAMD,KAAK6B,IAAImwB,GAAiB,IAC9E1tB,EAAa,KAChBtE,KAAK2yB,IAAmB,EAAdD,EAAkB1yB,KAAKuQ,GAAM,KAAO,EAC5CvQ,KAAK4yB,IAAmB,EAAdF,EAAkB1yB,KAAKuQ,GAAM,KAAO,GAE7CsiB,EAAS55B,EAAOw5B,YAChBK,EAAS75B,EAAOw5B,YAAcnuB,EAC9BhQ,EAAS2E,EAAOu5B,aACtBT,EAAc/gC,UAAU,WAAW6hC,SAAcC,uBAA6BjB,EAAe,EAAKv9B,SAAcu9B,EAAe,EAAIiB,uBACrI,CAEF,MAAMC,EAAW/Y,EAAQE,UAAYF,EAAQG,WAAerc,EAAa,EAAK,EAC9ED,EACG7M,UAAU,qBAAqB+hC,gBAAsB71B,EAAOM,eAAiB,EAAIw0B,iBAA6B90B,EAAOM,gBAAkBw0B,EAAgB,QAC5J,EACA5uB,cAAchS,GACZ,MAAM8L,EAAS3P,MACT,IAAE8P,EAAG,OAAEiB,GAAWpB,EACxBoB,EACGnN,WAAWC,GACX4F,KAAK,gHACL7F,WAAWC,GACV8L,EAAOjE,OAAO64B,WAAWG,SAAW/0B,EAAOM,gBAC7CH,EAAIrG,KAAK,uBAAuB7F,WAAWC,EAE/C,GAsDF,MAAM4hC,EAAO,CACXtsB,eACE,MAAMxJ,EAAS3P,MACT,OAAE+Q,EAAQP,aAAcC,GAAQd,EACtC,IAAK,IAAI/O,EAAI,EAAGA,EAAImQ,EAAOzT,OAAQsD,GAAK,EAAG,CACzC,MAAM8uB,EAAW3e,EAAO1I,GAAGzH,GAC3B,IAAIiW,EAAW6Y,EAAS,GAAG7Y,SACvBlH,EAAOjE,OAAOg6B,WAAWC,gBAC3B9uB,EAAWpE,KAAKK,IAAIL,KAAKgB,IAAIic,EAAS,GAAG7Y,SAAU,IAAK,IAI1D,IAAI+uB,GADY,IAAM/uB,EAElBgvB,EAAU,EACVhC,GAJWnU,EAAS,GAAG1Z,kBAKvB8tB,EAAK,EAYT,GAXKn0B,EAAOM,eAKDQ,IACTm1B,GAAWA,IALX9B,EAAKD,EACLA,EAAK,EACLgC,GAAWD,EACXA,EAAU,GAKZlW,EAAS,GAAGlxB,MAAMsnC,QAAUrzB,KAAK6B,IAAI7B,KAAKmyB,MAAM/tB,IAAa9F,EAAOzT,OAEhEqS,EAAOjE,OAAOg6B,WAAWZ,aAAc,CAEzC,IAAIC,EAAep1B,EAAOM,eAAiByf,EAASjmB,KAAK,6BAA+BimB,EAASjmB,KAAK,4BAClGu7B,EAAcr1B,EAAOM,eAAiByf,EAASjmB,KAAK,8BAAgCimB,EAASjmB,KAAK,+BAC1E,IAAxBs7B,EAAaznC,SACfynC,EAAelkC,EAAE,mCAAmC8O,EAAOM,eAAiB,OAAS,iBACrFyf,EAASnnB,OAAOw8B,IAES,IAAvBC,EAAY1nC,SACd0nC,EAAcnkC,EAAE,mCAAmC8O,EAAOM,eAAiB,QAAU,oBACrFyf,EAASnnB,OAAOy8B,IAEdD,EAAaznC,SAAQynC,EAAa,GAAGvmC,MAAMi6B,QAAUhmB,KAAKK,KAAK+D,EAAU,IACzEmuB,EAAY1nC,SAAQ0nC,EAAY,GAAGxmC,MAAMi6B,QAAUhmB,KAAKK,IAAI+D,EAAU,GAC5E,CACA6Y,EACGjsB,UAAU,eAAeogC,QAASC,qBAAsB+B,iBAAuBD,QACpF,CACF,EACA/vB,cAAchS,GACZ,MAAM8L,EAAS3P,MACT,OAAE+Q,EAAM,YAAEgF,EAAW,WAAEzF,GAAeX,EAK5C,GAJAoB,EACGnN,WAAWC,GACX4F,KAAK,gHACL7F,WAAWC,GACV8L,EAAOjE,OAAOuN,kBAAiC,IAAbpV,EAAgB,CACpD,IAAIqgC,GAAiB,EAErBnzB,EAAO1I,GAAG0N,GAAa5P,eAAc,SAAS42B,kBAC5C,GAAImH,EAAgB,OACpB,IAAKv0B,GAAUA,EAAO0K,UAAW,OAEjC6pB,GAAiB,EACjBv0B,EAAOmK,WAAY,EACnB,MAAMqqB,EAAgB,CAAC,sBAAuB,iBAC9C,IAAK,IAAIvjC,EAAI,EAAGA,EAAIujC,EAAc7mC,OAAQsD,GAAK,EAC7C0P,EAAW3K,QAAQw+B,EAAcvjC,GAErC,GACF,CACF,GAkDF,MAAMmlC,EAAY,CAChB5sB,eACE,MAAMxJ,EAAS3P,MAEb4P,MAAOy0B,EAAax0B,OAAQy0B,EAAY,OAAEvzB,EAAM,WAAET,EAAU,gBAAEc,GAC5DzB,EACEjE,EAASiE,EAAOjE,OAAOs6B,gBACvB/1B,EAAeN,EAAOM,eACtBxM,EAAYkM,EAAOyG,UACnB6vB,EAASh2B,EAA6Bo0B,EAAc,EAA3B5gC,EAA8C6gC,EAAe,EAA5B7gC,EAC1DyiC,EAASj2B,EAAevE,EAAOw6B,QAAUx6B,EAAOw6B,OAChD9vB,EAAY1K,EAAOy6B,MAEzB,IAAK,IAAIvlC,EAAI,EAAGtD,EAASyT,EAAOzT,OAAQsD,EAAItD,EAAQsD,GAAK,EAAG,CAC1D,MAAM8uB,EAAW3e,EAAO1I,GAAGzH,GACrBmR,EAAYX,EAAgBxQ,GAE5BwlC,GAAqBH,EADPvW,EAAS,GAAG1Z,kBACmBjE,EAAY,GAAMA,EAAarG,EAAO26B,SAEzF,IAAIT,EAAU31B,EAAei2B,EAASE,EAAmB,EACrDP,EAAU51B,EAAe,EAAIi2B,EAASE,EAEtCE,GAAclwB,EAAY3D,KAAK6B,IAAI8xB,GAEnCG,EAAU76B,EAAO66B,QAEE,iBAAZA,IAAkD,IAA1BA,EAAQnlC,QAAQ,OACjDmlC,EAAY3/B,WAAW8E,EAAO66B,SAAW,IAAOx0B,GAElD,IAAIwrB,EAAattB,EAAe,EAAIs2B,EAAU,EAC1CjJ,EAAartB,EAAes2B,EAAU,EAAqB,EAE3DxP,EAAQ,GAAK,EAAIrrB,EAAOqrB,OAAStkB,KAAK6B,IAAI8xB,GAG1C3zB,KAAK6B,IAAIgpB,GAAc,OAAOA,EAAa,GAC3C7qB,KAAK6B,IAAIipB,GAAc,OAAOA,EAAa,GAC3C9qB,KAAK6B,IAAIgyB,GAAc,OAAOA,EAAa,GAC3C7zB,KAAK6B,IAAIsxB,GAAW,OAAOA,EAAU,GACrCnzB,KAAK6B,IAAIuxB,GAAW,OAAOA,EAAU,GACrCpzB,KAAK6B,IAAIyiB,GAAS,OAAOA,EAAQ,GAErC,MAAMyP,EAAiB,eAAelJ,OAAgBC,OAAgB+I,iBAA0BT,iBAAuBD,eAAqB7O,KAI5I,GAFArH,EAASjsB,UAAU+iC,GACnB9W,EAAS,GAAGlxB,MAAMsnC,OAAmD,EAAzCrzB,KAAK6B,IAAI7B,KAAKmyB,MAAMwB,IAC5C16B,EAAOo5B,aAAc,CAEvB,IAAI2B,EAAkBx2B,EAAeyf,EAASjmB,KAAK,6BAA+BimB,EAASjmB,KAAK,4BAC5Fi9B,EAAiBz2B,EAAeyf,EAASjmB,KAAK,8BAAgCimB,EAASjmB,KAAK,+BACjE,IAA3Bg9B,EAAgBnpC,SAClBmpC,EAAkB5lC,EAAE,mCAAmCoP,EAAe,OAAS,iBAC/Eyf,EAASnnB,OAAOk+B,IAEY,IAA1BC,EAAeppC,SACjBopC,EAAiB7lC,EAAE,mCAAmCoP,EAAe,QAAU,oBAC/Eyf,EAASnnB,OAAOm+B,IAEdD,EAAgBnpC,SAAQmpC,EAAgB,GAAGjoC,MAAMi6B,QAAU2N,EAAmB,EAAIA,EAAmB,GACrGM,EAAeppC,SAAQopC,EAAe,GAAGloC,MAAMi6B,SAAY2N,EAAoB,GAAKA,EAAmB,EAC7G,CACF,CAGA,GAAI35B,EAAQE,eAAiBF,EAAQk6B,sBAAuB,CAC/Cr2B,EAAW,GAAG9R,MACtBooC,kBAAoB,GAAGX,SAC5B,CACF,EACApwB,cAAchS,GACG7D,KACR+Q,OACJnN,WAAWC,GACX4F,KAAK,gHACL7F,WAAWC,EAChB,GAgDF,MAAMgjC,EAAS,CACb3f,OACE,MAAMvX,EAAS3P,MACP8mC,OAAQC,GAAiBp3B,EAAOjE,OAClC4B,EAAcqC,EAAO7S,YACvBiqC,EAAap3B,kBAAkBrC,GACjCqC,EAAOm3B,OAAOn3B,OAASo3B,EAAap3B,OACpC3F,EAAMhN,OAAO2S,EAAOm3B,OAAOn3B,OAAO8Y,eAAgB,CAChDnT,qBAAqB,EACrB0D,qBAAqB,IAEvBhP,EAAMhN,OAAO2S,EAAOm3B,OAAOn3B,OAAOjE,OAAQ,CACxC4J,qBAAqB,EACrB0D,qBAAqB,KAEdhP,EAAMpN,SAASmqC,EAAap3B,UACrCA,EAAOm3B,OAAOn3B,OAAS,IAAIrC,EAAYtD,EAAMhN,OAAO,CAAC,EAAG+pC,EAAap3B,OAAQ,CAC3E4F,uBAAuB,EACvBD,qBAAqB,EACrB0D,qBAAqB,KAEvBrJ,EAAOm3B,OAAOE,eAAgB,GAEhCr3B,EAAOm3B,OAAOn3B,OAAOG,IAAI7N,SAAS0N,EAAOjE,OAAOo7B,OAAOG,sBACvDt3B,EAAOm3B,OAAOn3B,OAAO3L,GAAG,MAAO2L,EAAOm3B,OAAOI,aAC/C,EACAA,eACE,MAAMv3B,EAAS3P,KACTmnC,EAAex3B,EAAOm3B,OAAOn3B,OACnC,IAAKw3B,EAAc,OACnB,MAAMpuB,EAAeouB,EAAapuB,aAC5BD,EAAequB,EAAaruB,aAClC,GAAIA,GAAgBjY,EAAEiY,GAAcrW,SAASkN,EAAOjE,OAAOo7B,OAAOM,uBAAwB,OAC1F,GAAI,MAAOruB,EAAuD,OAClE,IAAIoD,EAMJ,GAJEA,EADEgrB,EAAaz7B,OAAOqM,KACP5H,SAAStP,EAAEsmC,EAAaruB,cAAcjW,KAAK,2BAA4B,IAEvEkW,EAEbpJ,EAAOjE,OAAOqM,KAAM,CACtB,IAAIsvB,EAAe13B,EAAOoG,YACtBpG,EAAOoB,OAAO1I,GAAGg/B,GAAc5kC,SAASkN,EAAOjE,OAAOsM,uBACxDrI,EAAO0L,UAEP1L,EAAO2L,YAAc3L,EAAOW,WAAW,GAAGnJ,WAC1CkgC,EAAe13B,EAAOoG,aAExB,MAAM6F,EAAYjM,EAAOoB,OAAO1I,GAAGg/B,GAAcj+B,QAAQ,6BAA6B+S,OAAkB9T,GAAG,GAAGH,QACxGiE,EAAYwD,EAAOoB,OAAO1I,GAAGg/B,GAAcr+B,QAAQ,6BAA6BmT,OAAkB9T,GAAG,GAAGH,QACxEiU,OAAb,IAAdP,EAA0CzP,OACvB,IAAdA,EAA0CyP,EACjDzP,EAAYk7B,EAAeA,EAAezrB,EAA0BzP,EACzDyP,CACtB,CACAjM,EAAO8K,QAAQ0B,EACjB,EACA1M,OAAO63B,GACL,MAAM33B,EAAS3P,KACTmnC,EAAex3B,EAAOm3B,OAAOn3B,OACnC,IAAKw3B,EAAc,OAEnB,MAAMv0B,EAAsD,SAAtCu0B,EAAaz7B,OAAOkH,cACtCu0B,EAAajrB,uBACbirB,EAAaz7B,OAAOkH,cAElB20B,EAAmB53B,EAAOjE,OAAOo7B,OAAOS,iBACxCC,EAAYD,IAAqBJ,EAAaz7B,OAAOqM,KAC3D,GAAIpI,EAAO4H,YAAc4vB,EAAa5vB,WAAaiwB,EAAW,CAC5D,IACIC,EACAltB,EAFAmtB,EAAqBP,EAAapxB,YAGtC,GAAIoxB,EAAaz7B,OAAOqM,KAAM,CACxBovB,EAAap2B,OAAO1I,GAAGq/B,GAAoBjlC,SAAS0kC,EAAaz7B,OAAOsM,uBAC1EmvB,EAAa9rB,UAEb8rB,EAAa7rB,YAAc6rB,EAAa72B,WAAW,GAAGnJ,WACtDugC,EAAqBP,EAAapxB,aAGpC,MAAM4xB,EAAkBR,EAAap2B,OAClC1I,GAAGq/B,GACHt+B,QAAQ,6BAA6BuG,EAAO4H,eAAelP,GAAG,GAC9DH,QACG0/B,EAAkBT,EAAap2B,OAClC1I,GAAGq/B,GACH1+B,QAAQ,6BAA6B2G,EAAO4H,eAAelP,GAAG,GAC9DH,QACyCu/B,OAAb,IAApBE,EAAkDC,OACzB,IAApBA,EAAkDD,EACzDC,EAAkBF,GAAuBA,EAAqBC,EAAkCD,EAChGE,EAAkBF,EAAqBA,EAAqBC,EAAkCC,EACjFD,EACtBptB,EAAY5K,EAAOoG,YAAcpG,EAAO0I,cAAgB,OAAS,MACnE,MACEovB,EAAiB93B,EAAO4H,UACxBgD,EAAYktB,EAAiB93B,EAAO0I,cAAgB,OAAS,OAE3DmvB,IACFC,GAAgC,SAAdltB,EAAuBgtB,GAAoB,EAAIA,GAG/DJ,EAAa5wB,sBAAwB4wB,EAAa5wB,qBAAqBnV,QAAQqmC,GAAkB,IAC/FN,EAAaz7B,OAAO2I,eAEpBozB,EADEA,EAAiBC,EACFD,EAAiBh1B,KAAKC,MAAME,EAAgB,GAAK,EAEjD60B,EAAiBh1B,KAAKC,MAAME,EAAgB,GAAK,EAE3D60B,EAAiBC,IAC1BD,EAAiBA,EAAiB70B,EAAgB,GAEpDu0B,EAAa1sB,QAAQgtB,EAAgBH,EAAU,OAAItiC,GAEvD,CAGA,IAAI6iC,EAAmB,EACvB,MAAMC,EAAmBn4B,EAAOjE,OAAOo7B,OAAOM,sBAa9C,GAXIz3B,EAAOjE,OAAOkH,cAAgB,IAAMjD,EAAOjE,OAAO2I,iBACpDwzB,EAAmBl4B,EAAOjE,OAAOkH,eAG9BjD,EAAOjE,OAAOo7B,OAAOiB,uBACxBF,EAAmB,GAGrBA,EAAmBp1B,KAAKC,MAAMm1B,GAE9BV,EAAap2B,OAAOxO,YAAYulC,GAC5BX,EAAaz7B,OAAOqM,MAASovB,EAAaz7B,OAAOkF,SAAWu2B,EAAaz7B,OAAOkF,QAAQC,QAC1F,IAAK,IAAIjQ,EAAI,EAAGA,EAAIinC,EAAkBjnC,GAAK,EACzCumC,EAAa72B,WAAWhS,SAAS,6BAA6BqR,EAAO4H,UAAY3W,OAAOqB,SAAS6lC,QAGnG,IAAK,IAAIlnC,EAAI,EAAGA,EAAIinC,EAAkBjnC,GAAK,EACzCumC,EAAap2B,OAAO1I,GAAGsH,EAAO4H,UAAY3W,GAAGqB,SAAS6lC,EAG5D,GAuEF,MAAM74B,EAAa,CACjBqd,EACAC,EACAO,EACAE,EACAmB,EACA6B,EACA6B,EA/vGiB,CACjBziB,KAAM,aACN1D,OAAQ,CACN6nB,WAAY,CACV1iB,SAAS,EACT4iB,gBAAgB,EAChBI,QAAQ,EACRD,aAAa,EACbK,YAAa,EACbT,aAAc,cAGlBxkB,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnB4jB,WAAY,CACV1iB,SAAS,EACT8gB,OAAQG,EAAWH,OAAO7iB,KAAKa,GAC/BiiB,QAASE,EAAWF,QAAQ9iB,KAAKa,GACjCygB,OAAQ0B,EAAW1B,OAAOthB,KAAKa,GAC/ByjB,iBAAkBtB,EAAWsB,iBAAiBtkB,KAAKa,GACnD2jB,iBAAkBxB,EAAWwB,iBAAiBxkB,KAAKa,GACnD+kB,cAAe5C,EAAW4C,cAAc5lB,KAAKa,GAC7CglB,cAAe7C,EAAW6C,cAAc7lB,KAAKa,GAC7CoiB,eAAgB/nB,EAAMK,MACtB2nB,yBAAqBhtB,EACrBitB,kBAAmB,KAGzB,EACAjuB,GAAI,CACFkjB,OACE,MAAMvX,EAAS3P,MACV2P,EAAOjE,OAAO6nB,WAAW1iB,SAAWlB,EAAOjE,OAAO6F,SACrD5B,EAAO4jB,WAAW3B,UAEhBjiB,EAAOjE,OAAO6nB,WAAW1iB,SAASlB,EAAO4jB,WAAW5B,QAC1D,EACAzF,UACE,MAAMvc,EAAS3P,KACX2P,EAAOjE,OAAO6F,SAChB5B,EAAO4jB,WAAW5B,SAEhBhiB,EAAO4jB,WAAW1iB,SAASlB,EAAO4jB,WAAW3B,SACnD,IAoGe,CACjBxiB,KAAM,aACN1D,OAAQ,CACNsa,WAAY,CACVC,OAAQ,KACRC,OAAQ,KAER8hB,aAAa,EACbhT,cAAe,yBACfgD,YAAa,uBACb/C,UAAW,uBAGfjmB,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnBqW,WAAY,CACVkB,KAAM2N,EAAW3N,KAAKpY,KAAKa,GAC3BF,OAAQolB,EAAWplB,OAAOX,KAAKa,GAC/Buc,QAAS2I,EAAW3I,QAAQpd,KAAKa,GACjCwlB,YAAaN,EAAWM,YAAYrmB,KAAKa,GACzCulB,YAAaL,EAAWK,YAAYpmB,KAAKa,KAG/C,EACA3L,GAAI,CACFkjB,OACiBlnB,KACRgmB,WAAWkB,OADHlnB,KAERgmB,WAAWvW,QACpB,EACAw4B,SACiBjoC,KACRgmB,WAAWvW,QACpB,EACAy4B,WACiBloC,KACRgmB,WAAWvW,QACpB,EACAyc,UACiBlsB,KACRgmB,WAAWkG,SACpB,EACA2V,MAAMt9B,GACJ,MAAMoL,EAAS3P,MACT,QAAE80B,EAAO,QAAEC,GAAYplB,EAAOqW,WACpC,GACErW,EAAOjE,OAAOsa,WAAWgiB,cACrBnnC,EAAE0D,EAAEtH,QAAQ0H,GAAGowB,KACfl0B,EAAE0D,EAAEtH,QAAQ0H,GAAGmwB,GACnB,CACA,IAAIqT,EACArT,EACFqT,EAAWrT,EAAQryB,SAASkN,EAAOjE,OAAOsa,WAAWgS,aAC5CjD,IACToT,EAAWpT,EAAQtyB,SAASkN,EAAOjE,OAAOsa,WAAWgS,eAEtC,IAAbmQ,EACFx4B,EAAO5B,KAAK,iBAAkB4B,GAE9BA,EAAO5B,KAAK,iBAAkB4B,GAE5BmlB,GACFA,EAAQnyB,YAAYgN,EAAOjE,OAAOsa,WAAWgS,aAE3CjD,GACFA,EAAQpyB,YAAYgN,EAAOjE,OAAOsa,WAAWgS,YAEjD,CACF,IAoQe,CACjB5oB,KAAM,aACN1D,OAAQ,CACN2pB,WAAY,CACV/xB,GAAI,KACJm0B,cAAe,OACfG,WAAW,EACXoQ,aAAa,EACbzQ,aAAc,KACdI,kBAAmB,KACnBD,eAAgB,KAChBP,aAAc,KACdL,qBAAqB,EACrBzW,KAAM,UACNwV,gBAAgB,EAChBE,mBAAoB,EACpBW,sBAAwB0R,GAAWA,EACnCxR,oBAAsBwR,GAAWA,EACjC5Q,YAAa,2BACbvB,kBAAmB,kCACnB6B,cAAe,qBACfrB,aAAc,4BACdE,WAAY,0BACZqB,YAAa,2BACbd,qBAAsB,qCACtBa,yBAA0B,yCAC1BF,eAAgB,8BAChB5C,UAAW,2BAGfjmB,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnB0lB,WAAY,CACVnO,KAAMkO,EAAWlO,KAAKpY,KAAKa,GAC3BynB,OAAQhC,EAAWgC,OAAOtoB,KAAKa,GAC/BF,OAAQ2lB,EAAW3lB,OAAOX,KAAKa,GAC/Buc,QAASkJ,EAAWlJ,QAAQpd,KAAKa,GACjCqmB,mBAAoB,IAG1B,EACAhyB,GAAI,CACFkjB,OACE,MAAMvX,EAAS3P,KACf2P,EAAO0lB,WAAWnO,OAClBvX,EAAO0lB,WAAW+B,SAClBznB,EAAO0lB,WAAW5lB,QACpB,EACA44B,oBACE,MAAM14B,EAAS3P,MACX2P,EAAOjE,OAAOqM,WAEqB,IAArBpI,EAAOwF,YADvBxF,EAAO0lB,WAAW5lB,QAItB,EACA64B,kBACE,MAAM34B,EAAS3P,KACV2P,EAAOjE,OAAOqM,MACjBpI,EAAO0lB,WAAW5lB,QAEtB,EACA84B,qBACE,MAAM54B,EAAS3P,KACX2P,EAAOjE,OAAOqM,OAChBpI,EAAO0lB,WAAW+B,SAClBznB,EAAO0lB,WAAW5lB,SAEtB,EACA+4B,uBACE,MAAM74B,EAAS3P,KACV2P,EAAOjE,OAAOqM,OACjBpI,EAAO0lB,WAAW+B,SAClBznB,EAAO0lB,WAAW5lB,SAEtB,EACAyc,UACiBlsB,KACRq1B,WAAWnJ,SACpB,EACA2V,MAAMt9B,GACJ,MAAMoL,EAAS3P,KACf,GACE2P,EAAOjE,OAAO2pB,WAAW/xB,IACtBqM,EAAOjE,OAAO2pB,WAAW2S,aACzBr4B,EAAO0lB,WAAWvlB,IAAIxS,OAAS,IAC9BuD,EAAE0D,EAAEtH,QAAQwF,SAASkN,EAAOjE,OAAO2pB,WAAWmC,aAClD,EAEiB,IADA7nB,EAAO0lB,WAAWvlB,IAAIrN,SAASkN,EAAOjE,OAAO2pB,WAAW2C,aAEvEroB,EAAO5B,KAAK,iBAAkB4B,GAE9BA,EAAO5B,KAAK,iBAAkB4B,GAEhCA,EAAO0lB,WAAWvlB,IAAInN,YAAYgN,EAAOjE,OAAO2pB,WAAW2C,YAC7D,CACF,IAwQc,CAChB5oB,KAAM,YACN1D,OAAQ,CACNwsB,UAAW,CACT50B,GAAI,KACJ60B,SAAU,OACVK,MAAM,EACNsB,WAAW,EACXP,eAAe,EACftE,UAAW,wBACX2E,UAAW,0BAGf5qB,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnBuoB,UAAW,CACThR,KAAM+Q,EAAU/Q,KAAKpY,KAAKa,GAC1Buc,QAAS+L,EAAU/L,QAAQpd,KAAKa,GAChCD,WAAYuoB,EAAUvoB,WAAWZ,KAAKa,GACtCwJ,aAAc8e,EAAU9e,aAAarK,KAAKa,GAC1CkG,cAAeoiB,EAAUpiB,cAAc/G,KAAKa,GAC5C6pB,gBAAiBvB,EAAUuB,gBAAgB1qB,KAAKa,GAChD+pB,iBAAkBzB,EAAUyB,iBAAiB5qB,KAAKa,GAClDqpB,gBAAiBf,EAAUe,gBAAgBlqB,KAAKa,GAChDkpB,mBAAoBZ,EAAUY,mBAAmB/pB,KAAKa,GACtDwpB,YAAalB,EAAUkB,YAAYrqB,KAAKa,GACxC0pB,WAAYpB,EAAUoB,WAAWvqB,KAAKa,GACtC2pB,UAAWrB,EAAUqB,UAAUxqB,KAAKa,GACpC6Q,WAAW,EACX0T,QAAS,KACTkF,YAAa,OAGnB,EACAp1B,GAAI,CACFkjB,OACE,MAAMvX,EAAS3P,KACf2P,EAAOuoB,UAAUhR,OACjBvX,EAAOuoB,UAAUxoB,aACjBC,EAAOuoB,UAAU/e,cACnB,EACA1J,SACiBzP,KACRk4B,UAAUxoB,YACnB,EACAud,SACiBjtB,KACRk4B,UAAUxoB,YACnB,EACA+d,iBACiBztB,KACRk4B,UAAUxoB,YACnB,EACAyJ,eACiBnZ,KACRk4B,UAAU/e,cACnB,EACAtD,cAAchS,GACG7D,KACRk4B,UAAUriB,cAAchS,EACjC,EACAqoB,UACiBlsB,KACRk4B,UAAUhM,SACnB,IAqFa,CACf9c,KAAM,WACN1D,OAAQ,CACN0uB,SAAU,CACRvpB,SAAS,IAGb7B,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnByqB,SAAU,CACRJ,aAAcD,EAASC,aAAalrB,KAAKa,GACzCwJ,aAAc4gB,EAAS5gB,aAAarK,KAAKa,GACzCkG,cAAekkB,EAASlkB,cAAc/G,KAAKa,KAGjD,EACA3L,GAAI,CACFisB,aACE,MAAMtgB,EAAS3P,KACV2P,EAAOjE,OAAO0uB,SAASvpB,UAC5BlB,EAAOjE,OAAO4J,qBAAsB,EACpC3F,EAAO8Y,eAAenT,qBAAsB,EAC9C,EACA4R,OACiBlnB,KACH0L,OAAO0uB,SAASvpB,SADb7Q,KAERo6B,SAASjhB,cAClB,EACAA,eACiBnZ,KACH0L,OAAO0uB,SAASvpB,SADb7Q,KAERo6B,SAASjhB,cAClB,EACAtD,cAAchS,GACG7D,KACH0L,OAAO0uB,SAASvpB,SADb7Q,KAERo6B,SAASvkB,cAAchS,EAChC,IA6bS,CACXuL,KAAM,OACN1D,OAAQ,CACNqvB,KAAM,CACJlqB,SAAS,EACT0qB,SAAU,EACVtS,SAAU,EACVrmB,QAAQ,EACR04B,eAAgB,wBAChBwC,iBAAkB,wBAGtB9uB,SACE,MAAMW,EAAS3P,KACT+6B,EAAO,CACXlqB,SAAS,EACTkmB,MAAO,EACPoD,aAAc,EACdqB,WAAW,EACXR,QAAS,CACPtL,cAAU1qB,EACV62B,gBAAY72B,EACZ82B,iBAAa92B,EACbo2B,cAAUp2B,EACVq2B,kBAAcr2B,EACdu2B,SAAU,GAEZrR,MAAO,CACL1J,eAAWxb,EACXyb,aAASzb,EACT+b,cAAU/b,EACVkc,cAAUlc,EACVi3B,UAAMj3B,EACNm3B,UAAMn3B,EACNk3B,UAAMl3B,EACNo3B,UAAMp3B,EACN4K,WAAO5K,EACP6K,YAAQ7K,EACRoc,YAAQpc,EACRqc,YAAQrc,EACR42B,aAAc,CAAC,EACfS,eAAgB,CAAC,GAEnB5X,SAAU,CACRlL,OAAGvU,EACHwU,OAAGxU,EACHs3B,mBAAet3B,EACfu3B,mBAAev3B,EACfw3B,cAAUx3B,IAId,+HAAiIvD,MAAM,KAAKrE,SAAS2M,IACnJgxB,EAAKhxB,GAAcywB,EAAKzwB,GAAY+E,KAAKa,EAAO,IAElD3F,EAAMhN,OAAO2S,EAAQ,CACnBorB,SAGF,IAAIhE,EAAQ,EACZh6B,OAAOmQ,eAAeyC,EAAOorB,KAAM,QAAS,CAC1C5tB,IAAG,IACM4pB,EAET0R,IAAI1lC,GACF,GAAIg0B,IAAUh0B,EAAO,CACnB,MAAM+mB,EAAUna,EAAOorB,KAAKC,QAAQI,SAAWzrB,EAAOorB,KAAKC,QAAQI,SAAS,QAAKp2B,EAC3EinB,EAAUtc,EAAOorB,KAAKC,QAAQtL,SAAW/f,EAAOorB,KAAKC,QAAQtL,SAAS,QAAK1qB,EACjF2K,EAAO5B,KAAK,aAAchL,EAAO+mB,EAASmC,EAC5C,CACA8K,EAAQh0B,CACV,GAEJ,EACAiB,GAAI,CACFkjB,OACE,MAAMvX,EAAS3P,KACX2P,EAAOjE,OAAOqvB,KAAKlqB,SACrBlB,EAAOorB,KAAKpJ,QAEhB,EACAzF,UACiBlsB,KACR+6B,KAAKnJ,SACd,EACA8W,WAAWnkC,GACMvE,KACH+6B,KAAKlqB,SADF7Q,KAER+6B,KAAKjb,aAAavb,EAC3B,EACAokC,SAASpkC,GACQvE,KACH+6B,KAAKlqB,SADF7Q,KAER+6B,KAAKhX,WAAWxf,EACzB,EACAqkC,UAAUrkC,GACR,MAAMoL,EAAS3P,KACX2P,EAAOjE,OAAOqvB,KAAKlqB,SAAWlB,EAAOorB,KAAKlqB,SAAWlB,EAAOjE,OAAOqvB,KAAKn4B,QAC1E+M,EAAOorB,KAAKn4B,OAAO2B,EAEvB,EACA4B,gBACE,MAAMwJ,EAAS3P,KACX2P,EAAOorB,KAAKlqB,SAAWlB,EAAOjE,OAAOqvB,KAAKlqB,SAC5ClB,EAAOorB,KAAKgC,iBAEhB,EACA8L,cACE,MAAMl5B,EAAS3P,KACX2P,EAAOorB,KAAKlqB,SAAWlB,EAAOjE,OAAOqvB,KAAKlqB,SAAWlB,EAAOjE,OAAO6F,SACrE5B,EAAOorB,KAAKgC,iBAEhB,IAsJS,CACX3tB,KAAM,OACN1D,OAAQ,CACNwjB,KAAM,CACJre,SAAS,EACTwuB,cAAc,EACdC,mBAAoB,EACpBwJ,uBAAuB,EAEvBzK,aAAc,cACdE,aAAc,sBACdD,YAAa,qBACbQ,eAAgB,0BAGpB9vB,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnBuf,KAAM,CACJiQ,oBAAoB,EACpBhQ,KAAM8O,EAAK9O,KAAKrgB,KAAKa,GACrBuuB,YAAaD,EAAKC,YAAYpvB,KAAKa,KAGzC,EACA3L,GAAI,CACFisB,aACE,MAAMtgB,EAAS3P,KACX2P,EAAOjE,OAAOwjB,KAAKre,SAAWlB,EAAOjE,OAAO2b,gBAC9C1X,EAAOjE,OAAO2b,eAAgB,EAElC,EACAH,OACE,MAAMvX,EAAS3P,KACX2P,EAAOjE,OAAOwjB,KAAKre,UAAYlB,EAAOjE,OAAOqM,MAAuC,IAA/BpI,EAAOjE,OAAOgP,cACrE/K,EAAOuf,KAAKC,MAEhB,EACA4Z,SACE,MAAMp5B,EAAS3P,KACX2P,EAAOjE,OAAOiY,WAAahU,EAAOjE,OAAO4Z,gBAC3C3V,EAAOuf,KAAKC,MAEhB,EACAlC,SACE,MAAMtd,EAAS3P,KACX2P,EAAOjE,OAAOwjB,KAAKre,SACrBlB,EAAOuf,KAAKC,MAEhB,EACA6Z,oBACE,MAAMr5B,EAAS3P,KACX2P,EAAOjE,OAAOwjB,KAAKre,SACrBlB,EAAOuf,KAAKC,MAEhB,EACA7U,kBACE,MAAM3K,EAAS3P,KACX2P,EAAOjE,OAAOwjB,KAAKre,UACjBlB,EAAOjE,OAAOwjB,KAAK4Z,wBAA2Bn5B,EAAOjE,OAAOwjB,KAAK4Z,wBAA0Bn5B,EAAOuf,KAAKiQ,qBACzGxvB,EAAOuf,KAAKC,MAGlB,EACAhpB,gBACE,MAAMwJ,EAAS3P,KACX2P,EAAOjE,OAAOwjB,KAAKre,UAAYlB,EAAOjE,OAAOwjB,KAAK4Z,uBACpDn5B,EAAOuf,KAAKC,MAEhB,EACA0Z,cACE,MAAMl5B,EAAS3P,KACX2P,EAAOjE,OAAOwjB,KAAKre,SAAWlB,EAAOjE,OAAO6F,SAC9C5B,EAAOuf,KAAKC,MAEhB,IA2/CF0R,EAlqCS,CACTzxB,KAAM,OACN1D,OAAQ,CACNo1B,KAAM,CACJjwB,SAAS,EACTo4B,kBAAmB,sBACnBrH,iBAAkB,iBAClBF,iBAAkB,aAClBC,kBAAmB,0BACnBF,iBAAkB,yBAClBY,wBAAyB,0BAG7BrzB,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnBmxB,KAAM,CACJkB,WAAYnhC,EAAE,gBAAgB8O,EAAOjE,OAAOo1B,KAAKmI,0EAGrDlsC,OAAOI,KAAK2jC,GAAM1jC,SAAS2M,IACzB4F,EAAOmxB,KAAK/2B,GAAc+2B,EAAK/2B,GAAY+E,KAAKa,EAAO,GAE3D,EACA3L,GAAI,CACFkjB,OACE,MAAMvX,EAAS3P,KACV2P,EAAOjE,OAAOo1B,KAAKjwB,UACxBlB,EAAOmxB,KAAK5Z,OACZvX,EAAOmxB,KAAKmB,mBACd,EACAgG,SACiBjoC,KACH0L,OAAOo1B,KAAKjwB,SADT7Q,KAER8gC,KAAKmB,kBACd,EACAiG,WACiBloC,KACH0L,OAAOo1B,KAAKjwB,SADT7Q,KAER8gC,KAAKmB,kBACd,EACAiH,mBACiBlpC,KACH0L,OAAOo1B,KAAKjwB,SADT7Q,KAER8gC,KAAKoB,kBACd,EACAhW,UACiBlsB,KACH0L,OAAOo1B,KAAKjwB,SADT7Q,KAER8gC,KAAK5U,SACd,IAmFY,CACd9c,KAAM,UACN1D,OAAQ,CACNhM,QAAS,CACPmR,SAAS,EACTlR,cAAc,EACdtC,IAAK,WAGT2R,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnBjQ,QAAS,CACPwnB,KAAMob,EAAQpb,KAAKpY,KAAKa,GACxBmzB,WAAYR,EAAQQ,WAAWh0B,KAAKa,GACpCgzB,mBAAoBL,EAAQK,mBAAmB7zB,KAAKa,GACpD+yB,cAAeJ,EAAQI,cAAc5zB,KAAKa,GAC1Cuc,QAASoW,EAAQpW,QAAQpd,KAAKa,KAGpC,EACA3L,GAAI,CACFkjB,OACE,MAAMvX,EAAS3P,KACX2P,EAAOjE,OAAOhM,QAAQmR,SACxBlB,EAAOjQ,QAAQwnB,MAEnB,EACAgF,UACE,MAAMvc,EAAS3P,KACX2P,EAAOjE,OAAOhM,QAAQmR,SACxBlB,EAAOjQ,QAAQwsB,SAEnB,EACA/lB,gBACE,MAAMwJ,EAAS3P,KACX2P,EAAOjQ,QAAQgZ,aACjB/I,EAAOjQ,QAAQojC,WAAWnzB,EAAOjE,OAAOhM,QAAQrC,IAAKsS,EAAOoG,YAEhE,EACA8yB,cACE,MAAMl5B,EAAS3P,KACX2P,EAAOjQ,QAAQgZ,aAAe/I,EAAOjE,OAAO6F,SAC9C5B,EAAOjQ,QAAQojC,WAAWnzB,EAAOjE,OAAOhM,QAAQrC,IAAKsS,EAAOoG,YAEhE,IAwDmB,CACrB3G,KAAM,kBACN1D,OAAQ,CACN62B,eAAgB,CACd1xB,SAAS,EACTlR,cAAc,EACd0jC,YAAY,IAGhBr0B,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnB4yB,eAAgB,CACd7pB,aAAa,EACbwO,KAAM+b,EAAe/b,KAAKpY,KAAKa,GAC/Buc,QAAS+W,EAAe/W,QAAQpd,KAAKa,GACrCyzB,QAASH,EAAeG,QAAQt0B,KAAKa,GACrCuzB,YAAaD,EAAeC,YAAYp0B,KAAKa,KAGnD,EACA3L,GAAI,CACFkjB,OACE,MAAMvX,EAAS3P,KACX2P,EAAOjE,OAAO62B,eAAe1xB,SAC/BlB,EAAO4yB,eAAerb,MAE1B,EACAgF,UACE,MAAMvc,EAAS3P,KACX2P,EAAOjE,OAAO62B,eAAe1xB,SAC/BlB,EAAO4yB,eAAerW,SAE1B,EACA/lB,gBACE,MAAMwJ,EAAS3P,KACX2P,EAAO4yB,eAAe7pB,aACxB/I,EAAO4yB,eAAea,SAE1B,EACAyF,cACE,MAAMl5B,EAAS3P,KACX2P,EAAO4yB,eAAe7pB,aAAe/I,EAAOjE,OAAO6F,SACrD5B,EAAO4yB,eAAea,SAE1B,IAoFa,CACfh0B,KAAM,WACN1D,OAAQ,CACN4a,SAAU,CACRzV,SAAS,EACTzG,MAAO,IACPu5B,mBAAmB,EACnBwF,sBAAsB,EACtB1F,iBAAiB,EACjBD,kBAAkB,IAGtBx0B,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnB2W,SAAU,CACRC,SAAS,EACTC,QAAQ,EACRC,IAAK6c,EAAS7c,IAAI3X,KAAKa,GACvBkY,MAAOyb,EAASzb,MAAM/Y,KAAKa,GAC3B6kB,KAAM8O,EAAS9O,KAAK1lB,KAAKa,GACzB+zB,MAAOJ,EAASI,MAAM50B,KAAKa,GAC3By5B,qBACmC,WAA7B5rC,SAAS6rC,iBAAgC15B,EAAO2W,SAASC,SAC3D5W,EAAO2W,SAASod,QAEe,YAA7BlmC,SAAS6rC,iBAAiC15B,EAAO2W,SAASE,SAC5D7W,EAAO2W,SAASG,MAChB9W,EAAO2W,SAASE,QAAS,EAE7B,EACAuW,gBAAgBx4B,GACToL,IAAUA,EAAO0K,WAAc1K,EAAOW,YACvC/L,EAAEtH,SAAW+C,OACjB2P,EAAOW,WAAW,GAAG1S,oBAAoB,gBAAiB+R,EAAO2W,SAASyW,iBAC1EptB,EAAOW,WAAW,GAAG1S,oBAAoB,sBAAuB+R,EAAO2W,SAASyW,iBAChFptB,EAAO2W,SAASE,QAAS,EACpB7W,EAAO2W,SAASC,QAGnB5W,EAAO2W,SAASG,MAFhB9W,EAAO2W,SAASkO,OAIpB,IAGN,EACAxwB,GAAI,CACFkjB,OACE,MAAMvX,EAAS3P,KACX2P,EAAOjE,OAAO4a,SAASzV,UACzBlB,EAAO2W,SAASuB,QAChBrqB,SAASG,iBAAiB,mBAAoBgS,EAAO2W,SAAS8iB,oBAElE,EACAE,sBAAsB5zB,EAAOmE,GAC3B,MAAMlK,EAAS3P,KACX2P,EAAO2W,SAASC,UACd1M,IAAalK,EAAOjE,OAAO4a,SAAS6iB,qBACtCx5B,EAAO2W,SAASod,MAAMhuB,GAEtB/F,EAAO2W,SAASkO,OAGtB,EACA+U,kBACE,MAAM55B,EAAS3P,KACX2P,EAAO2W,SAASC,UACd5W,EAAOjE,OAAO4a,SAAS6iB,qBACzBx5B,EAAO2W,SAASkO,OAEhB7kB,EAAO2W,SAASod,QAGtB,EACAiF,WACE,MAAMh5B,EAAS3P,KACX2P,EAAOjE,OAAO6F,SAAW5B,EAAO2W,SAASE,SAAW7W,EAAOjE,OAAO4a,SAAS6iB,sBAC7Ex5B,EAAO2W,SAASG,KAEpB,EACAyF,UACE,MAAMvc,EAAS3P,KACX2P,EAAO2W,SAASC,SAClB5W,EAAO2W,SAASkO,OAElBh3B,SAASI,oBAAoB,mBAAoB+R,EAAO2W,SAAS8iB,mBACnE,IAgDa,CACfh6B,KAAM,cACN1D,OAAQ,CACNs4B,WAAY,CACVC,WAAW,IAGfj1B,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnBq0B,WAAY,CACV7qB,aAAcyqB,EAAKzqB,aAAarK,KAAKa,GACrCkG,cAAe+tB,EAAK/tB,cAAc/G,KAAKa,KAG7C,EACA3L,GAAI,CACFisB,aACE,MAAMtgB,EAAS3P,KACf,GAA6B,SAAzB2P,EAAOjE,OAAO+I,OAAmB,OACrC9E,EAAO6Z,WAAWjoB,KAAK,GAAGoO,EAAOjE,OAAO8b,8BACxC,MAAM0I,EAAkB,CACtBtd,cAAe,EACfJ,gBAAiB,EACjBa,eAAgB,EAChBiC,qBAAqB,EACrBtD,aAAc,EACdiH,kBAAkB,GAEpBjP,EAAMhN,OAAO2S,EAAOjE,OAAQwkB,GAC5BlmB,EAAMhN,OAAO2S,EAAO8Y,eAAgByH,EACtC,EACA/W,eAE+B,SADdnZ,KACJ0L,OAAO+I,QADHzU,KAERgkC,WAAW7qB,cACpB,EACAtD,cAAchS,GAEiB,SADd7D,KACJ0L,OAAO+I,QADHzU,KAERgkC,WAAWnuB,cAAchS,EAClC,IAkIa,CACfuL,KAAM,cACN1D,OAAQ,CACN64B,WAAY,CACVO,cAAc,EACdJ,QAAQ,EACRO,aAAc,GACdC,YAAa,MAGjBl2B,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnB40B,WAAY,CACVprB,aAAcirB,EAAKjrB,aAAarK,KAAKa,GACrCkG,cAAeuuB,EAAKvuB,cAAc/G,KAAKa,KAG7C,EACA3L,GAAI,CACFisB,aACE,MAAMtgB,EAAS3P,KACf,GAA6B,SAAzB2P,EAAOjE,OAAO+I,OAAmB,OACrC9E,EAAO6Z,WAAWjoB,KAAK,GAAGoO,EAAOjE,OAAO8b,8BACxC7X,EAAO6Z,WAAWjoB,KAAK,GAAGoO,EAAOjE,OAAO8b,4BACxC,MAAM0I,EAAkB,CACtBtd,cAAe,EACfJ,gBAAiB,EACjBa,eAAgB,EAChBiC,qBAAqB,EACrBkO,gBAAiB,EACjBxR,aAAc,EACdqC,gBAAgB,EAChB4E,kBAAkB,GAEpBjP,EAAMhN,OAAO2S,EAAOjE,OAAQwkB,GAC5BlmB,EAAMhN,OAAO2S,EAAO8Y,eAAgByH,EACtC,EACA/W,eAE+B,SADdnZ,KACJ0L,OAAO+I,QADHzU,KAERukC,WAAWprB,cACpB,EACAtD,cAAchS,GAEiB,SADd7D,KACJ0L,OAAO+I,QADHzU,KAERukC,WAAW1uB,cAAchS,EAClC,IA2Ea,CACfuL,KAAM,cACN1D,OAAQ,CACNg6B,WAAY,CACVZ,cAAc,EACda,eAAe,IAGnB32B,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnB+1B,WAAY,CACVvsB,aAAcssB,EAAKtsB,aAAarK,KAAKa,GACrCkG,cAAe4vB,EAAK5vB,cAAc/G,KAAKa,KAG7C,EACA3L,GAAI,CACFisB,aACE,MAAMtgB,EAAS3P,KACf,GAA6B,SAAzB2P,EAAOjE,OAAO+I,OAAmB,OACrC9E,EAAO6Z,WAAWjoB,KAAK,GAAGoO,EAAOjE,OAAO8b,8BACxC7X,EAAO6Z,WAAWjoB,KAAK,GAAGoO,EAAOjE,OAAO8b,4BACxC,MAAM0I,EAAkB,CACtBtd,cAAe,EACfJ,gBAAiB,EACjBa,eAAgB,EAChBiC,qBAAqB,EACrBtD,aAAc,EACdiH,kBAAkB,GAEpBjP,EAAMhN,OAAO2S,EAAOjE,OAAQwkB,GAC5BlmB,EAAMhN,OAAO2S,EAAO8Y,eAAgByH,EACtC,EACA/W,eAE+B,SADdnZ,KACJ0L,OAAO+I,QADHzU,KAER0lC,WAAWvsB,cACpB,EACAtD,cAAchS,GAEiB,SADd7D,KACJ0L,OAAO+I,QADHzU,KAER0lC,WAAW7vB,cAAchS,EAClC,IAkFkB,CACpBuL,KAAM,mBACN1D,OAAQ,CACNs6B,gBAAiB,CACfE,OAAQ,GACRK,QAAS,EACTJ,MAAO,IACPpP,MAAO,EACPsP,SAAU,EACVvB,cAAc,IAGlB91B,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnBq2B,gBAAiB,CACf7sB,aAAc4sB,EAAU5sB,aAAarK,KAAKa,GAC1CkG,cAAekwB,EAAUlwB,cAAc/G,KAAKa,KAGlD,EACA3L,GAAI,CACFisB,aACE,MAAMtgB,EAAS3P,KACc,cAAzB2P,EAAOjE,OAAO+I,SAElB9E,EAAO6Z,WAAWjoB,KAAK,GAAGoO,EAAOjE,OAAO8b,mCACxC7X,EAAO6Z,WAAWjoB,KAAK,GAAGoO,EAAOjE,OAAO8b,4BAExC7X,EAAOjE,OAAO4J,qBAAsB,EACpC3F,EAAO8Y,eAAenT,qBAAsB,EAC9C,EACA6D,eAE+B,cADdnZ,KACJ0L,OAAO+I,QADHzU,KAERgmC,gBAAgB7sB,cACzB,EACAtD,cAAchS,GAEiB,cADd7D,KACJ0L,OAAO+I,QADHzU,KAERgmC,gBAAgBnwB,cAAchS,EACvC,IAkJW,CACbuL,KAAM,SACN1D,OAAQ,CACNo7B,OAAQ,CACNn3B,OAAQ,KACRo4B,sBAAsB,EACtBR,iBAAkB,EAClBH,sBAAuB,4BACvBH,qBAAsB,4BAG1Bj4B,SACE,MAAMW,EAAS3P,KACfgK,EAAMhN,OAAO2S,EAAQ,CACnBm3B,OAAQ,CACNn3B,OAAQ,KACRuX,KAAM2f,EAAO3f,KAAKpY,KAAKa,GACvBF,OAAQo3B,EAAOp3B,OAAOX,KAAKa,GAC3Bu3B,aAAcL,EAAOK,aAAap4B,KAAKa,KAG7C,EACA3L,GAAI,CACFisB,aACE,MAAMtgB,EAAS3P,MACT,OAAE8mC,GAAWn3B,EAAOjE,OACrBo7B,GAAWA,EAAOn3B,SACvBA,EAAOm3B,OAAO5f,OACdvX,EAAOm3B,OAAOr3B,QAAO,GACvB,EACAo5B,cACiB7oC,KACH8mC,OAAOn3B,QADJ3P,KAER8mC,OAAOr3B,QAChB,EACAA,SACiBzP,KACH8mC,OAAOn3B,QADJ3P,KAER8mC,OAAOr3B,QAChB,EACAwd,SACiBjtB,KACH8mC,OAAOn3B,QADJ3P,KAER8mC,OAAOr3B,QAChB,EACAge,iBACiBztB,KACH8mC,OAAOn3B,QADJ3P,KAER8mC,OAAOr3B,QAChB,EACAoG,cAAchS,GACZ,MACMsjC,EADSnnC,KACa8mC,OAAOn3B,OAC9Bw3B,GACLA,EAAatxB,cAAchS,EAC7B,EACA2lC,gBACE,MACMrC,EADSnnC,KACa8mC,OAAOn3B,OAC9Bw3B,GAFUnnC,KAGJ8mC,OAAOE,eAAiBG,GACjCA,EAAajb,SAEjB,UAiCsB,IAAfvB,OAAOzb,MAChByb,OAAOzb,IAAMyb,OAAO5oB,MAAMmN,IAC1Byb,OAAOnb,cAAgBmb,OAAO5oB,MAAMyN,eAGtCmb,OAAOzb,IAAID,GAEX,mBChkPIw6B,eACJ,SAAWA,GACPA,EAA2B,gBAAI,SAC/BA,EAAgC,qBAAI,cACpCA,EAA2B,gBAAI,SAC/BA,EAA0B,eAAI,SACjC,CALD,CAKGA,IAAcA,EAAY,CAAC,IAC9B,IAKIC,GAKAC,GAVAC,GAAkB7sC,OAAO8sC,OAAO,CAChCvO,eAAgB,mBAChB7T,aAAc,iBACdzW,WAAY,kBAGhB,SAAW04B,GACPA,EAAuB,MAAI,QAC3BA,EAA4B,WAAI,YACnC,CAHD,CAGGA,KAAoBA,GAAkB,CAAC,IAE1C,SAAWC,GACPA,EAA+B,WAAI,aACnCA,EAAgC,YAAI,cACpCA,EAA4C,wBAAI,0BAChDA,EAA2C,uBAAI,wBAClD,CALD,CAKGA,KAAuBA,GAAqB,CAAC,IAEhD,IAAIG,GAAgB,CAChB,OACA,gBACA,cACA,6BACA,2BACA,2BACA,yBACA,2BACA,yBACA,kBACA,gBACA,aACA,YACA,oBACA,aACA,WACA,QACA,MACA,YACA,cACA,WACA,iBACA,WACA,WACA,eACA,gBACA,SACA,iBACA,gBACA,WAkBJ,SAASC,iBACL,IAAK,IAAIC,EAAI,EAAGppC,EAAI,EAAGqpC,EAAKjnC,UAAU1F,OAAQsD,EAAIqpC,EAAIrpC,IAAKopC,GAAKhnC,UAAUpC,GAAGtD,OACxE,IAAI4sC,EAAIl8B,MAAMg8B,GAAIllC,EAAI,EAA3B,IAA8BlE,EAAI,EAAGA,EAAIqpC,EAAIrpC,IACzC,IAAK,IAAIiK,EAAI7H,UAAUpC,GAAIwB,EAAI,EAAG+nC,EAAKt/B,EAAEvN,OAAQ8E,EAAI+nC,EAAI/nC,IAAK0C,IAC1DolC,EAAEplC,GAAK+F,EAAEzI,GACjB,OAAO8nC,CACX,CAOA,IA2KIE,GA3KAC,UAAY,SAAUC,GACtB,OAAOA,EACFx/B,QAAQ,kBAAmB,SAC3BA,QAAQ,OAAQ,KAChByU,aACT,EAOIgrB,sBAAwB,SAAU56B,EAAQzK,EAAO6I,GACjD,IAAIy8B,EAAIC,EAAIC,EACZ,GAAI/6B,IAAYA,EAAgB,UAAG,CAC/B,IAAIg7B,GAA2C,QAA7BH,EAAKtlC,EAAM0lC,oBAAiC,IAAPJ,OAAgB,EAASA,EAAGjkC,KAAKrB,KAAWA,EAAM2lC,KACzG,IAAK3lC,aAAqC,EAASA,EAAMjI,SAAW0tC,EAAW,CAC3E,IAAIG,EAAW98B,MAAMwgB,KAAK7e,EAAOoB,QAC7ByxB,EAAQx0B,MAAMwgB,KAAKmc,GAEvB,GAAIG,EAASC,SAAS7lC,EAAMjI,SAAWulC,EAAMwI,MAAK,SAAUC,GAAQ,OAAOH,EAASC,SAASE,EAAO,IAAI,CACpG,IAAIlyB,EAAepJ,EAAOoJ,aACtBmyB,EAAcC,OAA6F,QAArFT,EAAoC,QAA9BD,EAAK96B,EAAOmJ,oBAAiC,IAAP2xB,OAAgB,EAASA,EAAGW,eAA4B,IAAPV,OAAgB,EAASA,EAAGW,kBAC/IC,EAAmBH,OAAOI,UAAUL,GAAeA,EAAc,KACrEn9B,EAAK27B,GAAgB8B,WAAYzyB,EAAcuyB,GAC/Cv9B,EAAKs8B,UAAUX,GAAgB8B,YAAazyB,EAAcuyB,EAC9D,CACJ,CACJ,CACJ,EACIG,iBAAmB,SAAU97B,EAAQ5B,GACrC+7B,GAAc1sC,SAAQ,SAAUoQ,GAC5BmC,EAAO3L,GAAGwJ,GAAW,WAIjB,IAHA,IAAIk+B,EAAc1oC,UAEdiB,EAAO,GACF0nC,EAAK,EAAGA,EAAK3oC,UAAU1F,OAAQquC,IACpC1nC,EAAK0nC,GAAMD,EAAYC,GAE3B59B,EAAKnJ,WAAM,EAAQmlC,eAAe,CAACv8B,GAAYvJ,IAC/C,IAAI2nC,EAAgBvB,UAAU78B,GAC1Bo+B,IAAkBp+B,GAClBO,EAAKnJ,WAAM,EAAQmlC,eAAe,CAAC6B,GAAgB3nC,GAE3D,GACJ,GACJ,EAQA,SAAS4nC,aAAav+B,EAAaw+B,GAC/B,IAAIC,6BAA+B,SAAUC,EAAO3uC,GAChD,IAAImtC,EAAIC,EAAIC,EAAIuB,EACZlpC,EAAmF,QAA1E0nC,EAA2B,QAArBD,EAAKwB,EAAM3oC,YAAyB,IAAPmnC,OAAgB,EAASA,EAAG1nC,aAA0B,IAAP2nC,OAAgB,EAASA,EAAGptC,GAC3H,YAAiB2H,IAAVjC,EACDA,EAC2E,QAA1EkpC,EAA2B,QAArBvB,EAAKsB,EAAM3oC,YAAyB,IAAPqnC,OAAgB,EAASA,EAAG5nC,aAA0B,IAAPmpC,OAAgB,EAASA,EAAG5B,UAAUhtC,GACnI,EAEI6uC,sBAAwB,SAAU9Z,EAAS+Z,EAASH,GACpD,OAAQG,EAAQC,KACZL,6BAA6BC,EAZjB,iBAaZ5Z,EAAQia,IACR5C,EAAU6C,cAClB,EACIC,kBAAoB,SAAUna,EAAS+Z,EAASH,GAChD,IAAIQ,EAAeN,sBAAsB9Z,EAAS+Z,EAASH,GAC3D,OAAOA,EAAMjrC,QAAQyrC,IAAiB,IAC1C,EACIC,gBAAkB,SAAUN,GAC5B,OAAOA,EAAQppC,OAAS+oC,CAC5B,EACIY,uBAAyB,SAAUC,GACnC,MAAO,EAAC,OAAM3nC,EAAW,KAAM,IAAI+lC,SAAS4B,EAChD,EAEIC,eAAiB,SAAUZ,GAC3B,IAAIxB,EAAIC,EACJllC,GAAkC,QAArBilC,EAAKwB,EAAM3oC,YAAyB,IAAPmnC,OAAgB,EAASA,EAAGxmC,MAA0C,QAAjCymC,EAAKuB,EAAMa,wBAAqC,IAAPpC,OAAgB,EAASA,EAAGqC,WACxJ,OAAO,SAAU19B,GAIb,IAHA,IAMIo7B,EANAkB,EAAc1oC,UAEdiB,EAAO,GACF0nC,EAAK,EAAGA,EAAK3oC,UAAU1F,OAAQquC,IACpC1nC,EAAK0nC,EAAK,GAAKD,EAAYC,GAG/B,IAAIvb,EAA6B,QAAnBoa,EAAKjlC,SAA6B,IAAPilC,OAAgB,EAASA,EAAGp7B,GACjEghB,GACAA,EAAO2c,IAAInoC,MAAMwrB,EAAQnsB,EAEjC,CACJ,EACA,MAAO,CAEH6K,KAAM,SAAUsjB,EAAS+Z,EAASH,IAEqC,IAA/D5Z,EAAQlwB,UAAUd,QAAQwoC,GAAgBtO,kBAC1ClJ,EAAQlwB,YAAekwB,EAAQlwB,UAAY,IAAM,IAAM0nC,GAAgBtO,gBAG3ElJ,EAAQz0B,iBAAiB,SAAS,SAAUuH,GACxC,IAAI8nC,EAAYJ,eAAeZ,GAC3Br8B,EAAS48B,kBAAkBna,EAAS+Z,EAASH,GACjDzB,sBAAsB56B,EAAQzK,EAAO8nC,EACzC,GACJ,EAEAC,SAAU,SAAU7a,EAAS+Z,EAASH,GAClC,IAAIjrC,EAAUirC,EAAMjrC,QAChBmsC,EAAgBT,gBAAgBN,GAChCK,EAAeN,sBAAsB9Z,EAAS+Z,EAASH,GACvDgB,EAAYJ,eAAeZ,GAC3BmB,EAAapsC,EACb4O,EAASw9B,aAA+C,EAASA,EAAWX,GAE3E78B,IAAUA,EAAO0K,YAClB1K,EAAS,IAAIrC,EAAY8kB,EAAS8a,GAClCC,EAAWX,GAAgB78B,EAC3B87B,iBAAiB97B,EAAQq9B,GACzBA,EAAUtD,GAAgB0D,MAAOz9B,GAIzC,EAEA09B,iBAAkB,SAAUjb,EAAS+Z,EAASH,GAC1C,IAAIxB,EAAIC,EAAIC,EAAIuB,EAAIqB,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAC5CC,EAAa/B,6BAA6BC,EAAOrC,GAAmBoE,YACxE,GAAIrB,uBAAuBoB,GAAa,CACpC,IAAIn+B,EAAS48B,kBAAkBna,EAAS+Z,EAASH,GACjD,GAAIr8B,EAAQ,CACR,IACIq+B,EADgBvB,gBAAgBN,GACTp0B,KACvBi2B,IAC6E,QAA5EvD,EAAuB,QAAjBD,EAAK76B,SAA2B,IAAP66B,OAAgB,EAASA,EAAG1tB,mBAAgC,IAAP2tB,GAAyBA,EAAGlkC,KAAKikC,IAEjD,QAAxEE,EAAK/6B,aAAuC,EAASA,EAAOF,cAA2B,IAAPi7B,GAAyBA,EAAGnkC,KAAKoJ,GAC/B,QAAlF29B,EAAkC,QAA5BrB,EAAKt8B,EAAOqW,kBAA+B,IAAPimB,OAAgB,EAASA,EAAGx8B,cAA2B,IAAP69B,GAAyBA,EAAG/mC,KAAK0lC,GACzC,QAAlFuB,EAAkC,QAA5BD,EAAK59B,EAAO0lB,kBAA+B,IAAPkY,OAAgB,EAASA,EAAGnW,cAA2B,IAAPoW,GAAyBA,EAAGjnC,KAAKgnC,GACzC,QAAlFG,EAAkC,QAA5BD,EAAK99B,EAAO0lB,kBAA+B,IAAPoY,OAAgB,EAASA,EAAGh+B,cAA2B,IAAPi+B,GAAyBA,EAAGnnC,KAAKknC,GACxHO,IAC4E,QAA3EJ,EAAuB,QAAjBD,EAAKh+B,SAA2B,IAAPg+B,OAAgB,EAASA,EAAGvxB,kBAA+B,IAAPwxB,GAAyBA,EAAGrnC,KAAKonC,GAC5C,QAAxEE,EAAKl+B,aAAuC,EAASA,EAAOF,cAA2B,IAAPo+B,GAAyBA,EAAGtnC,KAAKoJ,GAE1H,CACJ,CACJ,EAEAs+B,OAAQ,SAAU7b,EAAS+Z,EAASH,GAChC,IAAIxB,EACA0D,EAAcnC,6BAA6BC,EAAOrC,GAAmBwE,aACzE,GAAIzB,uBAAuBwB,GAAc,CACrC,IAAIv+B,EAAS48B,kBAAkBna,EAAS+Z,EAASH,GAC7Cr8B,GAAUA,EAAO+I,cACyD,QAAzE8xB,EAAK76B,aAAuC,EAASA,EAAOuc,eAA4B,IAAPse,GAAyBA,EAAGjkC,KAAKoJ,EAAQ+8B,uBAAuBX,6BAA6BC,EAAOrC,GAAmByE,0BAA2B1B,uBAAuBX,6BAA6BC,EAAOrC,GAAmB0E,0BAE1T,CACJ,EAER,CAeA,SAASC,mBAAmBhhC,GACxB,IAAIk9B,EACJ,OAAO,kBAAW,CACdp7B,KAAMq6B,EAAU8E,gBAChB9mC,OAAQ+iC,EAAK,CACLgE,eAAgB,CACZnuB,KAAMtjB,OACN0xC,UAAU,EACVC,QAAS,WAAc,MAAO,CAAG,CAAG,GAGxCpjB,QAAS,CACLjL,KAAMtjB,OACN0xC,UAAU,IAGlBjE,EAAGb,GAAmBoE,YAAc,CAChC1tB,KAAMsuB,QACND,SAAS,GAGblE,EAAGb,GAAmBwE,aAAe,CACjC9tB,KAAMsuB,QACND,SAAS,GAGblE,EAAGb,GAAmByE,yBAA2B,CAC7C/tB,KAAMsuB,QACNF,UAAU,EACVC,SAAS,GAEblE,EAAGb,GAAmB0E,wBAA0B,CAC5ChuB,KAAMsuB,QACNF,UAAU,EACVC,SAAS,GAEblE,GACJnnC,KAAM,WACF,IAAImnC,EACJ,OAAOA,EAAK,CAAC,GACNf,EAAU6C,gBAAkB,KAC/B9B,CACR,EACAoE,SAAU,CACNC,eAAgB,CACZpf,OAAO,EACPgZ,IAAK,SAAU94B,GACX3P,KAAKypC,EAAU6C,gBAAkB38B,CACrC,EACAxC,IAAK,WACD,OAAOnN,KAAKypC,EAAU6C,eAC1B,GAEJY,cAAe,WACX,OAAOltC,KAAKsrB,SAAWtrB,KAAKwuC,cAChC,EACA/mB,aAAc,WACV,OAAOznB,KAAKktC,cAAczlB,cAAgBmiB,GAAgBniB,YAC9D,GAEJqnB,QAAS,CAELC,kBAAmB,SAAU7pC,GACzBqlC,sBAAsBvqC,KAAK6uC,eAAgB3pC,EAAOlF,KAAKgvC,MAAMlgC,KAAK9O,MACtE,EACAivC,iBAAkB,WACd,IAAIzE,EAAIC,EACR,GAAIzqC,KAAK6uC,gBAAkB7uC,KAAKktC,cAAcn1B,KAAM,CAIhD,IAAIpI,EAAS3P,KAAK6uC,eAC4D,QAA7ErE,EAAK76B,aAAuC,EAASA,EAAOmN,mBAAgC,IAAP0tB,GAAyBA,EAAGjkC,KAAKoJ,GAC1C,QAA5E86B,EAAK96B,aAAuC,EAASA,EAAOyM,kBAA+B,IAAPquB,GAAyBA,EAAGlkC,KAAKoJ,EAC1H,CACJ,EACAu/B,aAAc,WACV,IAAI1E,EAAIC,EAAIC,EAAIuB,EAAIqB,EAAIC,EAAIC,EAAIC,EAC5BztC,KAAK2pC,GAAmBoE,aAAe/tC,KAAK6uC,iBAC5C7uC,KAAKivC,mBACgF,QAApFxE,EAAoC,QAA9BD,EAAKxqC,KAAK6uC,sBAAmC,IAAPrE,OAAgB,EAASA,EAAG/6B,cAA2B,IAAPg7B,GAAyBA,EAAGlkC,KAAKikC,GAC9B,QAA/FyB,EAA+C,QAAzCvB,EAAK1qC,KAAK6uC,eAAe7oB,kBAA+B,IAAP0kB,OAAgB,EAASA,EAAGj7B,cAA2B,IAAPw8B,GAAyBA,EAAG1lC,KAAKmkC,GACzC,QAA/F6C,EAA+C,QAAzCD,EAAKttC,KAAK6uC,eAAexZ,kBAA+B,IAAPiY,OAAgB,EAASA,EAAGlW,cAA2B,IAAPmW,GAAyBA,EAAGhnC,KAAK+mC,GACzC,QAA/FG,EAA+C,QAAzCD,EAAKxtC,KAAK6uC,eAAexZ,kBAA+B,IAAPmY,OAAgB,EAASA,EAAG/9B,cAA2B,IAAPg+B,GAAyBA,EAAGlnC,KAAKinC,GAEjJ,EACA2B,cAAe,WACX,IAAI3E,EAAIC,EACJzqC,KAAK2pC,GAAmBwE,cAAgBnuC,KAAK6uC,gBAGzC7uC,KAAK6uC,eAAen2B,cACkE,QAArF+xB,EAAoC,QAA9BD,EAAKxqC,KAAK6uC,sBAAmC,IAAPrE,OAAgB,EAASA,EAAGte,eAA4B,IAAPue,GAAyBA,EAAGlkC,KAAKikC,EAAIxqC,KAAK2pC,GAAmByE,yBAA0BpuC,KAAK2pC,GAAmB0E,yBAGzN,EACAe,WAAY,WACRpvC,KAAK6uC,eAAiB,IAAIvhC,EAAYtN,KAAK8P,IAAK9P,KAAKktC,eACrDzB,iBAAiBzrC,KAAK6uC,eAAgB7uC,KAAKgvC,MAAMlgC,KAAK9O,OACtDA,KAAKgvC,MAAMtF,GAAgB0D,MAAOptC,KAAK6uC,eAC3C,GAEJQ,QAAS,WACArvC,KAAK6uC,gBACN7uC,KAAKovC,YAEb,EAEAE,UAAW,WACPtvC,KAAKkvC,cACT,EACAK,QAAS,WACLvvC,KAAKkvC,cACT,EACA1F,cAAe,WAEXxpC,KAAKwvC,UAAUxvC,KAAKmvC,cACxB,EACA/X,OAAQ,SAAU/4B,GACd,OAAOA,EAAc,MAAO,CACxBoxC,YAAa7F,GAAgBtO,eAC7Bt3B,GAAI,CACA69B,MAAO7hC,KAAK+uC,oBAEjB,CACC/uC,KAAK0vC,OAAOtF,GAAUuF,YACtBtxC,EAAc,MAAO,CACjBuxC,MAAO5vC,KAAKynB,cACbznB,KAAK0vC,OAAOhB,SACf1uC,KAAK0vC,OAAOtF,GAAUhV,YACtBp1B,KAAK0vC,OAAOtF,GAAUyF,YACtB7vC,KAAK0vC,OAAOtF,GAAU0F,YACtB9vC,KAAK0vC,OAAOtF,GAAUnS,YAE9B,GAER,EA/IA,SAAWmS,GACPA,EAAsB,WAAI,cAC1BA,EAAsB,WAAI,aAC1BA,EAAqB,UAAI,YACzBA,EAAsB,WAAI,cAC1BA,EAAsB,WAAI,aAC7B,CAND,CAMGA,KAAcA,GAAY,CAAC,IAgJ9B,IAAI2F,GAAuB,kBAAW,CAClC3gC,KAAMq6B,EAAUsG,qBAChBnB,SAAU,CACN59B,WAAY,WACR,IAAIw5B,EAAIC,EACR,OAA6F,QAApFA,EAA6B,QAAvBD,EAAKxqC,KAAKgwC,eAA4B,IAAPxF,OAAgB,EAASA,EAAG0C,qBAAkC,IAAPzC,OAAgB,EAASA,EAAGz5B,aAAe44B,GAAgB54B,UACpK,GAEJ89B,QAAS,CACLr/B,OAAQ,WACJ,IAAI+6B,EACAlhC,EAAStJ,KAAKgwC,QAEd1mC,EAAOqgC,GAAmBoE,cACuD,QAAhFvD,EAAKlhC,aAAuC,EAASA,EAAOulC,sBAAmC,IAAPrE,GAAyBA,EAAG/6B,SAE7H,GAEJ4/B,QAAS,WACLrvC,KAAKyP,QACT,EACA8/B,QAAS,WACLvvC,KAAKyP,QACT,EACA2nB,OAAQ,SAAU/4B,GACd,OAAOA,EAAc,MAAO,CACxBuxC,MAAO5vC,KAAKgR,YACbhR,KAAK0vC,OAAOhB,QACnB,IAQAuB,aAAe,SAAU3iC,GACzB,IAAIgC,QAAU,SAAU4gC,EAAKpE,GACzB,IAAIx8B,QAAQ6gC,UAAZ,CAEA,IAAI5B,EAAkBD,mBAAmBhhC,GACrCw+B,IACAyC,EAAgBjjB,QAAQ7jB,MAAM+mC,eAAeE,QAAU,WAAc,OAAO5C,CAAe,GAE/FoE,EAAIE,UAAU3G,EAAU8E,gBAAiBA,GACzC2B,EAAIE,UAAU3G,EAAUsG,qBAAsBA,IAC9CG,EAAIG,UAAU5G,EAAU6G,gBAAiBzE,aAAav+B,EAAaw+B,IACnEx8B,QAAQ6gC,WAAY,CARN,CASlB,EACA,OAAO7gC,OACX,EAkBA,IAAIihC,GAjBJ,SAASC,SAASljC,GACd,IAAIk9B,EACJ,OAAOA,EAAK,CACJiG,QAAS,QACTnhC,QAAS2gC,aAAa3iC,GACtB+iC,UAAWxE,aAAav+B,KAEzBm8B,EAAU8E,iBAAmBD,mBAAmBhhC,GACnDk9B,EAAGf,EAAUsG,sBAAwBA,GACrCvF,CACR,CAOuBgG,CAAS,GAC5BC,GAAUF,GAAiBE,QAC3BnhC,GAAUihC,GAAiBjhC,QAC3B+gC,GAAYE,GAAiBF,UAC7B,GAASE,GAAiB5lB,OAC1B+lB,GAAcH,GAAiBG,YAEnC","sources":["webpack:///./node_modules/ssr-window/dist/ssr-window.esm.js","webpack:///./node_modules/dom7/dist/dom7.modular.js","webpack:///./node_modules/swiper/js/swiper.esm.bundle.js","webpack:///./node_modules/vue-awesome-swiper/dist/vue-awesome-swiper.esm.js"],"sourcesContent":["/**\n * SSR Window 2.0.0\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2020, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: May 12, 2020\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n    return (obj !== null &&\n        typeof obj === 'object' &&\n        'constructor' in obj &&\n        obj.constructor === Object);\n}\nfunction extend(target, src) {\n    if (target === void 0) { target = {}; }\n    if (src === void 0) { src = {}; }\n    Object.keys(src).forEach(function (key) {\n        if (typeof target[key] === 'undefined')\n            target[key] = src[key];\n        else if (isObject(src[key]) &&\n            isObject(target[key]) &&\n            Object.keys(src[key]).length > 0) {\n            extend(target[key], src[key]);\n        }\n    });\n}\n\nvar doc = typeof document !== 'undefined' ? document : {};\nvar ssrDocument = {\n    body: {},\n    addEventListener: function () { },\n    removeEventListener: function () { },\n    activeElement: {\n        blur: function () { },\n        nodeName: '',\n    },\n    querySelector: function () {\n        return null;\n    },\n    querySelectorAll: function () {\n        return [];\n    },\n    getElementById: function () {\n        return null;\n    },\n    createEvent: function () {\n        return {\n            initEvent: function () { },\n        };\n    },\n    createElement: function () {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute: function () { },\n            getElementsByTagName: function () {\n                return [];\n            },\n        };\n    },\n    createElementNS: function () {\n        return {};\n    },\n    importNode: function () {\n        return null;\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n};\nextend(doc, ssrDocument);\n\nvar win = typeof window !== 'undefined' ? window : {};\nvar ssrWindow = {\n    document: ssrDocument,\n    navigator: {\n        userAgent: '',\n    },\n    location: {\n        hash: '',\n        host: '',\n        hostname: '',\n        href: '',\n        origin: '',\n        pathname: '',\n        protocol: '',\n        search: '',\n    },\n    history: {\n        replaceState: function () { },\n        pushState: function () { },\n        go: function () { },\n        back: function () { },\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener: function () { },\n    removeEventListener: function () { },\n    getComputedStyle: function () {\n        return {\n            getPropertyValue: function () {\n                return '';\n            },\n        };\n    },\n    Image: function () { },\n    Date: function () { },\n    screen: {},\n    setTimeout: function () { },\n    clearTimeout: function () { },\n    matchMedia: function () {\n        return {};\n    },\n};\nextend(win, ssrWindow);\n\nexport { doc as document, extend, win as window };\n","/**\n * Dom7 2.1.5\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * http://framework7.io/docs/dom.html\n *\n * Copyright 2020, Vladimir Kharlampidi\n * The iDangero.us\n * http://www.idangero.us/\n *\n * Licensed under MIT\n *\n * Released on: May 15, 2020\n */\nimport { document, window } from 'ssr-window';\n\nclass Dom7 {\n  constructor(arr) {\n    const self = this;\n    // Create array-like object\n    for (let i = 0; i < arr.length; i += 1) {\n      self[i] = arr[i];\n    }\n    self.length = arr.length;\n    // Return collection with methods\n    return this;\n  }\n}\n\nfunction $(selector, context) {\n  const arr = [];\n  let i = 0;\n  if (selector && !context) {\n    if (selector instanceof Dom7) {\n      return selector;\n    }\n  }\n  if (selector) {\n      // String\n    if (typeof selector === 'string') {\n      let els;\n      let tempParent;\n      const html = selector.trim();\n      if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n        let toCreate = 'div';\n        if (html.indexOf('<li') === 0) toCreate = 'ul';\n        if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n        if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n        if (html.indexOf('<tbody') === 0) toCreate = 'table';\n        if (html.indexOf('<option') === 0) toCreate = 'select';\n        tempParent = document.createElement(toCreate);\n        tempParent.innerHTML = html;\n        for (i = 0; i < tempParent.childNodes.length; i += 1) {\n          arr.push(tempParent.childNodes[i]);\n        }\n      } else {\n        if (!context && selector[0] === '#' && !selector.match(/[ .<>:~]/)) {\n          // Pure ID selector\n          els = [document.getElementById(selector.trim().split('#')[1])];\n        } else {\n          // Other selectors\n          els = (context || document).querySelectorAll(selector.trim());\n        }\n        for (i = 0; i < els.length; i += 1) {\n          if (els[i]) arr.push(els[i]);\n        }\n      }\n    } else if (selector.nodeType || selector === window || selector === document) {\n      // Node/element\n      arr.push(selector);\n    } else if (selector.length > 0 && selector[0].nodeType) {\n      // Array of elements or instance of Dom\n      for (i = 0; i < selector.length; i += 1) {\n        arr.push(selector[i]);\n      }\n    }\n  }\n  return new Dom7(arr);\n}\n\n$.fn = Dom7.prototype;\n$.Class = Dom7;\n$.Dom7 = Dom7;\n\nfunction unique(arr) {\n  const uniqueArray = [];\n  for (let i = 0; i < arr.length; i += 1) {\n    if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n  }\n  return uniqueArray;\n}\nfunction toCamelCase(string) {\n  return string.toLowerCase().replace(/-(.)/g, (match, group1) => group1.toUpperCase());\n}\n\nfunction requestAnimationFrame(callback) {\n  if (window.requestAnimationFrame) return window.requestAnimationFrame(callback);\n  else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback);\n  return window.setTimeout(callback, 1000 / 60);\n}\nfunction cancelAnimationFrame(id) {\n  if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id);\n  else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id);\n  return window.clearTimeout(id);\n}\n\n// Classes and attributes\nfunction addClass(className) {\n  if (typeof className === 'undefined') {\n    return this;\n  }\n  const classes = className.split(' ');\n  for (let i = 0; i < classes.length; i += 1) {\n    for (let j = 0; j < this.length; j += 1) {\n      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.add(classes[i]);\n    }\n  }\n  return this;\n}\nfunction removeClass(className) {\n  const classes = className.split(' ');\n  for (let i = 0; i < classes.length; i += 1) {\n    for (let j = 0; j < this.length; j += 1) {\n      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.remove(classes[i]);\n    }\n  }\n  return this;\n}\nfunction hasClass(className) {\n  if (!this[0]) return false;\n  return this[0].classList.contains(className);\n}\nfunction toggleClass(className) {\n  const classes = className.split(' ');\n  for (let i = 0; i < classes.length; i += 1) {\n    for (let j = 0; j < this.length; j += 1) {\n      if (typeof this[j] !== 'undefined' && typeof this[j].classList !== 'undefined') this[j].classList.toggle(classes[i]);\n    }\n  }\n  return this;\n}\nfunction attr(attrs, value) {\n  if (arguments.length === 1 && typeof attrs === 'string') {\n    // Get attr\n    if (this[0]) return this[0].getAttribute(attrs);\n    return undefined;\n  }\n\n  // Set attrs\n  for (let i = 0; i < this.length; i += 1) {\n    if (arguments.length === 2) {\n      // String\n      this[i].setAttribute(attrs, value);\n    } else {\n      // Object\n      // eslint-disable-next-line\n      for (const attrName in attrs) {\n        this[i][attrName] = attrs[attrName];\n        this[i].setAttribute(attrName, attrs[attrName]);\n      }\n    }\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction removeAttr(attr) {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].removeAttribute(attr);\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction prop(props, value) {\n  if (arguments.length === 1 && typeof props === 'string') {\n    // Get prop\n    if (this[0]) return this[0][props];\n  } else {\n    // Set props\n    for (let i = 0; i < this.length; i += 1) {\n      if (arguments.length === 2) {\n        // String\n        this[i][props] = value;\n      } else {\n        // Object\n        // eslint-disable-next-line\n        for (const propName in props) {\n          this[i][propName] = props[propName];\n        }\n      }\n    }\n    return this;\n  }\n}\nfunction data(key, value) {\n  let el;\n  if (typeof value === 'undefined') {\n    el = this[0];\n    // Get value\n    if (el) {\n      if (el.dom7ElementDataStorage && (key in el.dom7ElementDataStorage)) {\n        return el.dom7ElementDataStorage[key];\n      }\n\n      const dataKey = el.getAttribute(`data-${key}`);\n      if (dataKey) {\n        return dataKey;\n      }\n      return undefined;\n    }\n    return undefined;\n  }\n\n  // Set value\n  for (let i = 0; i < this.length; i += 1) {\n    el = this[i];\n    if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n    el.dom7ElementDataStorage[key] = value;\n  }\n  return this;\n}\nfunction removeData(key) {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n      el.dom7ElementDataStorage[key] = null;\n      delete el.dom7ElementDataStorage[key];\n    }\n  }\n}\nfunction dataset() {\n  const el = this[0];\n  if (!el) return undefined;\n  const dataset = {}; // eslint-disable-line\n  if (el.dataset) {\n    // eslint-disable-next-line\n    for (const dataKey in el.dataset) {\n      dataset[dataKey] = el.dataset[dataKey];\n    }\n  } else {\n    for (let i = 0; i < el.attributes.length; i += 1) {\n      // eslint-disable-next-line\n      const attr = el.attributes[i];\n      if (attr.name.indexOf('data-') >= 0) {\n        dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n      }\n    }\n  }\n  // eslint-disable-next-line\n  for (const key in dataset) {\n    if (dataset[key] === 'false') dataset[key] = false;\n    else if (dataset[key] === 'true') dataset[key] = true;\n    else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n  }\n  return dataset;\n}\nfunction val(value) {\n  const dom = this;\n  if (typeof value === 'undefined') {\n    if (dom[0]) {\n      if (dom[0].multiple && dom[0].nodeName.toLowerCase() === 'select') {\n        const values = [];\n        for (let i = 0; i < dom[0].selectedOptions.length; i += 1) {\n          values.push(dom[0].selectedOptions[i].value);\n        }\n        return values;\n      }\n      return dom[0].value;\n    }\n    return undefined;\n  }\n\n  for (let i = 0; i < dom.length; i += 1) {\n    const el = dom[i];\n    if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n      for (let j = 0; j < el.options.length; j += 1) {\n        el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n      }\n    } else {\n      el.value = value;\n    }\n  }\n  return dom;\n}\n// Transforms\n// eslint-disable-next-line\nfunction transform(transform) {\n  for (let i = 0; i < this.length; i += 1) {\n    const elStyle = this[i].style;\n    elStyle.webkitTransform = transform;\n    elStyle.transform = transform;\n  }\n  return this;\n}\nfunction transition(duration) {\n  if (typeof duration !== 'string') {\n    duration = `${duration}ms`; // eslint-disable-line\n  }\n  for (let i = 0; i < this.length; i += 1) {\n    const elStyle = this[i].style;\n    elStyle.webkitTransitionDuration = duration;\n    elStyle.transitionDuration = duration;\n  }\n  return this;\n}\n// Events\nfunction on(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n  if (!capture) capture = false;\n\n  function handleLiveEvent(e) {\n    const target = e.target;\n    if (!target) return;\n    const eventData = e.target.dom7EventData || [];\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n    if ($(target).is(targetSelector)) listener.apply(target, eventData);\n    else {\n      const parents = $(target).parents(); // eslint-disable-line\n      for (let k = 0; k < parents.length; k += 1) {\n        if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n      }\n    }\n  }\n  function handleEvent(e) {\n    const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n    if (eventData.indexOf(e) < 0) {\n      eventData.unshift(e);\n    }\n    listener.apply(this, eventData);\n  }\n  const events = eventType.split(' ');\n  let j;\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (!targetSelector) {\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7Listeners) el.dom7Listeners = {};\n        if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n        el.dom7Listeners[event].push({\n          listener,\n          proxyListener: handleEvent,\n        });\n        el.addEventListener(event, handleEvent, capture);\n      }\n    } else {\n      // Live events\n      for (j = 0; j < events.length; j += 1) {\n        const event = events[j];\n        if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n        if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n        el.dom7LiveListeners[event].push({\n          listener,\n          proxyListener: handleLiveEvent,\n        });\n        el.addEventListener(event, handleLiveEvent, capture);\n      }\n    }\n  }\n  return this;\n}\nfunction off(...args) {\n  let [eventType, targetSelector, listener, capture] = args;\n  if (typeof args[1] === 'function') {\n    [eventType, listener, capture] = args;\n    targetSelector = undefined;\n  }\n  if (!capture) capture = false;\n\n  const events = eventType.split(' ');\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let handlers;\n      if (!targetSelector && el.dom7Listeners) {\n        handlers = el.dom7Listeners[event];\n      } else if (targetSelector && el.dom7LiveListeners) {\n        handlers = el.dom7LiveListeners[event];\n      }\n      if (handlers && handlers.length) {\n        for (let k = handlers.length - 1; k >= 0; k -= 1) {\n          const handler = handlers[k];\n          if (listener && handler.listener === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          } else if (!listener) {\n            el.removeEventListener(event, handler.proxyListener, capture);\n            handlers.splice(k, 1);\n          }\n        }\n      }\n    }\n  }\n  return this;\n}\nfunction once(...args) {\n  const dom = this;\n  let [eventName, targetSelector, listener, capture] = args;\n  if (typeof args[1] === 'function') {\n    [eventName, listener, capture] = args;\n    targetSelector = undefined;\n  }\n  function onceHandler(...eventArgs) {\n    listener.apply(this, eventArgs);\n    dom.off(eventName, targetSelector, onceHandler, capture);\n    if (onceHandler.dom7proxy) {\n      delete onceHandler.dom7proxy;\n    }\n  }\n  onceHandler.dom7proxy = listener;\n  return dom.on(eventName, targetSelector, onceHandler, capture);\n}\nfunction trigger(...args) {\n  const events = args[0].split(' ');\n  const eventData = args[1];\n  for (let i = 0; i < events.length; i += 1) {\n    const event = events[i];\n    for (let j = 0; j < this.length; j += 1) {\n      const el = this[j];\n      let evt;\n      try {\n        evt = new window.CustomEvent(event, {\n          detail: eventData,\n          bubbles: true,\n          cancelable: true,\n        });\n      } catch (e) {\n        evt = document.createEvent('Event');\n        evt.initEvent(event, true, true);\n        evt.detail = eventData;\n      }\n      // eslint-disable-next-line\n      el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n      el.dispatchEvent(evt);\n      el.dom7EventData = [];\n      delete el.dom7EventData;\n    }\n  }\n  return this;\n}\nfunction transitionEnd(callback) {\n  const events = ['webkitTransitionEnd', 'transitionend'];\n  const dom = this;\n  let i;\n  function fireCallBack(e) {\n    /* jshint validthis:true */\n    if (e.target !== this) return;\n    callback.call(this, e);\n    for (i = 0; i < events.length; i += 1) {\n      dom.off(events[i], fireCallBack);\n    }\n  }\n  if (callback) {\n    for (i = 0; i < events.length; i += 1) {\n      dom.on(events[i], fireCallBack);\n    }\n  }\n  return this;\n}\nfunction animationEnd(callback) {\n  const events = ['webkitAnimationEnd', 'animationend'];\n  const dom = this;\n  let i;\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    for (i = 0; i < events.length; i += 1) {\n      dom.off(events[i], fireCallBack);\n    }\n  }\n  if (callback) {\n    for (i = 0; i < events.length; i += 1) {\n      dom.on(events[i], fireCallBack);\n    }\n  }\n  return this;\n}\n// Sizing/Styles\nfunction width() {\n  if (this[0] === window) {\n    return window.innerWidth;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('width'));\n  }\n\n  return null;\n}\nfunction outerWidth(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      // eslint-disable-next-line\n      const styles = this.styles();\n      return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n    }\n    return this[0].offsetWidth;\n  }\n  return null;\n}\nfunction height() {\n  if (this[0] === window) {\n    return window.innerHeight;\n  }\n\n  if (this.length > 0) {\n    return parseFloat(this.css('height'));\n  }\n\n  return null;\n}\nfunction outerHeight(includeMargins) {\n  if (this.length > 0) {\n    if (includeMargins) {\n      // eslint-disable-next-line\n      const styles = this.styles();\n      return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n    }\n    return this[0].offsetHeight;\n  }\n  return null;\n}\nfunction offset() {\n  if (this.length > 0) {\n    const el = this[0];\n    const box = el.getBoundingClientRect();\n    const body = document.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window ? window.scrollY : el.scrollTop;\n    const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n    return {\n      top: (box.top + scrollTop) - clientTop,\n      left: (box.left + scrollLeft) - clientLeft,\n    };\n  }\n\n  return null;\n}\nfunction hide() {\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].style.display = 'none';\n  }\n  return this;\n}\nfunction show() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (el.style.display === 'none') {\n      el.style.display = '';\n    }\n    if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n      // Still not visible\n      el.style.display = 'block';\n    }\n  }\n  return this;\n}\nfunction styles() {\n  if (this[0]) return window.getComputedStyle(this[0], null);\n  return {};\n}\nfunction css(props, value) {\n  let i;\n  if (arguments.length === 1) {\n    if (typeof props === 'string') {\n      if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n    } else {\n      for (i = 0; i < this.length; i += 1) {\n        // eslint-disable-next-line\n        for (let prop in props) {\n          this[i].style[prop] = props[prop];\n        }\n      }\n      return this;\n    }\n  }\n  if (arguments.length === 2 && typeof props === 'string') {\n    for (i = 0; i < this.length; i += 1) {\n      this[i].style[props] = value;\n    }\n    return this;\n  }\n  return this;\n}\n\n// Dom manipulation\nfunction toArray() {\n  const arr = [];\n  for (let i = 0; i < this.length; i += 1) {\n    arr.push(this[i]);\n  }\n  return arr;\n}\n// Iterate over the collection passing elements to `callback`\nfunction each(callback) {\n  // Don't bother continuing without a callback\n  if (!callback) return this;\n  // Iterate over the current collection\n  for (let i = 0; i < this.length; i += 1) {\n    // If the callback returns false\n    if (callback.call(this[i], i, this[i]) === false) {\n      // End the loop early\n      return this;\n    }\n  }\n  // Return `this` to allow chained DOM operations\n  return this;\n}\nfunction forEach(callback) {\n  // Don't bother continuing without a callback\n  if (!callback) return this;\n  // Iterate over the current collection\n  for (let i = 0; i < this.length; i += 1) {\n    // If the callback returns false\n    if (callback.call(this[i], this[i], i) === false) {\n      // End the loop early\n      return this;\n    }\n  }\n  // Return `this` to allow chained DOM operations\n  return this;\n}\nfunction filter(callback) {\n  const matchedItems = [];\n  const dom = this;\n  for (let i = 0; i < dom.length; i += 1) {\n    if (callback.call(dom[i], i, dom[i])) matchedItems.push(dom[i]);\n  }\n  return new Dom7(matchedItems);\n}\nfunction map(callback) {\n  const modifiedItems = [];\n  const dom = this;\n  for (let i = 0; i < dom.length; i += 1) {\n    modifiedItems.push(callback.call(dom[i], i, dom[i]));\n  }\n  return new Dom7(modifiedItems);\n}\n// eslint-disable-next-line\nfunction html(html) {\n  if (typeof html === 'undefined') {\n    return this[0] ? this[0].innerHTML : undefined;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].innerHTML = html;\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction text(text) {\n  if (typeof text === 'undefined') {\n    if (this[0]) {\n      return this[0].textContent.trim();\n    }\n    return null;\n  }\n\n  for (let i = 0; i < this.length; i += 1) {\n    this[i].textContent = text;\n  }\n  return this;\n}\nfunction is(selector) {\n  const el = this[0];\n  let compareWith;\n  let i;\n  if (!el || typeof selector === 'undefined') return false;\n  if (typeof selector === 'string') {\n    if (el.matches) return el.matches(selector);\n    else if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n    else if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n\n    compareWith = $(selector);\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n    return false;\n  } else if (selector === document) return el === document;\n  else if (selector === window) return el === window;\n\n  if (selector.nodeType || selector instanceof Dom7) {\n    compareWith = selector.nodeType ? [selector] : selector;\n    for (i = 0; i < compareWith.length; i += 1) {\n      if (compareWith[i] === el) return true;\n    }\n    return false;\n  }\n  return false;\n}\nfunction indexOf(el) {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i] === el) return i;\n  }\n  return -1;\n}\nfunction index() {\n  let child = this[0];\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\n// eslint-disable-next-line\nfunction eq(index) {\n  if (typeof index === 'undefined') return this;\n  const length = this.length;\n  let returnIndex;\n  if (index > length - 1) {\n    return new Dom7([]);\n  }\n  if (index < 0) {\n    returnIndex = length + index;\n    if (returnIndex < 0) return new Dom7([]);\n    return new Dom7([this[returnIndex]]);\n  }\n  return new Dom7([this[index]]);\n}\nfunction append(...args) {\n  let newChild;\n\n  for (let k = 0; k < args.length; k += 1) {\n    newChild = args[k];\n    for (let i = 0; i < this.length; i += 1) {\n      if (typeof newChild === 'string') {\n        const tempDiv = document.createElement('div');\n        tempDiv.innerHTML = newChild;\n        while (tempDiv.firstChild) {\n          this[i].appendChild(tempDiv.firstChild);\n        }\n      } else if (newChild instanceof Dom7) {\n        for (let j = 0; j < newChild.length; j += 1) {\n          this[i].appendChild(newChild[j]);\n        }\n      } else {\n        this[i].appendChild(newChild);\n      }\n    }\n  }\n\n  return this;\n}\n// eslint-disable-next-line\nfunction appendTo(parent) {\n  $(parent).append(this);\n  return this;\n}\nfunction prepend(newChild) {\n  let i;\n  let j;\n  for (i = 0; i < this.length; i += 1) {\n    if (typeof newChild === 'string') {\n      const tempDiv = document.createElement('div');\n      tempDiv.innerHTML = newChild;\n      for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n        this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n      }\n    } else if (newChild instanceof Dom7) {\n      for (j = 0; j < newChild.length; j += 1) {\n        this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n      }\n    } else {\n      this[i].insertBefore(newChild, this[i].childNodes[0]);\n    }\n  }\n  return this;\n}\n// eslint-disable-next-line\nfunction prependTo(parent) {\n  $(parent).prepend(this);\n  return this;\n}\nfunction insertBefore(selector) {\n  const before = $(selector);\n  for (let i = 0; i < this.length; i += 1) {\n    if (before.length === 1) {\n      before[0].parentNode.insertBefore(this[i], before[0]);\n    } else if (before.length > 1) {\n      for (let j = 0; j < before.length; j += 1) {\n        before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n      }\n    }\n  }\n}\nfunction insertAfter(selector) {\n  const after = $(selector);\n  for (let i = 0; i < this.length; i += 1) {\n    if (after.length === 1) {\n      after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n    } else if (after.length > 1) {\n      for (let j = 0; j < after.length; j += 1) {\n        after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n      }\n    }\n  }\n}\nfunction next(selector) {\n  if (this.length > 0) {\n    if (selector) {\n      if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n        return new Dom7([this[0].nextElementSibling]);\n      }\n      return new Dom7([]);\n    }\n\n    if (this[0].nextElementSibling) return new Dom7([this[0].nextElementSibling]);\n    return new Dom7([]);\n  }\n  return new Dom7([]);\n}\nfunction nextAll(selector) {\n  const nextEls = [];\n  let el = this[0];\n  if (!el) return new Dom7([]);\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if ($(next).is(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return new Dom7(nextEls);\n}\nfunction prev(selector) {\n  if (this.length > 0) {\n    const el = this[0];\n    if (selector) {\n      if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n        return new Dom7([el.previousElementSibling]);\n      }\n      return new Dom7([]);\n    }\n\n    if (el.previousElementSibling) return new Dom7([el.previousElementSibling]);\n    return new Dom7([]);\n  }\n  return new Dom7([]);\n}\nfunction prevAll(selector) {\n  const prevEls = [];\n  let el = this[0];\n  if (!el) return new Dom7([]);\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if ($(prev).is(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return new Dom7(prevEls);\n}\nfunction siblings(selector) {\n  return this.nextAll(selector).add(this.prevAll(selector));\n}\nfunction parent(selector) {\n  const parents = []; // eslint-disable-line\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode !== null) {\n      if (selector) {\n        if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n      } else {\n        parents.push(this[i].parentNode);\n      }\n    }\n  }\n  return $(unique(parents));\n}\nfunction parents(selector) {\n  const parents = []; // eslint-disable-line\n  for (let i = 0; i < this.length; i += 1) {\n    let parent = this[i].parentNode; // eslint-disable-line\n    while (parent) {\n      if (selector) {\n        if ($(parent).is(selector)) parents.push(parent);\n      } else {\n        parents.push(parent);\n      }\n      parent = parent.parentNode;\n    }\n  }\n  return $(unique(parents));\n}\nfunction closest(selector) {\n  let closest = this; // eslint-disable-line\n  if (typeof selector === 'undefined') {\n    return new Dom7([]);\n  }\n  if (!closest.is(selector)) {\n    closest = closest.parents(selector).eq(0);\n  }\n  return closest;\n}\nfunction find(selector) {\n  const foundElements = [];\n  for (let i = 0; i < this.length; i += 1) {\n    const found = this[i].querySelectorAll(selector);\n    for (let j = 0; j < found.length; j += 1) {\n      foundElements.push(found[j]);\n    }\n  }\n  return new Dom7(foundElements);\n}\nfunction children(selector) {\n  const children = []; // eslint-disable-line\n  for (let i = 0; i < this.length; i += 1) {\n    const childNodes = this[i].childNodes;\n\n    for (let j = 0; j < childNodes.length; j += 1) {\n      if (!selector) {\n        if (childNodes[j].nodeType === 1) children.push(childNodes[j]);\n      } else if (childNodes[j].nodeType === 1 && $(childNodes[j]).is(selector)) {\n        children.push(childNodes[j]);\n      }\n    }\n  }\n  return new Dom7(unique(children));\n}\nfunction remove() {\n  for (let i = 0; i < this.length; i += 1) {\n    if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n  }\n  return this;\n}\nfunction detach() {\n  return this.remove();\n}\nfunction add(...args) {\n  const dom = this;\n  let i;\n  let j;\n  for (i = 0; i < args.length; i += 1) {\n    const toAdd = $(args[i]);\n    for (j = 0; j < toAdd.length; j += 1) {\n      dom[dom.length] = toAdd[j];\n      dom.length += 1;\n    }\n  }\n  return dom;\n}\nfunction empty() {\n  for (let i = 0; i < this.length; i += 1) {\n    const el = this[i];\n    if (el.nodeType === 1) {\n      for (let j = 0; j < el.childNodes.length; j += 1) {\n        if (el.childNodes[j].parentNode) {\n          el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n        }\n      }\n      el.textContent = '';\n    }\n  }\n  return this;\n}\n\nfunction scrollTo(...args) {\n  let [left, top, duration, easing, callback] = args;\n  if (args.length === 4 && typeof easing === 'function') {\n    callback = easing;\n    [left, top, duration, callback, easing] = args;\n  }\n  if (typeof easing === 'undefined') easing = 'swing';\n\n  return this.each(function animate() {\n    const el = this;\n    let currentTop;\n    let currentLeft;\n    let maxTop;\n    let maxLeft;\n    let newTop;\n    let newLeft;\n    let scrollTop; // eslint-disable-line\n    let scrollLeft; // eslint-disable-line\n    let animateTop = top > 0 || top === 0;\n    let animateLeft = left > 0 || left === 0;\n    if (typeof easing === 'undefined') {\n      easing = 'swing';\n    }\n    if (animateTop) {\n      currentTop = el.scrollTop;\n      if (!duration) {\n        el.scrollTop = top;\n      }\n    }\n    if (animateLeft) {\n      currentLeft = el.scrollLeft;\n      if (!duration) {\n        el.scrollLeft = left;\n      }\n    }\n    if (!duration) return;\n    if (animateTop) {\n      maxTop = el.scrollHeight - el.offsetHeight;\n      newTop = Math.max(Math.min(top, maxTop), 0);\n    }\n    if (animateLeft) {\n      maxLeft = el.scrollWidth - el.offsetWidth;\n      newLeft = Math.max(Math.min(left, maxLeft), 0);\n    }\n    let startTime = null;\n    if (animateTop && newTop === currentTop) animateTop = false;\n    if (animateLeft && newLeft === currentLeft) animateLeft = false;\n    function render(time = new Date().getTime()) {\n      if (startTime === null) {\n        startTime = time;\n      }\n      const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n      const easeProgress = easing === 'linear' ? progress : (0.5 - (Math.cos(progress * Math.PI) / 2));\n      let done;\n      if (animateTop) scrollTop = currentTop + (easeProgress * (newTop - currentTop));\n      if (animateLeft) scrollLeft = currentLeft + (easeProgress * (newLeft - currentLeft));\n      if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n      if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n        el.scrollTop = newTop;\n        done = true;\n      }\n      if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n      if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n        el.scrollLeft = newLeft;\n        done = true;\n      }\n\n      if (done) {\n        if (callback) callback();\n        return;\n      }\n      if (animateTop) el.scrollTop = scrollTop;\n      if (animateLeft) el.scrollLeft = scrollLeft;\n      requestAnimationFrame(render);\n    }\n    requestAnimationFrame(render);\n  });\n}\n// scrollTop(top, duration, easing, callback) {\nfunction scrollTop(...args) {\n  let [top, duration, easing, callback] = args;\n  if (args.length === 3 && typeof easing === 'function') {\n    [top, duration, callback, easing] = args;\n  }\n  const dom = this;\n  if (typeof top === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollTop;\n    return null;\n  }\n  return dom.scrollTo(undefined, top, duration, easing, callback);\n}\nfunction scrollLeft(...args) {\n  let [left, duration, easing, callback] = args;\n  if (args.length === 3 && typeof easing === 'function') {\n    [left, duration, callback, easing] = args;\n  }\n  const dom = this;\n  if (typeof left === 'undefined') {\n    if (dom.length > 0) return dom[0].scrollLeft;\n    return null;\n  }\n  return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\nfunction animate(initialProps, initialParams) {\n  const els = this;\n  const a = {\n    props: Object.assign({}, initialProps),\n    params: Object.assign({\n      duration: 300,\n      easing: 'swing', // or 'linear'\n      /* Callbacks\n      begin(elements)\n      complete(elements)\n      progress(elements, complete, remaining, start, tweenValue)\n      */\n    }, initialParams),\n\n    elements: els,\n    animating: false,\n    que: [],\n\n    easingProgress(easing, progress) {\n      if (easing === 'swing') {\n        return 0.5 - (Math.cos(progress * Math.PI) / 2);\n      }\n      if (typeof easing === 'function') {\n        return easing(progress);\n      }\n      return progress;\n    },\n    stop() {\n      if (a.frameId) {\n        cancelAnimationFrame(a.frameId);\n      }\n      a.animating = false;\n      a.elements.each((index, el) => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      a.que = [];\n    },\n    done(complete) {\n      a.animating = false;\n      a.elements.each((index, el) => {\n        const element = el;\n        delete element.dom7AnimateInstance;\n      });\n      if (complete) complete(els);\n      if (a.que.length > 0) {\n        const que = a.que.shift();\n        a.animate(que[0], que[1]);\n      }\n    },\n    animate(props, params) {\n      if (a.animating) {\n        a.que.push([props, params]);\n        return a;\n      }\n      const elements = [];\n\n      // Define & Cache Initials & Units\n      a.elements.each((index, el) => {\n        let initialFullValue;\n        let initialValue;\n        let unit;\n        let finalValue;\n        let finalFullValue;\n\n        if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n\n        elements[index] = {\n          container: el,\n        };\n        Object.keys(props).forEach((prop) => {\n          initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n          initialValue = parseFloat(initialFullValue);\n          unit = initialFullValue.replace(initialValue, '');\n          finalValue = parseFloat(props[prop]);\n          finalFullValue = props[prop] + unit;\n          elements[index][prop] = {\n            initialFullValue,\n            initialValue,\n            unit,\n            finalValue,\n            finalFullValue,\n            currentValue: initialValue,\n          };\n        });\n      });\n\n      let startTime = null;\n      let time;\n      let elementsDone = 0;\n      let propsDone = 0;\n      let done;\n      let began = false;\n\n      a.animating = true;\n\n      function render() {\n        time = new Date().getTime();\n        let progress;\n        let easeProgress;\n        // let el;\n        if (!began) {\n          began = true;\n          if (params.begin) params.begin(els);\n        }\n        if (startTime === null) {\n          startTime = time;\n        }\n        if (params.progress) {\n          // eslint-disable-next-line\n          params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), ((startTime + params.duration) - time < 0 ? 0 : (startTime + params.duration) - time), startTime);\n        }\n\n        elements.forEach((element) => {\n          const el = element;\n          if (done || el.done) return;\n          Object.keys(props).forEach((prop) => {\n            if (done || el.done) return;\n            progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n            easeProgress = a.easingProgress(params.easing, progress);\n            const { initialValue, finalValue, unit } = el[prop];\n            el[prop].currentValue = initialValue + (easeProgress * (finalValue - initialValue));\n            const currentValue = el[prop].currentValue;\n\n            if (\n              (finalValue > initialValue && currentValue >= finalValue) ||\n              (finalValue < initialValue && currentValue <= finalValue)) {\n              el.container.style[prop] = finalValue + unit;\n              propsDone += 1;\n              if (propsDone === Object.keys(props).length) {\n                el.done = true;\n                elementsDone += 1;\n              }\n              if (elementsDone === elements.length) {\n                done = true;\n              }\n            }\n            if (done) {\n              a.done(params.complete);\n              return;\n            }\n            el.container.style[prop] = currentValue + unit;\n          });\n        });\n        if (done) return;\n        // Then call\n        a.frameId = requestAnimationFrame(render);\n      }\n      a.frameId = requestAnimationFrame(render);\n      return a;\n    },\n  };\n\n  if (a.elements.length === 0) {\n    return els;\n  }\n\n  let animateInstance;\n  for (let i = 0; i < a.elements.length; i += 1) {\n    if (a.elements[i].dom7AnimateInstance) {\n      animateInstance = a.elements[i].dom7AnimateInstance;\n    } else a.elements[i].dom7AnimateInstance = a;\n  }\n  if (!animateInstance) {\n    animateInstance = a;\n  }\n\n  if (initialProps === 'stop') {\n    animateInstance.stop();\n  } else {\n    animateInstance.animate(a.props, a.params);\n  }\n\n  return els;\n}\n\nfunction stop() {\n  const els = this;\n  for (let i = 0; i < els.length; i += 1) {\n    if (els[i].dom7AnimateInstance) {\n      els[i].dom7AnimateInstance.stop();\n    }\n  }\n}\n\nconst noTrigger = ('resize scroll').split(' ');\nfunction eventShortcut(name, ...args) {\n  if (typeof args[0] === 'undefined') {\n    for (let i = 0; i < this.length; i += 1) {\n      if (noTrigger.indexOf(name) < 0) {\n        if (name in this[i]) this[i][name]();\n        else {\n          $(this[i]).trigger(name);\n        }\n      }\n    }\n    return this;\n  }\n  return this.on(name, ...args);\n}\n\nfunction click(...args) {\n  return eventShortcut.bind(this)('click', ...args);\n}\nfunction blur(...args) {\n  return eventShortcut.bind(this)('blur', ...args);\n}\nfunction focus(...args) {\n  return eventShortcut.bind(this)('focus', ...args);\n}\nfunction focusin(...args) {\n  return eventShortcut.bind(this)('focusin', ...args);\n}\nfunction focusout(...args) {\n  return eventShortcut.bind(this)('focusout', ...args);\n}\nfunction keyup(...args) {\n  return eventShortcut.bind(this)('keyup', ...args);\n}\nfunction keydown(...args) {\n  return eventShortcut.bind(this)('keydown', ...args);\n}\nfunction keypress(...args) {\n  return eventShortcut.bind(this)('keypress', ...args);\n}\nfunction submit(...args) {\n  return eventShortcut.bind(this)('submit', ...args);\n}\nfunction change(...args) {\n  return eventShortcut.bind(this)('change', ...args);\n}\nfunction mousedown(...args) {\n  return eventShortcut.bind(this)('mousedown', ...args);\n}\nfunction mousemove(...args) {\n  return eventShortcut.bind(this)('mousemove', ...args);\n}\nfunction mouseup(...args) {\n  return eventShortcut.bind(this)('mouseup', ...args);\n}\nfunction mouseenter(...args) {\n  return eventShortcut.bind(this)('mouseenter', ...args);\n}\nfunction mouseleave(...args) {\n  return eventShortcut.bind(this)('mouseleave', ...args);\n}\nfunction mouseout(...args) {\n  return eventShortcut.bind(this)('mouseout', ...args);\n}\nfunction mouseover(...args) {\n  return eventShortcut.bind(this)('mouseover', ...args);\n}\nfunction touchstart(...args) {\n  return eventShortcut.bind(this)('touchstart', ...args);\n}\nfunction touchend(...args) {\n  return eventShortcut.bind(this)('touchend', ...args);\n}\nfunction touchmove(...args) {\n  return eventShortcut.bind(this)('touchmove', ...args);\n}\nfunction resize(...args) {\n  return eventShortcut.bind(this)('resize', ...args);\n}\nfunction scroll(...args) {\n  return eventShortcut.bind(this)('scroll', ...args);\n}\n\nexport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, prop, data, removeData, dataset, val, transform, transition, on, off, once, trigger, transitionEnd, animationEnd, width, outerWidth, height, outerHeight, offset, hide, show, styles, css, toArray, each, forEach, filter, map, html, text, is, indexOf, index, eq, append, appendTo, prepend, prependTo, insertBefore, insertAfter, next, nextAll, prev, prevAll, siblings, parent, parents, closest, find, children, remove, detach, add, empty, scrollTo, scrollTop, scrollLeft, animate, stop, click, blur, focus, focusin, focusout, keyup, keydown, keypress, submit, change, mousedown, mousemove, mouseup, mouseenter, mouseleave, mouseout, mouseover, touchstart, touchend, touchmove, resize, scroll };\n","/**\n * Swiper 5.4.5\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * http://swiperjs.com\n *\n * Copyright 2014-2020 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: June 16, 2020\n */\n\nimport { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, data, transform, transition as transition$1, on, off, trigger, transitionEnd as transitionEnd$1, outerWidth, outerHeight, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove, add, styles } from 'dom7/dist/dom7.modular';\nimport { window, document as document$1 } from 'ssr-window';\n\nconst Methods = {\n  addClass,\n  removeClass,\n  hasClass,\n  toggleClass,\n  attr,\n  removeAttr,\n  data,\n  transform,\n  transition: transition$1,\n  on,\n  off,\n  trigger,\n  transitionEnd: transitionEnd$1,\n  outerWidth,\n  outerHeight,\n  offset,\n  css,\n  each,\n  html,\n  text,\n  is,\n  index,\n  eq,\n  append,\n  prepend,\n  next,\n  nextAll,\n  prev,\n  prevAll,\n  parent,\n  parents,\n  closest,\n  find,\n  children,\n  filter,\n  remove,\n  add,\n  styles,\n};\n\nObject.keys(Methods).forEach((methodName) => {\n  $.fn[methodName] = $.fn[methodName] || Methods[methodName];\n});\n\nconst Utils = {\n  deleteProps(obj) {\n    const object = obj;\n    Object.keys(object).forEach((key) => {\n      try {\n        object[key] = null;\n      } catch (e) {\n        // no getter for object\n      }\n      try {\n        delete object[key];\n      } catch (e) {\n        // something got wrong\n      }\n    });\n  },\n  nextTick(callback, delay = 0) {\n    return setTimeout(callback, delay);\n  },\n  now() {\n    return Date.now();\n  },\n  getTranslate(el, axis = 'x') {\n    let matrix;\n    let curTransform;\n    let transformMatrix;\n\n    const curStyle = window.getComputedStyle(el, null);\n\n    if (window.WebKitCSSMatrix) {\n      curTransform = curStyle.transform || curStyle.webkitTransform;\n      if (curTransform.split(',').length > 6) {\n        curTransform = curTransform.split(', ').map((a) => a.replace(',', '.')).join(', ');\n      }\n      // Some old versions of Webkit choke when 'none' is passed; pass\n      // empty string instead in this case\n      transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n    } else {\n      transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n      matrix = transformMatrix.toString().split(',');\n    }\n\n    if (axis === 'x') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n      // Normal Browsers\n      else curTransform = parseFloat(matrix[4]);\n    }\n    if (axis === 'y') {\n      // Latest Chrome and webkits Fix\n      if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n      // Crazy IE10 Matrix\n      else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n      // Normal Browsers\n      else curTransform = parseFloat(matrix[5]);\n    }\n    return curTransform || 0;\n  },\n  parseUrlQuery(url) {\n    const query = {};\n    let urlToParse = url || window.location.href;\n    let i;\n    let params;\n    let param;\n    let length;\n    if (typeof urlToParse === 'string' && urlToParse.length) {\n      urlToParse = urlToParse.indexOf('?') > -1 ? urlToParse.replace(/\\S*\\?/, '') : '';\n      params = urlToParse.split('&').filter((paramsPart) => paramsPart !== '');\n      length = params.length;\n\n      for (i = 0; i < length; i += 1) {\n        param = params[i].replace(/#\\S+/g, '').split('=');\n        query[decodeURIComponent(param[0])] = typeof param[1] === 'undefined' ? undefined : decodeURIComponent(param[1]) || '';\n      }\n    }\n    return query;\n  },\n  isObject(o) {\n    return typeof o === 'object' && o !== null && o.constructor && o.constructor === Object;\n  },\n  extend(...args) {\n    const to = Object(args[0]);\n    for (let i = 1; i < args.length; i += 1) {\n      const nextSource = args[i];\n      if (nextSource !== undefined && nextSource !== null) {\n        const keysArray = Object.keys(Object(nextSource));\n        for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n          const nextKey = keysArray[nextIndex];\n          const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n          if (desc !== undefined && desc.enumerable) {\n            if (Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else if (!Utils.isObject(to[nextKey]) && Utils.isObject(nextSource[nextKey])) {\n              to[nextKey] = {};\n              Utils.extend(to[nextKey], nextSource[nextKey]);\n            } else {\n              to[nextKey] = nextSource[nextKey];\n            }\n          }\n        }\n      }\n    }\n    return to;\n  },\n};\n\nconst Support = (function Support() {\n  return {\n    touch: !!(('ontouchstart' in window) || (window.DocumentTouch && document$1 instanceof window.DocumentTouch)),\n\n    pointerEvents: !!window.PointerEvent && ('maxTouchPoints' in window.navigator) && window.navigator.maxTouchPoints >= 0,\n\n    observer: (function checkObserver() {\n      return ('MutationObserver' in window || 'WebkitMutationObserver' in window);\n    }()),\n\n    passiveListener: (function checkPassiveListener() {\n      let supportsPassive = false;\n      try {\n        const opts = Object.defineProperty({}, 'passive', {\n          // eslint-disable-next-line\n          get() {\n            supportsPassive = true;\n          },\n        });\n        window.addEventListener('testPassiveListener', null, opts);\n      } catch (e) {\n        // No support\n      }\n      return supportsPassive;\n    }()),\n\n    gestures: (function checkGestures() {\n      return 'ongesturestart' in window;\n    }()),\n  };\n}());\n\nclass SwiperClass {\n  constructor(params = {}) {\n    const self = this;\n    self.params = params;\n\n    // Events\n    self.eventsListeners = {};\n\n    if (self.params && self.params.on) {\n      Object.keys(self.params.on).forEach((eventName) => {\n        self.on(eventName, self.params.on[eventName]);\n      });\n    }\n  }\n\n  on(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach((event) => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  }\n\n  once(events, handler, priority) {\n    const self = this;\n    if (typeof handler !== 'function') return self;\n    function onceHandler(...args) {\n      self.off(events, onceHandler);\n      if (onceHandler.f7proxy) {\n        delete onceHandler.f7proxy;\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.f7proxy = handler;\n    return self.on(events, onceHandler, priority);\n  }\n\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach((event) => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event] && self.eventsListeners[event].length) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || (eventHandler.f7proxy && eventHandler.f7proxy === handler)) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  }\n\n  emit(...args) {\n    const self = this;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach((event) => {\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        const handlers = [];\n        self.eventsListeners[event].forEach((eventHandler) => {\n          handlers.push(eventHandler);\n        });\n        handlers.forEach((eventHandler) => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n\n  useModulesParams(instanceParams) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      // Extend params\n      if (module.params) {\n        Utils.extend(instanceParams, module.params);\n      }\n    });\n  }\n\n  useModules(modulesParams = {}) {\n    const instance = this;\n    if (!instance.modules) return;\n    Object.keys(instance.modules).forEach((moduleName) => {\n      const module = instance.modules[moduleName];\n      const moduleParams = modulesParams[moduleName] || {};\n      // Extend instance methods and props\n      if (module.instance) {\n        Object.keys(module.instance).forEach((modulePropName) => {\n          const moduleProp = module.instance[modulePropName];\n          if (typeof moduleProp === 'function') {\n            instance[modulePropName] = moduleProp.bind(instance);\n          } else {\n            instance[modulePropName] = moduleProp;\n          }\n        });\n      }\n      // Add event listeners\n      if (module.on && instance.on) {\n        Object.keys(module.on).forEach((moduleEventName) => {\n          instance.on(moduleEventName, module.on[moduleEventName]);\n        });\n      }\n\n      // Module create callback\n      if (module.create) {\n        module.create.bind(instance)(moduleParams);\n      }\n    });\n  }\n\n  static set components(components) {\n    const Class = this;\n    if (!Class.use) return;\n    Class.use(components);\n  }\n\n  static installModule(module, ...params) {\n    const Class = this;\n    if (!Class.prototype.modules) Class.prototype.modules = {};\n    const name = module.name || (`${Object.keys(Class.prototype.modules).length}_${Utils.now()}`);\n    Class.prototype.modules[name] = module;\n    // Prototype\n    if (module.proto) {\n      Object.keys(module.proto).forEach((key) => {\n        Class.prototype[key] = module.proto[key];\n      });\n    }\n    // Class\n    if (module.static) {\n      Object.keys(module.static).forEach((key) => {\n        Class[key] = module.static[key];\n      });\n    }\n    // Callback\n    if (module.install) {\n      module.install.apply(Class, params);\n    }\n    return Class;\n  }\n\n  static use(module, ...params) {\n    const Class = this;\n    if (Array.isArray(module)) {\n      module.forEach((m) => Class.installModule(m));\n      return Class;\n    }\n    return Class.installModule(module, ...params);\n  }\n}\n\nfunction updateSize () {\n  const swiper = this;\n  let width;\n  let height;\n  const $el = swiper.$el;\n  if (typeof swiper.params.width !== 'undefined') {\n    width = swiper.params.width;\n  } else {\n    width = $el[0].clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined') {\n    height = swiper.params.height;\n  } else {\n    height = $el[0].clientHeight;\n  }\n  if ((width === 0 && swiper.isHorizontal()) || (height === 0 && swiper.isVertical())) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt($el.css('padding-left'), 10) - parseInt($el.css('padding-right'), 10);\n  height = height - parseInt($el.css('padding-top'), 10) - parseInt($el.css('padding-bottom'), 10);\n\n  Utils.extend(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height,\n  });\n}\n\nfunction updateSlides () {\n  const swiper = this;\n  const params = swiper.params;\n\n  const {\n    $wrapperEl, size: swiperSize, rtlTranslate: rtl, wrongRTL,\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n\n  function slidesForMargin(slideIndex) {\n    if (!params.cssMode) return true;\n    if (slideIndex === slides.length - 1) {\n      return false;\n    }\n    return true;\n  }\n\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.snapGrid.length;\n\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = (parseFloat(spaceBetween.replace('%', '')) / 100) * swiperSize;\n  }\n\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  if (rtl) slides.css({ marginLeft: '', marginTop: '' });\n  else slides.css({ marginRight: '', marginBottom: '' });\n\n  let slidesNumberEvenToRows;\n  if (params.slidesPerColumn > 1) {\n    if (Math.floor(slidesLength / params.slidesPerColumn) === slidesLength / swiper.params.slidesPerColumn) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / params.slidesPerColumn) * params.slidesPerColumn;\n    }\n    if (params.slidesPerView !== 'auto' && params.slidesPerColumnFill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, params.slidesPerView * params.slidesPerColumn);\n    }\n  }\n\n  // Calc slides\n  let slideSize;\n  const slidesPerColumn = params.slidesPerColumn;\n  const slidesPerRow = slidesNumberEvenToRows / slidesPerColumn;\n  const numFullColumns = Math.floor(slidesLength / params.slidesPerColumn);\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    const slide = slides.eq(i);\n    if (params.slidesPerColumn > 1) {\n      // Set slides order\n      let newSlideOrderIndex;\n      let column;\n      let row;\n      if (params.slidesPerColumnFill === 'row' && params.slidesPerGroup > 1) {\n        const groupIndex = Math.floor(i / (params.slidesPerGroup * params.slidesPerColumn));\n        const slideIndexInGroup = i - params.slidesPerColumn * params.slidesPerGroup * groupIndex;\n        const columnsInGroup = groupIndex === 0\n          ? params.slidesPerGroup\n          : Math.min(Math.ceil((slidesLength - groupIndex * slidesPerColumn * params.slidesPerGroup) / slidesPerColumn), params.slidesPerGroup);\n        row = Math.floor(slideIndexInGroup / columnsInGroup);\n        column = (slideIndexInGroup - row * columnsInGroup) + groupIndex * params.slidesPerGroup;\n\n        newSlideOrderIndex = column + ((row * slidesNumberEvenToRows) / slidesPerColumn);\n        slide\n          .css({\n            '-webkit-box-ordinal-group': newSlideOrderIndex,\n            '-moz-box-ordinal-group': newSlideOrderIndex,\n            '-ms-flex-order': newSlideOrderIndex,\n            '-webkit-order': newSlideOrderIndex,\n            order: newSlideOrderIndex,\n          });\n      } else if (params.slidesPerColumnFill === 'column') {\n        column = Math.floor(i / slidesPerColumn);\n        row = i - (column * slidesPerColumn);\n        if (column > numFullColumns || (column === numFullColumns && row === slidesPerColumn - 1)) {\n          row += 1;\n          if (row >= slidesPerColumn) {\n            row = 0;\n            column += 1;\n          }\n        }\n      } else {\n        row = Math.floor(i / slidesPerRow);\n        column = i - (row * slidesPerRow);\n      }\n      slide.css(\n        `margin-${swiper.isHorizontal() ? 'top' : 'left'}`,\n        (row !== 0 && params.spaceBetween) && (`${params.spaceBetween}px`)\n      );\n    }\n    if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      const slideStyles = window.getComputedStyle(slide[0], null);\n      const currentTransform = slide[0].style.transform;\n      const currentWebKitTransform = slide[0].style.webkitTransform;\n      if (currentTransform) {\n        slide[0].style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal()\n          ? slide.outerWidth(true)\n          : slide.outerHeight(true);\n      } else {\n        // eslint-disable-next-line\n        if (swiper.isHorizontal()) {\n          const width = parseFloat(slideStyles.getPropertyValue('width'));\n          const paddingLeft = parseFloat(slideStyles.getPropertyValue('padding-left'));\n          const paddingRight = parseFloat(slideStyles.getPropertyValue('padding-right'));\n          const marginLeft = parseFloat(slideStyles.getPropertyValue('margin-left'));\n          const marginRight = parseFloat(slideStyles.getPropertyValue('margin-right'));\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = width + marginLeft + marginRight;\n          } else {\n            slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight;\n          }\n        } else {\n          const height = parseFloat(slideStyles.getPropertyValue('height'));\n          const paddingTop = parseFloat(slideStyles.getPropertyValue('padding-top'));\n          const paddingBottom = parseFloat(slideStyles.getPropertyValue('padding-bottom'));\n          const marginTop = parseFloat(slideStyles.getPropertyValue('margin-top'));\n          const marginBottom = parseFloat(slideStyles.getPropertyValue('margin-bottom'));\n          const boxSizing = slideStyles.getPropertyValue('box-sizing');\n          if (boxSizing && boxSizing === 'border-box') {\n            slideSize = height + marginTop + marginBottom;\n          } else {\n            slideSize = height + paddingTop + paddingBottom + marginTop + marginBottom;\n          }\n        }\n      }\n      if (currentTransform) {\n        slide[0].style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide[0].style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - ((params.slidesPerView - 1) * spaceBetween)) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n      if (slides[i]) {\n        if (swiper.isHorizontal()) {\n          slides[i].style.width = `${slideSize}px`;\n        } else {\n          slides[i].style.height = `${slideSize}px`;\n        }\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n\n\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + (slideSize / 2) + (prevSlideSize / 2) + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - (swiperSize / 2) - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index) % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n\n    swiper.virtualSize += slideSize + spaceBetween;\n\n    prevSlideSize = slideSize;\n\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  let newSlidesGrid;\n\n  if (\n    rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n  if (params.setWrapperSize) {\n    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n  }\n\n  if (params.slidesPerColumn > 1) {\n    swiper.virtualSize = (slideSize + params.spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / params.slidesPerColumn) - params.spaceBetween;\n    if (swiper.isHorizontal()) $wrapperEl.css({ width: `${swiper.virtualSize + params.spaceBetween}px` });\n    else $wrapperEl.css({ height: `${swiper.virtualSize + params.spaceBetween}px` });\n    if (params.centeredSlides) {\n      newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid = newSlidesGrid;\n    }\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n\n  if (params.spaceBetween !== 0) {\n    if (swiper.isHorizontal()) {\n      if (rtl) slides.filter(slidesForMargin).css({ marginLeft: `${spaceBetween}px` });\n      else slides.filter(slidesForMargin).css({ marginRight: `${spaceBetween}px` });\n    } else slides.filter(slidesForMargin).css({ marginBottom: `${spaceBetween}px` });\n  }\n\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map((snap) => {\n      if (snap < 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach((slideSizeValue) => {\n      allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n    });\n    allSlidesSize -= params.spaceBetween;\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n\n  Utils.extend(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid,\n  });\n\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateSlidesOffset();\n  }\n}\n\nfunction updateAutoHeight (speed) {\n  const swiper = this;\n  const activeSlides = [];\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      swiper.visibleSlides.each((index, slide) => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length) break;\n        activeSlides.push(swiper.slides.eq(index)[0]);\n      }\n    }\n  } else {\n    activeSlides.push(swiper.slides.eq(swiper.activeIndex)[0]);\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}\n\nfunction updateSlidesOffset () {\n  const swiper = this;\n  const slides = swiper.slides;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n  }\n}\n\nfunction updateSlidesProgress (translate = (this && this.translate) || 0) {\n  const swiper = this;\n  const params = swiper.params;\n\n  const { slides, rtlTranslate: rtl } = swiper;\n\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n\n  // Visible Slides\n  slides.removeClass(params.slideVisibleClass);\n\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    const slideProgress = (\n      (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0)) - slide.swiperSlideOffset\n    ) / (slide.swiperSlideSize + params.spaceBetween);\n    if (params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) {\n      const slideBefore = -(offsetCenter - slide.swiperSlideOffset);\n      const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n      const isVisible = (slideBefore >= 0 && slideBefore < swiper.size - 1)\n                || (slideAfter > 1 && slideAfter <= swiper.size)\n                || (slideBefore <= 0 && slideAfter >= swiper.size);\n      if (isVisible) {\n        swiper.visibleSlides.push(slide);\n        swiper.visibleSlidesIndexes.push(i);\n        slides.eq(i).addClass(params.slideVisibleClass);\n      }\n    }\n    slide.progress = rtl ? -slideProgress : slideProgress;\n  }\n  swiper.visibleSlides = $(swiper.visibleSlides);\n}\n\nfunction updateProgress (translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = (swiper && swiper.translate && (swiper.translate * multiplier)) || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let { progress, isBeginning, isEnd } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / (translatesDiff);\n    isBeginning = progress <= 0;\n    isEnd = progress >= 1;\n  }\n  Utils.extend(swiper, {\n    progress,\n    isBeginning,\n    isEnd,\n  });\n\n  if (params.watchSlidesProgress || params.watchSlidesVisibility || (params.centeredSlides && params.autoHeight)) swiper.updateSlidesProgress(translate);\n\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if ((wasBeginning && !isBeginning) || (wasEnd && !isEnd)) {\n    swiper.emit('fromEdge');\n  }\n\n  swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses () {\n  const swiper = this;\n\n  const {\n    slides, params, $wrapperEl, activeIndex, realIndex,\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n\n  slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n\n  let activeSlide;\n  if (isVirtual) {\n    activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n  } else {\n    activeSlide = slides.eq(activeIndex);\n  }\n\n  // Active classes\n  activeSlide.addClass(params.slideActiveClass);\n\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (activeSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`)\n        .addClass(params.slideDuplicateActiveClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`)\n        .addClass(params.slideDuplicateActiveClass);\n    }\n  }\n  // Next Slide\n  let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n  if (params.loop && nextSlide.length === 0) {\n    nextSlide = slides.eq(0);\n    nextSlide.addClass(params.slideNextClass);\n  }\n  // Prev Slide\n  let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n  if (params.loop && prevSlide.length === 0) {\n    prevSlide = slides.eq(-1);\n    prevSlide.addClass(params.slidePrevClass);\n  }\n  if (params.loop) {\n    // Duplicate to all looped slides\n    if (nextSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicateNextClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicateNextClass);\n    }\n    if (prevSlide.hasClass(params.slideDuplicateClass)) {\n      $wrapperEl\n        .children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicatePrevClass);\n    } else {\n      $wrapperEl\n        .children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`)\n        .addClass(params.slideDuplicatePrevClass);\n    }\n  }\n}\n\nfunction updateActiveIndex (newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    slidesGrid, snapGrid, params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex,\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  if (typeof activeIndex === 'undefined') {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - ((slidesGrid[i + 1] - slidesGrid[i]) / 2)) {\n          activeIndex = i;\n        } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n          activeIndex = i + 1;\n        }\n      } else if (translate >= slidesGrid[i]) {\n        activeIndex = i;\n      }\n    }\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) {\n      if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n    }\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    return;\n  }\n\n  // Get real index\n  const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n\n  Utils.extend(swiper, {\n    snapIndex,\n    realIndex,\n    previousIndex,\n    activeIndex,\n  });\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    swiper.emit('slideChange');\n  }\n}\n\nfunction updateClickedSlide (e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = $(e.target).closest(`.${params.slideClass}`)[0];\n  let slideFound = false;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) slideFound = true;\n    }\n  }\n\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = $(slide).index();\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n\nvar update = {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide,\n};\n\nfunction getTranslate (axis = this.isHorizontal() ? 'x' : 'y') {\n  const swiper = this;\n\n  const {\n    params, rtlTranslate: rtl, translate, $wrapperEl,\n  } = swiper;\n\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n\n  let currentTranslate = Utils.getTranslate($wrapperEl[0], axis);\n  if (rtl) currentTranslate = -currentTranslate;\n\n  return currentTranslate || 0;\n}\n\nfunction setTranslate (translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl, params, $wrapperEl, wrapperEl, progress,\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / (translatesDiff);\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate () {\n  return (-this.snapGrid[0]);\n}\n\nfunction maxTranslate () {\n  return (-this.snapGrid[this.snapGrid.length - 1]);\n}\n\nfunction translateTo (translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n  const swiper = this;\n\n  const {\n    params,\n    wrapperEl,\n  } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n  else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n  else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      // eslint-disable-next-line\n      if (wrapperEl.scrollTo) {\n        wrapperEl.scrollTo({\n          [isH ? 'left' : 'top']: -newTranslate,\n          behavior: 'smooth',\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n      }\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n\nvar translate = {\n  getTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo,\n};\n\nfunction setTransition (duration, byController) {\n  const swiper = this;\n\n  if (!swiper.params.cssMode) {\n    swiper.$wrapperEl.transition(duration);\n  }\n\n  swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionStart (runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, params, previousIndex } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionStart');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionStart');\n      return;\n    }\n    swiper.emit('slideChangeTransitionStart');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionStart');\n    } else {\n      swiper.emit('slidePrevTransitionStart');\n    }\n  }\n}\n\nfunction transitionEnd (runCallbacks = true, direction) {\n  const swiper = this;\n  const { activeIndex, previousIndex, params } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';\n    else if (activeIndex < previousIndex) dir = 'prev';\n    else dir = 'reset';\n  }\n\n  swiper.emit('transitionEnd');\n\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit('slideResetTransitionEnd');\n      return;\n    }\n    swiper.emit('slideChangeTransitionEnd');\n    if (dir === 'next') {\n      swiper.emit('slideNextTransitionEnd');\n    } else {\n      swiper.emit('slidePrevTransitionEnd');\n    }\n  }\n}\n\nvar transition = {\n  setTransition,\n  transitionStart,\n  transitionEnd,\n};\n\nfunction slideTo (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n\n  const {\n    params, snapGrid, slidesGrid, previousIndex, activeIndex, rtlTranslate: rtl, wrapperEl,\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n  if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  const translate = -snapGrid[snapIndex];\n\n  // Update progress\n  swiper.updateProgress(translate);\n\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      if (-Math.floor(translate * 100) >= Math.floor(slidesGrid[i] * 100)) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) return false;\n    }\n  }\n\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';\n  else if (slideIndex < activeIndex) direction = 'prev';\n  else direction = 'reset';\n\n\n  // Update Index\n  if ((rtl && -translate === swiper.translate) || (!rtl && translate === swiper.translate)) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    let t = -translate;\n    if (rtl) {\n      t = wrapperEl.scrollWidth - wrapperEl.offsetWidth - t;\n    }\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n    } else {\n      // eslint-disable-next-line\n      if (wrapperEl.scrollTo) {\n        wrapperEl.scrollTo({\n          [isH ? 'left' : 'top']: t,\n          behavior: 'smooth',\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n    }\n    return true;\n  }\n\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    swiper.transitionEnd(runCallbacks, direction);\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit('beforeTransitionStart', speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onSlideToWrapperTransitionEnd) {\n        swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n          swiper.onSlideToWrapperTransitionEnd = null;\n          delete swiper.onSlideToWrapperTransitionEnd;\n          swiper.transitionEnd(runCallbacks, direction);\n        };\n      }\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n    }\n  }\n\n  return true;\n}\n\nfunction slideToLoop (index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    newIndex += swiper.loopedSlides;\n  }\n\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const { params, animating } = swiper;\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup;\n  if (params.loop) {\n    if (animating) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  const {\n    params, animating, snapGrid, slidesGrid, rtlTranslate,\n  } = swiper;\n\n  if (params.loop) {\n    if (animating) return false;\n    swiper.loopFix();\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));\n  const normalizedSlidesGrid = slidesGrid.map((val) => normalize(val));\n\n  const currentSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate)];\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    snapGrid.forEach((snap) => {\n      if (!prevSnap && normalizedTranslate >= snap) prevSnap = snap;\n    });\n  }\n  let prevIndex;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset (speed = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest (speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if ((translate - currentSnap) > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if ((translate - prevSnap) <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide () {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (\n        (slideToIndex < swiper.loopedSlides - (slidesPerView / 2))\n        || (slideToIndex > (swiper.slides.length - swiper.loopedSlides) + (slidesPerView / 2))\n      ) {\n        swiper.loopFix();\n        slideToIndex = $wrapperEl\n          .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n          .eq(0)\n          .index();\n\n        Utils.nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = $wrapperEl\n        .children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`)\n        .eq(0)\n        .index();\n\n      Utils.nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n\nvar slide = {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide,\n};\n\nfunction loopCreate () {\n  const swiper = this;\n  const { params, $wrapperEl } = swiper;\n  // Remove duplicated slides\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n\n  let slides = $wrapperEl.children(`.${params.slideClass}`);\n\n  if (params.loopFillGroupWithBlank) {\n    const blankSlidesNum = params.slidesPerGroup - (slides.length % params.slidesPerGroup);\n    if (blankSlidesNum !== params.slidesPerGroup) {\n      for (let i = 0; i < blankSlidesNum; i += 1) {\n        const blankNode = $(document$1.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n        $wrapperEl.append(blankNode);\n      }\n      slides = $wrapperEl.children(`.${params.slideClass}`);\n    }\n  }\n\n  if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n\n  swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n  swiper.loopedSlides += params.loopAdditionalSlides;\n  if (swiper.loopedSlides > slides.length) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((index, el) => {\n    const slide = $(el);\n    if (index < swiper.loopedSlides) appendSlides.push(el);\n    if (index < slides.length && index >= slides.length - swiper.loopedSlides) prependSlides.push(el);\n    slide.attr('data-swiper-slide-index', index);\n  });\n  for (let i = 0; i < appendSlides.length; i += 1) {\n    $wrapperEl.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n  for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n    $wrapperEl.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n  }\n}\n\nfunction loopFix () {\n  const swiper = this;\n\n  swiper.emit('beforeLoopFix');\n\n  const {\n    activeIndex, slides, loopedSlides, allowSlidePrev, allowSlideNext, snapGrid, rtlTranslate: rtl,\n  } = swiper;\n  let newIndex;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n\n  const snapTranslate = -snapGrid[activeIndex];\n  const diff = snapTranslate - swiper.getTranslate();\n\n  // Fix For Negative Oversliding\n  if (activeIndex < loopedSlides) {\n    newIndex = (slides.length - (loopedSlides * 3)) + activeIndex;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  } else if (activeIndex >= slides.length - loopedSlides) {\n    // Fix For Positive Oversliding\n    newIndex = -slides.length + activeIndex + loopedSlides;\n    newIndex += loopedSlides;\n    const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n    if (slideChanged && diff !== 0) {\n      swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  swiper.emit('loopFix');\n}\n\nfunction loopDestroy () {\n  const swiper = this;\n  const { $wrapperEl, params, slides } = swiper;\n  $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n  slides.removeAttr('data-swiper-slide-index');\n}\n\nvar loop = {\n  loopCreate,\n  loopFix,\n  loopDestroy,\n};\n\nfunction setGrabCursor (moving) {\n  const swiper = this;\n  if (Support.touch || !swiper.params.simulateTouch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n  const el = swiper.el;\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? '-webkit-grabbing' : '-webkit-grab';\n  el.style.cursor = moving ? '-moz-grabbin' : '-moz-grab';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n}\n\nfunction unsetGrabCursor () {\n  const swiper = this;\n  if (Support.touch || (swiper.params.watchOverflow && swiper.isLocked) || swiper.params.cssMode) return;\n  swiper.el.style.cursor = '';\n}\n\nvar grabCursor = {\n  setGrabCursor,\n  unsetGrabCursor,\n};\n\nfunction appendSlide (slides) {\n  const swiper = this;\n  const { $wrapperEl, params } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n}\n\nfunction prependSlide (slides) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide (index, slides) {\n  const swiper = this;\n  const { $wrapperEl, params, activeIndex } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeSlide (slidesIndexes) {\n  const swiper = this;\n  const { params, $wrapperEl, activeIndex } = swiper;\n\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!(params.observer && Support.observer)) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeAllSlides () {\n  const swiper = this;\n\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n\nvar manipulation = {\n  appendSlide,\n  prependSlide,\n  addSlide,\n  removeSlide,\n  removeAllSlides,\n};\n\nconst Device = (function Device() {\n  const platform = window.navigator.platform;\n  const ua = window.navigator.userAgent;\n\n  const device = {\n    ios: false,\n    android: false,\n    androidChrome: false,\n    desktop: false,\n    iphone: false,\n    ipod: false,\n    ipad: false,\n    edge: false,\n    ie: false,\n    firefox: false,\n    macos: false,\n    windows: false,\n    cordova: !!(window.cordova || window.phonegap),\n    phonegap: !!(window.cordova || window.phonegap),\n    electron: false,\n  };\n\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const ie = ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n  const edge = ua.indexOf('Edge/') >= 0;\n  const firefox = ua.indexOf('Gecko/') >= 0 && ua.indexOf('Firefox/') >= 0;\n  const windows = platform === 'Win32';\n  const electron = ua.toLowerCase().indexOf('electron') >= 0;\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  if (!ipad\n    && macos\n    && Support.touch\n    && (\n      (screenWidth === 1024 && screenHeight === 1366) // Pro 12.9\n      || (screenWidth === 834 && screenHeight === 1194) // Pro 11\n      || (screenWidth === 834 && screenHeight === 1112) // Pro 10.5\n      || (screenWidth === 768 && screenHeight === 1024) // other\n    )\n  ) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    macos = false;\n  }\n\n  device.ie = ie;\n  device.edge = edge;\n  device.firefox = firefox;\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.osVersion = android[2];\n    device.android = true;\n    device.androidChrome = ua.toLowerCase().indexOf('chrome') >= 0;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n  // iOS\n  if (iphone && !ipod) {\n    device.osVersion = iphone[2].replace(/_/g, '.');\n    device.iphone = true;\n  }\n  if (ipad) {\n    device.osVersion = ipad[2].replace(/_/g, '.');\n    device.ipad = true;\n  }\n  if (ipod) {\n    device.osVersion = ipod[3] ? ipod[3].replace(/_/g, '.') : null;\n    device.ipod = true;\n  }\n  // iOS 8+ changed UA\n  if (device.ios && device.osVersion && ua.indexOf('Version/') >= 0) {\n    if (device.osVersion.split('.')[0] === '10') {\n      device.osVersion = ua.toLowerCase().split('version/')[1].split(' ')[0];\n    }\n  }\n\n  // Webview\n  device.webView = !!((iphone || ipad || ipod) && (ua.match(/.*AppleWebKit(?!.*Safari)/i) || window.navigator.standalone))\n    || (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches);\n  device.webview = device.webView;\n  device.standalone = device.webView;\n\n  // Desktop\n  device.desktop = !(device.ios || device.android) || electron;\n  if (device.desktop) {\n    device.electron = electron;\n    device.macos = macos;\n    device.windows = windows;\n    if (device.macos) {\n      device.os = 'macos';\n    }\n    if (device.windows) {\n      device.os = 'windows';\n    }\n  }\n\n  // Pixel Ratio\n  device.pixelRatio = window.devicePixelRatio || 1;\n\n  // Export object\n  return device;\n}());\n\nfunction onTouchStart (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches } = swiper;\n\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  const $targetEl = $(e.target);\n\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!$targetEl.closest(swiper.wrapperEl).length) return;\n  }\n  data.isTouchEvent = e.type === 'touchstart';\n  if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n  if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n  if (params.noSwiping && $targetEl.closest(params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`)[0]) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!$targetEl.closest(params.swipeHandler)[0]) return;\n  }\n\n  touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n  touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n  if (\n    edgeSwipeDetection\n    && ((startX <= edgeSwipeThreshold)\n    || (startX >= window.screen.width - edgeSwipeThreshold))\n  ) {\n    return;\n  }\n\n  Utils.extend(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined,\n  });\n\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = Utils.now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  if (e.type !== 'touchstart') {\n    let preventDefault = true;\n    if ($targetEl.is(data.formElements)) preventDefault = false;\n    if (\n      document$1.activeElement\n      && $(document$1.activeElement).is(data.formElements)\n      && document$1.activeElement !== $targetEl[0]\n    ) {\n      document$1.activeElement.blur();\n    }\n\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n    if (params.touchStartForcePreventDefault || shouldPreventDefault) {\n      e.preventDefault();\n    }\n  }\n  swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const { params, touches, rtlTranslate: rtl } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  if (data.isTouchEvent && e.type !== 'touchmove') return;\n  const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n  const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n  const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    // isMoved = true;\n    swiper.allowClick = false;\n    if (data.isTouched) {\n      Utils.extend(touches, {\n        startX: pageX,\n        startY: pageY,\n        currentX: pageX,\n        currentY: pageY,\n      });\n      data.touchStartTime = Utils.now();\n    }\n    return;\n  }\n  if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (\n        (pageY < touches.startY && swiper.translate <= swiper.maxTranslate())\n        || (pageY > touches.startY && swiper.translate >= swiper.minTranslate())\n      ) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (\n      (pageX < touches.startX && swiper.translate <= swiper.maxTranslate())\n      || (pageX > touches.startX && swiper.translate >= swiper.minTranslate())\n    ) {\n      return;\n    }\n  }\n  if (data.isTouchEvent && document$1.activeElement) {\n    if (e.target === document$1.activeElement && $(e.target).is(data.formElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt((diffX ** 2) + (diffY ** 2)) < swiper.params.threshold) return;\n\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if ((swiper.isHorizontal() && touches.currentY === touches.startY) || (swiper.isVertical() && touches.currentX === touches.startX)) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if ((diffX * diffX) + (diffY * diffY) >= 25) {\n        touchAngle = (Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180) / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : (90 - touchAngle > params.touchAngle);\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n\n  if (!data.isMoved) {\n    if (params.loop) {\n      swiper.loopFix();\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  touches.diff = diff;\n\n  diff *= params.touchRatio;\n  if (rtl) diff = -diff;\n\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  data.currentTranslate = diff + data.startTranslate;\n\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if ((diff > 0 && data.currentTranslate > swiper.minTranslate())) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = (swiper.minTranslate() - 1) + ((-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio);\n  } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n    disableParentSwiper = false;\n    if (params.resistance) data.currentTranslate = (swiper.maxTranslate() + 1) - ((swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio);\n  }\n\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode || params.watchSlidesProgress || params.watchSlidesVisibility) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode) {\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime,\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: Utils.now(),\n    });\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd (event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n\n  const {\n    params, touches, rtlTranslate: rtl, $wrapperEl, slidesGrid, snapGrid,\n  } = swiper;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = Utils.now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    swiper.updateClickedSlide(e);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && (touchEndTime - data.lastClickTime) < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n\n  data.lastClickTime = Utils.now();\n  Utils.nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n\n  if (params.cssMode) {\n    return;\n  }\n\n  if (params.freeMode) {\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n\n    if (params.freeModeMomentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeModeMinimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || (Utils.now() - lastMoveEvent.time) > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeModeMomentumVelocityRatio;\n\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeModeMomentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeModeMomentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeModeMomentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeModeSticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        swiper.once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n        if (params.freeModeSticky) {\n          // If freeModeSticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeModeSticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeModeMomentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        $wrapperEl.transitionEnd(() => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          swiper.emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          $wrapperEl.transitionEnd(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeModeSticky) {\n      swiper.slideToClosest();\n      return;\n    }\n\n    if (!params.freeModeMomentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    return;\n  }\n\n  // Find current slide\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += (i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup)) {\n    const increment = (i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = (stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup);\n\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n      else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > (1 - params.longSwipesRatio)) swiper.slideTo(stopIndex + increment);\n      else swiper.slideTo(stopIndex);\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n\nfunction onResize () {\n  const swiper = this;\n\n  const { params, el } = swiper;\n\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const { allowSlideNext, allowSlidePrev, snapGrid } = swiper;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n\n  swiper.updateSize();\n  swiper.updateSlides();\n\n  swiper.updateSlidesClasses();\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    swiper.slideTo(swiper.activeIndex, 0, false, true);\n  }\n\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    swiper.autoplay.run();\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n\nfunction onClick (e) {\n  const swiper = this;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n\nfunction onScroll () {\n  const swiper = this;\n  const { wrapperEl, rtlTranslate } = swiper;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    if (rtlTranslate) {\n      swiper.translate = ((wrapperEl.scrollWidth - wrapperEl.offsetWidth) - wrapperEl.scrollLeft);\n    } else {\n      swiper.translate = -wrapperEl.scrollLeft;\n    }\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === -0) swiper.translate = 0;\n\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / (translatesDiff);\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\n\nfunction attachEvents() {\n  const swiper = this;\n  const {\n    params, touchEvents, el, wrapperEl,\n  } = swiper;\n\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n\n  swiper.onClick = onClick.bind(swiper);\n\n  const capture = !!params.nested;\n\n  // Touch Events\n  if (!Support.touch && Support.pointerEvents) {\n    el.addEventListener(touchEvents.start, swiper.onTouchStart, false);\n    document$1.addEventListener(touchEvents.move, swiper.onTouchMove, capture);\n    document$1.addEventListener(touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    if (Support.touch) {\n      const passiveListener = touchEvents.start === 'touchstart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n      el.addEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n      el.addEventListener(touchEvents.move, swiper.onTouchMove, Support.passiveListener ? { passive: false, capture } : capture);\n      el.addEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      if (touchEvents.cancel) {\n        el.addEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n      }\n      if (!dummyEventAttached) {\n        document$1.addEventListener('touchstart', dummyEventListener);\n        dummyEventAttached = true;\n      }\n    }\n    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n      el.addEventListener('mousedown', swiper.onTouchStart, false);\n      document$1.addEventListener('mousemove', swiper.onTouchMove, capture);\n      document$1.addEventListener('mouseup', swiper.onTouchEnd, false);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el.addEventListener('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl.addEventListener('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper.on((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize, true);\n  } else {\n    swiper.on('observerUpdate', onResize, true);\n  }\n}\n\nfunction detachEvents() {\n  const swiper = this;\n\n  const {\n    params, touchEvents, el, wrapperEl,\n  } = swiper;\n\n  const capture = !!params.nested;\n\n  // Touch Events\n  if (!Support.touch && Support.pointerEvents) {\n    el.removeEventListener(touchEvents.start, swiper.onTouchStart, false);\n    document$1.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n    document$1.removeEventListener(touchEvents.end, swiper.onTouchEnd, false);\n  } else {\n    if (Support.touch) {\n      const passiveListener = touchEvents.start === 'onTouchStart' && Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n      el.removeEventListener(touchEvents.start, swiper.onTouchStart, passiveListener);\n      el.removeEventListener(touchEvents.move, swiper.onTouchMove, capture);\n      el.removeEventListener(touchEvents.end, swiper.onTouchEnd, passiveListener);\n      if (touchEvents.cancel) {\n        el.removeEventListener(touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n      }\n    }\n    if ((params.simulateTouch && !Device.ios && !Device.android) || (params.simulateTouch && !Support.touch && Device.ios)) {\n      el.removeEventListener('mousedown', swiper.onTouchStart, false);\n      document$1.removeEventListener('mousemove', swiper.onTouchMove, capture);\n      document$1.removeEventListener('mouseup', swiper.onTouchEnd, false);\n    }\n  }\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el.removeEventListener('click', swiper.onClick, true);\n  }\n\n  if (params.cssMode) {\n    wrapperEl.removeEventListener('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  swiper.off((Device.ios || Device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate'), onResize);\n}\n\nvar events = {\n  attachEvents,\n  detachEvents,\n};\n\nfunction setBreakpoint () {\n  const swiper = this;\n  const {\n    activeIndex, initialized, loopedSlides = 0, params, $el,\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || (breakpoints && Object.keys(breakpoints).length === 0)) return;\n\n  // Get breakpoint for window width and update parameters\n  const breakpoint = swiper.getBreakpoint(breakpoints);\n\n  if (breakpoint && swiper.currentBreakpoint !== breakpoint) {\n    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n    if (breakpointOnlyParams) {\n      ['slidesPerView', 'spaceBetween', 'slidesPerGroup', 'slidesPerGroupSkip', 'slidesPerColumn'].forEach((param) => {\n        const paramValue = breakpointOnlyParams[param];\n        if (typeof paramValue === 'undefined') return;\n        if (param === 'slidesPerView' && (paramValue === 'AUTO' || paramValue === 'auto')) {\n          breakpointOnlyParams[param] = 'auto';\n        } else if (param === 'slidesPerView') {\n          breakpointOnlyParams[param] = parseFloat(paramValue);\n        } else {\n          breakpointOnlyParams[param] = parseInt(paramValue, 10);\n        }\n      });\n    }\n\n    const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n    const wasMultiRow = params.slidesPerColumn > 1;\n    const isMultiRow = breakpointParams.slidesPerColumn > 1;\n    if (wasMultiRow && !isMultiRow) {\n      $el.removeClass(`${params.containerModifierClass}multirow ${params.containerModifierClass}multirow-column`);\n    } else if (!wasMultiRow && isMultiRow) {\n      $el.addClass(`${params.containerModifierClass}multirow`);\n      if (breakpointParams.slidesPerColumnFill === 'column') {\n        $el.addClass(`${params.containerModifierClass}multirow-column`);\n      }\n    }\n\n    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n    if (directionChanged && initialized) {\n      swiper.changeDirection();\n    }\n\n    Utils.extend(swiper.params, breakpointParams);\n\n    Utils.extend(swiper, {\n      allowTouchMove: swiper.params.allowTouchMove,\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n    });\n\n    swiper.currentBreakpoint = breakpoint;\n\n    if (needsReLoop && initialized) {\n      swiper.loopDestroy();\n      swiper.loopCreate();\n      swiper.updateSlides();\n      swiper.slideTo((activeIndex - loopedSlides) + swiper.loopedSlides, 0, false);\n    }\n\n    swiper.emit('breakpoint', breakpointParams);\n  }\n}\n\nfunction getBreakpoint (breakpoints) {\n  // Get breakpoint for window width\n  if (!breakpoints) return undefined;\n  let breakpoint = false;\n\n  const points = Object.keys(breakpoints).map((point) => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = window.innerHeight * minRatio;\n      return { value, point };\n    }\n    return { value: point, point };\n  });\n\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const { point, value } = points[i];\n    if (value <= window.innerWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n\nvar breakpoints = { setBreakpoint, getBreakpoint };\n\nfunction addClasses () {\n  const swiper = this;\n  const {\n    classNames, params, rtl, $el,\n  } = swiper;\n  const suffixes = [];\n\n  suffixes.push('initialized');\n  suffixes.push(params.direction);\n\n  if (params.freeMode) {\n    suffixes.push('free-mode');\n  }\n  if (params.autoHeight) {\n    suffixes.push('autoheight');\n  }\n  if (rtl) {\n    suffixes.push('rtl');\n  }\n  if (params.slidesPerColumn > 1) {\n    suffixes.push('multirow');\n    if (params.slidesPerColumnFill === 'column') {\n      suffixes.push('multirow-column');\n    }\n  }\n  if (Device.android) {\n    suffixes.push('android');\n  }\n  if (Device.ios) {\n    suffixes.push('ios');\n  }\n\n  if (params.cssMode) {\n    suffixes.push('css-mode');\n  }\n\n  suffixes.forEach((suffix) => {\n    classNames.push(params.containerModifierClass + suffix);\n  });\n\n  $el.addClass(classNames.join(' '));\n}\n\nfunction removeClasses () {\n  const swiper = this;\n  const { $el, classNames } = swiper;\n\n  $el.removeClass(classNames.join(' '));\n}\n\nvar classes = { addClasses, removeClasses };\n\nfunction loadImage (imageEl, src, srcset, sizes, checkForComplete, callback) {\n  let image;\n  function onReady() {\n    if (callback) callback();\n  }\n  const isPicture = $(imageEl).parent('picture')[0];\n\n  if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n    if (src) {\n      image = new window.Image();\n      image.onload = onReady;\n      image.onerror = onReady;\n      if (sizes) {\n        image.sizes = sizes;\n      }\n      if (srcset) {\n        image.srcset = srcset;\n      }\n      if (src) {\n        image.src = src;\n      }\n    } else {\n      onReady();\n    }\n  } else {\n    // image already loaded...\n    onReady();\n  }\n}\n\nfunction preloadImages () {\n  const swiper = this;\n  swiper.imagesToLoad = swiper.$el.find('img');\n  function onReady() {\n    if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n    if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n    if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n      if (swiper.params.updateOnImagesReady) swiper.update();\n      swiper.emit('imagesReady');\n    }\n  }\n  for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n    const imageEl = swiper.imagesToLoad[i];\n    swiper.loadImage(\n      imageEl,\n      imageEl.currentSrc || imageEl.getAttribute('src'),\n      imageEl.srcset || imageEl.getAttribute('srcset'),\n      imageEl.sizes || imageEl.getAttribute('sizes'),\n      true,\n      onReady\n    );\n  }\n}\n\nvar images = {\n  loadImage,\n  preloadImages,\n};\n\nfunction checkOverflow() {\n  const swiper = this;\n  const params = swiper.params;\n  const wasLocked = swiper.isLocked;\n  const lastSlidePosition = swiper.slides.length > 0 && (params.slidesOffsetBefore + (params.spaceBetween * (swiper.slides.length - 1)) + ((swiper.slides[0]).offsetWidth) * swiper.slides.length);\n\n  if (params.slidesOffsetBefore && params.slidesOffsetAfter && lastSlidePosition) {\n    swiper.isLocked = lastSlidePosition <= swiper.size;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n\n  swiper.allowSlideNext = !swiper.isLocked;\n  swiper.allowSlidePrev = !swiper.isLocked;\n\n  // events\n  if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n    if (swiper.navigation) swiper.navigation.update();\n  }\n}\n\nvar checkOverflow$1 = { checkOverflow };\n\nvar defaults = {\n  init: true,\n  direction: 'horizontal',\n  touchEventsTarget: 'container',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  //\n  preventInteractionOnTransition: false,\n\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n\n  // Free mode\n  freeMode: false,\n  freeModeMomentum: true,\n  freeModeMomentumRatio: 1,\n  freeModeMomentumBounce: true,\n  freeModeMomentumBounceRatio: 1,\n  freeModeMomentumVelocityRatio: 1,\n  freeModeSticky: false,\n  freeModeMinimumVelocity: 0.02,\n\n  // Autoheight\n  autoHeight: false,\n\n  // Set wrapper width\n  setWrapperSize: false,\n\n  // Virtual Translate\n  virtualTranslate: false,\n\n  // Effects\n  effect: 'slide', // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerColumn: 1,\n  slidesPerColumnFill: 'column',\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0, // in px\n  slidesOffsetAfter: 0, // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: false,\n\n  // Round length\n  roundLengths: false,\n\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 0,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n\n  // Progress\n  watchSlidesProgress: false,\n  watchSlidesVisibility: false,\n\n  // Cursor\n  grabCursor: false,\n\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n\n  // Images\n  preloadImages: true,\n  updateOnImagesReady: true,\n\n  // loop\n  loop: false,\n  loopAdditionalSlides: 0,\n  loopedSlides: null,\n  loopFillGroupWithBlank: false,\n\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null, // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n\n  // Passive Listeners\n  passiveListeners: true,\n\n  // NS\n  containerModifierClass: 'swiper-container-', // NEW\n  slideClass: 'swiper-slide',\n  slideBlankClass: 'swiper-slide-invisible-blank',\n  slideActiveClass: 'swiper-slide-active',\n  slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideDuplicateClass: 'swiper-slide-duplicate',\n  slideNextClass: 'swiper-slide-next',\n  slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n  slidePrevClass: 'swiper-slide-prev',\n  slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n  wrapperClass: 'swiper-wrapper',\n\n  // Callbacks\n  runCallbacksOnInit: true,\n};\n\n/* eslint no-param-reassign: \"off\" */\n\nconst prototypes = {\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  manipulation,\n  events,\n  breakpoints,\n  checkOverflow: checkOverflow$1,\n  classes,\n  images,\n};\n\nconst extendedDefaults = {};\n\nclass Swiper extends SwiperClass {\n  constructor(...args) {\n    let el;\n    let params;\n    if (args.length === 1 && args[0].constructor && args[0].constructor === Object) {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n\n    params = Utils.extend({}, params);\n    if (el && !params.el) params.el = el;\n\n    super(params);\n\n    Object.keys(prototypes).forEach((prototypeGroup) => {\n      Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {\n        if (!Swiper.prototype[protoMethod]) {\n          Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n        }\n      });\n    });\n\n    // Swiper Instance\n    const swiper = this;\n    if (typeof swiper.modules === 'undefined') {\n      swiper.modules = {};\n    }\n    Object.keys(swiper.modules).forEach((moduleName) => {\n      const module = swiper.modules[moduleName];\n      if (module.params) {\n        const moduleParamName = Object.keys(module.params)[0];\n        const moduleParams = module.params[moduleParamName];\n        if (typeof moduleParams !== 'object' || moduleParams === null) return;\n        if (!(moduleParamName in params && 'enabled' in moduleParams)) return;\n        if (params[moduleParamName] === true) {\n          params[moduleParamName] = { enabled: true };\n        }\n        if (\n          typeof params[moduleParamName] === 'object'\n          && !('enabled' in params[moduleParamName])\n        ) {\n          params[moduleParamName].enabled = true;\n        }\n        if (!params[moduleParamName]) params[moduleParamName] = { enabled: false };\n      }\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = Utils.extend({}, defaults);\n    swiper.useModulesParams(swiperParams);\n\n    // Extend defaults with passed params\n    swiper.params = Utils.extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = Utils.extend({}, swiper.params);\n    swiper.passedParams = Utils.extend({}, params);\n\n    // Save Dom lib\n    swiper.$ = $;\n\n    // Find el\n    const $el = $(swiper.params.el);\n    el = $el[0];\n\n    if (!el) {\n      return undefined;\n    }\n\n    if ($el.length > 1) {\n      const swipers = [];\n      $el.each((index, containerEl) => {\n        const newParams = Utils.extend({}, params, { el: containerEl });\n        swipers.push(new Swiper(newParams));\n      });\n      return swipers;\n    }\n\n    el.swiper = swiper;\n    $el.data('swiper', swiper);\n\n    // Find Wrapper\n    let $wrapperEl;\n    if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n      $wrapperEl = $(el.shadowRoot.querySelector(`.${swiper.params.wrapperClass}`));\n      // Children needs to return slot items\n      $wrapperEl.children = (options) => $el.children(options);\n    } else {\n      $wrapperEl = $el.children(`.${swiper.params.wrapperClass}`);\n    }\n    // Extend Swiper\n    Utils.extend(swiper, {\n      $el,\n      el,\n      $wrapperEl,\n      wrapperEl: $wrapperEl[0],\n\n      // Classes\n      classNames: [],\n\n      // Slides\n      slides: $(),\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // RTL\n      rtl: (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n      wrongRTL: $wrapperEl.css('display') === '-webkit-box',\n\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n\n      //\n      isBeginning: true,\n      isEnd: false,\n\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n\n      // Touch Events\n      touchEvents: (function touchEvents() {\n        const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n        let desktop = ['mousedown', 'mousemove', 'mouseup'];\n        if (Support.pointerEvents) {\n          desktop = ['pointerdown', 'pointermove', 'pointerup'];\n        }\n        swiper.touchEventsTouch = {\n          start: touch[0],\n          move: touch[1],\n          end: touch[2],\n          cancel: touch[3],\n        };\n        swiper.touchEventsDesktop = {\n          start: desktop[0],\n          move: desktop[1],\n          end: desktop[2],\n        };\n        return Support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n      }()),\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        formElements: 'input, select, option, textarea, button, video, label',\n        // Last click time\n        lastClickTime: Utils.now(),\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        isTouchEvent: undefined,\n        startMoving: undefined,\n      },\n\n      // Clicks\n      allowClick: true,\n\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0,\n      },\n\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0,\n\n    });\n\n    // Install Modules\n    swiper.useModules();\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    return swiper;\n  }\n\n  slidesPerViewDynamic() {\n    const swiper = this;\n    const {\n      params, slides, slidesGrid, size: swiperSize, activeIndex,\n    } = swiper;\n    let spv = 1;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex].swiperSlideSize;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slidesGrid[i] - slidesGrid[activeIndex] < swiperSize) {\n          spv += 1;\n        }\n      }\n    }\n    return spv;\n  }\n\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const { snapGrid, params } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (swiper.params.freeMode) {\n      setTranslate();\n      if (swiper.params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n        translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n\n  changeDirection(newDirection, needUpdate = true) {\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if ((newDirection === currentDirection) || (newDirection !== 'horizontal' && newDirection !== 'vertical')) {\n      return swiper;\n    }\n\n    swiper.$el\n      .removeClass(`${swiper.params.containerModifierClass}${currentDirection}`)\n      .addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n\n    swiper.params.direction = newDirection;\n\n    swiper.slides.each((slideIndex, slideEl) => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n\n    return swiper;\n  }\n\n  init() {\n    const swiper = this;\n    if (swiper.initialized) return;\n\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n\n    if (swiper.params.preloadImages) {\n      swiper.preloadImages();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit);\n    }\n\n    // Attach events\n    swiper.attachEvents();\n\n    // Init Flag\n    swiper.initialized = true;\n\n    // Emit\n    swiper.emit('init');\n  }\n\n  destroy(deleteInstance = true, cleanStyles = true) {\n    const swiper = this;\n    const {\n      params, $el, $wrapperEl, slides,\n    } = swiper;\n\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      $el.removeAttr('style');\n      $wrapperEl.removeAttr('style');\n      if (slides && slides.length) {\n        slides\n          .removeClass([\n            params.slideVisibleClass,\n            params.slideActiveClass,\n            params.slideNextClass,\n            params.slidePrevClass,\n          ].join(' '))\n          .removeAttr('style')\n          .removeAttr('data-swiper-slide-index');\n      }\n    }\n\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach((eventName) => {\n      swiper.off(eventName);\n    });\n\n    if (deleteInstance !== false) {\n      swiper.$el[0].swiper = null;\n      swiper.$el.data('swiper', null);\n      Utils.deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n\n    return null;\n  }\n\n  static extendDefaults(newDefaults) {\n    Utils.extend(extendedDefaults, newDefaults);\n  }\n\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n\n  static get defaults() {\n    return defaults;\n  }\n\n  static get Class() {\n    return SwiperClass;\n  }\n\n  static get $() {\n    return $;\n  }\n}\n\nvar Device$1 = {\n  name: 'device',\n  proto: {\n    device: Device,\n  },\n  static: {\n    device: Device,\n  },\n};\n\nvar Support$1 = {\n  name: 'support',\n  proto: {\n    support: Support,\n  },\n  static: {\n    support: Support,\n  },\n};\n\nconst Browser = (function Browser() {\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return (ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0);\n  }\n  return {\n    isEdge: !!window.navigator.userAgent.match(/Edge/g),\n    isSafari: isSafari(),\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent),\n  };\n}());\n\nvar Browser$1 = {\n  name: 'browser',\n  proto: {\n    browser: Browser,\n  },\n  static: {\n    browser: Browser,\n  },\n};\n\nvar Resize = {\n  name: 'resize',\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      resize: {\n        resizeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('beforeResize');\n          swiper.emit('resize');\n        },\n        orientationChangeHandler() {\n          if (!swiper || swiper.destroyed || !swiper.initialized) return;\n          swiper.emit('orientationchange');\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      // Emit resize\n      window.addEventListener('resize', swiper.resize.resizeHandler);\n\n      // Emit orientationchange\n      window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n    destroy() {\n      const swiper = this;\n      window.removeEventListener('resize', swiper.resize.resizeHandler);\n      window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler);\n    },\n  },\n};\n\nconst Observer = {\n  func: window.MutationObserver || window.WebkitMutationObserver,\n  attach(target, options = {}) {\n    const swiper = this;\n\n    const ObserverFunc = Observer.func;\n    const observer = new ObserverFunc((mutations) => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (mutations.length === 1) {\n        swiper.emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        swiper.emit('observerUpdate', mutations[0]);\n      };\n\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData,\n    });\n\n    swiper.observer.observers.push(observer);\n  },\n  init() {\n    const swiper = this;\n    if (!Support.observer || !swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = swiper.$el.parents();\n      for (let i = 0; i < containerParents.length; i += 1) {\n        swiper.observer.attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    swiper.observer.attach(swiper.$el[0], { childList: swiper.params.observeSlideChildren });\n\n    // Observe wrapper\n    swiper.observer.attach(swiper.$wrapperEl[0], { attributes: false });\n  },\n  destroy() {\n    const swiper = this;\n    swiper.observer.observers.forEach((observer) => {\n      observer.disconnect();\n    });\n    swiper.observer.observers = [];\n  },\n};\n\nvar Observer$1 = {\n  name: 'observer',\n  params: {\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false,\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      observer: {\n        init: Observer.init.bind(swiper),\n        attach: Observer.attach.bind(swiper),\n        destroy: Observer.destroy.bind(swiper),\n        observers: [],\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.observer.init();\n    },\n    destroy() {\n      const swiper = this;\n      swiper.observer.destroy();\n    },\n  },\n};\n\nconst Virtual = {\n  update(force) {\n    const swiper = this;\n    const { slidesPerView, slidesPerGroup, centeredSlides } = swiper.params;\n    const { addSlidesBefore, addSlidesAfter } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      renderSlide,\n      offset: previousOffset,\n    } = swiper.virtual;\n    swiper.updateActiveIndex();\n    const activeIndex = swiper.activeIndex || 0;\n\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';\n    else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesBefore;\n      slidesBefore = slidesPerGroup + addSlidesAfter;\n    }\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n\n    Utils.extend(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, `${offset}px`);\n      }\n      swiper.updateProgress();\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: (function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()),\n      });\n      onRendered();\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    if (force) {\n      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n    appendIndexes.forEach((index) => {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes.sort((a, b) => b - a).forEach((index) => {\n      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n    });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  },\n  renderSlide(slide, index) {\n    const swiper = this;\n    const params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    const $slideEl = params.renderSlide\n      ? $(params.renderSlide.call(swiper, slide, index))\n      : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n    if (params.cache) swiper.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  },\n  appendSlide(slides) {\n    const swiper = this;\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    swiper.virtual.update(true);\n  },\n  prependSlide(slides) {\n    const swiper = this;\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach((cachedIndex) => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n        if (cachedElIndex) {\n          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + 1);\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  },\n  removeSlide(slidesIndexes) {\n    const swiper = this;\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(activeIndex, 0);\n  },\n  removeAllSlides() {\n    const swiper = this;\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    swiper.virtual.update(true);\n    swiper.slideTo(0, 0);\n  },\n};\n\nvar Virtual$1 = {\n  name: 'virtual',\n  params: {\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      virtual: {\n        update: Virtual.update.bind(swiper),\n        appendSlide: Virtual.appendSlide.bind(swiper),\n        prependSlide: Virtual.prependSlide.bind(swiper),\n        removeSlide: Virtual.removeSlide.bind(swiper),\n        removeAllSlides: Virtual.removeAllSlides.bind(swiper),\n        renderSlide: Virtual.renderSlide.bind(swiper),\n        slides: swiper.params.virtual.slides,\n        cache: {},\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (!swiper.params.virtual.enabled) return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n      const overwriteParams = {\n        watchSlidesProgress: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n\n      if (!swiper.params.initialSlide) {\n        swiper.virtual.update();\n      }\n    },\n    setTranslate() {\n      const swiper = this;\n      if (!swiper.params.virtual.enabled) return;\n      swiper.virtual.update();\n    },\n  },\n};\n\nconst Keyboard = {\n  handle(event) {\n    const swiper = this;\n    const { rtlTranslate: rtl } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40;\n    // Directions locks\n    if (!swiper.allowSlideNext && ((swiper.isHorizontal() && isArrowRight) || (swiper.isVertical() && isArrowDown) || isPageDown)) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && ((swiper.isHorizontal() && isArrowLeft) || (swiper.isVertical() && isArrowUp) || isPageUp)) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (document$1.activeElement && document$1.activeElement.nodeName && (document$1.activeElement.nodeName.toLowerCase() === 'input' || document$1.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false;\n      // Check that swiper should be inside of visible area of window\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [\n        [swiperOffset.left, swiperOffset.top],\n        [swiperOffset.left + swiper.width, swiperOffset.top],\n        [swiperOffset.left, swiperOffset.top + swiper.height],\n        [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height],\n      ];\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n        if (\n          point[0] >= 0 && point[0] <= windowWidth\n          && point[1] >= 0 && point[1] <= windowHeight\n        ) {\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (((isPageDown || isArrowRight) && !rtl) || ((isPageUp || isArrowLeft) && rtl)) swiper.slideNext();\n      if (((isPageUp || isArrowLeft) && !rtl) || ((isPageDown || isArrowRight) && rtl)) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n      }\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n    swiper.emit('keyPress', kc);\n    return undefined;\n  },\n  enable() {\n    const swiper = this;\n    if (swiper.keyboard.enabled) return;\n    $(document$1).on('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = true;\n  },\n  disable() {\n    const swiper = this;\n    if (!swiper.keyboard.enabled) return;\n    $(document$1).off('keydown', swiper.keyboard.handle);\n    swiper.keyboard.enabled = false;\n  },\n};\n\nvar Keyboard$1 = {\n  name: 'keyboard',\n  params: {\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      keyboard: {\n        enabled: false,\n        enable: Keyboard.enable.bind(swiper),\n        disable: Keyboard.disable.bind(swiper),\n        handle: Keyboard.handle.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.keyboard.enabled) {\n        swiper.keyboard.enable();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.keyboard.enabled) {\n        swiper.keyboard.disable();\n      }\n    },\n  },\n};\n\nfunction isEventSupported() {\n  const eventName = 'onwheel';\n  let isSupported = eventName in document$1;\n\n  if (!isSupported) {\n    const element = document$1.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  if (!isSupported\n    && document$1.implementation\n    && document$1.implementation.hasFeature\n    // always returns true in newer browsers as per the standard.\n    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n    && document$1.implementation.hasFeature('', '') !== true\n  ) {\n    // This is the only way to test support for the `wheel` event in IE9+.\n    isSupported = document$1.implementation.hasFeature('Events.wheel', '3.0');\n  }\n\n  return isSupported;\n}\nconst Mousewheel = {\n  lastScrollTime: Utils.now(),\n  lastEventBeforeSnap: undefined,\n  recentWheelEvents: [],\n  event() {\n    if (window.navigator.userAgent.indexOf('firefox') > -1) return 'DOMMouseScroll';\n    return isEventSupported() ? 'wheel' : 'mousewheel';\n  },\n  normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\n    // Legacy\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    }\n\n    // side scrolling on FF with DOMMouseScroll\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) { // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) { // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else { // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    }\n\n    // Fall-back if spin cannot be determined\n    if (pX && !sX) {\n      sX = (pX < 1) ? -1 : 1;\n    }\n    if (pY && !sY) {\n      sY = (pY < 1) ? -1 : 1;\n    }\n\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY,\n    };\n  },\n  handleMouseEnter() {\n    const swiper = this;\n    swiper.mouseEntered = true;\n  },\n  handleMouseLeave() {\n    const swiper = this;\n    swiper.mouseEntered = false;\n  },\n  handle(event) {\n    let e = event;\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n\n    const data = Mousewheel.normalize(e);\n\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n        else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n      else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n\n    if (params.invert) delta = -delta;\n\n    if (!swiper.params.freeMode) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: Utils.now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event,\n      };\n\n      // Keep the most recent events\n      const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent);\n\n      // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          swiper.mousewheel.animateSlider(newEvent);\n        }\n      } else {\n        swiper.mousewheel.animateSlider(newEvent);\n      }\n\n      // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n      if (swiper.mousewheel.releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = { time: Utils.now(), delta: Math.abs(delta), direction: Math.sign(delta) };\n      const { lastEventBeforeSnap } = swiper.mousewheel;\n      const ignoreWheelEvents = lastEventBeforeSnap\n        && newEvent.time < lastEventBeforeSnap.time + 500\n        && newEvent.delta <= lastEventBeforeSnap.delta\n        && newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        swiper.mousewheel.lastEventBeforeSnap = undefined;\n\n        if (swiper.params.loop) {\n          swiper.loopFix();\n        }\n        let position = swiper.getTranslate() + (delta * params.sensitivity);\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n\n        if ((!wasBeginning && swiper.isBeginning) || (!wasEnd && swiper.isEnd)) {\n          swiper.updateSlidesClasses();\n        }\n\n        if (swiper.params.freeModeSticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momuntum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(swiper.mousewheel.timeout);\n          swiper.mousewheel.timeout = undefined;\n          const recentWheelEvents = swiper.mousewheel.recentWheelEvents;\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15\n              && newEvent.time - firstEvent.time < 500\n              && firstEvent.delta - newEvent.delta >= 1\n              && newEvent.delta <= 6\n          ) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            swiper.mousewheel.lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            swiper.mousewheel.timeout = Utils.nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n          if (!swiper.mousewheel.timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            swiper.mousewheel.timeout = Utils.nextTick(() => {\n              const snapToThreshold = 0.5;\n              swiper.mousewheel.lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) swiper.emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    return false;\n  },\n  animateSlider(newEvent) {\n    const swiper = this;\n    // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n    if (newEvent.delta >= 6 && Utils.now() - swiper.mousewheel.lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    }\n    // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        swiper.emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      swiper.emit('scroll', newEvent.raw);\n    }\n    // If you got here is because an animation has been triggered so store the current time\n    swiper.mousewheel.lastScrollTime = (new window.Date()).getTime();\n    // Return false as a default\n    return false;\n  },\n  releaseScroll(newEvent) {\n    const swiper = this;\n    const params = swiper.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n    return false;\n  },\n  enable() {\n    const swiper = this;\n    const event = Mousewheel.event();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener(event, swiper.mousewheel.handle);\n      return true;\n    }\n    if (!event) return false;\n    if (swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    target.on('mouseenter', swiper.mousewheel.handleMouseEnter);\n    target.on('mouseleave', swiper.mousewheel.handleMouseLeave);\n    target.on(event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = true;\n    return true;\n  },\n  disable() {\n    const swiper = this;\n    const event = Mousewheel.event();\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, swiper.mousewheel.handle);\n      return true;\n    }\n    if (!event) return false;\n    if (!swiper.mousewheel.enabled) return false;\n    let target = swiper.$el;\n    if (swiper.params.mousewheel.eventsTarged !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarged);\n    }\n    target.off(event, swiper.mousewheel.handle);\n    swiper.mousewheel.enabled = false;\n    return true;\n  },\n};\n\nvar Mousewheel$1 = {\n  name: 'mousewheel',\n  params: {\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarged: 'container',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      mousewheel: {\n        enabled: false,\n        enable: Mousewheel.enable.bind(swiper),\n        disable: Mousewheel.disable.bind(swiper),\n        handle: Mousewheel.handle.bind(swiper),\n        handleMouseEnter: Mousewheel.handleMouseEnter.bind(swiper),\n        handleMouseLeave: Mousewheel.handleMouseLeave.bind(swiper),\n        animateSlider: Mousewheel.animateSlider.bind(swiper),\n        releaseScroll: Mousewheel.releaseScroll.bind(swiper),\n        lastScrollTime: Utils.now(),\n        lastEventBeforeSnap: undefined,\n        recentWheelEvents: [],\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n        swiper.mousewheel.disable();\n      }\n      if (swiper.params.mousewheel.enabled) swiper.mousewheel.enable();\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.cssMode) {\n        swiper.mousewheel.enable();\n      }\n      if (swiper.mousewheel.enabled) swiper.mousewheel.disable();\n    },\n  },\n};\n\nconst Navigation = {\n  update() {\n    // Update Navigation Buttons\n    const swiper = this;\n    const params = swiper.params.navigation;\n\n    if (swiper.params.loop) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        $prevEl.addClass(params.disabledClass);\n      } else {\n        $prevEl.removeClass(params.disabledClass);\n      }\n      $prevEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        $nextEl.addClass(params.disabledClass);\n      } else {\n        $nextEl.removeClass(params.disabledClass);\n      }\n      $nextEl[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n    }\n  },\n  onPrevClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop) return;\n    swiper.slidePrev();\n  },\n  onNextClick(e) {\n    const swiper = this;\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop) return;\n    swiper.slideNext();\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.navigation;\n    if (!(params.nextEl || params.prevEl)) return;\n\n    let $nextEl;\n    let $prevEl;\n    if (params.nextEl) {\n      $nextEl = $(params.nextEl);\n      if (\n        swiper.params.uniqueNavElements\n        && typeof params.nextEl === 'string'\n        && $nextEl.length > 1\n        && swiper.$el.find(params.nextEl).length === 1\n      ) {\n        $nextEl = swiper.$el.find(params.nextEl);\n      }\n    }\n    if (params.prevEl) {\n      $prevEl = $(params.prevEl);\n      if (\n        swiper.params.uniqueNavElements\n        && typeof params.prevEl === 'string'\n        && $prevEl.length > 1\n        && swiper.$el.find(params.prevEl).length === 1\n      ) {\n        $prevEl = swiper.$el.find(params.prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      $nextEl.on('click', swiper.navigation.onNextClick);\n    }\n    if ($prevEl && $prevEl.length > 0) {\n      $prevEl.on('click', swiper.navigation.onPrevClick);\n    }\n\n    Utils.extend(swiper.navigation, {\n      $nextEl,\n      nextEl: $nextEl && $nextEl[0],\n      $prevEl,\n      prevEl: $prevEl && $prevEl[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const { $nextEl, $prevEl } = swiper.navigation;\n    if ($nextEl && $nextEl.length) {\n      $nextEl.off('click', swiper.navigation.onNextClick);\n      $nextEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n    if ($prevEl && $prevEl.length) {\n      $prevEl.off('click', swiper.navigation.onPrevClick);\n      $prevEl.removeClass(swiper.params.navigation.disabledClass);\n    }\n  },\n};\n\nvar Navigation$1 = {\n  name: 'navigation',\n  params: {\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      navigation: {\n        init: Navigation.init.bind(swiper),\n        update: Navigation.update.bind(swiper),\n        destroy: Navigation.destroy.bind(swiper),\n        onNextClick: Navigation.onNextClick.bind(swiper),\n        onPrevClick: Navigation.onPrevClick.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.navigation.init();\n      swiper.navigation.update();\n    },\n    toEdge() {\n      const swiper = this;\n      swiper.navigation.update();\n    },\n    fromEdge() {\n      const swiper = this;\n      swiper.navigation.update();\n    },\n    destroy() {\n      const swiper = this;\n      swiper.navigation.destroy();\n    },\n    click(e) {\n      const swiper = this;\n      const { $nextEl, $prevEl } = swiper.navigation;\n      if (\n        swiper.params.navigation.hideOnClick\n        && !$(e.target).is($prevEl)\n        && !$(e.target).is($nextEl)\n      ) {\n        let isHidden;\n        if ($nextEl) {\n          isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n        } else if ($prevEl) {\n          isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n        }\n        if (isHidden === true) {\n          swiper.emit('navigationShow', swiper);\n        } else {\n          swiper.emit('navigationHide', swiper);\n        }\n        if ($nextEl) {\n          $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n        if ($prevEl) {\n          $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n        }\n      }\n    },\n  },\n};\n\nconst Pagination = {\n  update() {\n    // Render || Update Pagination bullets/items\n    const swiper = this;\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const $el = swiper.pagination.$el;\n    // Current/Total\n    let current;\n    const total = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n      if (current > slidesLength - 1 - (swiper.loopedSlides * 2)) {\n        current -= (slidesLength - (swiper.loopedSlides * 2));\n      }\n      if (current > total - 1) current -= total;\n      if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n    } else {\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        swiper.pagination.bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n        $el.css(swiper.isHorizontal() ? 'width' : 'height', `${swiper.pagination.bulletSize * (params.dynamicMainBullets + 4)}px`);\n        if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n          swiper.pagination.dynamicBulletIndex += (current - swiper.previousIndex);\n          if (swiper.pagination.dynamicBulletIndex > (params.dynamicMainBullets - 1)) {\n            swiper.pagination.dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (swiper.pagination.dynamicBulletIndex < 0) {\n            swiper.pagination.dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = current - swiper.pagination.dynamicBulletIndex;\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.removeClass(`${params.bulletActiveClass} ${params.bulletActiveClass}-next ${params.bulletActiveClass}-next-next ${params.bulletActiveClass}-prev ${params.bulletActiveClass}-prev-prev ${params.bulletActiveClass}-main`);\n      if ($el.length > 1) {\n        bullets.each((index, bullet) => {\n          const $bullet = $(bullet);\n          const bulletIndex = $bullet.index();\n          if (bulletIndex === current) {\n            $bullet.addClass(params.bulletActiveClass);\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              $bullet.addClass(`${params.bulletActiveClass}-main`);\n            }\n            if (bulletIndex === firstIndex) {\n              $bullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n            }\n            if (bulletIndex === lastIndex) {\n              $bullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          }\n        });\n      } else {\n        const $bullet = bullets.eq(current);\n        const bulletIndex = $bullet.index();\n        $bullet.addClass(params.bulletActiveClass);\n        if (params.dynamicBullets) {\n          const $firstDisplayedBullet = bullets.eq(firstIndex);\n          const $lastDisplayedBullet = bullets.eq(lastIndex);\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n          }\n          if (swiper.params.loop) {\n            if (bulletIndex >= bullets.length - params.dynamicMainBullets) {\n              for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n                bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n              }\n              bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n            } else {\n              $firstDisplayedBullet\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev`)\n                .prev()\n                .addClass(`${params.bulletActiveClass}-prev-prev`);\n              $lastDisplayedBullet\n                .next()\n                .addClass(`${params.bulletActiveClass}-next`)\n                .next()\n                .addClass(`${params.bulletActiveClass}-next-next`);\n            }\n          } else {\n            $firstDisplayedBullet\n              .prev()\n              .addClass(`${params.bulletActiveClass}-prev`)\n              .prev()\n              .addClass(`${params.bulletActiveClass}-prev-prev`);\n            $lastDisplayedBullet\n              .next()\n              .addClass(`${params.bulletActiveClass}-next`)\n              .next()\n              .addClass(`${params.bulletActiveClass}-next-next`);\n          }\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (((swiper.pagination.bulletSize * dynamicBulletsLength) - (swiper.pagination.bulletSize)) / 2) - (midIndex * swiper.pagination.bulletSize);\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n      }\n    }\n    if (params.type === 'fraction') {\n      $el.find(`.${params.currentClass}`).text(params.formatFractionCurrent(current + 1));\n      $el.find(`.${params.totalClass}`).text(params.formatFractionTotal(total));\n    }\n    if (params.type === 'progressbar') {\n      let progressbarDirection;\n      if (params.progressbarOpposite) {\n        progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n      } else {\n        progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n      }\n      const scale = (current + 1) / total;\n      let scaleX = 1;\n      let scaleY = 1;\n      if (progressbarDirection === 'horizontal') {\n        scaleX = scale;\n      } else {\n        scaleY = scale;\n      }\n      $el.find(`.${params.progressbarFillClass}`).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n    }\n    if (params.type === 'custom' && params.renderCustom) {\n      $el.html(params.renderCustom(swiper, current + 1, total));\n      swiper.emit('paginationRender', swiper, $el[0]);\n    } else {\n      swiper.emit('paginationUpdate', swiper, $el[0]);\n    }\n    $el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n  },\n  render() {\n    // Render Container\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n\n    const $el = swiper.pagination.$el;\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      const numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - (swiper.loopedSlides * 2)) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n      $el.html(paginationHTML);\n      swiper.pagination.bullets = $el.find(`.${params.bulletClass}`);\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>`\n        + ' / '\n        + `<span class=\"${params.totalClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n      $el.html(paginationHTML);\n    }\n    if (params.type !== 'custom') {\n      swiper.emit('paginationRender', swiper.pagination.$el[0]);\n    }\n  },\n  init() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n\n    let $el = $(params.el);\n    if ($el.length === 0) return;\n\n    if (\n      swiper.params.uniqueNavElements\n      && typeof params.el === 'string'\n      && $el.length > 1\n    ) {\n      $el = swiper.$el.find(params.el);\n    }\n\n    if (params.type === 'bullets' && params.clickable) {\n      $el.addClass(params.clickableClass);\n    }\n\n    $el.addClass(params.modifierClass + params.type);\n\n    if (params.type === 'bullets' && params.dynamicBullets) {\n      $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n      swiper.pagination.dynamicBulletIndex = 0;\n      if (params.dynamicMainBullets < 1) {\n        params.dynamicMainBullets = 1;\n      }\n    }\n    if (params.type === 'progressbar' && params.progressbarOpposite) {\n      $el.addClass(params.progressbarOppositeClass);\n    }\n\n    if (params.clickable) {\n      $el.on('click', `.${params.bulletClass}`, function onClick(e) {\n        e.preventDefault();\n        let index = $(this).index() * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) index += swiper.loopedSlides;\n        swiper.slideTo(index);\n      });\n    }\n\n    Utils.extend(swiper.pagination, {\n      $el,\n      el: $el[0],\n    });\n  },\n  destroy() {\n    const swiper = this;\n    const params = swiper.params.pagination;\n    if (!params.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0) return;\n    const $el = swiper.pagination.$el;\n\n    $el.removeClass(params.hiddenClass);\n    $el.removeClass(params.modifierClass + params.type);\n    if (swiper.pagination.bullets) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n    if (params.clickable) {\n      $el.off('click', `.${params.bulletClass}`);\n    }\n  },\n};\n\nvar Pagination$1 = {\n  name: 'pagination',\n  params: {\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets', // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: (number) => number,\n      formatFractionTotal: (number) => number,\n      bulletClass: 'swiper-pagination-bullet',\n      bulletActiveClass: 'swiper-pagination-bullet-active',\n      modifierClass: 'swiper-pagination-', // NEW\n      currentClass: 'swiper-pagination-current',\n      totalClass: 'swiper-pagination-total',\n      hiddenClass: 'swiper-pagination-hidden',\n      progressbarFillClass: 'swiper-pagination-progressbar-fill',\n      progressbarOppositeClass: 'swiper-pagination-progressbar-opposite',\n      clickableClass: 'swiper-pagination-clickable', // NEW\n      lockClass: 'swiper-pagination-lock',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      pagination: {\n        init: Pagination.init.bind(swiper),\n        render: Pagination.render.bind(swiper),\n        update: Pagination.update.bind(swiper),\n        destroy: Pagination.destroy.bind(swiper),\n        dynamicBulletIndex: 0,\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.pagination.init();\n      swiper.pagination.render();\n      swiper.pagination.update();\n    },\n    activeIndexChange() {\n      const swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.update();\n      } else if (typeof swiper.snapIndex === 'undefined') {\n        swiper.pagination.update();\n      }\n    },\n    snapIndexChange() {\n      const swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.update();\n      }\n    },\n    slidesLengthChange() {\n      const swiper = this;\n      if (swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    snapGridLengthChange() {\n      const swiper = this;\n      if (!swiper.params.loop) {\n        swiper.pagination.render();\n        swiper.pagination.update();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      swiper.pagination.destroy();\n    },\n    click(e) {\n      const swiper = this;\n      if (\n        swiper.params.pagination.el\n        && swiper.params.pagination.hideOnClick\n        && swiper.pagination.$el.length > 0\n        && !$(e.target).hasClass(swiper.params.pagination.bulletClass)\n      ) {\n        const isHidden = swiper.pagination.$el.hasClass(swiper.params.pagination.hiddenClass);\n        if (isHidden === true) {\n          swiper.emit('paginationShow', swiper);\n        } else {\n          swiper.emit('paginationHide', swiper);\n        }\n        swiper.pagination.$el.toggleClass(swiper.params.pagination.hiddenClass);\n      }\n    },\n  },\n};\n\nconst Scrollbar = {\n  setTranslate() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const { scrollbar, rtlTranslate: rtl, progress } = swiper;\n    const {\n      dragSize, trackSize, $dragEl, $el,\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.timeout);\n      $el[0].style.opacity = 1;\n      swiper.scrollbar.timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  },\n  updateSize() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n\n    const { scrollbar } = swiper;\n    const { $dragEl, $el } = scrollbar;\n\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    const trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n\n    const divider = swiper.size / swiper.virtualSize;\n    const moveDivider = divider * (trackSize / swiper.size);\n    let dragSize;\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n    Utils.extend(scrollbar, {\n      trackSize,\n      divider,\n      moveDivider,\n      dragSize,\n    });\n    scrollbar.$el[swiper.params.watchOverflow && swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n  },\n  getPointerPosition(e) {\n    const swiper = this;\n    if (swiper.isHorizontal()) {\n      return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientX : e.clientX);\n    }\n    return ((e.type === 'touchstart' || e.type === 'touchmove') ? e.targetTouches[0].clientY : e.clientY);\n  },\n  setDragPosition(e) {\n    const swiper = this;\n    const { scrollbar, rtlTranslate: rtl } = swiper;\n    const {\n      $el,\n      dragSize,\n      trackSize,\n      dragStartPos,\n    } = scrollbar;\n\n    let positionRatio;\n    positionRatio = ((scrollbar.getPointerPosition(e)) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top']\n      - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + ((swiper.maxTranslate() - swiper.minTranslate()) * positionRatio);\n\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  },\n  onDragStart(e) {\n    const swiper = this;\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n    swiper.scrollbar.isTouched = true;\n    swiper.scrollbar.dragStartPos = (e.target === $dragEl[0] || e.target === $dragEl)\n      ? scrollbar.getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    scrollbar.setDragPosition(e);\n\n    clearTimeout(swiper.scrollbar.dragTimeout);\n\n    $el.transition(0);\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n    swiper.emit('scrollbarDragStart', e);\n  },\n  onDragMove(e) {\n    const swiper = this;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el, $dragEl } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    if (e.preventDefault) e.preventDefault();\n    else e.returnValue = false;\n    scrollbar.setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    swiper.emit('scrollbarDragMove', e);\n  },\n  onDragEnd(e) {\n    const swiper = this;\n\n    const params = swiper.params.scrollbar;\n    const { scrollbar, $wrapperEl } = swiper;\n    const { $el } = scrollbar;\n\n    if (!swiper.scrollbar.isTouched) return;\n    swiper.scrollbar.isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n    if (params.hide) {\n      clearTimeout(swiper.scrollbar.dragTimeout);\n      swiper.scrollbar.dragTimeout = Utils.nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n    swiper.emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  },\n  enableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const {\n      scrollbar, touchEventsTouch, touchEventsDesktop, params,\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n    if (!Support.touch) {\n      target.addEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n      document$1.addEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n      document$1.addEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n    } else {\n      target.addEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.addEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.addEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  disableDraggable() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const {\n      scrollbar, touchEventsTouch, touchEventsDesktop, params,\n    } = swiper;\n    const $el = scrollbar.$el;\n    const target = $el[0];\n    const activeListener = Support.passiveListener && params.passiveListeners ? { passive: false, capture: false } : false;\n    const passiveListener = Support.passiveListener && params.passiveListeners ? { passive: true, capture: false } : false;\n    if (!Support.touch) {\n      target.removeEventListener(touchEventsDesktop.start, swiper.scrollbar.onDragStart, activeListener);\n      document$1.removeEventListener(touchEventsDesktop.move, swiper.scrollbar.onDragMove, activeListener);\n      document$1.removeEventListener(touchEventsDesktop.end, swiper.scrollbar.onDragEnd, passiveListener);\n    } else {\n      target.removeEventListener(touchEventsTouch.start, swiper.scrollbar.onDragStart, activeListener);\n      target.removeEventListener(touchEventsTouch.move, swiper.scrollbar.onDragMove, activeListener);\n      target.removeEventListener(touchEventsTouch.end, swiper.scrollbar.onDragEnd, passiveListener);\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.scrollbar.el) return;\n    const { scrollbar, $el: $swiperEl } = swiper;\n    const params = swiper.params.scrollbar;\n\n    let $el = $(params.el);\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Utils.extend(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0],\n    });\n\n    if (params.draggable) {\n      scrollbar.enableDraggable();\n    }\n  },\n  destroy() {\n    const swiper = this;\n    swiper.scrollbar.disableDraggable();\n  },\n};\n\nvar Scrollbar$1 = {\n  name: 'scrollbar',\n  params: {\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      scrollbar: {\n        init: Scrollbar.init.bind(swiper),\n        destroy: Scrollbar.destroy.bind(swiper),\n        updateSize: Scrollbar.updateSize.bind(swiper),\n        setTranslate: Scrollbar.setTranslate.bind(swiper),\n        setTransition: Scrollbar.setTransition.bind(swiper),\n        enableDraggable: Scrollbar.enableDraggable.bind(swiper),\n        disableDraggable: Scrollbar.disableDraggable.bind(swiper),\n        setDragPosition: Scrollbar.setDragPosition.bind(swiper),\n        getPointerPosition: Scrollbar.getPointerPosition.bind(swiper),\n        onDragStart: Scrollbar.onDragStart.bind(swiper),\n        onDragMove: Scrollbar.onDragMove.bind(swiper),\n        onDragEnd: Scrollbar.onDragEnd.bind(swiper),\n        isTouched: false,\n        timeout: null,\n        dragTimeout: null,\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      swiper.scrollbar.init();\n      swiper.scrollbar.updateSize();\n      swiper.scrollbar.setTranslate();\n    },\n    update() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    resize() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    observerUpdate() {\n      const swiper = this;\n      swiper.scrollbar.updateSize();\n    },\n    setTranslate() {\n      const swiper = this;\n      swiper.scrollbar.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      swiper.scrollbar.setTransition(duration);\n    },\n    destroy() {\n      const swiper = this;\n      swiper.scrollbar.destroy();\n    },\n  },\n};\n\nconst Parallax = {\n  setTransform(el, progress) {\n    const swiper = this;\n    const { rtl } = swiper;\n\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n\n    const p = $el.attr('data-swiper-parallax') || '0';\n    let x = $el.attr('data-swiper-parallax-x');\n    let y = $el.attr('data-swiper-parallax-y');\n    const scale = $el.attr('data-swiper-parallax-scale');\n    const opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if ((x).indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if ((y).indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - ((opacity - 1) * (1 - Math.abs(progress)));\n      $el[0].style.opacity = currentOpacity;\n    }\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - ((scale - 1) * (1 - Math.abs(progress)));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  },\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el, slides, progress, snapGrid,\n    } = swiper;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n      .each((index, el) => {\n        swiper.parallax.setTransform(el, progress);\n      });\n    slides.each((slideIndex, slideEl) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - (progress * (snapGrid.length - 1));\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n        .each((index, el) => {\n          swiper.parallax.setTransform(el, slideProgress);\n        });\n    });\n  },\n  setTransition(duration = this.params.speed) {\n    const swiper = this;\n    const { $el } = swiper;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]')\n      .each((index, parallaxEl) => {\n        const $parallaxEl = $(parallaxEl);\n        let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n        if (duration === 0) parallaxDuration = 0;\n        $parallaxEl.transition(parallaxDuration);\n      });\n  },\n};\n\nvar Parallax$1 = {\n  name: 'parallax',\n  params: {\n    parallax: {\n      enabled: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      parallax: {\n        setTransform: Parallax.setTransform.bind(swiper),\n        setTranslate: Parallax.setTranslate.bind(swiper),\n        setTransition: Parallax.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    init() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTranslate() {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (!swiper.params.parallax.enabled) return;\n      swiper.parallax.setTransition(duration);\n    },\n  },\n};\n\nconst Zoom = {\n  // Calc Scale From Multi-touches\n  getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2));\n    return distance;\n  },\n  // Events\n  onGestureStart(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    zoom.fakeGestureTouched = false;\n    zoom.fakeGestureMoved = false;\n    if (!Support.gestures) {\n      if (e.type !== 'touchstart' || (e.type === 'touchstart' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureTouched = true;\n      gesture.scaleStart = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n    swiper.zoom.isScaling = true;\n  },\n  onGestureChange(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!Support.gestures) {\n      if (e.type !== 'touchmove' || (e.type === 'touchmove' && e.targetTouches.length < 2)) {\n        return;\n      }\n      zoom.fakeGestureMoved = true;\n      gesture.scaleMove = Zoom.getDistanceBetweenTouches(e);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (Support.gestures) {\n      zoom.scale = e.scale * zoom.currentScale;\n    } else {\n      zoom.scale = (gesture.scaleMove / gesture.scaleStart) * zoom.currentScale;\n    }\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = (gesture.maxRatio - 1) + (((zoom.scale - gesture.maxRatio) + 1) ** 0.5);\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = (params.minRatio + 1) - (((params.minRatio - zoom.scale) + 1) ** 0.5);\n    }\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  onGestureEnd(e) {\n    const swiper = this;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (!Support.gestures) {\n      if (!zoom.fakeGestureTouched || !zoom.fakeGestureMoved) {\n        return;\n      }\n      if (e.type !== 'touchend' || (e.type === 'touchend' && e.changedTouches.length < 2 && !Device.android)) {\n        return;\n      }\n      zoom.fakeGestureTouched = false;\n      zoom.fakeGestureMoved = false;\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    zoom.currentScale = zoom.scale;\n    zoom.isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  },\n  onTouchStart(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (Device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  },\n  onTouchMove(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = Utils.getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = Utils.getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n      if (swiper.rtl) {\n        image.startX = -image.startX;\n        image.startY = -image.startY;\n      }\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !zoom.isScaling) {\n      if (\n        swiper.isHorizontal()\n        && (\n          (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x)\n          || (Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      } if (\n        !swiper.isHorizontal()\n        && (\n          (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y)\n          || (Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)\n        )\n      ) {\n        image.isTouched = false;\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n\n    image.isMoved = true;\n    image.currentX = (image.touchesCurrent.x - image.touchesStart.x) + image.startX;\n    image.currentY = (image.touchesCurrent.y - image.touchesStart.y) + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = (image.minX + 1) - (((image.minX - image.currentX) + 1) ** 0.8);\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = (image.maxX - 1) + (((image.currentX - image.maxX) + 1) ** 0.8);\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = (image.minY + 1) - (((image.minY - image.currentY) + 1) ** 0.8);\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = (image.maxY - 1) + (((image.currentY - image.maxY) + 1) ** 0.8);\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTouchEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture, image, velocity } = zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(((gesture.slideWidth / 2) - (scaledWidth / 2)), 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(((gesture.slideHeight / 2) - (scaledHeight / 2)), 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n\n    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  },\n  onTransitionEnd() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    const { gesture } = zoom;\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      zoom.currentScale = 1;\n\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  },\n  // Toggle Zoom\n  toggle(e) {\n    const swiper = this;\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoom.out();\n    } else {\n      // Zoom In\n      zoom.in(e);\n    }\n  },\n  in(e) {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture, image } = zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    zoom.currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left;\n      offsetY = gesture.$slideEl.offset().top;\n      diffX = (offsetX + (slideWidth / 2)) - touchX;\n      diffY = (offsetY + (slideHeight / 2)) - touchY;\n\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n\n      translateMinX = Math.min(((slideWidth / 2) - (scaledWidth / 2)), 0);\n      translateMinY = Math.min(((slideHeight / 2) - (scaledHeight / 2)), 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  },\n  out() {\n    const swiper = this;\n\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    const { gesture } = zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n      gesture.$imageEl = gesture.$slideEl.find('img, svg, canvas, picture, .swiper-zoom-target');\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    zoom.scale = 1;\n    zoom.currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  },\n  // Attach/Detach Events\n  enable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n    const slideSelector = `.${swiper.params.slideClass}`;\n\n    // Scale image\n    if (Support.gestures) {\n      swiper.$wrapperEl.on('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.on('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.on('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n      }\n    }\n\n    // Move image\n    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n  },\n  disable() {\n    const swiper = this;\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n\n    swiper.zoom.enabled = false;\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && Support.passiveListener && swiper.params.passiveListeners ? { passive: true, capture: false } : false;\n    const activeListenerWithCapture = Support.passiveListener ? { passive: false, capture: true } : true;\n\n    const slideSelector = `.${swiper.params.slideClass}`;\n\n    // Scale image\n    if (Support.gestures) {\n      swiper.$wrapperEl.off('gesturestart', slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.off('gesturechange', slideSelector, zoom.onGestureChange, passiveListener);\n      swiper.$wrapperEl.off('gestureend', slideSelector, zoom.onGestureEnd, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, zoom.onGestureStart, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, zoom.onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, zoom.onGestureEnd, passiveListener);\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, zoom.onGestureEnd, passiveListener);\n      }\n    }\n\n    // Move image\n    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, zoom.onTouchMove, activeListenerWithCapture);\n  },\n};\n\nvar Zoom$1 = {\n  name: 'zoom',\n  params: {\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed',\n    },\n  },\n  create() {\n    const swiper = this;\n    const zoom = {\n      enabled: false,\n      scale: 1,\n      currentScale: 1,\n      isScaling: false,\n      gesture: {\n        $slideEl: undefined,\n        slideWidth: undefined,\n        slideHeight: undefined,\n        $imageEl: undefined,\n        $imageWrapEl: undefined,\n        maxRatio: 3,\n      },\n      image: {\n        isTouched: undefined,\n        isMoved: undefined,\n        currentX: undefined,\n        currentY: undefined,\n        minX: undefined,\n        minY: undefined,\n        maxX: undefined,\n        maxY: undefined,\n        width: undefined,\n        height: undefined,\n        startX: undefined,\n        startY: undefined,\n        touchesStart: {},\n        touchesCurrent: {},\n      },\n      velocity: {\n        x: undefined,\n        y: undefined,\n        prevPositionX: undefined,\n        prevPositionY: undefined,\n        prevTime: undefined,\n      },\n    };\n\n    ('onGestureStart onGestureChange onGestureEnd onTouchStart onTouchMove onTouchEnd onTransitionEnd toggle enable disable in out').split(' ').forEach((methodName) => {\n      zoom[methodName] = Zoom[methodName].bind(swiper);\n    });\n    Utils.extend(swiper, {\n      zoom,\n    });\n\n    let scale = 1;\n    Object.defineProperty(swiper.zoom, 'scale', {\n      get() {\n        return scale;\n      },\n      set(value) {\n        if (scale !== value) {\n          const imageEl = swiper.zoom.gesture.$imageEl ? swiper.zoom.gesture.$imageEl[0] : undefined;\n          const slideEl = swiper.zoom.gesture.$slideEl ? swiper.zoom.gesture.$slideEl[0] : undefined;\n          swiper.emit('zoomChange', value, imageEl, slideEl);\n        }\n        scale = value;\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.zoom.enabled) {\n        swiper.zoom.enable();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      swiper.zoom.disable();\n    },\n    touchStart(e) {\n      const swiper = this;\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchStart(e);\n    },\n    touchEnd(e) {\n      const swiper = this;\n      if (!swiper.zoom.enabled) return;\n      swiper.zoom.onTouchEnd(e);\n    },\n    doubleTap(e) {\n      const swiper = this;\n      if (swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n        swiper.zoom.toggle(e);\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n        swiper.zoom.onTransitionEnd();\n      }\n    },\n  },\n};\n\nconst Lazy = {\n  loadInSlide(index, loadInDuplicate = true) {\n    const swiper = this;\n    const params = swiper.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (swiper.slides.length === 0) return;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n    const $slideEl = isVirtual\n      ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`)\n      : swiper.slides.eq(index);\n\n    let $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images = $images.add($slideEl[0]);\n    }\n    if ($images.length === 0) return;\n\n    $images.each((imageIndex, imageEl) => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n      const $pictureEl = $imageEl.parent('picture');\n\n      swiper.loadImage($imageEl[0], (src || background), srcset, sizes, false, () => {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || (swiper && !swiper.params) || swiper.destroyed) return;\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each((sourceIndex, sourceEl) => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n            swiper.lazy.loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n            swiper.lazy.loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n        swiper.emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n        if (swiper.params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      });\n\n      swiper.emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  },\n  load() {\n    const swiper = this;\n    const {\n      $wrapperEl, params: swiperParams, slides, activeIndex,\n    } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n\n    let slidesPerView = swiperParams.slidesPerView;\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n      return $(slideEl).index();\n    }\n\n    if (!swiper.lazy.initialImageLoaded) swiper.lazy.initialImageLoaded = true;\n    if (swiper.params.watchSlidesVisibility) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each((elIndex, slideEl) => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        swiper.lazy.loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) swiper.lazy.loadInSlide(i);\n      }\n    } else {\n      swiper.lazy.loadInSlide(activeIndex);\n    }\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || (params.loadPrevNextAmount && params.loadPrevNextAmount > 1)) {\n        const amount = params.loadPrevNextAmount;\n        const spv = slidesPerView;\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0);\n        // Next Slides\n        for (let i = activeIndex + slidesPerView; i < maxIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n        // Prev Slides\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) swiper.lazy.loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(nextSlide));\n\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) swiper.lazy.loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  },\n};\n\nvar Lazy$1 = {\n  name: 'lazy',\n  params: {\n    lazy: {\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      lazy: {\n        initialImageLoaded: false,\n        load: Lazy.load.bind(swiper),\n        loadInSlide: Lazy.loadInSlide.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n        swiper.params.preloadImages = false;\n      }\n    },\n    init() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.loop && swiper.params.initialSlide === 0) {\n        swiper.lazy.load();\n      }\n    },\n    scroll() {\n      const swiper = this;\n      if (swiper.params.freeMode && !swiper.params.freeModeSticky) {\n        swiper.lazy.load();\n      }\n    },\n    resize() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    scrollbarDragMove() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n    },\n    transitionStart() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled) {\n        if (swiper.params.lazy.loadOnTransitionStart || (!swiper.params.lazy.loadOnTransitionStart && !swiper.lazy.initialImageLoaded)) {\n          swiper.lazy.load();\n        }\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n        swiper.lazy.load();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.params.lazy.enabled && swiper.params.cssMode) {\n        swiper.lazy.load();\n      }\n    },\n  },\n};\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\n\nconst Controller = {\n  LinearSpline: function LinearSpline(x, y) {\n    const binarySearch = (function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    }());\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0;\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n      return (((x2 - this.x[i1]) * (this.y[i3] - this.y[i1])) / (this.x[i3] - this.x[i1])) + this.y[i1];\n    };\n    return this;\n  },\n  // xxx: for now i will just save one spline function to to\n  getInterpolateFunction(c) {\n    const swiper = this;\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop\n        ? new Controller.LinearSpline(swiper.slidesGrid, c.slidesGrid)\n        : new Controller.LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  },\n  setTranslate(setTranslate, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        swiper.controller.getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = ((translate - swiper.minTranslate()) * multiplier) + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  },\n  setTransition(duration, byController) {\n    const swiper = this;\n    const controlled = swiper.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          Utils.nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  },\n};\nvar Controller$1 = {\n  name: 'controller',\n  params: {\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide', // or 'container'\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      controller: {\n        control: swiper.params.controller.control,\n        getInterpolateFunction: Controller.getInterpolateFunction.bind(swiper),\n        setTranslate: Controller.setTranslate.bind(swiper),\n        setTransition: Controller.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    update() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    resize() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    observerUpdate() {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      if (swiper.controller.spline) {\n        swiper.controller.spline = undefined;\n        delete swiper.controller.spline;\n      }\n    },\n    setTranslate(translate, byController) {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      swiper.controller.setTranslate(translate, byController);\n    },\n    setTransition(duration, byController) {\n      const swiper = this;\n      if (!swiper.controller.control) return;\n      swiper.controller.setTransition(duration, byController);\n    },\n  },\n};\n\nconst a11y = {\n  makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n    return $el;\n  },\n  makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n    return $el;\n  },\n  addElRole($el, role) {\n    $el.attr('role', role);\n    return $el;\n  },\n  addElLabel($el, label) {\n    $el.attr('aria-label', label);\n    return $el;\n  },\n  disableEl($el) {\n    $el.attr('aria-disabled', true);\n    return $el;\n  },\n  enableEl($el) {\n    $el.attr('aria-disabled', false);\n    return $el;\n  },\n  onEnterKey(e) {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (e.keyCode !== 13) return;\n    const $targetEl = $(e.target);\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n      if (swiper.isEnd) {\n        swiper.a11y.notify(params.lastSlideMessage);\n      } else {\n        swiper.a11y.notify(params.nextSlideMessage);\n      }\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n      if (swiper.isBeginning) {\n        swiper.a11y.notify(params.firstSlideMessage);\n      } else {\n        swiper.a11y.notify(params.prevSlideMessage);\n      }\n    }\n    if (swiper.pagination && $targetEl.is(`.${swiper.params.pagination.bulletClass}`)) {\n      $targetEl[0].click();\n    }\n  },\n  notify(message) {\n    const swiper = this;\n    const notification = swiper.a11y.liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  },\n  updateNavigation() {\n    const swiper = this;\n\n    if (swiper.params.loop || !swiper.navigation) return;\n    const { $nextEl, $prevEl } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        swiper.a11y.disableEl($prevEl);\n        swiper.a11y.makeElNotFocusable($prevEl);\n      } else {\n        swiper.a11y.enableEl($prevEl);\n        swiper.a11y.makeElFocusable($prevEl);\n      }\n    }\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        swiper.a11y.disableEl($nextEl);\n        swiper.a11y.makeElNotFocusable($nextEl);\n      } else {\n        swiper.a11y.enableEl($nextEl);\n        swiper.a11y.makeElFocusable($nextEl);\n      }\n    }\n  },\n  updatePagination() {\n    const swiper = this;\n    const params = swiper.params.a11y;\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.bullets.each((bulletIndex, bulletEl) => {\n        const $bulletEl = $(bulletEl);\n        swiper.a11y.makeElFocusable($bulletEl);\n        swiper.a11y.addElRole($bulletEl, 'button');\n        swiper.a11y.addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n      });\n    }\n  },\n  init() {\n    const swiper = this;\n\n    swiper.$el.append(swiper.a11y.liveRegion);\n\n    // Navigation\n    const params = swiper.params.a11y;\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      swiper.a11y.makeElFocusable($nextEl);\n      swiper.a11y.addElRole($nextEl, 'button');\n      swiper.a11y.addElLabel($nextEl, params.nextSlideMessage);\n      $nextEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      swiper.a11y.makeElFocusable($prevEl);\n      swiper.a11y.addElRole($prevEl, 'button');\n      swiper.a11y.addElLabel($prevEl, params.prevSlideMessage);\n      $prevEl.on('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.on('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.a11y.liveRegion && swiper.a11y.liveRegion.length > 0) swiper.a11y.liveRegion.remove();\n\n    let $nextEl;\n    let $prevEl;\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n    if ($nextEl) {\n      $nextEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n    if ($prevEl) {\n      $prevEl.off('keydown', swiper.a11y.onEnterKey);\n    }\n\n    // Pagination\n    if (swiper.pagination && swiper.params.pagination.clickable && swiper.pagination.bullets && swiper.pagination.bullets.length) {\n      swiper.pagination.$el.off('keydown', `.${swiper.params.pagination.bulletClass}`, swiper.a11y.onEnterKey);\n    }\n  },\n};\nvar A11y = {\n  name: 'a11y',\n  params: {\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      a11y: {\n        liveRegion: $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`),\n      },\n    });\n    Object.keys(a11y).forEach((methodName) => {\n      swiper.a11y[methodName] = a11y[methodName].bind(swiper);\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.init();\n      swiper.a11y.updateNavigation();\n    },\n    toEdge() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    fromEdge() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updateNavigation();\n    },\n    paginationUpdate() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.updatePagination();\n    },\n    destroy() {\n      const swiper = this;\n      if (!swiper.params.a11y.enabled) return;\n      swiper.a11y.destroy();\n    },\n  },\n};\n\nconst History = {\n  init() {\n    const swiper = this;\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    const history = swiper.history;\n    history.initialized = true;\n    history.paths = History.getPathValues();\n    if (!history.paths.key && !history.paths.value) return;\n    history.scrollToSlide(0, history.paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', swiper.history.setHistoryPopState);\n    }\n  },\n  setHistoryPopState() {\n    const swiper = this;\n    swiper.history.paths = History.getPathValues();\n    swiper.history.scrollToSlide(swiper.params.speed, swiper.history.paths.value, false);\n  },\n  getPathValues() {\n    const pathArray = window.location.pathname.slice(1).split('/').filter((part) => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return { key, value };\n  },\n  setHistory(key, index) {\n    const swiper = this;\n    if (!swiper.history.initialized || !swiper.params.history.enabled) return;\n    const slide = swiper.slides.eq(index);\n    let value = History.slugify(slide.attr('data-history'));\n    if (!window.location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({ value }, null, value);\n    } else {\n      window.history.pushState({ value }, null, value);\n    }\n  },\n  slugify(text) {\n    return text.toString()\n      .replace(/\\s+/g, '-')\n      .replace(/[^\\w-]+/g, '')\n      .replace(/--+/g, '-')\n      .replace(/^-+/, '')\n      .replace(/-+$/, '');\n  },\n  scrollToSlide(speed, value, runCallbacks) {\n    const swiper = this;\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHistory = History.slugify(slide.attr('data-history'));\n        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  },\n};\n\nvar History$1 = {\n  name: 'history',\n  params: {\n    history: {\n      enabled: false,\n      replaceState: false,\n      key: 'slides',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      history: {\n        init: History.init.bind(swiper),\n        setHistory: History.setHistory.bind(swiper),\n        setHistoryPopState: History.setHistoryPopState.bind(swiper),\n        scrollToSlide: History.scrollToSlide.bind(swiper),\n        destroy: History.destroy.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.history.enabled) {\n        swiper.history.init();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.history.enabled) {\n        swiper.history.destroy();\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.history.initialized) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.history.initialized && swiper.params.cssMode) {\n        swiper.history.setHistory(swiper.params.history.key, swiper.activeIndex);\n      }\n    },\n  },\n};\n\nconst HashNavigation = {\n  onHashCange() {\n    const swiper = this;\n    swiper.emit('hashChange');\n    const newHash = document$1.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  },\n  setHash() {\n    const swiper = this;\n    if (!swiper.hashNavigation.initialized || !swiper.params.hashNavigation.enabled) return;\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, (`#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || ''));\n      swiper.emit('hashSet');\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document$1.location.hash = hash || '';\n      swiper.emit('hashSet');\n    }\n  },\n  init() {\n    const swiper = this;\n    if (!swiper.params.hashNavigation.enabled || (swiper.params.history && swiper.params.history.enabled)) return;\n    swiper.hashNavigation.initialized = true;\n    const hash = document$1.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n  destroy() {\n    const swiper = this;\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', swiper.hashNavigation.onHashCange);\n    }\n  },\n};\nvar HashNavigation$1 = {\n  name: 'hash-navigation',\n  params: {\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      hashNavigation: {\n        initialized: false,\n        init: HashNavigation.init.bind(swiper),\n        destroy: HashNavigation.destroy.bind(swiper),\n        setHash: HashNavigation.setHash.bind(swiper),\n        onHashCange: HashNavigation.onHashCange.bind(swiper),\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.init();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.params.hashNavigation.enabled) {\n        swiper.hashNavigation.destroy();\n      }\n    },\n    transitionEnd() {\n      const swiper = this;\n      if (swiper.hashNavigation.initialized) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n    slideChange() {\n      const swiper = this;\n      if (swiper.hashNavigation.initialized && swiper.params.cssMode) {\n        swiper.hashNavigation.setHash();\n      }\n    },\n  },\n};\n\n/* eslint no-underscore-dangle: \"off\" */\n\nconst Autoplay = {\n  run() {\n    const swiper = this;\n    const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n    let delay = swiper.params.autoplay.delay;\n    if ($activeSlideEl.attr('data-swiper-autoplay')) {\n      delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n    }\n    clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.timeout = Utils.nextTick(() => {\n      if (swiper.params.autoplay.reverseDirection) {\n        if (swiper.params.loop) {\n          swiper.loopFix();\n          swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.isBeginning) {\n          swiper.slidePrev(swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n          swiper.emit('autoplay');\n        } else {\n          swiper.autoplay.stop();\n        }\n      } else if (swiper.params.loop) {\n        swiper.loopFix();\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.isEnd) {\n        swiper.slideNext(swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else if (!swiper.params.autoplay.stopOnLastSlide) {\n        swiper.slideTo(0, swiper.params.speed, true, true);\n        swiper.emit('autoplay');\n      } else {\n        swiper.autoplay.stop();\n      }\n      if (swiper.params.cssMode && swiper.autoplay.running) swiper.autoplay.run();\n    }, delay);\n  },\n  start() {\n    const swiper = this;\n    if (typeof swiper.autoplay.timeout !== 'undefined') return false;\n    if (swiper.autoplay.running) return false;\n    swiper.autoplay.running = true;\n    swiper.emit('autoplayStart');\n    swiper.autoplay.run();\n    return true;\n  },\n  stop() {\n    const swiper = this;\n    if (!swiper.autoplay.running) return false;\n    if (typeof swiper.autoplay.timeout === 'undefined') return false;\n\n    if (swiper.autoplay.timeout) {\n      clearTimeout(swiper.autoplay.timeout);\n      swiper.autoplay.timeout = undefined;\n    }\n    swiper.autoplay.running = false;\n    swiper.emit('autoplayStop');\n    return true;\n  },\n  pause(speed) {\n    const swiper = this;\n    if (!swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) return;\n    if (swiper.autoplay.timeout) clearTimeout(swiper.autoplay.timeout);\n    swiper.autoplay.paused = true;\n    if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n      swiper.autoplay.paused = false;\n      swiper.autoplay.run();\n    } else {\n      swiper.$wrapperEl[0].addEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n      swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n    }\n  },\n};\n\nvar Autoplay$1 = {\n  name: 'autoplay',\n  params: {\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      autoplay: {\n        running: false,\n        paused: false,\n        run: Autoplay.run.bind(swiper),\n        start: Autoplay.start.bind(swiper),\n        stop: Autoplay.stop.bind(swiper),\n        pause: Autoplay.pause.bind(swiper),\n        onVisibilityChange() {\n          if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n            swiper.autoplay.pause();\n          }\n          if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n            swiper.autoplay.run();\n            swiper.autoplay.paused = false;\n          }\n        },\n        onTransitionEnd(e) {\n          if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n          if (e.target !== this) return;\n          swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.autoplay.onTransitionEnd);\n          swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.autoplay.onTransitionEnd);\n          swiper.autoplay.paused = false;\n          if (!swiper.autoplay.running) {\n            swiper.autoplay.stop();\n          } else {\n            swiper.autoplay.run();\n          }\n        },\n      },\n    });\n  },\n  on: {\n    init() {\n      const swiper = this;\n      if (swiper.params.autoplay.enabled) {\n        swiper.autoplay.start();\n        document.addEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n      }\n    },\n    beforeTransitionStart(speed, internal) {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        if (internal || !swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.pause(speed);\n        } else {\n          swiper.autoplay.stop();\n        }\n      }\n    },\n    sliderFirstMove() {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        if (swiper.params.autoplay.disableOnInteraction) {\n          swiper.autoplay.stop();\n        } else {\n          swiper.autoplay.pause();\n        }\n      }\n    },\n    touchEnd() {\n      const swiper = this;\n      if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n        swiper.autoplay.run();\n      }\n    },\n    destroy() {\n      const swiper = this;\n      if (swiper.autoplay.running) {\n        swiper.autoplay.stop();\n      }\n      document.removeEventListener('visibilitychange', swiper.autoplay.onVisibilityChange);\n    },\n  },\n};\n\nconst Fade = {\n  setTranslate() {\n    const swiper = this;\n    const { slides } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = swiper.slides.eq(i);\n      const offset = $slideEl[0].swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = swiper.params.fadeEffect.crossFade\n        ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n        : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n      $slideEl\n        .css({\n          opacity: slideOpacity,\n        })\n        .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, $wrapperEl } = swiper;\n    slides.transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      slides.transitionEnd(() => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nvar EffectFade = {\n  name: 'effect-fade',\n  params: {\n    fadeEffect: {\n      crossFade: false,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      fadeEffect: {\n        setTranslate: Fade.setTranslate.bind(swiper),\n        setTransition: Fade.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'fade') return;\n      swiper.fadeEffect.setTransition(duration);\n    },\n  },\n};\n\nconst Cube = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n        $cubeShadowEl.css({ height: `${swiperWidth}px` });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + (round * 4 * swiperSize);\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = (3 * swiperSize) + (swiperSize * 4 * round);\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = (slideIndex * 90) + (progress * 90);\n        if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n      }\n      $slideEl.transform(transform);\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n    }\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      'transform-origin': `50% 50% -${swiperSize / 2}px`,\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n        const multiplier = 1.5 - (\n          (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n          + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n        );\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n      }\n    }\n    const zFactor = (Browser.isSafari || Browser.isWebView) ? (-swiperSize / 2) : 0;\n    $wrapperEl\n      .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { $el, slides } = swiper;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  },\n};\n\nvar EffectCube = {\n  name: 'effect-cube',\n  params: {\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      cubeEffect: {\n        setTranslate: Cube.setTranslate.bind(swiper),\n        setTransition: Cube.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        resistanceRatio: 0,\n        spaceBetween: 0,\n        centeredSlides: false,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'cube') return;\n      swiper.cubeEffect.setTransition(duration);\n    },\n  },\n};\n\nconst Flip = {\n  setTranslate() {\n    const swiper = this;\n    const { slides, rtlTranslate: rtl } = swiper;\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (swiper.params.flipEffect.slideShadows) {\n        // Set shadows\n        let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if (shadowBefore.length === 0) {\n          shadowBefore = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}\"></div>`);\n          $slideEl.append(shadowBefore);\n        }\n        if (shadowAfter.length === 0) {\n          shadowAfter = $(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append(shadowAfter);\n        }\n        if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n        if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n      }\n      $slideEl\n        .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    const { slides, activeIndex, $wrapperEl } = swiper;\n    slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n    if (swiper.params.virtualTranslate && duration !== 0) {\n      let eventTriggered = false;\n      // eslint-disable-next-line\n      slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        // if (!$(this).hasClass(swiper.params.slideActiveClass)) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n        for (let i = 0; i < triggerEvents.length; i += 1) {\n          $wrapperEl.trigger(triggerEvents[i]);\n        }\n      });\n    }\n  },\n};\n\nvar EffectFlip = {\n  name: 'effect-flip',\n  params: {\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      flipEffect: {\n        setTranslate: Flip.setTranslate.bind(swiper),\n        setTransition: Flip.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n      const overwriteParams = {\n        slidesPerView: 1,\n        slidesPerColumn: 1,\n        slidesPerGroup: 1,\n        watchSlidesProgress: true,\n        spaceBetween: 0,\n        virtualTranslate: true,\n      };\n      Utils.extend(swiper.params, overwriteParams);\n      Utils.extend(swiper.originalParams, overwriteParams);\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'flip') return;\n      swiper.flipEffect.setTransition(duration);\n    },\n  },\n};\n\nconst Coverflow = {\n  setTranslate() {\n    const swiper = this;\n    const {\n      width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid,\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + (swiperWidth / 2) : -transform + (swiperHeight / 2);\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth;\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = $slideEl[0].swiperSlideOffset;\n      const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n\n      let stretch = params.stretch;\n      // Allow percentage to make a relative stretch for responsive sliders\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = ((parseFloat(params.stretch) / 100) * slideSize);\n      }\n      let translateY = isHorizontal ? 0 : stretch * (offsetMultiplier);\n      let translateX = isHorizontal ? stretch * (offsetMultiplier) : 0;\n\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n\n      $slideEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n          $slideEl.append($shadowBeforeEl);\n        }\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n          $slideEl.append($shadowAfterEl);\n        }\n        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n      }\n    }\n\n    // Set correct perspective for IE10\n    if (Support.pointerEvents || Support.prefixedPointerEvents) {\n      const ws = $wrapperEl[0].style;\n      ws.perspectiveOrigin = `${center}px 50%`;\n    }\n  },\n  setTransition(duration) {\n    const swiper = this;\n    swiper.slides\n      .transition(duration)\n      .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n      .transition(duration);\n  },\n};\n\nvar EffectCoverflow = {\n  name: 'effect-coverflow',\n  params: {\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true,\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      coverflowEffect: {\n        setTranslate: Coverflow.setTranslate.bind(swiper),\n        setTransition: Coverflow.setTransition.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n\n      swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n      swiper.params.watchSlidesProgress = true;\n      swiper.originalParams.watchSlidesProgress = true;\n    },\n    setTranslate() {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTranslate();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      if (swiper.params.effect !== 'coverflow') return;\n      swiper.coverflowEffect.setTransition(duration);\n    },\n  },\n};\n\nconst Thumbs = {\n  init() {\n    const swiper = this;\n    const { thumbs: thumbsParams } = swiper.params;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Utils.extend(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n      Utils.extend(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      });\n    } else if (Utils.isObject(thumbsParams.swiper)) {\n      swiper.thumbs.swiper = new SwiperClass(Utils.extend({}, thumbsParams.swiper, {\n        watchSlidesVisibility: true,\n        watchSlidesProgress: true,\n        slideToClickedSlide: false,\n      }));\n      swiper.thumbs.swiperCreated = true;\n    }\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', swiper.thumbs.onThumbClick);\n  },\n  onThumbClick() {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      let currentIndex = swiper.activeIndex;\n      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n        swiper.loopFix();\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        currentIndex = swiper.activeIndex;\n      }\n      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;\n      else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;\n      else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;\n      else slideToIndex = prevIndex;\n    }\n    swiper.slideTo(slideToIndex);\n  },\n  update(initial) {\n    const swiper = this;\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper) return;\n\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto'\n      ? thumbsSwiper.slidesPerViewDynamic()\n      : thumbsSwiper.params.slidesPerView;\n\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbsSwiper.params.loop) {\n        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n          thumbsSwiper.loopFix();\n          // eslint-disable-next-line\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        }\n        // Find actual thumbs index to slide to\n        const prevThumbsIndex = thumbsSwiper.slides\n          .eq(currentThumbsIndex)\n          .prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n          .index();\n        const nextThumbsIndex = thumbsSwiper.slides\n          .eq(currentThumbsIndex)\n          .nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0)\n          .index();\n        if (typeof prevThumbsIndex === 'undefined') newThumbsIndex = nextThumbsIndex;\n        else if (typeof nextThumbsIndex === 'undefined') newThumbsIndex = prevThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) newThumbsIndex = currentThumbsIndex;\n        else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) newThumbsIndex = nextThumbsIndex;\n        else newThumbsIndex = prevThumbsIndex;\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex) {\n          newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n    if (thumbsSwiper.params.loop || (thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled)) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n  },\n};\nvar Thumbs$1 = {\n  name: 'thumbs',\n  params: {\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-container-thumbs',\n    },\n  },\n  create() {\n    const swiper = this;\n    Utils.extend(swiper, {\n      thumbs: {\n        swiper: null,\n        init: Thumbs.init.bind(swiper),\n        update: Thumbs.update.bind(swiper),\n        onThumbClick: Thumbs.onThumbClick.bind(swiper),\n      },\n    });\n  },\n  on: {\n    beforeInit() {\n      const swiper = this;\n      const { thumbs } = swiper.params;\n      if (!thumbs || !thumbs.swiper) return;\n      swiper.thumbs.init();\n      swiper.thumbs.update(true);\n    },\n    slideChange() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    update() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    resize() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    observerUpdate() {\n      const swiper = this;\n      if (!swiper.thumbs.swiper) return;\n      swiper.thumbs.update();\n    },\n    setTransition(duration) {\n      const swiper = this;\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      thumbsSwiper.setTransition(duration);\n    },\n    beforeDestroy() {\n      const swiper = this;\n      const thumbsSwiper = swiper.thumbs.swiper;\n      if (!thumbsSwiper) return;\n      if (swiper.thumbs.swiperCreated && thumbsSwiper) {\n        thumbsSwiper.destroy();\n      }\n    },\n  },\n};\n\n// Swiper Class\n\nconst components = [\n  Device$1,\n  Support$1,\n  Browser$1,\n  Resize,\n  Observer$1,\n  Virtual$1,\n  Keyboard$1,\n  Mousewheel$1,\n  Navigation$1,\n  Pagination$1,\n  Scrollbar$1,\n  Parallax$1,\n  Zoom$1,\n  Lazy$1,\n  Controller$1,\n  A11y,\n  History$1,\n  HashNavigation$1,\n  Autoplay$1,\n  EffectFade,\n  EffectCube,\n  EffectFlip,\n  EffectCoverflow,\n  Thumbs$1\n];\n\nif (typeof Swiper.use === 'undefined') {\n  Swiper.use = Swiper.Class.use;\n  Swiper.installModule = Swiper.Class.installModule;\n}\n\nSwiper.use(components);\n\nexport default Swiper;\n//# sourceMappingURL=swiper.esm.bundle.js.map\n","\n/*!\n * vue-awesome-swiper v4.1.1\n * Copyright (c) Surmon. All rights reserved.\n * Released under the MIT License.\n * Surmon <https://github.com/surmon-china>\n */\n\nimport SwiperClass from 'swiper';\nimport Vue from 'vue';\n\n/**\r\n * @file vue-awesome-swiper\r\n * @module constants\r\n * @author Surmon <https://github.com/surmon-china>\r\n */\r\nvar CoreNames;\r\n(function (CoreNames) {\r\n    CoreNames[\"SwiperComponent\"] = \"Swiper\";\r\n    CoreNames[\"SwiperSlideComponent\"] = \"SwiperSlide\";\r\n    CoreNames[\"SwiperDirective\"] = \"swiper\";\r\n    CoreNames[\"SwiperInstance\"] = \"$swiper\";\r\n})(CoreNames || (CoreNames = {}));\r\nvar DEFAULT_CLASSES = Object.freeze({\r\n    containerClass: 'swiper-container',\r\n    wrapperClass: 'swiper-wrapper',\r\n    slideClass: 'swiper-slide'\r\n});\r\nvar ComponentEvents;\r\n(function (ComponentEvents) {\r\n    ComponentEvents[\"Ready\"] = \"ready\";\r\n    ComponentEvents[\"ClickSlide\"] = \"clickSlide\";\r\n})(ComponentEvents || (ComponentEvents = {}));\r\nvar ComponentPropNames;\r\n(function (ComponentPropNames) {\r\n    ComponentPropNames[\"AutoUpdate\"] = \"autoUpdate\";\r\n    ComponentPropNames[\"AutoDestroy\"] = \"autoDestroy\";\r\n    ComponentPropNames[\"DeleteInstanceOnDestroy\"] = \"deleteInstanceOnDestroy\";\r\n    ComponentPropNames[\"CleanupStylesOnDestroy\"] = \"cleanupStylesOnDestroy\";\r\n})(ComponentPropNames || (ComponentPropNames = {}));\r\n// https://swiperjs.com/api/#events\r\nvar SWIPER_EVENTS = [\r\n    'init',\r\n    'beforeDestroy',\r\n    'slideChange',\r\n    'slideChangeTransitionStart',\r\n    'slideChangeTransitionEnd',\r\n    'slideNextTransitionStart',\r\n    'slideNextTransitionEnd',\r\n    'slidePrevTransitionStart',\r\n    'slidePrevTransitionEnd',\r\n    'transitionStart',\r\n    'transitionEnd',\r\n    'touchStart',\r\n    'touchMove',\r\n    'touchMoveOpposite',\r\n    'sliderMove',\r\n    'touchEnd',\r\n    'click',\r\n    'tap',\r\n    'doubleTap',\r\n    'imagesReady',\r\n    'progress',\r\n    'reachBeginning',\r\n    'reachEnd',\r\n    'fromEdge',\r\n    'setTranslate',\r\n    'setTransition',\r\n    'resize',\r\n    'observerUpdate',\r\n    'beforeLoopFix',\r\n    'loopFix'\r\n];\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n}\n\n/**\r\n * @file vue-awesome-swiper\r\n * @module utils\r\n * @author Surmon <https://github.com/surmon-china>\r\n */\r\nvar kebabcase = function (string) {\r\n    return string\r\n        .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n        .replace(/\\s+/g, '-')\r\n        .toLowerCase();\r\n};\n\n/**\r\n * @file vue-awesome-swiper\r\n * @module event\r\n * @author Surmon <https://github.com/surmon-china>\r\n */\r\nvar handleClickSlideEvent = function (swiper, event, emit) {\r\n    var _a, _b, _c;\r\n    if (swiper && !(swiper.destroyed)) {\r\n        var eventPath = ((_a = event.composedPath) === null || _a === void 0 ? void 0 : _a.call(event)) || event.path;\r\n        if ((event === null || event === void 0 ? void 0 : event.target) && eventPath) {\r\n            var slides_1 = Array.from(swiper.slides);\r\n            var paths = Array.from(eventPath);\r\n            // Click slide || slide[children]\r\n            if (slides_1.includes(event.target) || paths.some(function (item) { return slides_1.includes(item); })) {\r\n                var clickedIndex = swiper.clickedIndex;\r\n                var reallyIndex = Number((_c = (_b = swiper.clickedSlide) === null || _b === void 0 ? void 0 : _b.dataset) === null || _c === void 0 ? void 0 : _c.swiperSlideIndex);\r\n                var reallyIndexValue = Number.isInteger(reallyIndex) ? reallyIndex : null;\r\n                emit(ComponentEvents.ClickSlide, clickedIndex, reallyIndexValue);\r\n                emit(kebabcase(ComponentEvents.ClickSlide), clickedIndex, reallyIndexValue);\r\n            }\r\n        }\r\n    }\r\n};\r\nvar bindSwiperEvents = function (swiper, emit) {\r\n    SWIPER_EVENTS.forEach(function (eventName) {\r\n        swiper.on(eventName, function () {\n            var arguments$1 = arguments;\n\r\n            var args = [];\r\n            for (var _i = 0; _i < arguments.length; _i++) {\r\n                args[_i] = arguments$1[_i];\r\n            }\r\n            emit.apply(void 0, __spreadArrays([eventName], args));\r\n            var kebabcaseName = kebabcase(eventName);\r\n            if (kebabcaseName !== eventName) {\r\n                emit.apply(void 0, __spreadArrays([kebabcaseName], args));\r\n            }\r\n        });\r\n    });\r\n};\n\n/**\r\n * @file vue-awesome-swiper\r\n * @module directive\r\n * @author Surmon <https://github.com/surmon-china>\r\n */\r\nvar INSTANCE_NAME_KEY = 'instanceName';\r\nfunction getDirective(SwiperClass, globalOptions) {\r\n    var getStandardisedOptionByAttrs = function (vnode, key) {\r\n        var _a, _b, _c, _d;\r\n        var value = (_b = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b[key];\r\n        return value !== undefined\r\n            ? value\r\n            : (_d = (_c = vnode.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d[kebabcase(key)];\r\n    };\r\n    // Get swiper instace name in directive\r\n    var getSwiperInstanceName = function (element, binding, vnode) {\r\n        return (binding.arg ||\r\n            getStandardisedOptionByAttrs(vnode, INSTANCE_NAME_KEY) ||\r\n            element.id ||\r\n            CoreNames.SwiperInstance);\r\n    };\r\n    var getSwiperInstance = function (element, binding, vnode) {\r\n        var instanceName = getSwiperInstanceName(element, binding, vnode);\r\n        return vnode.context[instanceName] || null;\r\n    };\r\n    var getSwipeOptions = function (binding) {\r\n        return binding.value || globalOptions;\r\n    };\r\n    var getBooleanValueByInput = function (input) {\r\n        return [true, undefined, null, ''].includes(input);\r\n    };\r\n    // Emit event in Vue directive\r\n    var getEventEmiter = function (vnode) {\r\n        var _a, _b;\r\n        var handlers = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.on) || ((_b = vnode.componentOptions) === null || _b === void 0 ? void 0 : _b.listeners);\r\n        return function (name) {\n            var arguments$1 = arguments;\n\r\n            var args = [];\r\n            for (var _i = 1; _i < arguments.length; _i++) {\r\n                args[_i - 1] = arguments$1[_i];\r\n            }\r\n            var _a;\r\n            var handle = (_a = handlers) === null || _a === void 0 ? void 0 : _a[name];\r\n            if (handle) {\r\n                handle.fns.apply(handle, args);\r\n            }\r\n        };\r\n    };\r\n    return {\r\n        // Init\r\n        bind: function (element, binding, vnode) {\r\n            // auto class name\r\n            if (element.className.indexOf(DEFAULT_CLASSES.containerClass) === -1) {\r\n                element.className += ((element.className ? ' ' : '') + DEFAULT_CLASSES.containerClass);\r\n            }\r\n            // bind click event\r\n            element.addEventListener('click', function (event) {\r\n                var emitEvent = getEventEmiter(vnode);\r\n                var swiper = getSwiperInstance(element, binding, vnode);\r\n                handleClickSlideEvent(swiper, event, emitEvent);\r\n            });\r\n        },\r\n        // DOM inserted\r\n        inserted: function (element, binding, vnode) {\r\n            var context = vnode.context;\r\n            var swiperOptions = getSwipeOptions(binding);\r\n            var instanceName = getSwiperInstanceName(element, binding, vnode);\r\n            var emitEvent = getEventEmiter(vnode);\r\n            var vueContext = context;\r\n            var swiper = vueContext === null || vueContext === void 0 ? void 0 : vueContext[instanceName];\r\n            // Swiper will destroy but not delete instance, when used <keep-alive>\r\n            if (!swiper || swiper.destroyed) {\r\n                swiper = new SwiperClass(element, swiperOptions);\r\n                vueContext[instanceName] = swiper;\r\n                bindSwiperEvents(swiper, emitEvent);\r\n                emitEvent(ComponentEvents.Ready, swiper);\r\n                // MARK: Reinstance when the nexttick with <keep-alive>\r\n                // Vue.nextTick(instancing) | setTimeout(instancing)\r\n            }\r\n        },\r\n        // On options changed or DOM updated\r\n        componentUpdated: function (element, binding, vnode) {\r\n            var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\r\n            var autoUpdate = getStandardisedOptionByAttrs(vnode, ComponentPropNames.AutoUpdate);\r\n            if (getBooleanValueByInput(autoUpdate)) {\r\n                var swiper = getSwiperInstance(element, binding, vnode);\r\n                if (swiper) {\r\n                    var swiperOptions = getSwipeOptions(binding);\r\n                    var isLoop = swiperOptions.loop;\r\n                    if (isLoop) {\r\n                        (_b = (_a = swiper) === null || _a === void 0 ? void 0 : _a.loopDestroy) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n                    }\r\n                    (_c = swiper === null || swiper === void 0 ? void 0 : swiper.update) === null || _c === void 0 ? void 0 : _c.call(swiper);\r\n                    (_e = (_d = swiper.navigation) === null || _d === void 0 ? void 0 : _d.update) === null || _e === void 0 ? void 0 : _e.call(_d);\r\n                    (_g = (_f = swiper.pagination) === null || _f === void 0 ? void 0 : _f.render) === null || _g === void 0 ? void 0 : _g.call(_f);\r\n                    (_j = (_h = swiper.pagination) === null || _h === void 0 ? void 0 : _h.update) === null || _j === void 0 ? void 0 : _j.call(_h);\r\n                    if (isLoop) {\r\n                        (_l = (_k = swiper) === null || _k === void 0 ? void 0 : _k.loopCreate) === null || _l === void 0 ? void 0 : _l.call(_k);\r\n                        (_m = swiper === null || swiper === void 0 ? void 0 : swiper.update) === null || _m === void 0 ? void 0 : _m.call(swiper);\r\n                    }\r\n                }\r\n            }\r\n        },\r\n        // Destroy this directive\r\n        unbind: function (element, binding, vnode) {\r\n            var _a;\r\n            var autoDestroy = getStandardisedOptionByAttrs(vnode, ComponentPropNames.AutoDestroy);\r\n            if (getBooleanValueByInput(autoDestroy)) {\r\n                var swiper = getSwiperInstance(element, binding, vnode);\r\n                if (swiper && swiper.initialized) {\r\n                    (_a = swiper === null || swiper === void 0 ? void 0 : swiper.destroy) === null || _a === void 0 ? void 0 : _a.call(swiper, getBooleanValueByInput(getStandardisedOptionByAttrs(vnode, ComponentPropNames.DeleteInstanceOnDestroy)), getBooleanValueByInput(getStandardisedOptionByAttrs(vnode, ComponentPropNames.CleanupStylesOnDestroy)));\r\n                }\r\n            }\r\n        }\r\n    };\r\n}\n\n/**\r\n * @file vue-awesome-swiper\r\n * @module SwiperComponent\r\n * @author Surmon <https://github.com/surmon-china>\r\n */\r\nvar SlotNames;\r\n(function (SlotNames) {\r\n    SlotNames[\"ParallaxBg\"] = \"parallax-bg\";\r\n    SlotNames[\"Pagination\"] = \"pagination\";\r\n    SlotNames[\"Scrollbar\"] = \"scrollbar\";\r\n    SlotNames[\"PrevButton\"] = \"button-prev\";\r\n    SlotNames[\"NextButton\"] = \"button-next\";\r\n})(SlotNames || (SlotNames = {}));\r\nfunction getSwiperComponent(SwiperClass) {\r\n    var _a;\r\n    return Vue.extend({\r\n        name: CoreNames.SwiperComponent,\r\n        props: (_a = {\r\n                defaultOptions: {\r\n                    type: Object,\r\n                    required: false,\r\n                    default: function () { return ({}); }\r\n                },\r\n                // eslint-disable-next-line vue/require-default-prop\r\n                options: {\r\n                    type: Object,\r\n                    required: false\r\n                }\r\n            },\r\n            _a[ComponentPropNames.AutoUpdate] = {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            // https://github.com/surmon-china/vue-awesome-swiper/pull/550/files\r\n            _a[ComponentPropNames.AutoDestroy] = {\r\n                type: Boolean,\r\n                default: true\r\n            },\r\n            // https://github.com/surmon-china/vue-awesome-swiper/pull/388\r\n            _a[ComponentPropNames.DeleteInstanceOnDestroy] = {\r\n                type: Boolean,\r\n                required: false,\r\n                default: true\r\n            },\r\n            _a[ComponentPropNames.CleanupStylesOnDestroy] = {\r\n                type: Boolean,\r\n                required: false,\r\n                default: true\r\n            },\r\n            _a),\r\n        data: function () {\r\n            var _a;\r\n            return _a = {},\r\n                _a[CoreNames.SwiperInstance] = null,\r\n                _a;\r\n        },\r\n        computed: {\r\n            swiperInstance: {\r\n                cache: false,\r\n                set: function (swiper) {\r\n                    this[CoreNames.SwiperInstance] = swiper;\r\n                },\r\n                get: function () {\r\n                    return this[CoreNames.SwiperInstance];\r\n                }\r\n            },\r\n            swiperOptions: function () {\r\n                return this.options || this.defaultOptions;\r\n            },\r\n            wrapperClass: function () {\r\n                return this.swiperOptions.wrapperClass || DEFAULT_CLASSES.wrapperClass;\r\n            }\r\n        },\r\n        methods: {\r\n            // Feature: click event\r\n            handleSwiperClick: function (event) {\r\n                handleClickSlideEvent(this.swiperInstance, event, this.$emit.bind(this));\r\n            },\r\n            autoReLoopSwiper: function () {\r\n                var _a, _b;\r\n                if (this.swiperInstance && this.swiperOptions.loop) {\r\n                    // https://github.com/surmon-china/vue-awesome-swiper/issues/593\r\n                    // https://github.com/surmon-china/vue-awesome-swiper/issues/544\r\n                    // https://github.com/surmon-china/vue-awesome-swiper/pull/545/files\r\n                    var swiper = this.swiperInstance;\r\n                    (_a = swiper === null || swiper === void 0 ? void 0 : swiper.loopDestroy) === null || _a === void 0 ? void 0 : _a.call(swiper);\r\n                    (_b = swiper === null || swiper === void 0 ? void 0 : swiper.loopCreate) === null || _b === void 0 ? void 0 : _b.call(swiper);\r\n                }\r\n            },\r\n            updateSwiper: function () {\r\n                var _a, _b, _c, _d, _e, _f, _g, _h;\r\n                if (this[ComponentPropNames.AutoUpdate] && this.swiperInstance) {\r\n                    this.autoReLoopSwiper();\r\n                    (_b = (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.update) === null || _b === void 0 ? void 0 : _b.call(_a);\r\n                    (_d = (_c = this.swiperInstance.navigation) === null || _c === void 0 ? void 0 : _c.update) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n                    (_f = (_e = this.swiperInstance.pagination) === null || _e === void 0 ? void 0 : _e.render) === null || _f === void 0 ? void 0 : _f.call(_e);\r\n                    (_h = (_g = this.swiperInstance.pagination) === null || _g === void 0 ? void 0 : _g.update) === null || _h === void 0 ? void 0 : _h.call(_g);\r\n                }\r\n            },\r\n            destroySwiper: function () {\r\n                var _a, _b;\r\n                if (this[ComponentPropNames.AutoDestroy] && this.swiperInstance) {\r\n                    // https://github.com/surmon-china/vue-awesome-swiper/pull/341\r\n                    // https://github.com/surmon-china/vue-awesome-swiper/issues/340\r\n                    if (this.swiperInstance.initialized) {\r\n                        (_b = (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.destroy) === null || _b === void 0 ? void 0 : _b.call(_a, this[ComponentPropNames.DeleteInstanceOnDestroy], this[ComponentPropNames.CleanupStylesOnDestroy]);\r\n                    }\r\n                }\r\n            },\r\n            initSwiper: function () {\r\n                this.swiperInstance = new SwiperClass(this.$el, this.swiperOptions);\r\n                bindSwiperEvents(this.swiperInstance, this.$emit.bind(this));\r\n                this.$emit(ComponentEvents.Ready, this.swiperInstance);\r\n            }\r\n        },\r\n        mounted: function () {\r\n            if (!this.swiperInstance) {\r\n                this.initSwiper();\r\n            }\r\n        },\r\n        // Update swiper when the parent component activated with `keep-alive`.\r\n        activated: function () {\r\n            this.updateSwiper();\r\n        },\r\n        updated: function () {\r\n            this.updateSwiper();\r\n        },\r\n        beforeDestroy: function () {\r\n            // https://github.com/surmon-china/vue-awesome-swiper/commit/2924a9d4d3d1cf51c0d46076410b1f804b2b8a43#diff-7f4e0261ac562c0f354cb91a1ca8864f\r\n            this.$nextTick(this.destroySwiper);\r\n        },\r\n        render: function (createElement) {\r\n            return createElement('div', {\r\n                staticClass: DEFAULT_CLASSES.containerClass,\r\n                on: {\r\n                    click: this.handleSwiperClick\r\n                }\r\n            }, [\r\n                this.$slots[SlotNames.ParallaxBg],\r\n                createElement('div', {\r\n                    class: this.wrapperClass\r\n                }, this.$slots.default),\r\n                this.$slots[SlotNames.Pagination],\r\n                this.$slots[SlotNames.PrevButton],\r\n                this.$slots[SlotNames.NextButton],\r\n                this.$slots[SlotNames.Scrollbar]\r\n            ]);\r\n        }\r\n    });\r\n}\n\n/**\r\n * @file vue-awesome-swiper\r\n * @module SwiperSlideComponent\r\n * @author Surmon <https://github.com/surmon-china>\r\n */\r\nvar SwiperSlideComponent = Vue.extend({\r\n    name: CoreNames.SwiperSlideComponent,\r\n    computed: {\r\n        slideClass: function () {\r\n            var _a, _b;\r\n            return ((_b = (_a = this.$parent) === null || _a === void 0 ? void 0 : _a.swiperOptions) === null || _b === void 0 ? void 0 : _b.slideClass) || DEFAULT_CLASSES.slideClass;\r\n        }\r\n    },\r\n    methods: {\r\n        update: function () {\r\n            var _a;\r\n            var parent = this.$parent;\r\n            // https://github.com/surmon-china/vue-awesome-swiper/issues/632\r\n            if (parent[ComponentPropNames.AutoUpdate]) {\r\n                (_a = parent === null || parent === void 0 ? void 0 : parent.swiperInstance) === null || _a === void 0 ? void 0 : _a.update();\r\n            }\r\n        }\r\n    },\r\n    mounted: function () {\r\n        this.update();\r\n    },\r\n    updated: function () {\r\n        this.update();\r\n    },\r\n    render: function (createElement) {\r\n        return createElement('div', {\r\n            class: this.slideClass\r\n        }, this.$slots.default);\r\n    }\r\n});\n\n/**\r\n * @file vue-awesome-swiper\r\n * @module exporter\r\n * @author Surmon <https://github.com/surmon-china>\r\n */\r\nvar getInstaller = function (SwiperClass) {\r\n    var install = function (Vue, globalOptions) {\r\n        if (install.installed)\r\n            { return; }\r\n        var SwiperComponent = getSwiperComponent(SwiperClass);\r\n        if (globalOptions) {\r\n            SwiperComponent.options.props.defaultOptions.default = function () { return globalOptions; };\r\n        }\r\n        Vue.component(CoreNames.SwiperComponent, SwiperComponent);\r\n        Vue.component(CoreNames.SwiperSlideComponent, SwiperSlideComponent);\r\n        Vue.directive(CoreNames.SwiperDirective, getDirective(SwiperClass, globalOptions));\r\n        install.installed = true;\r\n    };\r\n    return install;\r\n};\r\nfunction exporter(SwiperClass) {\r\n    var _a;\r\n    return _a = {\r\n            version: '4.1.1',\r\n            install: getInstaller(SwiperClass),\r\n            directive: getDirective(SwiperClass)\r\n        },\r\n        _a[CoreNames.SwiperComponent] = getSwiperComponent(SwiperClass),\r\n        _a[CoreNames.SwiperSlideComponent] = SwiperSlideComponent,\r\n        _a;\r\n}\n\n/**\r\n * @file vue-awesome-swiper\r\n * @module default-export\r\n * @author Surmon <https://github.com/surmon-china>\r\n */\r\nvar VueAwesomeSwiper = exporter(SwiperClass);\r\nvar version = VueAwesomeSwiper.version;\r\nvar install = VueAwesomeSwiper.install;\r\nvar directive = VueAwesomeSwiper.directive;\r\nvar Swiper = VueAwesomeSwiper.Swiper;\r\nvar SwiperSlide = VueAwesomeSwiper.SwiperSlide;\n\nexport default VueAwesomeSwiper;\nexport { Swiper, SwiperSlide, directive, install, version };\n"],"names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","doc","document","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","win","window","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","Dom7","arr","self","i","$","selector","context","els","tempParent","html","trim","indexOf","toCreate","innerHTML","push","match","split","nodeType","unique","uniqueArray","fn","prototype","Class","Methods","addClass","className","classes","j","classList","add","removeClass","remove","hasClass","contains","toggleClass","toggle","attr","attrs","value","arguments","getAttribute","attrName","removeAttr","removeAttribute","data","el","dom7ElementDataStorage","dataKey","transform","elStyle","webkitTransform","transition","duration","webkitTransitionDuration","transitionDuration","on","args","eventType","targetSelector","listener","capture","handleLiveEvent","e","eventData","dom7EventData","unshift","is","apply","parents","k","handleEvent","undefined","events","event","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","handler","dom7proxy","splice","trigger","evt","detail","bubbles","cancelable","filter","dataIndex","dispatchEvent","transitionEnd","callback","dom","fireCallBack","call","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","offset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollLeft","top","left","css","props","prop","each","text","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","index","child","previousSibling","eq","returnIndex","append","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","next","nextElementSibling","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","parent","parentNode","closest","find","foundElements","found","matchedItems","removeChild","toAdd","methodName","Utils","deleteProps","object","nextTick","delay","now","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","m42","parseUrlQuery","url","query","params","param","urlToParse","paramsPart","decodeURIComponent","o","to","nextSource","keysArray","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","Support","touch","pointerEvents","observer","checkObserver","passiveListener","checkPassiveListener","supportsPassive","opts","defineProperty","get","gestures","checkGestures","SwiperClass","eventsListeners","eventName","priority","method","once","onceHandler","f7proxy","eventHandler","emit","Array","isArray","slice","useModulesParams","instanceParams","instance","modules","moduleName","module","useModules","modulesParams","moduleParams","modulePropName","moduleProp","bind","moduleEventName","create","components","use","static","name","proto","install","m","installModule","update","updateSize","swiper","width","height","$el","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","size","updateSlides","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","slidesForMargin","slideIndex","cssMode","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","slidesNumberEvenToRows","slideSize","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginTop","marginRight","marginBottom","slidesPerColumn","Math","floor","ceil","slidesPerView","slidesPerColumnFill","max","slidesPerRow","numFullColumns","slide","newSlideOrderIndex","column","row","slidesPerGroup","groupIndex","slideIndexInGroup","columnsInGroup","min","order","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","paddingTop","paddingBottom","swiperSlideSize","centeredSlides","abs","slidesPerGroupSkip","newSlidesGrid","effect","setWrapperSize","slidesGridItem","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","watchOverflow","checkOverflow","watchSlidesProgress","watchSlidesVisibility","updateSlidesOffset","updateAutoHeight","speed","activeSlides","newHeight","setTransition","visibleSlides","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","translate","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideProgress","minTranslate","autoHeight","slideBefore","slideAfter","progress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","loop","slideDuplicateClass","nextSlide","prevSlide","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","wrapperEl","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","scrollTo","behavior","onTranslateToWrapperTransitionEnd","destroyed","transitionStart","direction","dir","slideTo","initialSlide","allowSlideNext","allowSlidePrev","t","scrollWidth","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","loopedSlides","slideNext","increment","loopFix","_clientLeft","slidePrev","normalize","val","normalizedTranslate","normalizedSnapGrid","prevIndex","prevSnap","slideReset","slideToClosest","threshold","currentSnap","slidesPerViewDynamic","slideToIndex","loopCreate","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","grabCursor","setGrabCursor","moving","simulateTouch","isLocked","cursor","unsetGrabCursor","manipulation","appendSlide","prependSlide","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","Device","platform","ua","device","ios","android","androidChrome","desktop","iphone","ipod","ipad","edge","ie","firefox","macos","windows","cordova","phonegap","electron","screenWidth","screenHeight","toLowerCase","os","osVersion","webView","webview","standalone","pixelRatio","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","type","which","button","isTouched","isMoved","noSwiping","noSwipingSelector","noSwipingClass","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","preventDefault","formElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","sqrt","touchAngle","atan2","PI","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","freeMode","velocities","position","time","onTouchEnd","touchEndTime","timeDiff","lastClickTime","currentPos","freeModeMomentum","lastMoveEvent","pop","velocityEvent","distance","velocity","freeModeMinimumVelocity","freeModeMomentumVelocityRatio","momentumDuration","freeModeMomentumRatio","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","freeModeMomentumBounceRatio","needsLoopFix","freeModeMomentumBounce","freeModeSticky","moveDistance","currentSlideSize","longSwipesMs","stopIndex","groupSize","ratio","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","breakpoints","setBreakpoint","autoplay","running","paused","run","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","defaults","init","updateOnWindowResize","uniqueNavElements","preloadImages","updateOnImagesReady","passiveListeners","containerModifierClass","wrapperClass","prototypes","attachEvents","touchEvents","start","move","end","passive","cancel","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointOnlyParams","paramValue","breakpointParams","originalParams","wasMultiRow","isMultiRow","directionChanged","needsReLoop","changeDirection","points","point","minRatio","substr","sort","b","wasLocked","lastSlidePosition","addClasses","classNames","suffixes","suffix","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","super","prototypeGroup","protoMethod","moduleParamName","swiperParams","passedParams","swipers","containerEl","newParams","shadowRoot","options","touchEventsTouch","touchEventsDesktop","clickTimeout","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","slideEl","destroy","deleteInstance","cleanStyles","newDefaults","Device$1","Support$1","support","Browser","isEdge","isSafari","isWebView","test","Browser$1","browser","Resize","resize","resizeHandler","orientationChangeHandler","Observer","func","attach","ObserverFunc","mutations","observerUpdate","observe","attributes","childList","characterData","observers","observeParents","containerParents","observeSlideChildren","disconnect","Observer$1","Virtual","force","addSlidesBefore","addSlidesAfter","from","previousFrom","previousTo","previousSlidesGrid","renderSlide","previousOffset","offsetProp","slidesAfter","slidesBefore","onRendered","lazy","load","renderExternal","getSlides","slidesToRender","prependIndexes","appendIndexes","cache","$slideEl","numberOfNewSlides","newCache","cachedIndex","$cachedEl","cachedElIndex","Virtual$1","beforeInit","overwriteParams","Keyboard","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","enable","disable","Keyboard$1","Mousewheel","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","isEventSupported","isSupported","element","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","mousewheel","eventsTarged","releaseOnEdges","delta","rtlFactor","forceToAxis","invert","newEvent","sign","ignoreWheelEvents","sensitivity","timeout","shift","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","raw","animateSlider","releaseScroll","getTime","Navigation","$nextEl","$prevEl","disabledClass","lockClass","onPrevClick","onNextClick","Pagination","pagination","current","total","paginationType","bullets","firstIndex","lastIndex","midIndex","dynamicBullets","bulletSize","dynamicMainBullets","dynamicBulletIndex","bulletActiveClass","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","currentClass","formatFractionCurrent","totalClass","formatFractionTotal","progressbarDirection","progressbarOpposite","scale","scaleX","scaleY","progressbarFillClass","renderCustom","render","paginationHTML","numberOfBullets","renderBullet","bulletClass","bulletElement","renderFraction","renderProgressbar","clickable","clickableClass","modifierClass","progressbarOppositeClass","hiddenClass","Scrollbar","scrollbar","dragSize","trackSize","$dragEl","newSize","newPos","hide","opacity","divider","moveDivider","display","getPointerPosition","clientX","clientY","setDragPosition","dragStartPos","positionRatio","onDragStart","dragTimeout","onDragMove","onDragEnd","snapOnRelease","enableDraggable","activeListener","disableDraggable","$swiperEl","dragClass","dragEl","draggable","Parallax","setTransform","p","currentOpacity","currentScale","parallax","parallaxEl","$parallaxEl","parallaxDuration","Zoom","getDistanceBetweenTouches","x1","y1","x2","y2","onGestureStart","zoom","gesture","fakeGestureTouched","fakeGestureMoved","scaleStart","$imageEl","$imageWrapEl","containerClass","maxRatio","isScaling","onGestureChange","scaleMove","onGestureEnd","touchesStart","slideWidth","slideHeight","scaledWidth","scaledHeight","minX","maxX","minY","maxY","touchesCurrent","prevPositionX","prevPositionY","prevTime","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","onTransitionEnd","out","in","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","zoomedSlideClass","activeListenerWithCapture","slideSelector","Lazy","loadInSlide","loadInDuplicate","$images","elementClass","loadedClass","loadingClass","imageIndex","background","$pictureEl","sourceIndex","sourceEl","$source","preloaderClass","slideOriginalIndex","originalSlide","duplicatedSlide","slideExist","initialImageLoaded","elIndex","loadPrevNext","loadPrevNextAmount","amount","maxIndex","minIndex","Controller","LinearSpline","binarySearch","guess","array","i1","i3","interpolate","getInterpolateFunction","c","controller","spline","controlled","control","controlledTranslate","setControlledTranslate","by","inverse","setControlledTransition","Controller$1","a11y","makeElFocusable","makeElNotFocusable","addElRole","role","addElLabel","label","disableEl","enableEl","onEnterKey","notify","lastSlideMessage","nextSlideMessage","firstSlideMessage","prevSlideMessage","click","message","notification","liveRegion","updateNavigation","updatePagination","bulletEl","$bulletEl","paginationBulletMessage","History","hashNavigation","paths","getPathValues","scrollToSlide","setHistoryPopState","pathArray","part","setHistory","slugify","currentState","HashNavigation","onHashCange","newHash","setHash","watchState","Autoplay","$activeSlideEl","reverseDirection","stopOnLastSlide","pause","waitForTransition","Fade","tx","ty","slideOpacity","fadeEffect","crossFade","eventTriggered","triggerEvents","Cube","swiperWidth","swiperHeight","cubeEffect","$cubeShadowEl","wrapperRotate","shadow","slideAngle","round","tz","slideShadows","shadowBefore","shadowAfter","shadowOffset","shadowScale","shadowAngle","sin","cos","scale1","scale2","zFactor","Flip","flipEffect","limitRotation","rotateY","rotateX","zIndex","Coverflow","coverflowEffect","center","rotate","depth","offsetMultiplier","modifier","translateZ","stretch","slideTransform","$shadowBeforeEl","$shadowAfterEl","prefixedPointerEvents","perspectiveOrigin","Thumbs","thumbs","thumbsParams","swiperCreated","thumbsContainerClass","onThumbClick","thumbsSwiper","slideThumbActiveClass","currentIndex","initial","autoScrollOffset","useOffset","newThumbsIndex","currentThumbsIndex","prevThumbsIndex","nextThumbsIndex","thumbsToActivate","thumbActiveClass","multipleActiveThumbs","hideOnClick","toEdge","fromEdge","isHidden","number","activeIndexChange","snapIndexChange","slidesLengthChange","snapGridLengthChange","set","touchStart","touchEnd","doubleTap","slideChange","loadOnTransitionStart","scroll","scrollbarDragMove","notificationClass","paginationUpdate","disableOnInteraction","onVisibilityChange","visibilityState","beforeTransitionStart","sliderFirstMove","beforeDestroy","CoreNames","ComponentEvents","ComponentPropNames","DEFAULT_CLASSES","freeze","SWIPER_EVENTS","__spreadArrays","s","il","r","jl","SlotNames","kebabcase","string","handleClickSlideEvent","_a","_b","_c","eventPath","composedPath","path","slides_1","includes","some","item","reallyIndex","Number","dataset","swiperSlideIndex","reallyIndexValue","isInteger","ClickSlide","bindSwiperEvents","arguments$1","_i","kebabcaseName","getDirective","globalOptions","getStandardisedOptionByAttrs","vnode","_d","getSwiperInstanceName","binding","arg","id","SwiperInstance","getSwiperInstance","instanceName","getSwipeOptions","getBooleanValueByInput","input","getEventEmiter","componentOptions","listeners","fns","emitEvent","inserted","swiperOptions","vueContext","Ready","componentUpdated","_e","_f","_g","_h","_j","_k","_l","_m","autoUpdate","AutoUpdate","isLoop","unbind","autoDestroy","AutoDestroy","DeleteInstanceOnDestroy","CleanupStylesOnDestroy","getSwiperComponent","SwiperComponent","defaultOptions","required","default","Boolean","computed","swiperInstance","methods","handleSwiperClick","$emit","autoReLoopSwiper","updateSwiper","destroySwiper","initSwiper","mounted","activated","updated","$nextTick","staticClass","$slots","ParallaxBg","class","PrevButton","NextButton","SwiperSlideComponent","$parent","getInstaller","Vue","installed","component","directive","SwiperDirective","VueAwesomeSwiper","exporter","version","SwiperSlide"],"sourceRoot":""}