{"version":3,"file":"index.cjs","mappings":"AACA,IAAIA,EAAsB,CCA1BA,EAAwB,CAACC,EAASC,KACjC,IAAI,IAAIC,KAAOD,EACXF,EAAoBI,EAAEF,EAAYC,KAASH,EAAoBI,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,MCJ3EH,EAAwB,CAACS,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,GCClFV,EAAyBC,IACH,oBAAXa,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeL,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeL,EAAS,aAAc,CAAEe,OAAO,M,4HCLvD,MAAMC,UAAUC,OAAO,MAAMC,UAAUD,OAAO,MAAME,UAAUF,OAAO,MAAMG,UAAUH,OAA8B,MAAMI,UAAUJ,OAAO,MAAMK,UAAUL,OAAO,MAAMd,UAAUc,OAAO,MAAMM,UAAUN,OAAO,MAAMO,UAAUP,MAAMQ,OAAO,GAAG,MAAMC,EAAE,CAACV,EAAEE,IAAI,iBAAiBF,GAAG,OAAOA,IAAG,IAAKA,EAAEE,GAAGS,EAAEd,OAAO,WAAW,SAASe,EAAEZ,GAAG,OAAOU,EAAEV,EAAEW,EAAE,CAAC,SAASE,EAAEb,GAAG,MAAM,iBAAiBA,GAAG,OAAOA,GAAGZ,OAAO0B,eAAed,KAAKZ,OAAOM,SAAS,CAAC,SAASqB,EAAEf,GAAG,IAAI,MAAME,KAAKd,OAAO4B,KAAKhB,GAAG,IAAI,CAAC,WAAW,QAAQ,WAAW,WAAW,eAAe,WAAW,QAAQiB,SAASf,GAAG,OAAM,EAAG,QAAQ,CAAC,SAAS,WAAW,aAAae,gBAAgBjB,EAAEkB,WAAW,mBAAmBlB,EAAEmB,OAAO,kBAAkBnB,EAAEoB,UAAU,kBAAkBpB,EAAEqB,QAAQ,CAAC,SAASC,EAAEtB,GAAG,IAAIa,EAAEb,GAAG,OAAM,EAAG,IAAI,MAAME,KAAKF,EAAE,CAAC,IAAIa,EAAEb,EAAEE,IAAI,OAAM,EAAG,IAAIa,EAAEf,EAAEE,IAAI,OAAM,CAAE,CAAC,OAAM,CAAE,CAAC,MAAMqB,EAAE1B,OAAO,cAAc,SAAS2B,EAAExB,GAAG,OAAOU,EAAEV,EAAEuB,EAAE,CAAC,MAAME,UAAUC,IAAI,IAAAC,CAAK3B,GAAG,MAAME,EAAE,GAAG,IAAI,MAAMC,KAAKyB,KAAK5B,EAAEG,IAAID,EAAE2B,KAAK1B,GAAG,OAAOD,CAAC,CAAC,OAAA4B,CAAQ9B,GAAG,IAAI,MAAME,KAAK0B,KAAK,GAAG5B,EAAEE,GAAG,OAAOA,EAAE,OAAO,IAAI,CAAC,UAAA6B,CAAW/B,GAAG,OAAOgC,MAAMC,KAAKL,MAAMM,KAAK,CAAChC,EAAEC,IAAIH,EAAEE,GAAGF,EAAEG,GAAG,EAAE,MAAMgC,EAAEtC,OAAO,sBAAsB,MAAMuC,UAAUX,EAAE,CAACU,IAAG,EAAG,CAACZ,IAAG,EAAG,SAASc,EAAErC,EAAEE,EAAEC,GAAE,GAAI,MAAMC,EAAE,IAAII,EAAER,GAAG,IAAI,MAAMA,KAAKE,EAAE,aAAaF,EAAEsC,QAAQlC,EAAEK,OAAOoB,KAAK7B,EAAEuC,QAAQ,GAAG,IAAInC,EAAEK,OAAO+B,OAAO,OAAO,KAAK,GAAGrC,EAAE,MAAMC,EAAE,OAAOA,CAAC,CAAC,SAASqC,EAAEzC,GAAG,MAAM,mBAAmBA,EAAE0C,gBAAgB,CAAC,SAASC,EAAE3C,GAAG,MAAME,EAAEF,EAAE4C,SAAS,OAAOpB,EAAEtB,GAAGA,EAAE,IAAI,CAAC2C,eAAeC,EAAE9C,EAAEE,GAAGA,EAAEF,GAAG,MAAMG,EAAEH,EAAE+C,WAAW,IAAI,MAAM/C,KAAKG,QAAQ2C,EAAE9C,EAAEE,EAAE,CAAmR,MAAM8C,EAAEnD,OAAO,qBAAqB,MAAMoD,EAAEC,SAAS,IAAID,EAAE,WAAAE,GAAc,CAAC,SAAAC,CAAUpD,GAAGqD,QAAQC,IAAItD,EAAE,CAACuD,MAAM,MAAM,CAAC,sBAAOC,GAAkB,OAAO5B,MAAK,CAAE,EAAE,SAAS6B,EAAEzD,GAAG,MAAM,CAAC0D,KAAK,GAAGC,cAAa,EAAGC,SAAS,CAACC,SAAS7D,GAAGA,MAAMA,EAAE,CAAC,MAAM8D,EAAEjE,OAAO,kBAAkB,MAAMkE,EAAEC,OAAO,CAACF,IAAG,EAAGG,IAAIC,SAAS,CAAC,EAAE,WAAAf,CAAYnD,GAAG4B,KAAKoC,OAAOhE,CAAC,CAAC,SAAAmE,GAAY,IAAIvC,KAAKoC,OAAO,MAAM,IAAI/D,MAAM,qBAAqB,OAAO2B,KAAKoC,MAAM,CAAC,WAAAI,CAAYpE,GAAG,MAAME,EAAE,IAAI6D,EAAEnC,MAAM,OAAOA,KAAKsC,SAASlE,GAAGE,EAAEA,CAAC,CAAC,MAAAmE,CAAOrE,GAAG4B,KAAKqC,IAAI,SAASjE,GAAG,MAAME,EAAE,CAAC,EAAE,IAAI,MAAMC,KAAKf,OAAO4B,KAAKhB,GAAG,CAAC,MAAMI,EAAEJ,EAAEG,GAAGD,EAAEC,GAAGsD,EAAErD,EAAE,CAAC,OAAOF,CAAC,CAArF,CAAuFF,EAAE,CAAC,MAAAsE,GAAS,IAAI1C,KAAKqC,IAAI,MAAM,IAAIhE,MAAM,mBAAmB,OAAO2B,KAAKqC,GAAG,EAAE,MAAMM,EAAEC,KAAK,CAACxB,IAAG,EAAGyB,OAAOC,6BAA4B,EAAGpC,OAAO,CAACqC,aAAY,EAAGC,oBAAmB,EAAGC,iBAAgB,EAAGC,eAAc,EAAGC,sBAAqB,GAAIC,QAAQC,mBAAmB,CAAC,EAAEC,oBAAoB,CAAC,EAAEC,gCAAgCC,+BAA+BC,6BAA6B,WAAAlC,CAAYnD,EAAEG,EAAEC,EAAE,CAAC,GAAG,GAAGwB,KAAK4C,KAAKxE,IAAIA,aAAasF,MAAM,MAAM,IAAIrF,MAAM,qDAAqD,GAAGqB,EAAEnB,GAAGyB,KAAKoD,QAAQ,IAAIjB,EAAEnC,KAAKoD,QAAQX,OAAOlE,OAAO,CAAC,GAAG,iBAAiBoF,EAAEpF,IAAI,OAAOoF,KAAKzB,KAAKyB,GAAG,MAAM,IAAIrF,EAAE,mDAAmD0B,KAAKoD,QAAQ7E,CAAC,CAAC,IAAIoF,EAAE,MAAMlF,EAAEjB,OAAOoG,OAAO5D,KAAK6D,iBAAiBrF,GAAGwB,KAAK6C,OAAOpE,EAAEoE,OAAO7C,KAAKuD,gCAAgC9E,EAAEqF,gCAAgC9D,KAAKwD,+BAA+B/E,EAAEsF,+BAA+B/D,KAAKyD,6BAA6BhF,EAAEuF,4BAA4B,CAAC,4BAAMC,GAAyB,GAAGjE,KAAKU,OAAOwC,cAAc,MAAM,IAAIvE,EAAE,yCAAyCqB,KAAKU,OAAOyC,sBAAqB,QAASnD,KAAKkE,iBAAiBlE,KAAKU,OAAOwC,eAAc,EAAGlD,KAAKU,OAAOyC,sBAAqB,EAAGnD,KAAKU,OAAOsC,0BAA0BhD,KAAKmE,qBAAqB,CAAC,oBAAMD,GAAiB,MAAM9F,QAAQgG,QAAQC,WAAW7G,OAAO8G,QAAQtE,KAAKqD,oBAAoBhB,IAAIpB,OAAO7C,EAAEE,MAAM,IAAIA,EAAE,OAAO,MAAMC,EAAEqB,EAAEtB,GAAG8B,MAAMC,KAAK/B,GAAG,CAACA,GAAGE,QAAQ4F,QAAQC,WAAW9F,EAAE8D,IAAIpB,UAAU,GAAG3C,EAAEiG,QAAQ7D,OAAOwC,eAAe5E,EAAEiG,QAAQ7D,OAAOyC,qBAAqB,aAAa7E,EAAEiG,QAAQC,aAAa,MAAMjG,QAAQ6F,QAAQC,YAAYrE,KAAKwD,+BAA+B7F,IAAIS,IAAI,IAAIiE,IAAIjE,GAAGA,EAAEE,KAAKmC,EAAE,mCAAmCrC,2BAA2BG,MAAMkC,EAAE,aAAarC,kCAAkCI,MAAMF,EAAEmC,EAAE,iCAAiCrC,GAAE,GAAI,GAAGE,EAAE,MAAM0B,KAAK6C,OAAOrB,UAAUlD,GAAGA,CAAC,CAAC,sBAAMmG,GAAmBzE,KAAKU,OAAOuC,iBAAgB,EAAGjD,KAAK0E,iBAAgB,SAAU1E,KAAKkE,uBAAuBlE,KAAK2E,aAAY,GAAI3E,KAAKU,OAAOuC,iBAAgB,CAAE,CAAC,OAAIZ,GAAM,OAAOrC,KAAKoD,QAAQV,QAAQ,CAAC,eAAAgC,CAAgBtG,GAAE,GAAI,MAAME,EAAE0B,KAAKqD,mBAAmB,GAAGxC,EAAEb,KAAK4C,MAAM,IAAI,MAAMrE,KAAKyB,KAAKqC,IAAI,CAAC,MAAM7D,EAAEwB,KAAKqC,IAAI9D,GAAGoF,EAAEnF,EAAEiB,SAAS,GAAGO,KAAK4E,gBAAgBrG,EAAEC,GAAGmF,EAAE,CAACrF,EAAEC,KAAKD,EAAEC,GAAG,IAAIiC,GAAG,MAAMpC,EAAEE,EAAEC,GAAGoF,EAAE3D,KAAK6E,gCAAgCrG,EAAEwB,KAAK4C,KAAKrE,GAAG,IAAI,MAAMD,KAAKqF,EAAEvF,EAAE0G,IAAIxG,GAAG,QAAQ,CAAC,MAAMG,EAAEuB,KAAK+E,mCAAmCvG,EAAEwB,KAAK4C,KAAKrE,GAAGE,IAAIH,EAAEC,KAAKH,GAAGK,GAAGH,EAAEC,IAAID,EAAEC,GAAGgG,QAAQS,UAAU1G,EAAEC,GAAGE,EAAE,KAAK,CAAC,IAAI,MAAML,KAAK4B,KAAKqC,IAAI,CAAC,MAAM/D,EAAE0B,KAAKqC,IAAIjE,GAAG4B,KAAKiF,4BAA4B7G,EAAEE,EAAE,CAAC0B,KAAK8C,6BAA4B,CAAE,CAAC,CAAC,uBAAAoC,GAA0B,GAAGlF,KAAK8C,4BAA4B,MAAM,IAAInE,EAAE,0CAA0CqB,KAAKsD,oBAAoBtD,KAAKmF,iBAAiBnF,KAAKqD,oBAAoBrD,KAAK0E,kBAAkB1E,KAAK8C,6BAA4B,CAAE,CAAC,mBAAAsC,CAAoBhH,EAAEE,GAAG,QAAG,IAAS0B,KAAKqD,qBAAqBrD,KAAKqD,mBAAmBjF,GAAG,OAAO,KAAK,MAAMG,EAAEyB,KAAKqD,mBAAmBjF,GAAG,GAAG4B,KAAKqC,IAAIjE,GAAGqB,SAAS,CAAC,IAAIG,EAAErB,GAAG,MAAM,IAAIG,EAAE,gDAAgD,MAAMN,EAAEE,EAAE0C,SAAS,IAAI5C,EAAE,OAAO,KAAK,MAAMI,EAAED,EAAEwB,KAAKzB,GAAGF,EAAEiH,IAAI/G,IAAI,GAAGE,EAAEoC,OAAO,EAAE,MAAM,IAAIlC,EAAE,wFAAwF,OAAOF,EAAE,EAAE,CAAC,IAAIQ,EAAET,GAAG,MAAM,IAAIG,EAAE,6CAA6C,OAAOJ,EAAE0C,UAAU1C,EAAE0C,SAASqE,IAAI9G,GAAGA,EAAE,IAAI,CAAC,kCAAAwG,CAAmC3G,EAAEG,EAAEC,GAAG,IAAIJ,EAAEkB,SAAS,OAAOU,KAAKqD,mBAAmB7E,IAAI,KAAK,IAAIwB,KAAK8C,6BAA6B9C,KAAKqD,mBAAmB7E,GAAG,MAAM,IAAIF,EAAE,qGAAqG,MAAMqF,EAAEvF,EAAEkB,SAASZ,EAAEsB,KAAKsF,qBAAqB3B,EAAEpF,GAAG,GAAGyB,KAAKuF,iBAAiB/G,EAAEE,EAAEN,GAAG,IAAIM,EAAEkC,OAAO,OAAO,KAAK,GAAGlC,EAAEkC,OAAO,EAAE,MAAM,IAAInC,EAAE,GAAGuB,KAAKuB,YAAYiE,kDAAkDhH,kCAAkCmF,OAAO,MAAMpG,EAAEmB,EAAE,GAAG,OAAOsB,KAAKyF,uBAAuBjH,EAAEJ,EAAEb,EAAE,CAAC,sBAAAkI,CAAuBrH,EAAEE,EAAEC,GAAG,MAAMC,EAAEwB,KAAKoF,oBAAoBhH,EAAEG,GAAG,GAAGC,EAAE,OAAOA,EAAE,IAAImF,EAAE,KAAK,IAAI,MAAMnF,EAAE,IAAIF,EAAEiB,MAAMjB,EAAE0D,SAASC,SAAS1D,EAAEyB,KAAKoD,QAAQZ,YAAYpE,GAAGE,EAAE0D,SAAS0D,SAASpH,EAAEwD,MAAM,IAAI9C,EAAER,GAAG,MAAM,IAAIH,MAAM,iDAAiDsF,EAAEnF,CAAC,CAAC,MAAMD,GAAG,GAAGA,aAAahB,IAAIe,EAAEkB,SAAS,OAAOiC,QAAQkE,KAAK,GAAGpH,EAAEqH,0CAA0CxH,kBAAkB,KAAK,MAAMG,CAAC,CAACyB,KAAK6F,yBAAyBzH,EAAEuF,GAAG,IAAI,MAAMrF,KAAK0B,KAAKuD,gCAAgC5F,IAAIS,IAAI,GAAGE,EAAEqF,GAAG,OAAOA,CAAC,CAAC,+BAAAkB,CAAgCzG,EAAEE,EAAEC,GAAG,MAAMC,EAAEJ,EAAEkB,SAAS,IAAId,EAAE,OAAO,IAAIgC,EAAE,MAAMmD,EAAE3D,KAAKsF,qBAAqB9G,EAAEF,GAAG0B,KAAKuF,iBAAiBhH,EAAEoF,EAAEvF,GAAG,MAAMK,EAAE,IAAI+B,EAAE,IAAI,MAAMlC,KAAKqF,EAAE,CAAC,IAAInF,EAAEwB,KAAKoF,oBAAoB7G,EAAED,GAAGE,IAAIA,EAAEwB,KAAKyF,uBAAuBlH,EAAEH,EAAEE,IAAIE,GAAGC,EAAEqG,IAAItG,EAAE,CAAC,OAAOC,CAAC,CAAC,iCAAAqH,CAAkC1H,EAAEE,GAAG,MAAMC,EAAEyB,KAAKuD,gCAAgC5F,IAAIS,IAAI,GAAGG,EAAE0B,KAAK3B,GAAG0B,KAAKuD,gCAAgCwC,IAAI3H,EAAEG,EAAE,CAAC,gCAAAyH,CAAiC5H,EAAEE,GAAG,MAAMC,EAAEyB,KAAKwD,+BAA+B7F,IAAIS,IAAI,GAAGG,EAAE0B,KAAK3B,GAAG0B,KAAKwD,+BAA+BuC,IAAI3H,EAAEG,EAAE,CAAC,8BAAA0H,CAA+B7H,EAAEE,GAAG,MAAMC,EAAEyB,KAAKyD,6BAA6B9F,IAAIS,IAAI,GAAGG,EAAE0B,KAAK3B,GAAG0B,KAAKyD,6BAA6BsC,IAAI3H,EAAEG,EAAE,CAAC,mBAAA2H,CAAoB9H,EAAEG,GAAG,GAAGyB,KAAKqC,IAAIjE,GAAGqB,SAAS,MAAM,IAAInB,EAAE,kEAAkE,IAAIU,EAAET,GAAG,MAAM,IAAID,EAAE,gDAAgD0B,KAAK6F,yBAAyBzH,EAAEG,GAAGyB,KAAKqD,mBAAmBjF,GAAGG,CAAC,CAAC,mBAAA4H,CAAoB/H,EAAEG,GAAG,IAAIyB,KAAKqC,IAAIjE,GAAGqB,SAAS,MAAM,IAAInB,EAAE,iEAAiE0B,KAAK6F,yBAAyBzH,EAAEG,GAAG,MAAMC,EAAEwB,KAAKqD,oBAAoBrD,KAAKqD,mBAAmBjF,GAAG4B,KAAKqD,mBAAmBjF,GAAG,IAAIoC,EAAEhC,EAAEsG,IAAIvG,GAAGyB,KAAKqD,mBAAmBjF,GAAGI,CAAC,CAAC,wBAAAqH,CAAyBzH,EAAEE,GAAGA,EAAEiG,QAAQ6B,mBAAmBpG,KAAKqG,gCAAgCjI,GAAG,CAAC,+BAAAiI,CAAgCjI,GAAG,OAAO6C,UAAUjB,KAAKsG,iBAAiBhI,EAAEF,GAAG,MAAMG,QAAQ6F,QAAQC,YAAYrE,KAAKyD,6BAA6B9F,IAAIS,IAAI,IAAIiE,IAAIjE,GAAGA,EAAEE,KAAKE,EAAEwB,KAAKuG,uCAAuCnI,GAAGI,GAAGD,EAAE0B,KAAK,CAACS,OAAO,WAAWC,OAAOnC,IAAIiC,EAAE,+CAA+CrC,iBAAiBG,GAAG,CAAC,sCAAAgI,CAAuCnI,GAAG,OAAO4B,KAAKqC,IAAIjE,GAAGoB,WAAWQ,KAAKU,OAAOsC,oBAAoB,OAAOhD,KAAKqD,mBAAmBjF,GAAG,IAAIG,EAAE,wBAAwBH,0BAA0B,IAAI,CAAC,yBAAM+F,GAAsB,GAAGnE,KAAKU,OAAOqC,YAAY,MAAM,IAAIpE,EAAE,uCAAuC,GAAGqB,KAAKU,OAAOsC,oBAAmB,GAAIhD,KAAKU,OAAOyC,qBAAqB,CAAC,IAAInD,KAAKU,OAAOwC,cAAc,OAAOlD,KAAKU,OAAOqC,aAAY,OAAQ/C,KAAKU,OAAOsC,oBAAmB,SAAUhD,KAAK2E,cAAc3E,KAAKU,OAAOwC,eAAc,EAAGlD,KAAKU,OAAOqC,aAAY,EAAG/C,KAAKU,OAAOsC,oBAAmB,CAAE,CAAC,CAAC,oBAAAsC,CAAqBlH,EAAEE,GAAG,MAAM,iBAAiBF,EAAE,EAAEA,EAAEE,IAAI8B,MAAMC,KAAK/B,EAAEwC,iBAAiB1C,IAAtC,CAA2CA,EAAEE,GAAGF,EAAEE,EAAE,CAAC,gBAAIkI,GAAe,IAAIxG,KAAK8C,4BAA4B,MAAM,IAAItE,EAAE,yCAAyC,OAAOwB,KAAKsD,mBAAmB,CAAC,gBAAAgD,CAAiBlI,EAAEE,GAAGsB,EAAEI,KAAKqD,mBAAmB/E,IAAI0B,KAAKqD,mBAAmB/E,GAAGmI,OAAOrI,GAAG4B,KAAKqD,mBAAmB/E,KAAKF,IAAI4B,KAAKqD,mBAAmB/E,GAAG,KAAK,CAAC,eAAAsG,CAAgBxG,EAAEG,GAAG,MAAMC,EAAED,EAAEe,SAASqE,EAAEpF,EAAEiB,SAAS,IAAIhB,GAAGmF,KAAK3D,KAAKqD,mBAAmBjF,IAAIwB,EAAEI,KAAKqD,mBAAmBjF,KAAK,IAAI4B,KAAKqD,mBAAmBjF,GAAGsI,MAAM,MAAM,IAAIpI,EAAE,GAAG0B,KAAKuB,YAAYiE,qBAAqBpH,sFAAsF,CAAC,2BAAA6G,CAA4B7G,EAAEG,GAAG,GAAGA,EAAEiB,SAAS,MAAM,IAAIlB,EAAE,eAAeF,iGAAiG,CAAC,gBAAAmH,CAAiBjH,EAAEC,EAAEC,GAAG,GAAG,IAAID,EAAEqC,QAAQpC,EAAEgB,SAAS,MAAM,IAAIpB,EAAE,GAAG4B,KAAKuB,YAAYiE,+CAA+ClH,uBAAuBE,EAAEc,aAAa,CAAC,gBAAA6F,CAAiB/G,GAAG,OAAO,IAAIuI,MAAMvI,EAAE,CAACT,IAAI,CAACS,EAAEE,KAAK,GAAG,iBAAiBA,EAAE,MAAM,IAAID,MAAM,oDAAoD,KAAKC,KAAKF,GAAG,MAAM,IAAIC,MAAM,eAAeC,0BAA0B,OAAOF,EAAEE,IAAIyH,IAAI,KAAK,MAAM,IAAI1H,MAAM,kHAAkH,CAAC,cAAAwF,GAAiB,MAAM,CAACC,gCAAgC,IAAI8C,IAAI7C,+BAA+B,IAAI6C,IAAI5C,6BAA6B,IAAI4C,IAAI/D,OAAOxB,EAAEO,kBAAkB,CAAC,iBAAM+C,CAAYvG,GAAE,GAAI,MAAME,QAAQ8F,QAAQC,WAAW7G,OAAO8G,QAAQtE,KAAKqD,oBAAoBhB,IAAIpB,OAAO3C,EAAEC,MAAM,IAAIA,IAAIyB,KAAKqC,IAAI/D,GAAGyD,aAAa,OAAO,IAAIvD,EAAE,GAAG,GAAGoB,EAAErB,GAAG,IAAI,MAAMH,KAAKG,EAAEC,EAAEyB,KAAK7B,QAAQI,EAAEyB,KAAK1B,GAAG,GAAGH,EAAE,CAAC,IAAI4B,KAAKqC,IAAI/D,GAAGgB,SAAS,OAAOd,QAAQyC,eAAe7C,EAAEE,GAAG,MAAMC,EAAE,IAAIiC,EAAEpC,GAAG,aAAa8C,EAAE5C,EAAEF,IAAI,MAAME,EAAEyC,EAAE3C,GAAG,GAAGE,EAAE,IAAI,MAAMF,KAAKE,EAAEC,EAAEkI,OAAOrI,KAAKgC,MAAMC,KAAK9B,EAAE,CAAxH0C,CAA0HzC,EAAEwB,KAAK4C,KAAK,CAACnC,EAAE,qCAAqCnC,uBAAuB8F,QAAQC,WAAW7F,EAAE6D,IAAIpB,UAAU,IAAI7C,EAAEmG,QAAQ7D,OAAOqC,cAAc3E,EAAEmG,QAAQ7D,OAAOsC,mBAAmB,OAAO5E,EAAEmG,QAAQS,iBAAiBzG,EAAEkC,EAAE,8CAA8CnC,GAAE,GAAI,GAAGC,EAAE,MAAMyB,KAAK6C,OAAOrB,UAAUjD,GAAGA,CAAC,CAAC,qBAAOsI,CAAezI,EAAEE,GAAG,MAAM,CAACoH,KAAKpH,GAAG,CAAC,EAAE2D,SAAS,CAAC3D,EAAEC,EAAEC,KAAK,IAAImF,EAAEpF,EAAE,GAAGE,EAAEL,EAAE0I,OAAOC,UAAUtI,GAAG,IAAI,IAAIH,EAAE,EAAEA,EAAEF,EAAEE,IAAIqF,EAAEA,EAAEpB,gBAAgB,CAAC,IAAI7C,EAAEtB,GAAG,MAAM,IAAIC,MAAM,yBAAyBsF,EAAElB,OAAOrE,EAAE,CAAC,IAAIK,EAAE,OAAO,IAAIkE,EAAErE,EAAEqF,EAAEnF,IAAI,EAAE,MAAMwI,EAAE,CAAC5I,EAAEE,EAAEC,KAAK,IAAIC,EAAEhB,OAAO0B,eAAed,GAAG,MAAMuF,EAAEpF,EAAEA,EAAET,UAAUN,OAAO0B,eAAeV,GAAG,KAAKA,GAAGA,IAAImF,GAAG,CAAC,GAAGnG,OAAOM,UAAUC,eAAeC,KAAKQ,EAAEF,GAAG,OAAM,EAAGE,EAAEhB,OAAO0B,eAAeV,EAAE,CAAC,OAAM,GAAI,MAAMyI,EAAErE,KAAKsE,UAAU,IAAIN,IAAI,WAAArF,CAAYnD,GAAG4B,KAAK4C,KAAKxE,CAAC,CAAC,WAAA+I,CAAY/I,EAAEE,EAAEC,GAAGyB,KAAK4C,KAAKwE,iBAAiBhJ,EAAEE,EAAEC,GAAG,MAAMC,EAAEwB,KAAKkH,UAAUvJ,IAAIqC,KAAK4C,OAAO,GAAGpE,EAAEyB,KAAK,CAACgC,SAAS3D,EAAE+I,MAAMjJ,EAAEkJ,QAAQ/I,IAAIyB,KAAKkH,UAAUnB,IAAI/F,KAAK4C,KAAKpE,EAAE,CAAC,aAAA+I,CAAcnJ,EAAEE,EAAEC,EAAEC,EAAEmF,GAAE,GAAI,IAAI9C,EAAEb,KAAK4C,MAAM,MAAM,IAAIvE,MAAM,uEAAuE,MAAMI,EAAE,GAAG,GAAG,iBAAiBL,EAAEK,EAAEwB,QAAQG,MAAMC,KAAKL,KAAK4C,KAAK9B,iBAAiB1C,KAAKK,EAAEwB,QAAQ7B,EAAE4B,KAAK4C,OAAOe,GAAG,IAAIlF,EAAEmC,OAAO,MAAM,IAAIvC,MAAM,kBAAkB,IAAI,MAAMD,KAAKK,EAAE,CAACL,EAAEgJ,iBAAiB9I,EAAEC,EAAEC,GAAG,MAAMmF,EAAE3D,KAAKkH,UAAUvJ,IAAIS,IAAI,GAAGuF,EAAE1D,KAAK,CAACoH,MAAM/I,EAAE2D,SAAS1D,EAAE+I,QAAQ9I,IAAIwB,KAAKkH,UAAUnB,IAAI3H,EAAEuF,EAAE,CAAC,CAAC,OAAAqB,GAAU,IAAI,MAAM5G,KAAK4B,KAAKkH,UAAU,CAAC,MAAM5I,EAAEF,EAAE,GAAGG,EAAEH,EAAE,GAAG,IAAI,MAAMA,KAAKG,EAAED,EAAEkJ,oBAAoBpJ,EAAEiJ,MAAMjJ,EAAE6D,SAAS7D,EAAEkJ,QAAQ,CAACtH,KAAKkH,UAAUO,OAAO,EAAE,MAAMC,EAAEzJ,OAAO,cAAkkB,SAAS0J,EAAEvJ,EAAEE,GAAG,OAAO2C,iBAAiB,MAAM1C,EAAEH,EAAEsC,QAAhY,SAAWtC,GAAG,GAAGA,EAAE2E,YAAY,OAAM,EAAG,GAAG3E,EAAE4E,oBAAmB,EAAG5E,EAAE+E,qBAAqB,OAAM,EAAG,IAAI/E,EAAE8E,cAAc,MAAM,IAAIvE,EAAE,yDAAyD,OAAM,CAAE,EAAmMiJ,CAAErJ,KAAKD,SAASA,UAAlN2C,eAAiB7C,EAAEE,EAAEC,GAAGH,EAAE4E,oBAAmB,EAAG5E,EAAE8E,eAAc,EAAG9E,EAAE2E,aAAY,EAAG,IAAI,MAAM3E,IAAI,IAAIG,GAAGsJ,gBAAgBzJ,EAAEE,GAAGC,EAAEqC,OAAO,CAAC,CAAoFkH,CAAEvJ,EAAEH,EAAEmG,QAAQnG,EAAE2J,kBAAkB,CAAC,CAAqpC,MAAMC,EAAEpF,KAAK,CAAC7D,IAAG,EAAGwF,QAAQ0D,aAAa,WAAA1G,CAAYnD,GAAG,GAAG4B,KAAK4C,KAAKxE,IAAIA,aAAasF,MAAM,MAAM,IAAIrF,MAAM,6CAA6C,MAAMC,EAAE0B,KAAKkI,qBAAqB,GAAG,OAAO5J,IAAIA,EAAEyB,KAAKzB,GAAGF,aAAaE,GAAG,MAAM,IAAIf,EAAE,aAAaa,EAAEmD,YAAYiE,gCAAgCxF,KAAKuB,YAAYiE,iBAAiBxF,KAAKuE,QAAQvE,KAAKmI,kBAAkB,CAAC,gBAAAA,GAAmB,MAAM/J,EAAE4I,EAAEhH,KAAK,eAAegI,GAAGhI,KAAKoI,aAAaC,KAAKrI,WAAM,EAAO1B,EAAE0I,EAAEhH,KAAK,YAAYgI,GAAGhI,KAAKsI,UAAUD,KAAKrI,WAAM,EAAO,OAAOA,KAAKuI,gBAAgBnK,EAAEE,EAAE,CAAC,eAAAiK,CAAgBnK,EAAEE,GAAG,MAAxlDF,MAAK,SAASA,GAAG,IAAIY,EAAEZ,EAAEmG,SAAS,MAAM,IAAIlG,MAAM,gDAAgD,GAAGD,EAAEwE,QAAQxE,EAAEwE,gBAAgBc,MAAM,MAAM,IAAIrF,MAAM,oCAAoC,GAAGD,EAAEoK,oBAAoB,mBAAmBpK,EAAEoK,mBAAmB,MAAM,IAAInK,MAAM,4CAA4C,GAAGD,EAAEqK,iBAAiB,mBAAmBrK,EAAEqK,gBAAgB,MAAM,IAAIpK,MAAM,wCAAwC,CAAta,CAAwaD,GAAG,MAAME,EAAE,IAAIF,GAAGG,EAAE,CAAC4E,sBAAqB,EAAGJ,aAAY,EAAGG,eAAc,EAAGF,oBAAmB,GAAIxE,EAAE,CAAC,EAAEmF,EAAE,GAAGlF,EAAEkJ,EAAE,CAACjH,OAAOnC,EAAEgG,QAAQjG,EAAEiG,QAAQwD,iBAAiBpE,GAAG1C,UAAU3C,EAAEmK,uBAAuBnK,EAAEmK,kBAAkBnK,EAAEsE,MAAM,SAASxE,EAAEE,GAAG,MAAMC,EAAEwC,EAAEzC,GAAGC,GAAGA,EAAEkI,OAAOrI,EAAE,CAAzC,CAA2CE,EAAEiG,QAAQjG,EAAEsE,QAAQyF,KAAK7J,GAAGE,EAAz0B,SAAWN,EAAEE,GAAG,OAAO2C,iBAAiB,MAAM1C,EAAEH,EAAEsC,QAA7tB,SAAWtC,GAAG,QAAQA,EAAE8E,eAAe9E,EAAE+E,sBAAsB/E,EAAE2E,aAAa3E,EAAE4E,qBAAqB5E,EAAE+E,sBAAqB,EAAG,GAAG,EAAkmBuF,CAAEnK,KAAKD,SAASA,UAAjnB2C,eAAiB7C,EAAEE,GAAGF,EAAE8E,eAAc,EAAG9E,EAAE+E,sBAAqB,EAAG/E,EAAE4E,0BAA0B1E,GAAG,CAAyhBqK,CAAEpK,EAAEH,EAAEqK,iBAAiB,CAAC,CAAguBG,CAAE,CAAClI,OAAOnC,EAAEkK,gBAAgBhK,EAAE8F,QAAQjG,EAAEiG,SAAStD,UAAU3C,EAAEkK,0BAA0BlK,EAAEkK,uBAAuBH,KAAK7J,GAAG,IAAIjB,EAAEoB,EAAE,OAAOL,EAAEsE,OAAOrF,EAAEe,EAAEiG,SAAS5F,EAAEL,EAAEsE,MAAM5B,WAAWrC,EAAEqC,SAAS,IAAIR,GAAG7B,EAAEqC,SAAS8D,IAAIvH,IAAIC,OAAOoG,OAAOpF,EAAE,CAAC,CAACkJ,IAAG,EAAGmB,mBAAmBlF,EAAEjD,OAAOnC,EAAE6H,mBAAmBhI,IAAIuF,EAAE1D,KAAK7B,IAAIoG,WAAW9F,EAAEsG,QAAQvG,KAAokBqK,CAAE,CAAClG,KAAK5C,KAAK4C,KAAK2B,QAAQvE,KAAKwI,mBAAmBpK,EAAEqK,gBAAgBxH,UAAU3C,SAASA,IAAI0B,KAAKiI,cAAcjI,KAAKiI,aAAajD,YAAY,CAAC,eAAI+D,GAAc,OAAO/I,KAAKiI,eAAejI,KAAKiI,aAAa,IAAIhB,EAAEjH,KAAK4C,OAAO5C,KAAKiI,YAAY,CAAC,kBAAAC,GAAqB,OAAO,IAAI,CAAC,uBAAAc,CAAwB5K,GAAG,OAAOA,CAAC,CAAC,kBAAMgK,GAAe,MAAM,IAAI/J,MAAM,4CAA4C,CAAC,eAAMiK,GAAY,MAAM,IAAIjK,MAAM,4CAA4C,CAAC,qBAAO4K,CAAe7K,EAAEE,EAAEC,EAAE,IAAI,GAAGyB,OAAOgI,EAAE,MAAM,IAAI3J,MAAM,6CAA6C,MAAMG,EAAE,GAAG,IAAImF,EAAE,mBAAmBrF,EAAEqF,EAAErF,EAAEF,IAAIA,aAAa8K,SAAS9K,EAAE+K,aAAa7K,IAAIE,EAAEyB,KAAK,IAAID,KAAK5B,KAAKG,IAAIoF,EAAEvF,EAAE0C,iBAAiB,IAAIxC,OAAO,IAAI,MAAMF,KAAKuF,EAAEnF,EAAEyB,KAAK,IAAID,KAAK5B,KAAKG,IAAI,OAAOC,CAAC,CAAC,wCAAa4K,CAA4BhL,EAAEE,EAAEC,EAAE,IAAI,MAAMC,EAAEwB,KAAKiJ,eAAe7K,EAAEE,EAAEC,GAAG,IAAI,MAAMH,KAAKI,QAAQJ,EAAEmG,QAAQC,aAAa,OAAOhG,CAAC,EAAE,MAAM6K,UAAUrB,EAAEsB,GAAG,WAAA/H,CAAYnD,GAAG,IAAIU,EAAEV,EAAEgD,GAAG,MAAM,IAAI/C,MAAM,+FAA+FkL,MAAMnL,EAAEwE,MAAM5C,KAAKsJ,GAAGlL,EAAEA,EAAE8G,yBAAyB,CAAC,gBAAAiD,GAAmB,OAAOnI,KAAKuI,gBAAgBtH,gBAAgBjB,KAAKsJ,GAAGrF,+BAA+BjE,KAAKoI,aAAaC,KAAKrI,KAAvBA,IAAgCiB,gBAAgBjB,KAAKsI,UAAUD,KAAKrI,KAApBA,SAAkCA,KAAKsJ,GAAGnF,uBAAuB,CAAC,eAAMmE,GAAY,CAAC,kBAAMF,GAAe,CAAC,KAAIzJ,GAAI,OAAOqB,KAAKsJ,GAAG9C,YAAY,CAAC,8BAAOgD,CAAwBpL,EAAEE,GAAG,OAAO,IAAIqE,EAAEvE,EAAEE,EAAE,CAAC,qBAAO2K,GAAiB,MAAM,IAAI5K,MAAM,6DAA6D,CAAC,kCAAO+K,GAA8B,MAAM,IAAI/K,MAAM,6DAA6D,CAAC,8BAAOoL,CAAwBrL,EAAEE,EAAEC,EAAEC,EAAE,IAAI,GAAGwB,OAAOqJ,EAAE,MAAM,IAAIhL,MAAM,6CAA6C,MAAMsF,EAAE3D,KAAKvB,EAAE,GAAG,IAAIC,EAAE,GAAG,mBAAmBJ,EAAEI,EAAEJ,EAAEF,OAAO,CAAC,GAAGA,aAAa8K,SAAS9K,EAAE+K,aAAa7K,GAAG,CAAC,MAAMA,EAAEqF,EAAE6F,wBAAwBpL,EAAEG,GAAGE,EAAEwB,KAAK,IAAID,KAAK1B,KAAKE,GAAG,CAACE,EAAEN,EAAE0C,iBAAiB,IAAIxC,KAAK,CAAC,IAAI,MAAMF,KAAKM,EAAE,CAAC,MAAMJ,EAAEqF,EAAE6F,wBAAwBpL,EAAEG,GAAGE,EAAEwB,KAAK,IAAID,KAAK1B,KAAKE,GAAG,CAAC,OAAOC,CAAC,CAAC,iDAAaiL,CAAqCtL,EAAEE,EAAEC,EAAEC,EAAE,IAAI,MAAMmF,EAAE3D,KAAKyJ,wBAAwBrL,EAAEE,EAAEC,EAAEC,GAAG,IAAI,MAAMJ,KAAKuF,QAAQvF,EAAEmG,QAAQC,aAAa,OAAOb,CAAC,ECA1/hB,MAAM,EAAE1F,OAAO,mBAAmB,SAAS,EAAEG,GAAG,MAAM,CAACA,GAAG,iBAAiBA,GAAG,OAAOA,IAAG,IAAKA,EAAE,GAAzC,CAA6CA,EAAE,CAAC,MAAM,UAAUC,OAAO,MAAM,EAAEsL,QAAQC,SAASC,WAAW,CAAC,IAAG,EAAG,WAAAtI,CAAYjD,EAAEF,EAAEM,GAAGsB,KAAK2J,QAAQrL,EAAE0B,KAAK4J,SAASxL,EAAE4B,KAAK6J,WAAWnL,CAAC,CAAC,SAAM2G,CAAI/G,GAAG,aAAa0B,KAAK2J,QAAQtE,IAAI/G,EAAE,CAAC,SAAMX,CAAIW,GAAG,MAAMF,QAAQ4B,KAAK2J,QAAQhM,IAAIW,GAAG,YAAO,IAASF,GAAG4B,KAAK8J,iBAAiBxL,EAAEF,GAAGA,GAAG4B,KAAK4J,SAAStL,EAAE,CAAC,iBAAMyL,CAAYzL,GAAG,MAAMF,EAAE,UAAU4B,KAAK2J,QAAQI,YAAYzL,IAAI,IAAI,MAAMI,KAAKJ,OAAE,IAASF,EAAEM,KAAKN,EAAEM,GAAGsB,KAAK4J,SAASlL,IAAI,OAAON,CAAC,CAAC,YAAM4L,GAAS,MAAM1L,EAAE,UAAU0B,KAAK2J,QAAQK,UAAU,IAAI,MAAM5L,KAAKZ,OAAO4B,KAAKY,KAAK4J,eAAU,IAAStL,EAAEF,KAAKE,EAAEF,GAAG4B,KAAK4J,SAASxL,IAAI,OAAOE,CAAC,CAAC,SAAMyH,CAAIzH,EAAEF,GAAG4B,KAAKiK,iBAAiB3L,EAAEF,SAAS4B,KAAK2J,QAAQ5D,IAAIzH,EAAEF,EAAE,CAAC,iBAAM8L,CAAY5L,GAAG,IAAI,MAAMF,KAAKE,EAAE0B,KAAKiK,iBAAiB7L,EAAEE,EAAEF,UAAU4B,KAAK2J,QAAQO,YAAY5L,EAAE,CAAC,YAAM6L,CAAO7L,GAAG,IAAI,MAAMF,KAAKE,EAAE0B,KAAKiK,iBAAiB7L,EAAEE,EAAEF,UAAU4B,KAAK2J,QAAQQ,OAAO7L,EAAE,CAAC,YAAM,CAAOA,SAAS0B,KAAK2J,QAAQlD,OAAOnI,EAAE,CAAC,oBAAM8L,CAAe9L,SAAS0B,KAAK2J,QAAQS,eAAe9L,EAAE,CAAC,eAAM+L,SAAkBrK,KAAK2J,QAAQU,WAAW,CAAC,gBAAAP,CAAiBxL,EAAEF,GAAG,IAAI4B,KAAK6J,WAAWvL,GAAGF,GAAG,MAAM,IAAI,EAAE,oCAAoCkM,OAAOhM,MAAM,CAAC,gBAAA2L,CAAiB3L,EAAEF,GAAG,IAAI4B,KAAK6J,WAAWvL,GAAGF,GAAG,MAAM,IAAI,EAAE,iDAAiDkM,OAAOhM,MAAM,EAAE,MAAM,EAAEiM,UAAUX,SAASC,WAAW,CAAC,IAAG,EAAGnE,KAAK,KAAK4B,QAAQ,WAAA/F,CAAYjD,EAAEF,EAAEM,EAAEiF,EAAE,CAAC,GAAG3D,KAAKuK,UAAUjM,EAAE0B,KAAK4J,SAASxL,EAAE4B,KAAK6J,WAAWnL,EAAEsB,KAAKwK,mBAAmB9L,GAAGsB,KAAKsH,QAAQ,CAACmD,WAAU,EAAGC,qBAAqB,CAACpM,EAAEF,KAAI,IAAKE,KAAKF,OAAOuF,EAAE,CAAC,SAAM0B,CAAI/G,GAAG,OAAOA,WAAW0B,KAAKgK,QAAQ,CAAC,SAAMrM,CAAIW,GAAG,aAAa0B,KAAKgK,UAAU1L,EAAE,CAAC,iBAAMyL,CAAYzL,GAAG,MAAMF,QAAQ4B,KAAKgK,SAAS,OAAO1L,EAAEqM,OAAO,CAACrM,EAAEI,KAAKJ,EAAEI,GAAGN,EAAEM,GAAGJ,GAAG,CAAC,EAAE,CAAC,YAAM0L,GAAS,OAAOhK,KAAKsH,QAAQmD,iBAAiBzK,KAAK4K,UAAU5K,KAAK0F,YAAY1F,KAAK4K,UAAU5K,KAAK0F,IAAI,CAAC,SAAMK,CAAIzH,EAAEF,GAAG,GAAG4B,KAAK6J,WAAWvL,KAAK0B,KAAK6J,WAAWvL,GAAGF,GAAG,MAAM,IAAI,EAAE,iDAAiDkM,OAAOhM,OAAO,MAAMqF,QAAQ3D,KAAK6K,WAAWrM,EAAEsM,KAAKC,MAAMpH,GAAGnF,EAAEF,GAAGF,QAAQ4B,KAAKmK,OAAO3L,EAAE,CAAC,iBAAM0L,CAAY5L,GAAG,MAAMF,QAAQ4B,KAAKgK,eAAehK,KAAKmK,OAAO,IAAI/L,KAAKE,GAAG,CAAC,YAAM6L,CAAO7L,SAAS0B,KAAKgL,SAAS1M,EAAE,CAAC,YAAM,CAAOA,GAAG,MAAMF,QAAQ4B,KAAKgK,SAAS1L,KAAKF,WAAWA,EAAEE,SAAS0B,KAAKgL,SAAS5M,GAAG,CAAC,oBAAMgM,CAAe9L,GAAG,MAAMF,QAAQ4B,KAAKgK,SAAS,IAAI,MAAMtL,KAAKJ,SAASF,EAAEM,SAASsB,KAAKmK,OAAO/L,EAAE,CAAC,eAAMiM,SAAkBrK,KAAKiL,wBAAwBjL,KAAK4K,SAAS,CAAC,aAAMA,GAAU5K,KAAK0F,WAAW1F,KAAKkL,gBAAgB,CAAC,oBAAMA,GAAiB,MAAM5M,QAAQ0B,KAAK6K,WAAW,GAAG,MAAMvM,EAAE6M,OAAO,GAAG,MAAM,IAAI,EAAE,wCAAwC,MAAM/M,EAAE0M,KAAKC,MAAMzM,GAAG,OAAO0B,KAAKoL,aAAahN,GAAG4B,KAAKsH,QAAQoD,qBAAqB1K,KAAK4J,SAASxL,EAAE,CAAC,YAAAgN,CAAa9M,GAAG,IAAI,MAAMF,KAAKE,EAAE,CAAC,IAAI0B,KAAKuK,YAAYvK,KAAK6J,WAAWzL,GAAG,MAAM,IAAI,EAAE,qCAAqCA,KAAK,GAAG4B,KAAK6J,WAAWzL,KAAK4B,KAAK6J,WAAWzL,GAAGE,EAAEF,IAAI,MAAM,IAAI,EAAE,cAAcA,0CAA0C,CAAC,CAAC,kBAAAoM,CAAmBlM,GAAG,IAAI,MAAMF,KAAKE,EAAE,GAAG,mBAAmBA,EAAEF,GAAG,MAAM,IAAI,EAAE,iBAAiBA,uBAAuB,EAAE,MAAM,UAAU,EAAEiN,QAAQC,UAAU1B,SAASC,WAAW,WAAAtI,CAAYjD,EAAEF,EAAEM,EAAEiF,EAAEnF,EAAEM,EAAE,CAAC,GAAGyK,MAAMjL,EAAEqF,EAAEnF,EAAEM,GAAGkB,KAAKqL,QAAQjN,EAAE4B,KAAKsL,UAAU5M,EAAEsB,KAAK4J,SAASjG,EAAE3D,KAAK6J,WAAWrL,CAAC,CAAC,cAAMqM,GAAW,OAAO7K,KAAKqL,QAAQE,aAAavL,KAAKsL,YAAY,IAAI,CAAC,cAAMN,CAAS1M,GAAG0B,KAAKqL,QAAQG,aAAaxL,KAAKsL,UAAUR,KAAKW,UAAUnN,GAAG,CAAC,qBAAM2M,GAAkBjL,KAAKqL,QAAQK,gBAAgB1L,KAAKsL,UAAU,ECqB34G,MAAMK,UACH,EAGAC,SAA0B,GAC1BC,eAAgC,KAEhCvE,QAER,WAAA/F,CACE8J,EACA/D,EACAwE,GAIA,GAFAvC,MAAM8B,QAGsB,IAAnBS,IACN,EAAkBA,GAEnB,MAAM,IAAIzN,MAAM,qDAGlB,MAKMwF,EAAqD,CACzDkI,cAAc,EACdC,qBAAsB/K,MAAOgL,IAC3BC,WAAW,KACTD,EAAQF,gBACP,OAIDI,EACJL,GACA,IAAI,GACF,EACA9L,KAAK4C,KACL,kBACA,CAAC,EACD,CAAC,GAGL5C,KAAKsH,QAAU,IAAI,EACjB6E,EACA,IAAKtI,KAAmByD,GA1BsC,CAC9DyE,aAAerG,GAAkC,kBAATA,EACxCsG,qBAAuBtG,GAAkC,mBAATA,GA2BpD,CAEU,kBAAAwC,GACR,OAAOqB,MAAMP,wBAAwB,CAACoD,mBACxC,CAQO,kBAAAC,CACLC,EACAC,EAAmB,GAEfvM,KAAKwM,mBAAmBF,IAI5BtM,KAAK4L,SAAS3L,KAAK,CACjBgC,SAAUqK,EACVC,SAAUA,GAEd,CAMO,kBAAAC,CAAmBF,GACxB,OAAOtM,KAAK4L,SAASa,KAClBC,GAAgBA,EAAYzK,WAAaqK,EAE9C,CAEO,qBAAAK,CAAsBL,GAC3BtM,KAAK4L,SAAW5L,KAAK4L,SAASgB,OAC3BF,GAAgBA,EAAYzK,WAAaqK,EAE9C,CAEO,YAAMO,GACX,MAAMC,EAAMC,SAASC,eAAeC,qBACpCjN,KAAK4L,SAAStL,KAAK,CAAC5B,EAAG8B,IAAMA,EAAE+L,SAAW7N,EAAE6N,UAC5C,IAAK,MAAMD,KAAWtM,KAAK4L,eACnBU,EAAQrK,SAAS6K,GAIrB9M,KAAK6L,gBACPqB,IAAIC,gBAAgBnN,KAAK6L,gBAG3B,MAAMuB,EAAc,oBAAsBN,EAAIO,gBAAgBC,UACxDC,EAAO,IAAIC,KAAK,CAACJ,GAAc,CAAEK,KAAM,4BAC7CzN,KAAK6L,eAAiBqB,IAAIQ,gBAAgBH,GAC1CvN,KAAK4C,KAAK+K,IAAM3N,KAAK6L,eAErB7L,KAAK4C,KAAKgL,OAAS3M,gBACLjB,KAAKsH,QAAQ3J,IAAI,6BAEnBqC,KAAKsH,QAAQ3J,IAAI,yBACvBqC,MAEJA,KAAK4C,KAAKgL,OAAS,KAEvB,CAEO,YAAAC,GACL7N,KAAK4C,KAAKkL,QACZ,CAKO,YAAA/B,GACL,MAAMgC,EAAe/N,KAAKgO,kBAEpBC,EADiBjO,KAAKkO,oBACFC,cAAc,QACxC,IAAKF,EACH,OAGF,MAAMG,EAASL,EAAaM,iBAAiBJ,GACvCK,EACJC,WAAWH,EAAkB,WAAKG,WAAWH,EAAqB,cAE9DI,EAASC,KAAKC,KAAKT,EAAGU,aAAeL,GAC3CtO,KAAK4C,KAAK4L,OAASA,EAAS,IAC9B,CAEQ,iBAAAN,GACN,MAAMU,EAAiB5O,KAAK4C,KAAKiM,gBACjC,IAAKD,EACH,MAAM,IAAIvQ,MAAM,qCAGlB,OAAOuQ,CACT,CAEQ,eAAAZ,GACN,MAAMc,EAAS9O,KAAK4C,KAAKmM,cACzB,IAAKD,EACH,MAAM,IAAIzQ,MAAM,mCAElB,OAAOyQ,CACT,EClLK,MAAME,EAAU,CACrBC,KAAM,CACJC,UAAW,CAAC,QACZC,SAAKC,GAEPC,GAAI,CACFH,UAAW,CAAC,aAAc,cAC1BC,IAAK,UAEPG,IAAK,CACHJ,UAAW,CAAC,OACZC,IAAK,UAeF,SAASI,EACdC,GAEA,IAAK,MAAOlS,EAAKa,KAAUX,OAAO8G,QAAQ0K,GACxC,GAAI7Q,EAAM+Q,UAAU7P,SAASmQ,GAC3B,OAAOlS,EAIX,MAAM,IAAIe,MAAM,mBAClB,CAEO,SAASoR,EACdhC,GAEA,OAAOuB,EAAQvB,GAAM0B,GACvB,CAEO,SAASO,EACdjC,GAEA,OAAOkC,QAAQF,EAAehC,GAChC,CCqBO,MAAMmC,UACH,EAGAC,OAAgC,KAChCC,OAAqD,KACrDxI,QAEAiF,SAAmB,EACnBwD,oBAEG,KAEX,WAAAxO,CACEqB,EACA0E,EACAwE,GAIA,GAFAvC,MAAM3G,QAGsB,IAAnBkJ,IACN,EAAkBA,GAEnB,MAAM,IAAIzN,MAAM,qDAGlB2B,KAAKgQ,cAAgBhQ,KAAKgQ,cAAc3H,KAAKrI,MAE7C,MAAM6D,EAGF,CACFoM,SAAU,OACV1D,SAAU,EACV2D,kBAAkB,EAClBH,oBAAqB,CAAC,GAGlBlG,EAA+D,CAEnEoG,SAAWvK,GACO,iBAATA,GAAqB,CAAC,OAAQ,QAAQrG,SAASqG,GACxD6G,SAAW7G,GAAkBoB,OAAOC,UAAUrB,GAC9CyK,cAAgBzK,GAAkC,iBAATA,EACzCwK,iBAAmBxK,GAAkC,kBAATA,EAC5C0K,oBAAsB1K,GAAkC,mBAATA,EAC/CmK,OAASnK,GAAkC,iBAATA,EAClCqK,oBAAqB,KAAM,GAG7BzI,EAAQyI,oBAAsB,IACzBlM,EAAekM,uBACfzI,EAAQyI,qBAGb,MAAM5D,EACJL,GACA,IAAI,GACF,EACA9L,KAAK4C,KACL,kBACA,CAAC,EACD,CAAC,EACD,CACE8H,qBAAsB,CAACd,EAAUyG,KAC/BA,EAAiBN,oBAAsB,IAClCnG,EAASmG,uBACTzI,EAAQyI,uBACRM,EAAiBN,qBAEf,IAAKnG,KAAatC,KAAY+I,MAK7CrQ,KAAKsH,QAAU,IAAI,EACjB6E,EACA,IAAKtI,KAAmByD,GACxBuC,EAEJ,CAEU,kBAAA3B,GACR,OAAOqB,MAAMP,wBAAwB,CAACsH,aACxC,CAEO,gBAAM9L,GACX,OAAOxE,KAAKuE,QAAQC,YACtB,CAEO,aAAMQ,SACLhF,KAAKuE,QAAQS,SACrB,CAEU,kBAAMoD,GAId,GAHApI,KAAKuM,eAAiBvM,KAAKsH,QAAQ3J,IAAI,YACvCqC,KAAK+P,0BAA4B/P,KAAKsH,QAAQ3J,IAAI,6BAExCqC,KAAKsH,QAAQ3J,IAAI,oBAAqB,CAC9C,MAAM4S,QAAsBvQ,KAAKsH,QAAQ3J,IAAI,uBACzC4S,EAAcpS,QAChBoS,EAAcpS,MAAQyR,EAAuBM,iBAC3CK,EAAcpS,aAEV6B,KAAKsH,QAAQvB,IAAI,sBAAuBwK,GAElD,OAEMvQ,KAAKwQ,kBAEXxQ,KAAK6P,aAAe7P,KAAKyQ,oBAEzB,MAAMC,QACG1Q,KAAKsH,QAAQ3J,IAAI,wBACxB,OAAQ2J,EAAS+D,EAASwE,IACxBD,EAAuBe,mBAAmBrJ,EAAS+D,EAASwE,IAEhE7P,KAAK8P,aAAeY,QACZ1Q,KAAKsH,QAAQ3J,IAAI,uBACvBqC,KAAK4C,KACL5C,KAAK6P,OAET,CAEO,WAAAe,GACL,OAAO5Q,KAAKuM,QACd,CAEQ,uBAAMkE,GACZ,MAAMZ,QAAe7P,KAAKsH,QAAQ3J,IAAI,UACtC,IAAKkS,EAAQ,MAAM,IAAIxR,MAAM,oCAC7B,OAAOwR,CACT,CAKQ,QAAAhF,GACN,OAAO7K,KAAK6Q,YAAYhG,UAC1B,CAEQ,mBAAMmF,CAAcjD,GAC1B,MAAM8C,EAAS7P,KAAK6P,OACpB,IAAKA,EACH,MAAM,IAAIxR,MACR,6DAIJ,MAAMmR,EAAWxP,KAAK8Q,cAChBC,EACS,eAAbvB,QACUxP,KAAKgR,eAAenB,GAC1B7P,KAAK6K,WAELoF,QAAiBjQ,KAAKsH,QAAQ3J,IAAI,YAClC8P,EAAO8B,EAAoBC,GAEjC,GAAIE,EAAgBjC,GAAO,CACzB,MAAM0B,EAAMM,EAAehC,GACrB0C,QAAuBnQ,KAAKsH,QAAQ3J,IAAI,kBAAqB,CAAC,EAC9DsT,EAAalE,EAASmE,cAAc/B,GAC1C,IAAK,MAAO7R,EAAKa,KAAUX,OAAO8G,QAAQ6L,GACxCc,EAAWzF,aAAalO,EAAKa,GAI/B,OAFA8S,EAAWE,UAAYJ,OACvBhE,EAASkD,GAAUmB,YAAYH,EAEjC,CACAlE,EAASkD,GAAUkB,WAAaJ,CAClC,CAEO,kBAAAM,GACL,OAAOrR,KAAKgQ,aACd,CAKQ,qBAAMQ,GACZ,WAAYxQ,KAAKsH,QAAQ3J,IAAI,wBAAwB6R,SACnD,MAAM,IAAInR,MAAM,qCAIlB,IAAKqR,EADQH,EAAoBvP,KAAK8Q,uBAE1B9Q,KAAKsH,QAAQ3J,IAAI,iBACzB,MAAM,IAAIU,MACR,8DAIR,CAEQ,SAAAwS,GACN,IAAK7Q,KAAK8P,OAAQ,MAAM,IAAIzR,MAAM,6BAClC,OAAO2B,KAAK8P,MACd,CAEQ,oBAAMkB,CAAenB,GAC3B,MAAMyB,EAAQtR,KAAK6Q,YAAYU,WAC/B,IAAKD,EAAO,MAAM,IAAIjT,MAAM,0BAG5BwR,EAAOX,UAAUsC,WAAWC,mBAAmBC,mBAAkB,GAGjE,MAAMC,EAAML,EAAMK,IAClB,GAAmB,SAAfA,EAAIC,OACN,MAAM,IAAIvT,MAAM,oCAAoCsT,EAAIE,cAI1D,MAAMC,EAAY7Q,MAChB8Q,EAAmB,MAOnB,IACE,aAAalC,EAAOX,UAAUsC,WAAWQ,qBAC3C,CAAE,MAAOC,GACP,GAAc,+BAAVA,EAAwC,MAAMA,EAClD,OAAIF,GAAY,EAAU,YACpB,IAAI3N,QAAS3F,GAAMyN,WAAWzN,EAAG,MAChCqT,EAAUC,EAAW,GAC9B,GAGIG,QAAqBJ,IAC3B,IAAKI,EACH,MAAM,IAAI7T,MAAM,4CAElB,MAAM8T,QAAeD,EAAaP,GAIlC,IAAK,IAAInT,EAAI,EAAGA,EAAI,GAAIA,IACtB,UACQ2T,EAAOC,uBAAuBT,EAAIE,YACxC,KACF,CAAE,MAAOQ,GACP,GAAI,6BAA6BC,KAAKhI,OAAO+H,IAAO,OAC5C,IAAIjO,QAAS3F,GAAMyN,WAAWzN,EAAG,MACvC,QACF,CACA,MAAM4T,CACR,CAIF,MAAM,YAAEE,SAAsBJ,EAAOK,cAAcb,EAAIE,YACvD,IAAKU,EAAY3R,OAAQ,MAAM,IAAIvC,MAAM,yBACzC,OAAOkU,EAAY,GAAGE,IACxB,CAEQ,WAAA3B,GACN,MAAMP,EAAgBvQ,KAAK+P,oBAC3B,IAAKQ,EACH,MAAM,IAAIlS,MACR,6DAIJ,IAAKkS,EAAwB,SAC3B,MAAM,IAAIlS,MAAM,qCAGlB,OAAOkS,EAAwB,QACjC,CAEO,uBAAOL,CAAiBa,GAC7B,MAAM2B,EAAQ3B,EAAQ4B,MAAM,MAGtBC,EAAoBF,EAAM3S,KAAM8S,GAASA,EAAKC,OAAOlS,OAAS,GAEpE,IAAKgS,EACH,OAAO7B,EAAQ+B,OAIjB,MAAMC,EAAgBH,EAAkBI,OAAO,QAe/C,OAZqBN,EAAMrQ,IAAKwQ,GAG5BA,EAAKjS,QAAUmS,GAC6B,KAA5CF,EAAKI,UAAU,EAAGF,GAAeD,OAE1BD,EAAKI,UAAUF,GAEjBF,GAIWK,KAAK,MAAMJ,MACjC,CAEU,eAAMxK,GACdtI,KAAK8P,QAAQqD,SACf,CAKO,yBAAOxC,CACZyC,EAAoE,CAAC,EACrExQ,EACAiN,GAEA,MAAML,EAAW4D,EAAc5D,SAC/B,IAAKA,EACH,MAAM,IAAInR,MAAM,qCAGlB,MAAMiT,EAAQtR,KAAKqT,kBACjBxD,EACAL,EACA4D,EAAcjV,OAAS,IAGzB,OAAO0R,EAAOC,OAAOwD,OAAO1Q,EAAM,IAC7BwQ,EACE9B,MAAOA,GAEhB,CAKO,wBAAO+B,CACZxD,EACAL,EACArR,GAGA,MAAMoV,EAAW9E,KAAK+E,SAAS3B,SAAS,IAAIoB,UAAU,EAAG,IACzD,OAAOpD,EAAOC,OAAO2D,YACnBtV,EACAqR,EACAK,EAAO6D,IAAI3I,MAAM,WAAWyE,KAAY+D,QAE5C,CAKO,aAAOD,CACZjI,EACA/D,GAEA,OAAO,IAAIsI,EAAuBvE,EAAS/D,EAC7C,EC5aK,MAAMqM,EAA6B,qBCEnC,MAAMC,UAA0B,EAC9B,gBAAAC,CAAiB5R,GACtBjC,KAAK+I,YAAY5B,YAAY,QAASlF,EACxC,ECwEF,SAAS6R,EAAUC,GACjB,MAAMxU,EAAQwU,EAAcC,QAAQzU,OAASqQ,EAC7C,MAAO,CACLoE,QAAS,CACP1U,SAAUyU,EAAcC,QAAQ1U,SAChCG,UAAU,EACVD,UAAU,EACVD,MAAOA,EACPuC,KAAMiS,EAAcC,QAAQlS,MAAQ,IAEtCmK,QAAS,CACP3M,SAAUyU,EAAc9H,QAAQ3M,SAChCG,UAAU,EACVD,UAAU,EACVD,MAAOwU,EAAc9H,QAAQ1M,MAC7BuC,KAAMiS,EAAc9H,QAAQnK,MAAQ,IAEtCmS,SAAU,CACR3U,SAAUyU,EAAcE,SAAS3U,SACjCC,MAAOwU,EAAcE,SAAS1U,MAC9BE,UAAU,EACVD,UAAU,EACVsC,KAAMiS,EAAcE,SAASnS,MAAQ,IAG3C,CAEO,MAAMoS,UAAmB,EAIpB,kBAAAhM,GACR,OAAOqB,MAAMP,wBAAwB,CAACsH,aACxC,CAEO,gBAAM9L,SACLxE,KAAKuE,QAAQC,YACrB,CAEO,aAAMQ,SACLhF,KAAKuE,QAAQS,SACrB,CAEmB,kBAAMoD,GACvB,IAAKpI,KAAKrB,EAAEqV,QACV,MAAM,IAAI3V,MAAM,6BAGlB,IAAK,MAAMyR,KAAU9P,KAAKrB,EAAEqV,QACrBhU,KAAKrB,EAAEsN,QAAQO,mBAAmBsD,EAAOuB,uBAC5CrR,KAAKmU,kBACHrE,EAAOuB,qBACPvB,EAAOc,eAKb,IAAK,MAAMwD,KAAWpU,KAAKrB,EAAEsV,SAC3BG,EAAQP,iBAAiB,KACvB7T,KAAKqU,iBAGX,CAKO,SAAAC,CAAUxE,GACf9P,KAAKrB,EAAEqV,QAAQlP,IAAIgL,GACnB9P,KAAKrB,EAAEsN,QAAQI,mBAAmByD,EAAOuB,qBAC3C,CAKO,YAAAkD,CAAazE,GAClB9P,KAAKrB,EAAEqV,QAAQvN,OAAOqJ,GACtB9P,KAAKrB,EAAEsN,QAAQU,sBAAsBmD,EAAOuB,qBAC9C,CAKO,SAAAmD,CAAU1E,GACf,OAAO9P,KAAKrB,EAAEqV,QAAQ3O,IAAIyK,EAC5B,CAKQ,iBAAAqE,CACN7H,EACAC,EAAmB,GAEnBvM,KAAKrB,EAAEsN,QAAQI,mBAAmBC,EAASC,EAC7C,CAEO,UAAAkI,GACL,OAAOzU,KAAKrB,EAAEsN,OAChB,CAOO,cAAAyI,CAAezI,GAEpBjM,KAAKsJ,GAAGpD,oBAAoB,UAAW+F,EACzC,CAEO,mBAAMoI,SACLrU,KAAKrB,EAAEsN,QAAQY,QACvB,CAaO,2BAAa8H,CAGlB/R,EACAP,EACAiF,EAA6B,CAAC,EAC9BsN,EAAqC,CAAC,EACtCtJ,EAAoBqI,GAEpBiB,EAAc5U,KAAK6U,8BAA8BD,GACjD5U,KAAK8U,oBAAoBF,GAEzB,MAAMG,EAAc/U,KAAKyJ,wBAAwB7G,EAAM0I,EAAWjJ,EAAK,CACrEiF,IAGF,IAAK,MAAM0N,KAAcD,QACjB/U,KAAKiV,mBAAmBD,EAAYJ,GAG5C,OAAOG,CACT,CASO,mBAAazB,CAGlBjI,EACAhJ,EACAuS,EAAqC,CAAC,GAEtCA,EAAc5U,KAAK6U,8BAA8BD,GACjD5U,KAAK8U,oBAAoBF,GACzB,MAAMM,EAAM,IAAI,EACd7J,EACAhJ,GAEI2S,EAAa,IAAId,EAAWgB,GAElC,aADMlV,KAAKiV,mBAAmBD,EAAYJ,GACnCI,CACT,CAEQ,oCAAOH,CACbM,GAEA,MAAO,CACLC,MAAM,EACNf,eAAe,KACZc,EAEP,CAKQ,0BAAOL,CAAoBF,GACjC,IAAKA,EAAYQ,MAAQR,EAAYP,cACnC,MAAM,IAAIhW,MACR,+DAGN,CAKQ,+BAAa4W,CACnBD,EACA1N,EAAiC,CAAC,GAElC,IAAKA,EAAQ8N,MAAQ9N,EAAQ+M,cAC3B,MAAM,IAAIhW,MACR,qHAIAiJ,EAAQ8N,YACJJ,EAAWxQ,aAGf8C,EAAQ+M,qBACJW,EAAWX,eAErB,CAKO,aAAO3R,CAAOZ,GACnB,MAAMuT,EAAevT,EAAKuT,eAAgB,EAM1C,GACEA,GACCvT,EAAKiS,eAA2CC,SAAS1U,SAE1D,MAAM,IAAIjB,MACR,6DAIJ,IACGgX,GACAvT,EAAKiS,eAA2CC,SACjD,aAAelS,EAAKiS,cAA0CC,UAC5DlS,EAAKiS,cAA0CC,QAAQ1U,SAEzD,MAAM,IAAIjB,MACR,kFAIJ,IAAKgX,IACGvT,EAAKiS,eAA2CC,QACpD,MAAM,IAAI3V,MACR,mEAKN,KACGgX,GACEvT,EAAKiS,eAA2CC,SAAS1M,UAEvDxF,EAAKiS,eAA2CC,SAAS1M,SAGlD,QAEZ,MAAM,IAAIjJ,MACR,6GAQJ,MAAMiX,EAAyB,GAE1BD,IACHC,EAAYrV,KAAK6B,EAAKiS,cAAcC,QAAQ1M,SAAW,CAAC,GAEpDxF,EAAKiS,cAAcC,QAAQlI,gBAC7BwJ,EAAYrV,KAAK6B,EAAKiS,cAAcC,QAAQlI,iBAIhD,MAAMyJ,EAAyB,GAQ/B,OAPIzT,EAAKiS,eAAe9H,UACtBsJ,EAAYtV,KAAK6B,EAAKiS,eAAe9H,SAAS3E,SAAW,CAAC,GACtDxF,EAAKiS,cAAc9H,QAAQH,gBAC7ByJ,EAAYtV,KAAK6B,EAAKiS,cAAc9H,QAAQH,iBAIzCgI,EAAU,CACfE,QAAS,CACP1U,SAAU+V,OAAejG,EAAY,+BACrC7P,MAAOqQ,EACP9N,KAAMwT,GAERrJ,QAAS,CACP3M,SACEwC,EAAKiS,eAAe9H,SAAS3M,UAC7B,sCACFC,MAAOoM,EACP7J,KAAMyT,GAERtB,SAAU,CACR3U,SACEwC,EAAKiS,eAAeE,UAAU3U,UAC9B,gCACFC,MAAOqU,EACP9R,KAAM,KAGZ,CAEO,uBAAO0T,CACZzB,GAEA,IAAKA,EACH,MAAM,IAAI1V,MAAM,mCAElB,OAAOyV,EAAUC,EACnB,E","sources":["webpack://exhibitionjs/webpack/bootstrap","webpack://exhibitionjs/webpack/runtime/define property getters","webpack://exhibitionjs/webpack/runtime/hasOwnProperty shorthand","webpack://exhibitionjs/webpack/runtime/make namespace object","webpack://exhibitionjs/./node_modules/.pnpm/wraplet@1.0.0-beta.21/node_modules/wraplet/dist/index.js","webpack://exhibitionjs/./node_modules/.pnpm/wraplet@1.0.0-beta.21/node_modules/wraplet/dist/storage.js","webpack://exhibitionjs/./src/ExhibitionPreview.ts","webpack://exhibitionjs/./src/TypeMap.ts","webpack://exhibitionjs/./src/ExhibitionMonacoEditor.ts","webpack://exhibitionjs/./src/selectors.ts","webpack://exhibitionjs/./src/ExhibitionUpdater.ts","webpack://exhibitionjs/./src/Exhibition.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","class e extends Error{}class t extends Error{}class n extends Error{}class i extends Error{}class s extends Error{}class r extends Error{}class a extends Error{}class o extends Error{}class d extends Error{}class c extends Error{errors=[]}const l=(e,t)=>\"object\"==typeof e&&null!==e&&!0===e[t],p=Symbol(\"Wraplet\");function h(e){return l(e,p)}function u(e){return\"object\"==typeof e&&null!==e&&Object.getPrototypeOf(e)===Object.prototype}function y(e){for(const t of Object.keys(e))if(![\"selector\",\"Class\",\"multiple\",\"required\",\"destructible\",\"injector\",\"args\"].includes(t))return!1;return!![\"string\",\"function\",\"undefined\"].includes(typeof e.selector)&&\"function\"==typeof e.Class&&\"boolean\"==typeof e.required&&\"boolean\"==typeof e.multiple}function f(e){if(!u(e))return!1;for(const t in e){if(!u(e[t]))return!1;if(!y(e[t]))return!1}return!0}const w=Symbol(\"WrapletSet\");function D(e){return l(e,w)}class g extends Set{find(e){const t=[];for(const n of this)e(n)&&t.push(n);return t}findOne(e){for(const t of this)if(e(t))return t;return null}getOrdered(e){return Array.from(this).sort((t,n)=>e(t)-e(n))}}const m=Symbol(\"WrapletSetReadonly\");class b extends g{[m]=!0;[w]=!0}function z(e,t,n=!0){const i=new c(e);for(const e of t)\"rejected\"===e.status&&i.errors.push(e.reason);if(0===i.errors.length)return null;if(n)throw i;return i}function I(e){return\"function\"==typeof e.querySelectorAll}function E(e){const t=e.wraplets;return D(t)?t:null}async function v(e,t){t(e);const n=e.childNodes;for(const e of n)await v(e,t)}async function W(e){const t=[];await v(e,e=>{const n=E(e);if(n)for(const e of[...n])e.wraplet.status.isGettingDestroyed||e.wraplet.status.isDestroyed||t.push(e)}),z(\"Some wraplets threw exceptions during destruction\",await Promise.allSettled(t.map(e=>e.wraplet.destroy())))}const L=Symbol(\"DependencyManager\");class M{static#e=new M;constructor(){}dumpError(e){console.dir(e,{depth:null})}static getGlobalLogger(){return this.#e}}function A(e){return{args:[],destructible:!0,injector:{callback:e=>e},...e}}const S=Symbol(\"MapTreeBuilder\");class G{parent;[S]=!0;map;children={};constructor(e){this.parent=e}getParent(){if(!this.parent)throw new Error(\"Parent not found.\");return this.parent}createChild(e){const t=new G(this);return this.children[e]=t,t}setMap(e){this.map=function(e){const t={};for(const n of Object.keys(e)){const i=e[n];t[n]=A(i)}return t}(e)}getMap(){if(!this.map)throw new Error(\"Map is not set.\");return this.map}}class C{node;[L]=!0;logger;dependenciesAreInstantiated=!1;status={isDestroyed:!1,isGettingDestroyed:!1,isGettingSynced:!1,isInitialized:!1,isGettingInitialized:!1};mapTree;directDependencies={};wrappedDependencies={};instantiatedDependencyListeners;initializedDependencyListeners;destroyedDependencyListeners;constructor(e,n,i={}){if(this.node=e,!(e instanceof Node))throw new Error(\"The node provided to the DDM is not a valid node.\");if(f(n))this.mapTree=new G,this.mapTree.setMap(n);else{if(\"object\"!=typeof(s=n)||null===s||!(S in s))throw new t(\"The map provided to the DDM is not a valid map.\");this.mapTree=n}var s;const r=Object.assign(this.defaultOptions(),i);this.logger=r.logger,this.instantiatedDependencyListeners=r.dependencyInstantiatedListeners,this.initializedDependencyListeners=r.dependencyInitializedListeners,this.destroyedDependencyListeners=r.dependencyDestroyedListeners}async initializeDependencies(){if(this.status.isInitialized)throw new d(\"Dependencies are already initialized.\");this.status.isGettingInitialized=!0,await this.initializeDeps(),this.status.isInitialized=!0,this.status.isGettingInitialized=!1,this.status.isGettingDestroyed&&await this.destroyDependencies()}async initializeDeps(){const e=await Promise.allSettled(Object.entries(this.directDependencies).map(async([e,t])=>{if(!t)return;const n=D(t)?Array.from(t):[t],i=await Promise.allSettled(n.map(async t=>{if(t.wraplet.status.isInitialized||t.wraplet.status.isGettingInitialized)return;await t.wraplet.initialize();const n=await Promise.allSettled((this.initializedDependencyListeners.get(e)||[]).map(e=>e(t)));z(`Errors in the DDM's dependency \"${e}\" initialize listeners.`,n)}));z(`Error at \"${e}\" dependency's initialization.`,i)})),t=z(\"Error at DDM's initialization.\",e,!1);if(t)throw this.logger.dumpError(t),t}async syncDependencies(){this.status.isGettingSynced=!0,this.instantiateDeps(!0),await this.initializeDeps(),await this.destroyDeps(!0),this.status.isGettingSynced=!1}get map(){return this.mapTree.getMap()}instantiateDeps(e=!1){const t=this.directDependencies;if(I(this.node))for(const n in this.map){const i=this.map[n],s=i.multiple;if(this.validateMapItem(n,i),s){t[n]||(t[n]=new b);const e=t[n],s=this.instantiateMultipleDependencies(i,this.node,n);for(const t of s)e.add(t);continue}const r=this.instantiateSingleWrapletDependency(i,this.node,n);r!==t[n]&&(e&&r&&t[n]&&t[n].wraplet.destroy(),t[n]=r)}else{for(const e in this.map){const t=this.map[e];this.validateMapItemForNonParent(e,t)}this.dependenciesAreInstantiated=!0}}instantiateDependencies(){if(this.dependenciesAreInstantiated)throw new d(\"Dependencies are already instantiated.\");this.wrappedDependencies=this.wrapDependencies(this.directDependencies),this.instantiateDeps(),this.dependenciesAreInstantiated=!0}findExistingWraplet(e,t){if(void 0===this.directDependencies||!this.directDependencies[e])return null;const n=this.directDependencies[e];if(this.map[e].multiple){if(!D(n))throw new a(\"Internal logic error. Expected a WrapletSet.\");const e=t.wraplets;if(!e)return null;const i=n.find(t=>e.has(t));if(i.length>1)throw new a(\"Internal logic error. Multiple instances wrapping the same element found in the DDM.\");return i[0]}if(!h(n))throw new a(\"Internal logic error. Expected a Wraplet.\");return t.wraplets&&t.wraplets.has(n)?n:null}instantiateSingleWrapletDependency(e,n,i){if(!e.selector)return this.directDependencies[i]||null;if(!this.dependenciesAreInstantiated&&this.directDependencies[i])throw new t(\"It's not possible to provide a single-type dependency manually and use selector at the same time.\");const s=e.selector,a=this.findChildrenElements(s,n);if(this.validateElements(i,a,e),0===a.length)return null;if(a.length>1)throw new r(`${this.constructor.name}: More than one element was found for the \"${i}\" dependency. Selector used: \"${s}\".`);const o=a[0];return this.instantiateWrapletItem(i,e,o)}instantiateWrapletItem(e,t,n){const i=this.findExistingWraplet(e,n);if(i)return i;let s=null;try{const i=new t.Class(t.injector.callback(n,this.mapTree.createChild(e),t.injector.data),...t.args);if(!h(i))throw new Error(\"Created dependency is not a Wraplet instance.\");s=i}catch(n){if(n instanceof o&&!t.required)return console.warn(`${n.message} Skipping instantiation of the \"${e}\" dependency.`),null;throw n}this.prepareIndividualWraplet(e,s);for(const t of this.instantiatedDependencyListeners.get(e)||[])t(s);return s}instantiateMultipleDependencies(e,t,n){const i=e.selector;if(!i)return new b;const s=this.findChildrenElements(i,t);this.validateElements(n,s,e);const r=new b;for(const t of s){let i=this.findExistingWraplet(n,t);i||(i=this.instantiateWrapletItem(n,e,t)),i&&r.add(i)}return r}addDependencyInstantiatedListener(e,t){const n=this.instantiatedDependencyListeners.get(e)||[];n.push(t),this.instantiatedDependencyListeners.set(e,n)}addDependencyInitializedListener(e,t){const n=this.initializedDependencyListeners.get(e)||[];n.push(t),this.initializedDependencyListeners.set(e,n)}addDependencyDestroyedListener(e,t){const n=this.destroyedDependencyListeners.get(e)||[];n.push(t),this.destroyedDependencyListeners.set(e,n)}setExistingInstance(e,n){if(this.map[e].multiple)throw new t(\"This method can only be used to set a single-value dependency.\");if(!h(n))throw new t(\"Provided instance is not a valid dependency.\");this.prepareIndividualWraplet(e,n),this.directDependencies[e]=n}addExistingInstance(e,n){if(!this.map[e].multiple)throw new t(\"This method can only be used to set a multi-value dependency.\");this.prepareIndividualWraplet(e,n);const i=this.directDependencies&&this.directDependencies[e]?this.directDependencies[e]:new b;i.add(n),this.directDependencies[e]=i}prepareIndividualWraplet(e,t){t.wraplet.addDestroyListener(this.createDependencyDestroyListener(e))}createDependencyDestroyListener(e){return async t=>{this.removeDependency(t,e);const n=await Promise.allSettled((this.destroyedDependencyListeners.get(e)||[]).map(e=>e(t))),i=this.validateRequiredDependencyAfterRemoval(e);i&&n.push({status:\"rejected\",reason:i}),z(`Errors in the destruction callbacks of the \"${e} dependency.\"`,n)}}validateRequiredDependencyAfterRemoval(e){return this.map[e].required&&!this.status.isGettingDestroyed&&null===this.directDependencies[e]?new n(`Required dependency \"${e}\" has been destroyed.`):null}async destroyDependencies(){if(this.status.isDestroyed)throw new d(\"Dependencies are already destroyed.\");if(this.status.isGettingDestroyed=!0,!this.status.isGettingInitialized){if(!this.status.isInitialized)return this.status.isDestroyed=!0,void(this.status.isGettingDestroyed=!1);await this.destroyDeps(),this.status.isInitialized=!1,this.status.isDestroyed=!0,this.status.isGettingDestroyed=!1}}findChildrenElements(e,t){return\"string\"==typeof e?((e,t)=>Array.from(t.querySelectorAll(e)))(e,t):e(t)}get dependencies(){if(!this.dependenciesAreInstantiated)throw new i(\"Wraplet is not yet fully initialized.\");return this.wrappedDependencies}removeDependency(e,t){D(this.directDependencies[t])?this.directDependencies[t].delete(e):this.directDependencies[t]===e&&(this.directDependencies[t]=null)}validateMapItem(e,n){const i=n.selector,s=n.required;if(!i&&s&&(!this.directDependencies[e]||D(this.directDependencies[e])&&0===this.directDependencies[e].size))throw new t(`${this.constructor.name}: Dependency \"${e}\" cannot at the same be required, have no selector, and be not provided otherwise.`)}validateMapItemForNonParent(e,n){if(n.required)throw new t(`Dependency \"${e}\" error: If the node provided cannot have children, there should be no required dependencies.`)}validateElements(t,n,i){if(0===n.length&&i.required)throw new e(`${this.constructor.name}: Couldn't find a node for the wraplet \"${t}\". Selector used: \"${i.selector}\".`)}wrapDependencies(e){return new Proxy(e,{get:(e,t)=>{if(\"symbol\"==typeof t)throw new Error(\"Symbol access is not supported for dependencies.\");if(!(t in e))throw new Error(`Dependency '${t}' has not been found.`);return e[t]},set:()=>{throw new Error(\"Dependencies cannot be set directly. Use the 'setExistingInstance' or 'addExistingInstance' methods instead.\")}})}defaultOptions(){return{dependencyInstantiatedListeners:new Map,dependencyInitializedListeners:new Map,dependencyDestroyedListeners:new Map,logger:M.getGlobalLogger()}}async destroyDeps(e=!1){const t=await Promise.allSettled(Object.entries(this.directDependencies).map(async([t,n])=>{if(!n||!this.map[t].destructible)return;let i=[];if(D(n))for(const e of n)i.push(e);else i.push(n);if(e){if(!this.map[t].selector)return;i=await async function(e,t){const n=new b(e);return await v(t,e=>{const t=E(e);if(t)for(const e of t)n.delete(e)}),Array.from(n)}(i,this.node)}z(`Errors during destruction of the \"${t}\" dependency.`,await Promise.allSettled(i.map(async e=>{if(!e.wraplet.status.isDestroyed&&!e.wraplet.status.isGettingDestroyed)return e.wraplet.destroy()})))})),n=z(\"Errors during the dependencies destruction.\",t,!1);if(n)throw this.logger.dumpError(n),n}static createInjector(e,t){return{data:t||{},callback:(t,n,i)=>{let s=n;if(r=e,Number.isInteger(r))for(let t=0;t<e;t++)s=s.getParent();else{if(!f(e))throw new Error(\"Invalid map argument.\");s.setMap(e)}var r;return new C(t,s,i)}}}}const x=(e,t,n)=>{let i=Object.getPrototypeOf(e);const s=n?n.prototype:Object.getPrototypeOf(i);for(;i&&i!==s;){if(Object.prototype.hasOwnProperty.call(i,t))return!0;i=Object.getPrototypeOf(i)}return!1};class k{node;listeners=new Map;constructor(e){this.node=e}addListener(e,t,n){this.node.addEventListener(e,t,n);const i=this.listeners.get(this.node)||[];i.push({callback:t,event:e,options:n}),this.listeners.set(this.node,i)}addListenerTo(e,t,n,i,s=!0){if(!I(this.node))throw new Error(\"Target node is not a parent node. Cannot add listener to its child.\");const r=[];if(\"string\"==typeof e?r.push(...Array.from(this.node.querySelectorAll(e))):r.push(...e(this.node)),s&&0===r.length)throw new Error(\"No nodes found\");for(const e of r){e.addEventListener(t,n,i);const s=this.listeners.get(e)||[];s.push({event:t,callback:n,options:i}),this.listeners.set(e,s)}}destroy(){for(const e of this.listeners){const t=e[0],n=e[1];for(const e of n)t.removeEventListener(e.event,e.callback,e.options)}this.listeners.clear()}}const j=Symbol(\"WrapletApi\");function O(e){return!(e.isInitialized||e.isGettingInitialized||e.isDestroyed||e.isGettingDestroyed||(e.isGettingInitialized=!0,0))}async function $(e,t){e.isInitialized=!0,e.isGettingInitialized=!1,e.isGettingDestroyed&&await t()}function P(e){if(e.isDestroyed)return!1;if(e.isGettingDestroyed=!0,e.isGettingInitialized)return!1;if(!e.isInitialized)throw new d(\"Wraplet cannot be destroyed before it is initialized.\");return!0}async function q(e,t,n){e.isGettingDestroyed=!1,e.isInitialized=!1,e.isDestroyed=!0;for(const e of[...n].reverse())await e(t);n.length=0}function T(e,t){return async function(){const n=e.status;P(n)&&(t&&await t(),await q(n,e.wraplet,e.destroyListeners))}}function N(e,t){return async function(){const n=e.status;O(n)&&(t&&await t(),await $(n,e.destroyCallback))}}const _=e=>{!function(e){if(!h(e.wraplet))throw new Error(\"Correct wraplet instance has to be provided.\");if(e.node&&!(e.node instanceof Node))throw new Error(\"Correct node has to be provided.\");if(e.initializeCallback&&\"function\"!=typeof e.initializeCallback)throw new Error(\"initializeCallback has to be a function.\");if(e.destroyCallback&&\"function\"!=typeof e.destroyCallback)throw new Error(\"destroyCallback has to be a function.\")}(e);const t={...e},n={isGettingInitialized:!1,isDestroyed:!1,isInitialized:!1,isGettingDestroyed:!1},i={},s=[],r=T({status:n,wraplet:t.wraplet,destroyListeners:s},async()=>{t.destroyCallback&&await t.destroyCallback(),t.node&&function(e,t){const n=E(t);n&&n.delete(e)}(t.wraplet,t.node)}).bind(i),a=N({status:n,destroyCallback:r,wraplet:t.wraplet},async()=>{t.initializeCallback&&await t.initializeCallback()}).bind(i);var o,d;return t.node&&(o=t.wraplet,(d=t.node).wraplets||(d.wraplets=new b),d.wraplets.add(o)),Object.assign(i,{[j]:!0,__destroyListeners:s,status:n,addDestroyListener:e=>{s.push(e)},initialize:a,destroy:r})};class R{node;[p]=!0;wraplet;_nodeManager;constructor(e){if(this.node=e,!(e instanceof Node))throw new Error(\"AbstractWraplet requires a Node instance.\");const t=this.supportedNodeTypes();if(null!==t&&!t.find(t=>e instanceof t))throw new o(`Node type ${e.constructor.name} is not supported by the ${this.constructor.name} wraplet.`);this.wraplet=this.createWrapletApi()}createWrapletApi(){const e=x(this,\"onInitialize\",R)?this.onInitialize.bind(this):void 0,t=x(this,\"onDestroy\",R)?this.onDestroy.bind(this):void 0;return this.buildWrapletApi(e,t)}buildWrapletApi(e,t){return _({node:this.node,wraplet:this,initializeCallback:e,destroyCallback:async()=>{t&&await t(),this._nodeManager&&this._nodeManager.destroy()}})}get nodeManager(){return this._nodeManager||(this._nodeManager=new k(this.node)),this._nodeManager}supportedNodeTypes(){return null}supportedNodeTypesGuard(e){return e}async onInitialize(){throw new Error(\"Method has to be implemented by subclass.\")}async onDestroy(){throw new Error(\"Method has to be implemented by subclass.\")}static createWraplets(e,t,n=[]){if(this===R)throw new Error(\"You cannot instantiate an abstract class.\");const i=[];let s;\"function\"==typeof t?s=t(e):(e instanceof Element&&e.hasAttribute(t)&&i.push(new this(e,...n)),s=e.querySelectorAll(`[${t}]`));for(const e of s)i.push(new this(e,...n));return i}static async createAndInitializeWraplets(e,t,n=[]){const i=this.createWraplets(e,t,n);for(const e of i)await e.wraplet.initialize();return i}}class F extends R{dm;constructor(e){if(!l(e,L))throw new Error(\"AbstractDependentWraplet requires an instance implementing the DependencyManager interface.\");super(e.node),this.dm=e,e.instantiateDependencies()}createWrapletApi(){return this.buildWrapletApi(async()=>{await this.dm.initializeDependencies(),await this.onInitialize.bind(this)()},async()=>{await this.onDestroy.bind(this)(),await this.dm.destroyDependencies()})}async onDestroy(){}async onInitialize(){}get d(){return this.dm.dependencies}static createDependencyManager(e,t){return new C(e,t)}static createWraplets(){throw new Error(\"This method is not supported for AbstractDependentWraplet.\")}static createAndInitializeWraplets(){throw new Error(\"This method is not supported for AbstractDependentWraplet.\")}static createDependentWraplets(e,t,n,i=[]){if(this===F)throw new Error(\"You cannot instantiate an abstract class.\");const s=this,r=[];let a;if(\"function\"==typeof t)a=t(e);else{if(e instanceof Element&&e.hasAttribute(t)){const t=s.createDependencyManager(e,n);r.push(new this(t,...i))}a=e.querySelectorAll(`[${t}]`)}for(const e of a){const t=s.createDependencyManager(e,n);r.push(new this(t,...i))}return r}static async createAndInitializeDependentWraplets(e,t,n,i=[]){const s=this.createDependentWraplets(e,t,n,i);for(const e of s)await e.wraplet.initialize();return s}}class Y extends g{[m]=!0}class B{initializers=[];addNodeInitializer(e){this.initializers.push(e)}async initializeNode(e,t){z(\"There were errors during the node's initialization.\",await Promise.allSettled(this.initializers.map(n=>n(e,t))))}async destroyNode(e){await W(e)}}export{F as AbstractDependentWraplet,R as AbstractWraplet,C as DDM,B as DNTM,b as DefaultWrapletSet,Y as DefaultWrapletSetReadonly,i as DependenciesAreNotAvailableError,a as InternalLogicError,c as LifecycleAsyncErrors,d as LifecycleError,t as MapError,e as MissingRequiredDependencyError,n as RequiredDependencyDestroyedError,s as StorageValidationError,r as TooManyChildrenFoundError,o as UnsupportedNodeTypeError,p as WrapletSymbol,T as createOuterDestroyCallback,N as createOuterInitializeCallback,_ as createWrapletApi,W as destroyWrapletsRecursively,q as destructionCompleted,P as destructionStarted,E as getWrapletsFromNode,$ as initializationCompleted,O as initializationStarted,h as isWraplet};\n//# sourceMappingURL=index.js.map","const t=Symbol(\"KeyValueStorage\");function e(e){return(e=>\"object\"==typeof e&&null!==e&&!0===e[t])(e)}class a extends Error{}class s{storage;defaults;validators;[t]=!0;constructor(t,e,a){this.storage=t,this.defaults=e,this.validators=a}async has(t){return await this.storage.has(t)}async get(t){const e=await this.storage.get(t);return void 0!==e?(this.validateGetValue(t,e),e):this.defaults[t]}async getMultiple(t){const e={...await this.storage.getMultiple(t)};for(const a of t)void 0===e[a]&&(e[a]=this.defaults[a]);return e}async getAll(){const t={...await this.storage.getAll()};for(const e of Object.keys(this.defaults))void 0===t[e]&&(t[e]=this.defaults[e]);return t}async set(t,e){this.validateSetValue(t,e),await this.storage.set(t,e)}async setMultiple(t){for(const e in t)this.validateSetValue(e,t[e]);await this.storage.setMultiple(t)}async setAll(t){for(const e in t)this.validateSetValue(e,t[e]);await this.storage.setAll(t)}async delete(t){await this.storage.delete(t)}async deleteMultiple(t){await this.storage.deleteMultiple(t)}async deleteAll(){await this.storage.deleteAll()}validateGetValue(t,e){if(!this.validators[t](e))throw new a(`Got an invalid value for the key ${String(t)}.`)}validateSetValue(t,e){if(!this.validators[t](e))throw new a(`Attempted to set an invalid value for the key ${String(t)}.`)}}class i{isPartial;defaults;validators;[t]=!0;data=null;options;constructor(t,e,a,s={}){this.isPartial=t,this.defaults=e,this.validators=a,this.validateValidators(a),this.options={keepFresh:!0,elementOptionsMerger:(t,e)=>({...t,...e}),...s}}async has(t){return t in await this.getAll()}async get(t){return(await this.getAll())[t]}async getMultiple(t){const e=await this.getAll();return t.reduce((t,a)=>(t[a]=e[a],t),{})}async getAll(){return this.options.keepFresh&&await this.refresh(),this.data||await this.refresh(),this.data}async set(t,e){if(this.validators[t]&&!this.validators[t](e))throw new a(`Attempted to set an invalid value for the key ${String(t)}.`);const s=await this.getValue(),i=JSON.parse(s);i[t]=e,await this.setAll(i)}async setMultiple(t){const e=await this.getAll();await this.setAll({...e,...t})}async setAll(t){await this.setValue(t)}async delete(t){const e=await this.getAll();t in e&&(delete e[t],await this.setValue(e))}async deleteMultiple(t){const e=await this.getAll();for(const a of t)delete e[a];await this.setAll(e)}async deleteAll(){await this.deleteAllValues(),await this.refresh()}async refresh(){this.data=await this.fetchFreshData()}async fetchFreshData(){const t=await this.getValue();if(\"{\"!==t.charAt(0))throw new a(\"Data has to be defined as an object.\");const e=JSON.parse(t);return this.validateData(e),this.options.elementOptionsMerger(this.defaults,e)}validateData(t){for(const e in t){if(!this.isPartial&&!this.validators[e])throw new a(`No validator found for the value: ${e}`);if(this.validators[e]&&!this.validators[e](t[e]))throw new a(`Value for '${e}' has been discarded by the validator.`)}}validateValidators(t){for(const e in t)if(\"function\"!=typeof t[e])throw new a(`Validator for ${e} is not a function.`)}}class l extends i{element;attribute;defaults;validators;constructor(t,e,a,s,i,l={}){super(t,s,i,l),this.element=e,this.attribute=a,this.defaults=s,this.validators=i}async getValue(){return this.element.getAttribute(this.attribute)||\"{}\"}async setValue(t){this.element.setAttribute(this.attribute,JSON.stringify(t))}async deleteAllValues(){this.element.removeAttribute(this.attribute)}}class r extends i{element;defaults;validators;constructor(t,e,a,s,i={}){super(t,a,s,i),this.element=e,this.defaults=a,this.validators=s}async getValue(){return this.element.textContent||\"{}\"}async setValue(t){this.element.textContent=JSON.stringify(t)}async deleteAllValues(){this.element.textContent=\"{}\"}}export{i as AbstractNongranularKeyValueStorage,l as ElementAttributeStorage,r as ElementStorage,t as KeyValueStorageSymbol,s as StorageWrapper,e as isKeyValueStorage};\n//# sourceMappingURL=storage.js.map","import { AbstractWraplet, Constructable } from \"wraplet\";\nimport { DocumentAlterer } from \"./types/DocumentAlterer\";\nimport {\n  ElementAttributeStorage,\n  isKeyValueStorage,\n  KeyValueStorage,\n  StorageValidators,\n  StorageWrapper,\n} from \"wraplet/storage\";\nimport { PreviewWraplet } from \"./types/PreviewWraplet\";\n\ntype AltererData = {\n  callback: DocumentAlterer;\n  priority: number;\n};\n\nexport type ExhibitionPreviewOptions = {\n  updateHeight?: boolean;\n  updateHeightCallback?: (preview: ExhibitionPreview) => Promise<void>;\n};\n\nexport class ExhibitionPreview\n  extends AbstractWraplet<HTMLIFrameElement>\n  implements PreviewWraplet\n{\n  private alterers: AltererData[] = [];\n  private currentBlobUrl: string | null = null;\n\n  private options: KeyValueStorage<Required<ExhibitionPreviewOptions>>;\n\n  constructor(\n    element: HTMLIFrameElement,\n    options?: ExhibitionPreviewOptions,\n    optionsStorage?: KeyValueStorage<Partial<ExhibitionPreviewOptions>>,\n  ) {\n    super(element);\n\n    if (\n      typeof optionsStorage !== \"undefined\" &&\n      !isKeyValueStorage(optionsStorage)\n    ) {\n      throw new Error(\"Provided optionsStorage must be a KeyValueStorage\");\n    }\n\n    const validators: StorageValidators<ExhibitionPreviewOptions> = {\n      updateHeight: (data: unknown) => typeof data === \"boolean\",\n      updateHeightCallback: (data: unknown) => typeof data === \"function\",\n    };\n\n    const defaultOptions: Required<ExhibitionPreviewOptions> = {\n      updateHeight: true,\n      updateHeightCallback: async (preview) => {\n        setTimeout(() => {\n          preview.updateHeight();\n        }, 100);\n      },\n    };\n\n    const optsStorage: KeyValueStorage<Partial<ExhibitionPreviewOptions>> =\n      optionsStorage ||\n      new ElementAttributeStorage<Partial<ExhibitionPreviewOptions>, true>(\n        true,\n        this.node,\n        \"data-js-options\",\n        {},\n        {},\n      );\n\n    this.options = new StorageWrapper<Required<ExhibitionPreviewOptions>>(\n      optsStorage,\n      { ...defaultOptions, ...options },\n      validators,\n    );\n  }\n\n  protected supportedNodeTypes(): readonly Constructable<HTMLIFrameElement>[] {\n    return super.supportedNodeTypesGuard([HTMLIFrameElement]);\n  }\n\n  /**\n   * Adds a DocumentAlterer to the preview.\n   * @param alterer\n   * @param priority\n   *   Priority of the alterer. Higher priority alterers are executed first.\n   */\n  public addDocumentAlterer(\n    alterer: DocumentAlterer,\n    priority: number = 0,\n  ): void {\n    if (this.hasDocumentAlterer(alterer)) {\n      return;\n    }\n\n    this.alterers.push({\n      callback: alterer,\n      priority: priority,\n    });\n  }\n\n  /**\n   * Checks if alterer is already registered.\n   * @param alterer\n   */\n  public hasDocumentAlterer(alterer: DocumentAlterer): boolean {\n    return this.alterers.some(\n      (altererData) => altererData.callback === alterer,\n    );\n  }\n\n  public removeDocumentAlterer(alterer: DocumentAlterer): void {\n    this.alterers = this.alterers.filter(\n      (altererData) => altererData.callback !== alterer,\n    );\n  }\n\n  public async update(): Promise<void> {\n    const doc = document.implementation.createHTMLDocument();\n    this.alterers.sort((a, b) => b.priority - a.priority);\n    for (const alterer of this.alterers) {\n      await alterer.callback(doc);\n    }\n\n    // Revoke previous blob URL\n    if (this.currentBlobUrl) {\n      URL.revokeObjectURL(this.currentBlobUrl);\n    }\n\n    const htmlContent = \"<!DOCTYPE html>\\n\" + doc.documentElement.outerHTML;\n    const blob = new Blob([htmlContent], { type: \"text/html;charset=utf-8\" });\n    this.currentBlobUrl = URL.createObjectURL(blob);\n    this.node.src = this.currentBlobUrl;\n\n    this.node.onload = async () => {\n      if (!(await this.options.get(\"updateHeight\"))) {\n        await (\n          await this.options.get(\"updateHeightCallback\")\n        )(this);\n      }\n      this.node.onload = null;\n    };\n  }\n\n  public removeIFrame(): void {\n    this.node.remove();\n  }\n\n  /**\n   * Updates preview's height to match its content.\n   */\n  public updateHeight(): void {\n    const iframeWindow = this.getIFrameWindow();\n    const iframeDocument = this.getIFrameDocument();\n    const el = iframeDocument.querySelector(\"html\");\n    if (!el) {\n      return;\n    }\n\n    const styles = iframeWindow.getComputedStyle(el);\n    const margin =\n      parseFloat(styles[\"marginTop\"]) + parseFloat(styles[\"marginBottom\"]);\n\n    const height = Math.ceil(el.offsetHeight + margin);\n    this.node.height = height + \"px\";\n  }\n\n  private getIFrameDocument(): Document {\n    const iframeDocument = this.node.contentDocument;\n    if (!iframeDocument) {\n      throw new Error(\"IFrame document is not available.\");\n    }\n\n    return iframeDocument;\n  }\n\n  private getIFrameWindow(): Window {\n    const window = this.node.contentWindow;\n    if (!window) {\n      throw new Error(\"IFrame window is not available.\");\n    }\n    return window;\n  }\n}\n","import { IsSingleTag, PreviewValue } from \"./types/PreviewValue\";\n\nexport const typeMap = {\n  html: {\n    languages: [\"html\"],\n    tag: undefined,\n  },\n  js: {\n    languages: [\"javascript\", \"typescript\"],\n    tag: \"script\",\n  },\n  css: {\n    languages: [\"css\"],\n    tag: \"style\",\n  },\n} as const;\n\nexport type TypeFromLanguage<L extends MonacoEditorLanguages> = {\n  [K in ValueTypes]: L extends (typeof typeMap)[K][\"languages\"][number]\n    ? K\n    : never;\n}[ValueTypes];\n\nexport type ValueTypes = keyof typeof typeMap;\n\nexport type MonacoEditorLanguages =\n  (typeof typeMap)[ValueTypes][\"languages\"][number];\n\nexport function getTypeFromLanguage<T extends MonacoEditorLanguages>(\n  language: T,\n): TypeFromLanguage<T> {\n  for (const [key, value] of Object.entries(typeMap)) {\n    if (value.languages.includes(language as never)) {\n      return key as TypeFromLanguage<T>;\n    }\n  }\n\n  throw new Error(\"Unknown language\");\n}\n\nexport function getTagFromType<T extends ValueTypes>(\n  type: T,\n): (typeof typeMap)[T][\"tag\"] {\n  return typeMap[type].tag;\n}\n\nexport function isSingleTagType(\n  type: ValueTypes,\n): type is Extract<PreviewValue, IsSingleTag>[\"type\"] {\n  return Boolean(getTagFromType(type));\n}\n","import { AbstractWraplet, Constructable } from \"wraplet\";\nimport {\n  ElementAttributeStorage,\n  isKeyValueStorage,\n  KeyValueStorage,\n  StorageValidators,\n  StorageWrapper,\n} from \"wraplet/storage\";\n\nimport type * as monaco from \"monaco-editor\";\nimport { DocumentAltererProviderWraplet } from \"./types/DocumentAltererProviderWraplet\";\nimport {\n  getTagFromType,\n  getTypeFromLanguage,\n  isSingleTagType,\n  MonacoEditorLanguages,\n} from \"./TypeMap\";\nimport { DocumentAlterer } from \"./types/DocumentAlterer\";\n\nexport type EditorCreator = (\n  options: monaco.editor.IStandaloneEditorConstructionOptions,\n  node: HTMLElement,\n  monaco: MonacoInstance,\n) => Promise<monaco.editor.IStandaloneCodeEditor>;\n\nexport type ExhibitionMonacoEditorOptions = {\n  /**\n   * Monaco instance.\n   */\n  monaco: MonacoInstance;\n  /**\n   * Instead of depending on this class for editor instantiation, you can provide your own editor instance here.\n   */\n  monacoEditorCreator?: EditorCreator;\n\n  /**\n   * Monaco options for the editor.\n   */\n  monacoEditorOptions?: monaco.editor.IStandaloneEditorConstructionOptions;\n\n  /**\n   * Location where the editor should be inserted.\n   */\n  location?: \"head\" | \"body\";\n\n  /**\n   * Priority of the editor's document alterer. Higher priority means it will be executed first.\n   */\n  priority?: number;\n\n  /**\n   * Trim the default value of the editor.\n   */\n  trimDefaultValue?: boolean;\n\n  /**\n   * This option applies to single tag languages only (typescript, javascript and css). It\n   * determines the attributes that will be added to the generated tag.\n   */\n  tagAttributes?: Record<string, string>;\n};\n\ntype RequiredMonacoEditorOptions = Required<\n  Omit<ExhibitionMonacoEditorOptions, \"tagAttributes\" | \"monacoEditorCreator\">\n> & {\n  tagAttributes?: ExhibitionMonacoEditorOptions[\"tagAttributes\"];\n  monacoEditorCreator?: EditorCreator;\n};\n\nexport type MonacoInstance = typeof monaco;\n\nexport class ExhibitionMonacoEditor\n  extends AbstractWraplet<HTMLElement>\n  implements DocumentAltererProviderWraplet\n{\n  private monaco: MonacoInstance | null = null;\n  private editor: monaco.editor.IStandaloneCodeEditor | null = null;\n  private options: KeyValueStorage<RequiredMonacoEditorOptions>;\n\n  private priority: number = 0;\n  private monacoEditorOptions:\n    | RequiredMonacoEditorOptions[\"monacoEditorOptions\"]\n    | null = null;\n\n  constructor(\n    node: HTMLElement,\n    options: ExhibitionMonacoEditorOptions,\n    optionsStorage?: KeyValueStorage<Partial<ExhibitionMonacoEditorOptions>>,\n  ) {\n    super(node);\n\n    if (\n      typeof optionsStorage !== \"undefined\" &&\n      !isKeyValueStorage(optionsStorage)\n    ) {\n      throw new Error(\"Provided optionsStorage must be a KeyValueStorage\");\n    }\n\n    this.alterDocument = this.alterDocument.bind(this);\n\n    const defaultOptions: Omit<\n      RequiredMonacoEditorOptions,\n      \"monacoEditorCreator\" | \"monaco\"\n    > = {\n      location: \"body\",\n      priority: 0,\n      trimDefaultValue: true,\n      monacoEditorOptions: {},\n    };\n\n    const validators: StorageValidators<ExhibitionMonacoEditorOptions> = {\n      // We generally don't validate monacoOptions, leaving it to the monaco editor.\n      location: (data: unknown) =>\n        typeof data === \"string\" && [\"head\", \"body\"].includes(data),\n      priority: (data: unknown) => Number.isInteger(data),\n      tagAttributes: (data: unknown) => typeof data === \"object\",\n      trimDefaultValue: (data: unknown) => typeof data === \"boolean\",\n      monacoEditorCreator: (data: unknown) => typeof data === \"function\",\n      monaco: (data: unknown) => typeof data === \"object\",\n      monacoEditorOptions: () => true,\n    };\n\n    options.monacoEditorOptions = {\n      ...defaultOptions.monacoEditorOptions,\n      ...options.monacoEditorOptions,\n    };\n\n    const optsStorage: KeyValueStorage<Partial<ExhibitionMonacoEditorOptions>> =\n      optionsStorage ||\n      new ElementAttributeStorage<Partial<ExhibitionMonacoEditorOptions>, true>(\n        true,\n        this.node,\n        \"data-js-options\",\n        {},\n        {},\n        {\n          elementOptionsMerger: (defaults, attributeOptions) => {\n            attributeOptions.monacoEditorOptions = {\n              ...defaults.monacoEditorOptions,\n              ...options.monacoEditorOptions,\n              ...attributeOptions.monacoEditorOptions,\n            };\n            return { ...defaults, ...options, ...attributeOptions };\n          },\n        },\n      );\n\n    this.options = new StorageWrapper<RequiredMonacoEditorOptions>(\n      optsStorage,\n      { ...defaultOptions, ...options },\n      validators,\n    );\n  }\n\n  protected supportedNodeTypes(): readonly Constructable<HTMLElement>[] {\n    return super.supportedNodeTypesGuard([HTMLElement]);\n  }\n\n  public async initialize() {\n    return this.wraplet.initialize();\n  }\n\n  public async destroy() {\n    await this.wraplet.destroy();\n  }\n\n  protected async onInitialize() {\n    this.priority = await this.options.get(\"priority\");\n    this.monacoEditorOptions = await this.options.get(\"monacoEditorOptions\");\n\n    if (await this.options.get(\"trimDefaultValue\")) {\n      const monacoOptions = await this.options.get(\"monacoEditorOptions\");\n      if (monacoOptions.value) {\n        monacoOptions.value = ExhibitionMonacoEditor.trimDefaultValue(\n          monacoOptions.value,\n        );\n        await this.options.set(\"monacoEditorOptions\", monacoOptions);\n      }\n    }\n\n    await this.validateOptions();\n\n    this.monaco = await this.getMonacoInstance();\n\n    const editorCreator: EditorCreator =\n      (await this.options.get(\"monacoEditorCreator\")) ||\n      (async (options, element, monaco) =>\n        ExhibitionMonacoEditor.createMonacoEditor(options, element, monaco));\n\n    this.editor = await editorCreator(\n      await this.options.get(\"monacoEditorOptions\"),\n      this.node,\n      this.monaco,\n    );\n  }\n\n  public getPriority(): number {\n    return this.priority;\n  }\n\n  private async getMonacoInstance(): Promise<MonacoInstance> {\n    const monaco = await this.options.get(\"monaco\");\n    if (!monaco) throw new Error(\"Monaco instance is not available\");\n    return monaco;\n  }\n\n  /**\n   * Returns the current value of the editor.\n   */\n  private getValue(): string {\n    return this.getEditor().getValue();\n  }\n\n  private async alterDocument(document: Document): Promise<void> {\n    const monaco = this.monaco;\n    if (!monaco) {\n      throw new Error(\n        \"Monaco instance is not available. Is wraplet initialized?\",\n      );\n    }\n\n    const language = this.getLanguage();\n    const content =\n      language === \"typescript\"\n        ? await this.getTSValueAsJS(monaco)\n        : this.getValue();\n\n    const location = await this.options.get(\"location\");\n    const type = getTypeFromLanguage(language);\n\n    if (isSingleTagType(type)) {\n      const tag = getTagFromType(type);\n      const tagAttributes = (await this.options.get(\"tagAttributes\")) ?? {};\n      const tagElement = document.createElement(tag);\n      for (const [key, value] of Object.entries(tagAttributes)) {\n        tagElement.setAttribute(key, value);\n      }\n      tagElement.innerHTML = content;\n      document[location].appendChild(tagElement);\n      return;\n    }\n    document[location].innerHTML += content;\n  }\n\n  public getDocumentAlterer(): DocumentAlterer {\n    return this.alterDocument;\n  }\n\n  /**\n   * Additional validation.\n   */\n  private async validateOptions() {\n    if (!(await this.options.get(\"monacoEditorOptions\")).language) {\n      throw new Error(\"Missing language in monacoOptions\");\n    }\n\n    const type = getTypeFromLanguage(this.getLanguage());\n    if (!isSingleTagType(type)) {\n      if (await this.options.get(\"tagAttributes\")) {\n        throw new Error(\n          \"'tagAttributes' option is only allowed for single tag types\",\n        );\n      }\n    }\n  }\n\n  private getEditor(): monaco.editor.IStandaloneCodeEditor {\n    if (!this.editor) throw new Error(\"Editor is not initialized\");\n    return this.editor;\n  }\n\n  private async getTSValueAsJS(monaco: MonacoInstance) {\n    const model = this.getEditor().getModel();\n    if (!model) throw new Error(\"Model is not available\");\n\n    // Make sure TypeScript eager sync is enabled\n    monaco.languages.typescript.typescriptDefaults.setEagerModelSync(true);\n\n    // Ensure we're using file:/// URI\n    const uri = model.uri;\n    if (uri.scheme !== \"file\") {\n      throw new Error(`Model must use file:// URI, got: ${uri.toString()}`);\n    }\n\n    // Get worker getter\n    const getWorker = async (\n      attempts: number = 10,\n    ): Promise<\n      | ((\n          ...uris: monaco.Uri[]\n        ) => Promise<monaco.languages.typescript.TypeScriptWorker>)\n      | null\n    > => {\n      try {\n        return await monaco.languages.typescript.getTypeScriptWorker();\n      } catch (error) {\n        if (error !== \"TypeScript not registered!\") throw error;\n        if (attempts <= 0) return null;\n        await new Promise((r) => setTimeout(r, 200));\n        return getWorker(attempts - 1);\n      }\n    };\n\n    const workerGetter = await getWorker();\n    if (!workerGetter)\n      throw new Error(\"Timeout: Could not get TypeScript worker\");\n\n    const worker = await workerGetter(uri);\n\n    // 🔸 Wait until the worker actually knows this file\n    // Call something lightweight to force registration\n    for (let i = 0; i < 20; i++) {\n      try {\n        await worker.getSemanticDiagnostics(uri.toString());\n        break; // success — worker now recognizes the file\n      } catch (err) {\n        if (/Could not find source file/.test(String(err))) {\n          await new Promise((r) => setTimeout(r, 250));\n          continue;\n        }\n        throw err;\n      }\n    }\n\n    // Now it's safe to call getEmitOutput\n    const { outputFiles } = await worker.getEmitOutput(uri.toString());\n    if (!outputFiles.length) throw new Error(\"No JS output produced\");\n    return outputFiles[0].text;\n  }\n\n  private getLanguage(): MonacoEditorLanguages {\n    const monacoOptions = this.monacoEditorOptions;\n    if (!monacoOptions) {\n      throw new Error(\n        \"Monaco options are not available. Is wraplet initialized?\",\n      );\n    }\n\n    if (!monacoOptions[\"language\"]) {\n      throw new Error(\"Missing language in monacoOptions\");\n    }\n\n    return monacoOptions[\"language\"] as MonacoEditorLanguages;\n  }\n\n  public static trimDefaultValue(content: string): string {\n    const lines = content.split(\"\\n\");\n\n    // Find the first non-empty line to determine base indentation\n    const firstNonEmptyLine = lines.find((line) => line.trim().length > 0);\n\n    if (!firstNonEmptyLine) {\n      return content.trim();\n    }\n\n    // Count leading spaces on the first non-empty line\n    const leadingSpaces = firstNonEmptyLine.search(/\\S|$/);\n\n    // Trim the same number of spaces from each line\n    const trimmedLines = lines.map((line) => {\n      // Only trim if the line has at least that many leading spaces\n      if (\n        line.length >= leadingSpaces &&\n        line.substring(0, leadingSpaces).trim() === \"\"\n      ) {\n        return line.substring(leadingSpaces);\n      }\n      return line;\n    });\n\n    // Join back and trim any leading/trailing empty lines\n    return trimmedLines.join(\"\\n\").trim();\n  }\n\n  protected async onDestroy() {\n    this.editor?.dispose();\n  }\n\n  /**\n   * Helper method creating a new monaco editor instance.\n   */\n  public static createMonacoEditor(\n    editorOptions: monaco.editor.IStandaloneEditorConstructionOptions = {},\n    node: HTMLElement,\n    monaco: MonacoInstance,\n  ): monaco.editor.IStandaloneCodeEditor {\n    const language = editorOptions.language;\n    if (!language) {\n      throw new Error(\"Missing language in editorOptions\");\n    }\n\n    const model = this.createMonacoModel(\n      monaco,\n      language,\n      editorOptions.value || \"\",\n    );\n\n    return monaco.editor.create(node, {\n      ...editorOptions,\n      ...{ model: model },\n    });\n  }\n\n  /**\n   * Helper method creating a new monaco model instance.\n   */\n  public static createMonacoModel(\n    monaco: MonacoInstance,\n    language: string,\n    value: string,\n  ): monaco.editor.ITextModel {\n    // Generate a unique URI for each model instance\n    const uniqueId = Math.random().toString(36).substring(2, 15);\n    return monaco.editor.createModel(\n      value,\n      language,\n      monaco.Uri.parse(`file:///${language}-${uniqueId}.ts`),\n    );\n  }\n\n  /**\n   * Create a single ExhibitionMonacoEditor instance wrapping a given element.\n   */\n  public static create(\n    element: HTMLElement,\n    options: ExhibitionMonacoEditorOptions,\n  ): ExhibitionMonacoEditor {\n    return new ExhibitionMonacoEditor(element, options);\n  }\n}\n","export const exhibitionDefaultAttribute = \"data-js-exhibition\";\n","import { AbstractWraplet } from \"wraplet\";\n\nexport class ExhibitionUpdater extends AbstractWraplet<HTMLElement> {\n  public addClickListener(callback: () => void): void {\n    this.nodeManager.addListener(\"click\", callback);\n  }\n}\n","import {\n  AbstractDependentWraplet,\n  Constructable,\n  DDM,\n  WrapletDependencyMap,\n} from \"wraplet\";\nimport {\n  ExhibitionPreview,\n  ExhibitionPreviewOptions,\n} from \"./ExhibitionPreview\";\nimport {\n  ExhibitionMonacoEditor,\n  ExhibitionMonacoEditorOptions,\n} from \"./ExhibitionMonacoEditor\";\nimport { exhibitionDefaultAttribute } from \"./selectors\";\nimport { DocumentAltererProviderWraplet } from \"./types/DocumentAltererProviderWraplet\";\nimport { KeyValueStorage } from \"wraplet/storage\";\nimport { DocumentAlterer } from \"./types/DocumentAlterer\";\nimport { PreviewWraplet } from \"./types/PreviewWraplet\";\nimport { ExhibitionUpdater } from \"./ExhibitionUpdater\";\n\nexport type ExhibitionOptions = {};\n\nexport type ExhibitionInitOptions = {\n  init?: boolean;\n  updatePreview?: boolean;\n};\n\nexport type MapConfiguration = {\n  editors: {\n    selector?: string;\n    Class: Constructable<DocumentAltererProviderWraplet>;\n    args?: unknown[];\n  };\n  preview: {\n    selector?: string;\n    Class: Constructable<PreviewWraplet>;\n    args?: unknown[];\n  };\n  updaters: {\n    selector?: string;\n    Class: Constructable<ExhibitionUpdater>;\n    args?: unknown[];\n  };\n};\n\nexport type DefaultMapConfiguration = {\n  editors: {\n    selector?: string;\n    options: ExhibitionMonacoEditorOptions;\n    optionsStorage?: KeyValueStorage<Partial<ExhibitionMonacoEditorOptions>>;\n  };\n  preview?: {\n    selector?: string;\n    options?: ExhibitionPreviewOptions;\n    optionsStorage?: KeyValueStorage<ExhibitionPreviewOptions>;\n  };\n  updaters?: {\n    selector?: string;\n  };\n};\n\nexport type DisabledEditorsDefaultMapConfiguration = Omit<\n  Partial<DefaultMapConfiguration>,\n  \"editors\"\n>;\n\ntype GetMapArgs =\n  | { configuration: DefaultMapConfiguration; deferEditors?: false }\n  | {\n      configuration?: DisabledEditorsDefaultMapConfiguration;\n      deferEditors: true;\n    };\n\n/**\n * This is a factory function that creates a new map each time it's run.\n */\nfunction createMap(configuration: MapConfiguration) {\n  const Class = configuration.editors.Class || ExhibitionMonacoEditor;\n  return {\n    editors: {\n      selector: configuration.editors.selector,\n      multiple: true,\n      required: false,\n      Class: Class,\n      args: configuration.editors.args || [],\n    },\n    preview: {\n      selector: configuration.preview.selector,\n      multiple: false,\n      required: true,\n      Class: configuration.preview.Class,\n      args: configuration.preview.args || [],\n    },\n    updaters: {\n      selector: configuration.updaters.selector,\n      Class: configuration.updaters.Class,\n      multiple: true,\n      required: false,\n      args: configuration.updaters.args || [],\n    },\n  } satisfies WrapletDependencyMap;\n}\n\nexport class Exhibition extends AbstractDependentWraplet<\n  HTMLElement,\n  ReturnType<typeof createMap>\n> {\n  protected supportedNodeTypes(): readonly Constructable<HTMLElement>[] {\n    return super.supportedNodeTypesGuard([HTMLElement]);\n  }\n\n  public async initialize(): Promise<void> {\n    await this.wraplet.initialize();\n  }\n\n  public async destroy(): Promise<void> {\n    await this.wraplet.destroy();\n  }\n\n  protected override async onInitialize() {\n    if (!this.d.editors) {\n      throw new Error(\"Exhibition has no editors\");\n    }\n\n    for (const editor of this.d.editors) {\n      if (!this.d.preview.hasDocumentAlterer(editor.getDocumentAlterer())) {\n        this.addPreviewAlterer(\n          editor.getDocumentAlterer(),\n          editor.getPriority(),\n        );\n      }\n    }\n\n    for (const updater of this.d.updaters) {\n      updater.addClickListener(() => {\n        this.updatePreview();\n      });\n    }\n  }\n\n  /**\n   * Adds DocumentAltererProviderWraplet instance to the list of editors.\n   */\n  public addEditor(editor: DocumentAltererProviderWraplet): void {\n    this.d.editors.add(editor);\n    this.d.preview.addDocumentAlterer(editor.getDocumentAlterer());\n  }\n\n  /**\n   * Removes DocumentAltererProviderWraplet instance from the list of editors.\n   */\n  public removeEditor(editor: DocumentAltererProviderWraplet): void {\n    this.d.editors.delete(editor);\n    this.d.preview.removeDocumentAlterer(editor.getDocumentAlterer());\n  }\n\n  /**\n   * Checks if the given editor is present in the list of editors.\n   */\n  public hasEditor(editor: DocumentAltererProviderWraplet): boolean {\n    return this.d.editors.has(editor);\n  }\n\n  /**\n   * Adds a simple DocumentAlterer to the preview.\n   */\n  private addPreviewAlterer(\n    alterer: DocumentAlterer,\n    priority: number = 0,\n  ): void {\n    this.d.preview.addDocumentAlterer(alterer, priority);\n  }\n\n  public getPreview(): PreviewWraplet {\n    return this.d.preview;\n  }\n\n  /**\n   * If Preview becomes unresponsive, you can replace it with a new one.\n   *\n   * Remember to destroy the old one afterward.\n   */\n  public replacePreview(preview: PreviewWraplet): void {\n    // Hot-swap the preview.\n    this.dm.setExistingInstance(\"preview\", preview);\n  }\n\n  public async updatePreview(): Promise<void> {\n    await this.d.preview.update();\n  }\n\n  /**\n   * Create multiple Exhibitions.\n   *\n   * @param node Node to create Exhibitions on.\n   * @param map Map of dependencies for each Exhibition instance.\n   * @param options Options for Exhibition instances.\n   * @param initOptions Options related to the creation process of the Exhibitions.\n   * @param attribute Attribute to use for Exhibition instances.\n   *\n   * @returns Array of Exhibition instances.\n   */\n  public static async createMultiple<\n    M extends ReturnType<typeof createMap> = ReturnType<typeof createMap>,\n  >(\n    node: ParentNode,\n    map: M,\n    options: ExhibitionOptions = {},\n    initOptions: ExhibitionInitOptions = {},\n    attribute: string = exhibitionDefaultAttribute,\n  ): Promise<Exhibition[]> {\n    initOptions = this.fillCreateOptionsWithDefaults(initOptions);\n    this.validateInitOptions(initOptions);\n\n    const exhibitions = this.createDependentWraplets(node, attribute, map, [\n      options,\n    ]);\n\n    for (const exhibition of exhibitions) {\n      await this.applyCreateOptions(exhibition, initOptions);\n    }\n\n    return exhibitions;\n  }\n\n  /**\n   * Create a single Exhibition instance wrapping a given element.\n   *\n   * @param element Element to wrap.\n   * @param map Map of dependencies for the Exhibition instance.\n   * @param initOptions Options related to the creation process of the Exhibitions.\n   */\n  public static async create<\n    M extends ReturnType<typeof createMap> = ReturnType<typeof createMap>,\n  >(\n    element: HTMLElement,\n    map: M,\n    initOptions: ExhibitionInitOptions = {},\n  ): Promise<Exhibition> {\n    initOptions = this.fillCreateOptionsWithDefaults(initOptions);\n    this.validateInitOptions(initOptions);\n    const ddm = new DDM<HTMLElement, ReturnType<typeof createMap>>(\n      element,\n      map,\n    );\n    const exhibition = new Exhibition(ddm);\n    await this.applyCreateOptions(exhibition, initOptions);\n    return exhibition;\n  }\n\n  private static fillCreateOptionsWithDefaults(\n    createOptions: ExhibitionInitOptions,\n  ) {\n    return {\n      init: true,\n      updatePreview: false,\n      ...createOptions,\n    };\n  }\n\n  /**\n   * Validate create options.\n   */\n  private static validateInitOptions(initOptions: ExhibitionInitOptions) {\n    if (!initOptions.init && initOptions.updatePreview) {\n      throw new Error(\n        \"Cannot update preview without initializing exhibitions first\",\n      );\n    }\n  }\n\n  /**\n   * Create options.\n   */\n  private static async applyCreateOptions(\n    exhibition: Exhibition,\n    options: ExhibitionInitOptions = {},\n  ): Promise<void> {\n    if (!options.init && options.updatePreview) {\n      throw new Error(\n        \"'updatePreview' option cannot be enabled without the 'init' one because updating preview requires initialization.\",\n      );\n    }\n\n    if (options.init) {\n      await exhibition.initialize();\n    }\n\n    if (options.updatePreview) {\n      await exhibition.updatePreview();\n    }\n  }\n\n  /**\n   * Creates a default, preconfigured, map for Exhibition.\n   */\n  public static getMap(args: GetMapArgs): ReturnType<typeof createMap> {\n    const deferEditors = args.deferEditors || false;\n\n    /*\n     * Args integrity checks.\n     */\n\n    if (\n      deferEditors &&\n      (args.configuration as DefaultMapConfiguration)?.editors?.selector\n    ) {\n      throw new Error(\n        \"If editors are disabled, editors selector cannot be used.\",\n      );\n    }\n\n    if (\n      !deferEditors &&\n      (args.configuration as DefaultMapConfiguration)?.editors &&\n      \"selector\" in (args.configuration as DefaultMapConfiguration).editors &&\n      !(args.configuration as DefaultMapConfiguration).editors.selector\n    ) {\n      throw new Error(\n        \"If editors are enabled, editors selector cannot be manually set to non-string.\",\n      );\n    }\n\n    if (!deferEditors) {\n      if (!(args.configuration as DefaultMapConfiguration)?.editors) {\n        throw new Error(\n          \"If editors are enabled, editors configuration must be provided.\",\n        );\n      }\n    }\n\n    if (\n      !deferEditors &&\n      (!(args.configuration as DefaultMapConfiguration)?.editors?.options ||\n        !(\n          (args.configuration as DefaultMapConfiguration)?.editors?.options as {\n            monaco?: unknown;\n          }\n        )[\"monaco\"])\n    ) {\n      throw new Error(\n        \"If 'editors' dependency autoloading is not disabled, you must provide the 'monaco' option in its options.\",\n      );\n    }\n\n    /*\n     * / Args integrity checks.\n     */\n\n    const editorsArgs: unknown[] = [];\n\n    if (!deferEditors) {\n      editorsArgs.push(args.configuration.editors.options || {});\n\n      if (args.configuration.editors.optionsStorage) {\n        editorsArgs.push(args.configuration.editors.optionsStorage);\n      }\n    }\n\n    const previewArgs: unknown[] = [];\n    if (args.configuration?.preview) {\n      previewArgs.push(args.configuration?.preview?.options || {});\n      if (args.configuration.preview.optionsStorage) {\n        previewArgs.push(args.configuration.preview.optionsStorage);\n      }\n    }\n\n    return createMap({\n      editors: {\n        selector: deferEditors ? undefined : \"[data-js-exhibition__editor]\",\n        Class: ExhibitionMonacoEditor,\n        args: editorsArgs,\n      },\n      preview: {\n        selector:\n          args.configuration?.preview?.selector ||\n          \"iframe[data-js-exhibition__preview]\",\n        Class: ExhibitionPreview,\n        args: previewArgs,\n      },\n      updaters: {\n        selector:\n          args.configuration?.updaters?.selector ||\n          \"[data-js-exhibition__updater]\",\n        Class: ExhibitionUpdater,\n        args: [],\n      },\n    });\n  }\n\n  public static getCustomizedMap(\n    configuration: MapConfiguration,\n  ): ReturnType<typeof createMap> {\n    if (!configuration) {\n      throw new Error(\"Configuration must be provided.\");\n    }\n    return createMap(configuration);\n  }\n}\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","e","Error","t","n","i","r","a","d","c","errors","l","p","h","u","getPrototypeOf","y","keys","includes","selector","Class","required","multiple","f","w","D","g","Set","find","this","push","findOne","getOrdered","Array","from","sort","m","b","z","status","reason","length","I","querySelectorAll","E","wraplets","async","v","childNodes","L","M","static","constructor","dumpError","console","dir","depth","getGlobalLogger","A","args","destructible","injector","callback","S","G","parent","map","children","getParent","createChild","setMap","getMap","C","node","logger","dependenciesAreInstantiated","isDestroyed","isGettingDestroyed","isGettingSynced","isInitialized","isGettingInitialized","mapTree","directDependencies","wrappedDependencies","instantiatedDependencyListeners","initializedDependencyListeners","destroyedDependencyListeners","Node","s","assign","defaultOptions","dependencyInstantiatedListeners","dependencyInitializedListeners","dependencyDestroyedListeners","initializeDependencies","initializeDeps","destroyDependencies","Promise","allSettled","entries","wraplet","initialize","syncDependencies","instantiateDeps","destroyDeps","validateMapItem","instantiateMultipleDependencies","add","instantiateSingleWrapletDependency","destroy","validateMapItemForNonParent","instantiateDependencies","wrapDependencies","findExistingWraplet","has","findChildrenElements","validateElements","name","instantiateWrapletItem","data","warn","message","prepareIndividualWraplet","addDependencyInstantiatedListener","set","addDependencyInitializedListener","addDependencyDestroyedListener","setExistingInstance","addExistingInstance","addDestroyListener","createDependencyDestroyListener","removeDependency","validateRequiredDependencyAfterRemoval","dependencies","delete","size","Proxy","Map","createInjector","Number","isInteger","x","k","listeners","addListener","addEventListener","event","options","addListenerTo","removeEventListener","clear","j","T","P","reverse","q","destroyListeners","R","_nodeManager","supportedNodeTypes","createWrapletApi","onInitialize","bind","onDestroy","buildWrapletApi","initializeCallback","destroyCallback","O","$","N","__destroyListeners","_","nodeManager","supportedNodeTypesGuard","createWraplets","Element","hasAttribute","createAndInitializeWraplets","F","dm","super","createDependencyManager","createDependentWraplets","createAndInitializeDependentWraplets","storage","defaults","validators","validateGetValue","getMultiple","getAll","validateSetValue","setMultiple","setAll","deleteMultiple","deleteAll","String","isPartial","validateValidators","keepFresh","elementOptionsMerger","reduce","refresh","getValue","JSON","parse","setValue","deleteAllValues","fetchFreshData","charAt","validateData","element","attribute","getAttribute","setAttribute","stringify","removeAttribute","ExhibitionPreview","alterers","currentBlobUrl","optionsStorage","updateHeight","updateHeightCallback","preview","setTimeout","optsStorage","HTMLIFrameElement","addDocumentAlterer","alterer","priority","hasDocumentAlterer","some","altererData","removeDocumentAlterer","filter","update","doc","document","implementation","createHTMLDocument","URL","revokeObjectURL","htmlContent","documentElement","outerHTML","blob","Blob","type","createObjectURL","src","onload","removeIFrame","remove","iframeWindow","getIFrameWindow","el","getIFrameDocument","querySelector","styles","getComputedStyle","margin","parseFloat","height","Math","ceil","offsetHeight","iframeDocument","contentDocument","window","contentWindow","typeMap","html","languages","tag","undefined","js","css","getTypeFromLanguage","language","getTagFromType","isSingleTagType","Boolean","ExhibitionMonacoEditor","monaco","editor","monacoEditorOptions","alterDocument","location","trimDefaultValue","tagAttributes","monacoEditorCreator","attributeOptions","HTMLElement","monacoOptions","validateOptions","getMonacoInstance","editorCreator","createMonacoEditor","getPriority","getEditor","getLanguage","content","getTSValueAsJS","tagElement","createElement","innerHTML","appendChild","getDocumentAlterer","model","getModel","typescript","typescriptDefaults","setEagerModelSync","uri","scheme","toString","getWorker","attempts","getTypeScriptWorker","error","workerGetter","worker","getSemanticDiagnostics","err","test","outputFiles","getEmitOutput","text","lines","split","firstNonEmptyLine","line","trim","leadingSpaces","search","substring","join","dispose","editorOptions","createMonacoModel","create","uniqueId","random","createModel","Uri","exhibitionDefaultAttribute","ExhibitionUpdater","addClickListener","createMap","configuration","editors","updaters","Exhibition","addPreviewAlterer","updater","updatePreview","addEditor","removeEditor","hasEditor","getPreview","replacePreview","createMultiple","initOptions","fillCreateOptionsWithDefaults","validateInitOptions","exhibitions","exhibition","applyCreateOptions","ddm","createOptions","init","deferEditors","editorsArgs","previewArgs","getCustomizedMap"],"ignoreList":[],"sourceRoot":""}