{"version":3,"sources":["jsdelivr-header.js","/npm/postprocessing@6.23.0/build/postprocessing.esm.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACCA,IAAI,aAAe,CACjB,IAAK,EACL,MAAO,EACP,KAAM,EACN,MAAO,GAIL,WAAa,MACf,OAAA,GACA,UAKA,mBACA,6BACgB,4BACF,yBACD,+BACO,kBACpB,gBACA,8BACW,UACX,kDACqB,uBAChB,eAIL,cACA,cACA,gCACqB,uBAChB,eAGE,WAAY,eAAgB,YAAe,QAGpD,IAAI,eAAiB,ygBAGjB,gBAAkB,+FAGlB,0BAA4B,cAAc,eAC5C,WAAA,GACE,MAAM,CACJ,KAAM,4BACN,QAAS,CACP,cAAe,OAEjB,SAAU,CACR,iBAAkB,IAAI,QAAQ,MAC9B,iBAAkB,IAAI,QAAQ,MAC9B,aAAc,IAAI,QAAQ,KAC1B,UAAW,IAAI,QAAQ,GACvB,IAAK,IAAI,QAAQ,IAEnB,eAAgB,eAChB,aAAc,gBACd,SAAU,WACV,YAAY,EACZ,WAAW,EACX,WAAY,CACV,kBAAkB,KAGtB,KAAK,YAAa,CACpB,wBAIqB,8BAA+B,2BAA4B,SAAU,QAAS,YAAe,QAGpH,IAAI,gBAAkB,onCAGlB,cAAgB,cAAc,gBAChC,WAAA,CAAY,GAAO,EAAO,GAAa,GACrC,MAAM,CACJ,KAAM,gBACN,QAAS,CACP,KAAM,EAAO,IAAM,KAErB,SAAU,CACR,SAAU,IAAI,SAAS,MACvB,SAAU,IAAI,SAAS,MACvB,YAAa,IAAI,SAAS,MAC1B,UAAW,IAAI,SAAS,MACxB,UAAW,IAAI,SAAS,IAAI,SAC5B,MAAO,IAAI,SAAS,IAEtB,eAAgB,gBAChB,aAAc,gBACd,SAAU,YACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,EACd,IACF,KAAK,QAAQ,WAAa,KAE5B,KAAK,gBACP,CACA,cAAA,GACE,MACM,EAAW,IAAI,aAAa,KAC5B,EAAW,IAAI,aAAa,IAClC,IAAI,EAAM,EAAG,EAAM,EACnB,IAAK,IAAI,EAAI,EAAG,EAAI,KAAM,EAAG,CAC3B,MAAM,EALa,WAKL,EACR,EAAI,KAAK,KAAK,GAAK,KAAK,KAAK,IAC7B,EAAI,EAAI,KAAK,IAAI,GAAQ,EAAK,EAAI,KAAK,IAAI,GAC7C,EAAI,GAAM,GACZ,EAAS,KAAS,EAClB,EAAS,KAAS,IAElB,EAAS,KAAS,EAClB,EAAS,KAAS,EAEtB,CACA,MAAM,EAAW,GACX,EAAW,GACjB,IAAK,IAAI,EAAI,EAAG,EAAI,KAClB,EAAS,KAAK,IAAI,QAAQ,EAAS,KAAM,EAAS,KAAM,EAAS,KAAM,EAAS,OAElF,IAAK,IAAI,EAAI,EAAG,EAAI,IAClB,EAAS,KAAK,IAAI,QAAQ,EAAS,KAAM,EAAS,KAAM,EAAS,KAAM,EAAS,OAElF,KAAK,SAAS,SAAS,MAAQ,EAC/B,KAAK,SAAS,SAAS,MAAQ,CACjC,CACA,YAAA,CAAa,EAAG,GACd,KAAK,SAAS,UAAU,MAAM,IAAI,EAAG,EACvC,wBAIqB,YAAa,oCAAqC,2BAA4B,aAAgB,QAGrH,IAAI,gBAAkB,84BAGlB,0BAA4B,cAAc,gBAC5C,WAAA,CAAY,GACV,MAAM,CACJ,KAAM,4BACN,QAAS,CACP,cAAe,KAEjB,SAAU,CACR,YAAa,IAAI,SAAS,MAC1B,cAAe,IAAI,SAAS,GAC5B,YAAa,IAAI,SAAS,GAC1B,WAAY,IAAI,SAAS,IACzB,UAAW,IAAI,SAAS,MAE1B,eAAgB,gBAChB,aAAc,gBACd,SAAU,YACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,EAClB,KAAK,oBAAoB,EAC3B,CACA,gBAAI,GACF,OAAO,OAAO,KAAK,QAAQ,cAC7B,CACA,gBAAI,CAAa,GACf,KAAK,QAAQ,cAAgB,EAAM,QAAQ,GAC3C,KAAK,aAAc,CACrB,CACA,mBAAA,CAAoB,EAAS,MACZ,OAAX,IACF,KAAK,SAAS,WAAW,MAAQ,EAAO,KACxC,KAAK,SAAS,UAAU,MAAQ,EAAO,IACnC,aAAkB,kBACpB,KAAK,QAAQ,mBAAqB,WAE3B,KAAK,QAAQ,mBAEtB,KAAK,aAAc,EAEvB,wBAIqB,8BAA+B,2BAA4B,oBAAqB,aAAgB,QAGvH,IAAI,gBAAkB,6kHAGlB,gBAAkB,ggBAGlB,mBAAqB,cAAc,gBACrC,WAAA,CAAY,EAAY,IAAI,UAC1B,MAAM,CACJ,KAAM,qBACN,QAAS,CACP,oBAAqB,IACrB,iCAAkC,MAClC,eAAgB,OAElB,SAAU,CACR,YAAa,IAAI,SAAS,MAC1B,UAAW,IAAI,SAAS,IAE1B,eAAgB,gBAChB,aAAc,gBACd,SAAU,YACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,CACpB,CACA,gCAAA,CAAiC,GAC/B,KAAK,QAAQ,iCAAmC,EAAO,QAAQ,KAC/D,KAAK,aAAc,CACrB,CACA,yBAAA,CAA0B,GACxB,MAAM,EAAI,KAAK,IAAI,KAAK,IAAI,EAAW,KAAO,IAC9C,KAAK,QAAQ,eAAiB,EAAE,QAAQ,KACxC,KAAK,aAAc,CACrB,wBAIqB,8BAA+B,2BAA4B,oBAAqB,aAAgB,QAGvH,IAAI,gBAAkB,6cAGlB,gBAAkB,+aAGlB,oBAAsB,cAAc,gBACtC,WAAA,CAAY,EAAY,IAAI,UAC1B,MAAM,CACJ,KAAM,sBACN,SAAU,CACR,YAAa,IAAI,SAAS,MAC1B,UAAW,IAAI,SAAS,IAAI,UAC5B,cAAe,IAAI,SAAS,IAAI,UAChC,OAAQ,IAAI,SAAS,GACrB,MAAO,IAAI,SAAS,IAEtB,eAAgB,gBAChB,aAAc,gBACd,SAAU,YACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,EAClB,KAAK,aAAa,EAAU,EAAG,EAAU,GACzC,KAAK,WAAa,WAAW,KAC/B,CACA,SAAA,GACE,OAAO,cAAc,KAAK,WAC5B,CACA,YAAA,CAAa,EAAG,GACd,KAAK,SAAS,UAAU,MAAM,IAAI,EAAG,GACrC,KAAK,SAAS,cAAc,MAAM,IAAI,EAAG,GAAG,eAAe,GAC7D,GAEE,cAAgB,CAClB,IAAI,aAAa,CAAC,EAAG,IACrB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,IAC3B,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,IAC9B,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACpC,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,MAE3C,WAAa,CACf,WAAY,EACZ,MAAO,EACP,OAAQ,EACR,MAAO,EACP,WAAY,EACZ,KAAM,wBAIe,8BAA+B,2BAA4B,aAAgB,QAGlG,IAAI,gBAAkB,wRAGlB,aAAe,cAAc,gBAC/B,WAAA,GACE,MAAM,CACJ,KAAM,eACN,SAAU,CACR,YAAa,IAAI,SAAS,MAC1B,QAAS,IAAI,SAAS,IAExB,eAAgB,gBAChB,aAAc,gBACd,SAAU,YACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,CACpB,wBAIqB,iCAAkC,qCAAsC,2BAA4B,aAAgB,QAG3I,IAAI,iBAAmB,mxBAGnB,iBAAmB,gaAGnB,wBAA0B,cAAc,gBAC1C,WAAA,CAAY,EAAe,KAAM,GAC/B,MAAM,CACJ,KAAM,0BACN,SAAU,CACR,YAAa,IAAI,SAAS,GAC1B,WAAY,IAAI,SAAS,IACzB,UAAW,IAAI,SAAS,MAE1B,eAAgB,iBAChB,aAAc,iBACd,SAAU,YACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,EAClB,KAAK,oBAAoB,EAC3B,CACA,mBAAA,CAAoB,EAAS,MACZ,OAAX,IACF,KAAK,SAAS,WAAW,MAAQ,EAAO,KACxC,KAAK,SAAS,UAAU,MAAQ,EAAO,IACnC,aAAkB,mBACpB,KAAK,QAAQ,mBAAqB,WAE3B,KAAK,QAAQ,mBAG1B,wBAIqB,8BAA+B,2BAA4B,oBAAqB,aAAgB,QAGvH,IAAI,iBAAmB,olBAGnB,iBAAmB,mOAGnB,kBAAoB,cAAc,gBACpC,WAAA,GACE,MAAM,CACJ,KAAM,oBACN,QAAS,CACP,oBAAqB,IACrB,qBAAsB,IACtB,gBAAiB,KAEnB,SAAU,CACR,YAAa,IAAI,SAAS,MAC1B,eAAgB,IAAI,SAAS,IAAI,WAEnC,eAAgB,iBAChB,aAAc,iBACd,SAAU,YACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,EAClB,KAAK,KAAO,cAAc,IAC5B,CACA,oBAAA,GACE,OAAO,OAAO,KAAK,QAAQ,oBAC7B,CACA,oBAAA,CAAqB,GACnB,KAAK,QAAQ,oBAAsB,EAAM,QAAQ,GACjD,KAAK,aAAc,CACrB,CACA,qBAAA,GACE,OAAO,OAAO,KAAK,QAAQ,qBAC7B,CACA,qBAAA,CAAsB,GACpB,KAAK,QAAQ,qBAAuB,EAAM,QAAQ,GAClD,KAAK,aAAc,CACrB,CACA,OAAA,GACE,OAAO,KAAK,IACd,CACA,OAAA,CAAQ,GACN,KAAK,KAAO,EACZ,KAAK,QAAQ,gBAAkB,EAAM,QAAQ,GAC7C,KAAK,aAAc,CACrB,GAEE,cAAgB,CAClB,KAAM,EACN,OAAQ,wBAIa,8BAA+B,2BAA4B,oBAAqB,aAAgB,QAGvH,IAAI,iBAAmB,2lDAGnB,iBAAmB,6QAGnB,0BAA4B,cAAc,gBAC5C,WAAA,GACE,MAAM,CACJ,KAAM,4BACN,QAAS,CACP,cAAe,KAEjB,SAAU,CACR,YAAa,IAAI,SAAS,MAC1B,aAAc,IAAI,SAAS,MAC3B,UAAW,IAAI,SAAS,IAAI,WAE9B,eAAgB,iBAChB,aAAc,iBACd,SAAU,YACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,CACpB,CACA,gBAAI,GACF,OAAO,OAAO,KAAK,QAAQ,cAC7B,CACA,gBAAI,CAAa,GACf,KAAK,QAAQ,cAAgB,EAAM,QAAQ,GAC3C,KAAK,aAAc,CACrB,CACA,YAAA,CAAa,EAAG,GACd,KAAK,SAAS,UAAU,MAAM,IAAI,EAAG,EACvC,UAKA,YACA,WACA,aACA,kBACA,UACA,eACA,yBACc,aACd,gCACkB,4BACP,cACN,QAGP,IAAI,iBAAmB,g4BAGnB,kBAAoB,cAAc,iBACpC,WAAA,GACE,MAAM,CACJ,KAAM,oBACN,QAAS,CACP,cAAe,UACf,gBAAiB,IACjB,gBAAiB,IACjB,SAAU,KAEZ,SAAU,CACR,YAAa,IAAI,UAAU,MAC3B,aAAc,IAAI,UAAU,MAC5B,aAAc,IAAI,UAAU,MAC5B,MAAO,IAAI,UAAU,GACrB,MAAO,IAAI,UAAU,IAEvB,eAAgB,iBAChB,aAAc,gBACd,SAAU,aACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,EAClB,KAAK,UAAY,UACjB,KAAK,aAAa,UACpB,CACA,WAAI,GACF,YAAiC,IAA1B,KAAK,QAAQ,QACtB,CACA,WAAI,CAAQ,GACN,EACF,KAAK,QAAQ,SAAW,WAEjB,KAAK,QAAQ,SAEtB,KAAK,aAAc,CACrB,CACA,UAAA,GACE,OAAO,OAAO,KAAK,QAAQ,cAC7B,CACA,UAAA,CAAW,GACT,KAAK,QAAQ,cAAgB,EAAM,QAAQ,IAC3C,KAAK,aAAc,CACrB,CACA,YAAA,GACE,OAAO,KAAK,SACd,CACA,YAAA,CAAa,GACX,IAAI,EACJ,OAAQ,GACN,KAAK,WACH,EAAY,QACZ,MACF,KAAK,YACH,EAAY,OACZ,MACF,KAAK,WACH,EAAY,gCACZ,MACF,KAAK,cACH,EAAY,+BACZ,MACF,KAAK,UACH,EAAY,UACZ,MACF,KAAK,eACH,EAAY,WACZ,MACF,KAAK,kBACH,EAAY,WACZ,MAEF,QACE,EAAY,UAGhB,KAAK,UAAY,EACjB,KAAK,QAAQ,qBAAuB,EACpC,KAAK,aAAc,CACrB,wBAIqB,+BAAgC,4BAA6B,qBAAsB,aAAgB,QAC1H,IAAI,sBAAwB,cAAc,iBACxC,WAAA,CAAY,EAAY,IAAI,SAAY,EAAO,kBAAkB,OAC/D,MAAM,CACJ,KAAM,wBACN,QAAS,CACP,iCAAkC,MAClC,eAAgB,MAChB,gBAAiB,OACjB,iBAAkB,IAClB,sBAAuB,OACvB,kBAAmB,MACnB,qBAAsB,MACtB,cAAe,KAEjB,SAAU,CACR,YAAa,IAAI,UAAU,MAC3B,YAAa,IAAI,UAAU,MAC3B,kBAAmB,IAAI,UAAU,MACjC,UAAW,IAAI,UAAU,IAE3B,eAAgB,gBAChB,aAAc,gBACd,SAAU,aACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,EAClB,KAAK,qBAAqB,EAC5B,CACA,gBAAI,GACF,OAAO,OAAO,KAAK,QAAQ,cAC7B,CACA,gBAAI,CAAa,GACf,KAAK,QAAQ,cAAgB,EAAM,QAAQ,GAC3C,KAAK,aAAc,CACrB,CACA,oBAAA,CAAqB,GACnB,KAAK,QAAQ,oBAAsB,EAAK,QAAQ,GAChD,KAAK,aAAc,CACrB,CACA,gCAAA,CAAiC,GAC/B,KAAK,QAAQ,iCAAmC,EAAO,QAAQ,KAC/D,KAAK,aAAc,CACrB,CACA,yBAAA,CAA0B,GACxB,KAAK,QAAQ,eAAiB,EAAU,QAAQ,KAChD,KAAK,QAAQ,iBAA+B,GAAZ,GAAiB,QAAQ,KACzD,KAAK,aAAc,CACrB,CACA,kBAAA,CAAmB,GACjB,KAAK,QAAQ,iBAAmB,EAAK,QAAQ,GAC7C,KAAK,aAAc,CACrB,CACA,oBAAA,CAAqB,GACnB,KAAK,SAAS,kBAAkB,MAAQ,CAC1C,CACA,uBAAA,CAAwB,GACtB,KAAK,QAAQ,sBAAwB,EAAU,QAAQ,KACvD,KAAK,aAAc,CACrB,CACA,mBAAA,CAAoB,GAClB,KAAK,QAAQ,kBAAoB,EAAM,QAAQ,KAC/C,KAAK,aAAc,CACrB,CACA,sBAAA,CAAuB,GACrB,KAAK,QAAQ,qBAAuB,EAAS,QAAQ,KACrD,KAAK,aAAc,CACrB,GAEE,kBAAoB,CACtB,MAAO,EACP,KAAM,EACN,MAAO,GAEL,gBAAkB,CACpB,SAAU,EACV,MAAO,EACP,OAAQ,wBAIa,kCAAmC,qCAAsC,4BAA6B,qBAAsB,aAAgB,QAGnK,IAAI,iBAAmB,wkCAGnB,iBAAmB,qQAGnB,eAAiB,cAAc,iBACjC,WAAA,CAAY,EAAc,KAAM,EAAU,KAAM,EAAW,KAAM,EAAQ,GAAY,GACnF,MAAM,CACJ,KAAM,iBACN,QAAS,CACP,cAAe,IACf,cAAe,KAEjB,SAAU,CACR,YAAa,IAAI,UAAU,MAC3B,YAAa,IAAI,UAAU,MAC3B,WAAY,IAAI,UAAU,IAAI,UAC9B,UAAW,IAAI,UAAU,IAAI,UAC7B,WAAY,IAAI,UAAU,IAC1B,UAAW,IAAI,UAAU,KACzB,OAAQ,IAAI,UAAU,GACtB,KAAM,IAAI,UAAU,IAEtB,SAAU,aACV,YAAY,EACZ,WAAW,EACX,cAEF,KAAK,YAAa,EACE,OAAhB,GACF,KAAK,eAAe,GAEN,OAAZ,GACF,KAAK,WAAW,GAED,OAAb,GACF,KAAK,YAAY,GAEnB,KAAK,oBAAoB,EAC3B,CACA,gBAAI,GACF,OAAO,OAAO,KAAK,QAAQ,cAC7B,CACA,gBAAI,CAAa,GACf,KAAK,QAAQ,cAAgB,EAAM,QAAQ,GAC3C,KAAK,aAAc,CACrB,CACA,cAAA,CAAe,GAIb,OAHA,KAAK,eAAiB,iBAAiB,QAAQ,QAAQ,cAAe,EAAY,IAAI,QAAQ,gBAAgB,QAAQ,QAAQ,iBAAkB,EAAY,IAAI,QAAQ,mBAAmB,QAAQ,QAAQ,oBAAqB,EAAY,IAAI,QAAQ,sBACxP,KAAK,aAAe,iBAAiB,QAAQ,QAAQ,YAAa,EAAY,IAAI,QAAQ,cAAc,QAAQ,QAAQ,oBAAqB,EAAY,IAAI,QAAQ,sBACrK,KAAK,aAAc,EACZ,IACT,CACA,UAAA,CAAW,GACT,IAAK,MAAM,KAAS,EAAQ,UAC1B,KAAK,QAAQ,EAAM,IAAM,EAAM,GAGjC,OADA,KAAK,aAAc,EACZ,IACT,CACA,WAAA,CAAY,GACV,IAAK,MAAM,KAAS,EAAS,UAC3B,KAAK,SAAS,EAAM,IAAM,EAAM,GAElC,OAAO,IACT,CACA,mBAAA,CAAoB,EAAS,MACZ,OAAX,IACF,KAAK,SAAS,WAAW,MAAQ,EAAO,KACxC,KAAK,SAAS,UAAU,MAAQ,EAAO,IACnC,aAAkB,mBACpB,KAAK,QAAQ,mBAAqB,WAE3B,KAAK,QAAQ,mBAEtB,KAAK,aAAc,EAEvB,CACA,OAAA,CAAQ,EAAO,GACb,MAAM,EAAI,KAAK,IAAI,EAAO,GACpB,EAAI,KAAK,IAAI,EAAQ,GAC3B,KAAK,SAAS,WAAW,MAAM,IAAI,EAAG,GACtC,KAAK,SAAS,UAAU,MAAM,IAAI,EAAI,EAAG,EAAI,GAC7C,KAAK,SAAS,OAAO,MAAQ,EAAI,CACnC,GAEE,QAAU,CACZ,cAAe,gBACf,iBAAkB,mBAClB,oBAAqB,sBACrB,YAAa,cACb,oBAAqB,4CAIA,+BAAgC,4BAA6B,cAAiB,QAGrG,IAAI,iBAAmB,2sBAGnB,gBAAkB,cAAc,iBAClC,WAAA,CAAY,GACV,MAAM,CACJ,KAAM,kBACN,QAAS,CACP,YAAa,KACb,cAAe,QAEjB,SAAU,CACR,YAAa,IAAI,UAAU,MAC3B,cAAe,IAAI,UAAU,GAC7B,QAAS,IAAI,UAAU,GACvB,MAAO,IAAI,UAAU,GACrB,OAAQ,IAAI,UAAU,GACtB,SAAU,IAAI,UAAU,GACxB,SAAU,IAAI,UAAU,IAE1B,eAAgB,iBAChB,aAAc,gBACd,SAAU,aACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,CACpB,CACA,WAAI,GACF,OAAO,OAAO,KAAK,QAAQ,YAC7B,CACA,WAAI,CAAQ,GACV,MAAM,EAAI,KAAK,MAAM,GACrB,KAAK,QAAQ,YAAc,EAAE,QAAQ,GACrC,KAAK,QAAQ,cAAgB,EAAE,QAAQ,GACvC,KAAK,aAAc,CACrB,wBAIqB,+BAAgC,4BAA6B,qBAAsB,aAAgB,QAG1H,IAAI,iBAAmB,ynBAGnB,kBAAoB,cAAc,iBACpC,WAAA,CAAY,GAAc,EAAO,EAAiB,MAChD,MAAM,EAA8B,OAAnB,EACjB,MAAM,CACJ,KAAM,oBACN,SAAU,CACR,YAAa,IAAI,UAAU,MAC3B,UAAW,IAAI,UAAU,GACzB,UAAW,IAAI,UAAU,GACzB,MAAO,IAAI,UAAU,EAAW,EAAiB,IAAI,WAEvD,eAAgB,iBAChB,aAAc,gBACd,SAAU,aACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,EAClB,KAAK,YAAc,EACnB,KAAK,cAAe,EACpB,KAAK,SAAW,CAClB,CACA,aAAI,GACF,OAAO,KAAK,SAAS,UAAU,KACjC,CACA,aAAI,CAAU,GACZ,KAAK,SAAS,UAAU,MAAQ,CAClC,CACA,aAAI,GACF,OAAO,KAAK,SAAS,UAAU,KACjC,CACA,aAAI,CAAU,GACZ,KAAK,SAAS,UAAU,MAAQ,CAClC,CACA,gBAAI,GACF,YAAkC,IAA3B,KAAK,QAAQ,SACtB,CACA,gBAAI,CAAa,GACX,EACF,KAAK,QAAQ,UAAY,WAElB,KAAK,QAAQ,UAEtB,KAAK,aAAc,CACrB,CACA,eAAI,GACF,YAA8B,IAAvB,KAAK,QAAQ,KACtB,CACA,eAAI,CAAY,GACV,EACF,KAAK,QAAQ,MAAQ,WAEd,KAAK,QAAQ,MAEtB,KAAK,aAAc,CACrB,CACA,qBAAA,CAAsB,GACpB,KAAK,YAAc,CACrB,CACA,YAAI,GACF,YAA8B,IAAvB,KAAK,QAAQ,KACtB,CACA,YAAI,CAAS,GACP,EACF,KAAK,QAAQ,MAAQ,WAEd,KAAK,QAAQ,MAEtB,KAAK,aAAc,CACrB,CACA,kBAAI,GACF,OAAO,KAAK,QACd,CACA,kBAAI,CAAe,GACjB,KAAK,SAAW,CAClB,CACA,wBAAA,CAAyB,GACvB,KAAK,SAAW,CAClB,wBAIqB,+BAAgC,4BAA6B,UAAW,qBAAwB,QAGvH,IAAI,iBAAmB,86BAGnB,aAAe,cAAc,iBAC/B,WAAA,CAAY,EAAc,MACxB,MAAM,CACJ,KAAM,eACN,SAAU,CACR,YAAa,IAAI,UAAU,GAC3B,YAAa,IAAI,UAAU,MAC3B,SAAU,IAAI,UAAU,IAE1B,eAAgB,iBAChB,aAAc,gBACd,SAAU,aACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,EAClB,KAAK,aAAe,aAAa,IACjC,KAAK,aAAe,aAAa,OACnC,CACA,eAAI,CAAY,GACd,KAAK,SAAS,YAAY,MAAQ,SAC3B,KAAK,QAAQ,oBAChB,EAAM,OAAS,mBACjB,KAAK,QAAQ,oBAAsB,KAErC,KAAK,aAAc,CACrB,CACA,gBAAI,CAAa,GACf,KAAK,QAAQ,cAAgB,EAAM,QAAQ,GAC3C,KAAK,aAAc,CACrB,CACA,gBAAI,CAAa,GACf,KAAK,QAAQ,cAAgB,EAAM,QAAQ,GAC3C,KAAK,aAAc,CACrB,CACA,YAAI,GACF,YAAiC,IAA1B,KAAK,QAAQ,QACtB,CACA,YAAI,CAAS,GACP,KAAK,WAAa,SACb,KAAK,QAAQ,SACX,IACT,KAAK,QAAQ,SAAW,KAE1B,KAAK,aAAc,CACrB,CACA,YAAI,GACF,OAAO,KAAK,SAAS,SAAS,KAChC,CACA,YAAI,CAAS,GACX,KAAK,SAAS,SAAS,MAAQ,CACjC,GAEE,aAAe,CACjB,QAAS,EACT,SAAU,EACV,uBAAwB,wBAIH,+BAAgC,4BAA6B,qBAAsB,aAAgB,QAG1H,IAAI,iBAAmB,8fAGnB,iBAAmB,qTAGnB,gBAAkB,cAAc,iBAClC,WAAA,CAAY,EAAY,IAAI,UAC1B,MAAM,CACJ,KAAM,kBACN,SAAU,CACR,YAAa,IAAI,UAAU,MAC3B,UAAW,IAAI,UAAU,IAAI,WAE/B,eAAgB,iBAChB,aAAc,iBACd,SAAU,aACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,EAClB,KAAK,aAAa,EAAU,EAAG,EAAU,GACzC,KAAK,SAAS,YAAc,KAAK,SAAS,WAC5C,CACA,YAAA,CAAa,EAAG,GACd,KAAK,SAAS,UAAU,MAAM,IAAI,EAAG,EACvC,GAEE,qBAAuB,qCAGJ,+BAAgC,4BAA6B,qBAAsB,cAAiB,QAG3H,IAAI,iBAAmB,glPAGnB,iBAAmB,qcAGnB,oBAAsB,cAAc,iBACtC,WAAA,CAAY,EAAY,IAAI,UAAa,EAAa,IAAI,WACxD,MAAM,CACJ,KAAM,sBACN,QAAS,CACP,qBAAsB,KACtB,uBAAwB,OACxB,0BAA2B,IAC3B,4BAA6B,MAC7B,gBAAiB,KACjB,qBAAsB,OACtB,qBAAsB,OACtB,0BAA2B,OAC3B,mBAAoB,6BACpB,oBAAqB,cACrB,eAAgB,mBAChB,sBAAuB,oBAEzB,SAAU,CACR,YAAa,IAAI,UAAU,MAC3B,YAAa,IAAI,UAAU,MAC3B,cAAe,IAAI,UAAU,MAC7B,UAAW,IAAI,UAAU,GACzB,WAAY,IAAI,UAAU,IAE5B,eAAgB,iBAChB,aAAc,iBACd,SAAU,aACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,CACpB,CACA,wBAAA,CAAyB,GACvB,MAAM,EAAI,KAAK,IAAI,KAAK,IAAI,EAAO,GAAI,KACvC,KAAK,QAAQ,qBAAuB,EAAE,QAAQ,KAC9C,KAAK,QAAQ,uBAAyB,EAAE,QAAQ,KAChD,KAAK,aAAc,CACrB,CACA,sBAAA,CAAuB,GACrB,MAAM,EAAI,KAAK,IAAI,KAAK,IAAI,EAAO,GAAI,IACvC,KAAK,QAAQ,0BAA4B,EAAE,QAAQ,KACnD,KAAK,QAAQ,4BAA8B,EAAE,QAAQ,KACrD,KAAK,aAAc,CACrB,CACA,iBAAA,CAAkB,GAChB,MAAM,EAAI,KAAK,IAAI,KAAK,IAAI,EAAU,GAAI,KAC1C,KAAK,QAAQ,gBAAkB,EAAE,QAAQ,KACzC,KAAK,QAAQ,sBAAwB,EAAI,KAAK,QAAQ,KACtD,KAAK,aAAc,CACrB,CACA,qBAAI,GACF,YAA+C,IAAxC,KAAK,QAAQ,sBACtB,CACA,qBAAI,CAAkB,GAChB,SACK,KAAK,QAAQ,uBAEpB,KAAK,QAAQ,uBAAyB,IAExC,KAAK,aAAc,CACrB,CACA,kBAAI,GACF,YAAiD,IAA1C,KAAK,QAAQ,wBACtB,CACA,kBAAI,CAAe,GACb,SACK,KAAK,QAAQ,yBAEpB,KAAK,QAAQ,yBAA2B,IAE1C,KAAK,aAAc,CACrB,UAKA,sBACc,kCACO,qCACH,4BACP,qBACA,cACN,QAGP,IAAI,iBAAmB,y3GAGnB,iBAAmB,6JAGnB,aAAe,cAAc,iBAC/B,WAAA,CAAY,GACV,MAAM,CACJ,KAAM,eACN,QAAS,CACP,YAAa,IACb,cAAe,MACf,aAAc,MACd,OAAQ,MACR,UAAW,MACX,iBAAkB,IAClB,cAAe,KAEjB,SAAU,CACR,aAAc,IAAI,UAAU,MAC5B,kBAAmB,IAAI,UAAU,MACjC,aAAc,IAAI,UAAU,MAC5B,wBAAyB,IAAI,UAAU,IAAI,SAC3C,iBAAkB,IAAI,UAAU,IAAI,SACpC,UAAW,IAAI,UAAU,IAAI,WAC7B,WAAY,IAAI,UAAU,GAC1B,UAAW,IAAI,UAAU,GACzB,eAAgB,IAAI,UAAU,IAAI,WAClC,gBAAiB,IAAI,UAAU,IAAI,WACnC,WAAY,IAAI,UAAU,IAAI,WAC9B,eAAgB,IAAI,UAAU,KAC9B,UAAW,IAAI,UAAU,GACzB,KAAM,IAAI,UAAU,KACpB,KAAM,IAAI,UAAU,IAEtB,eAAgB,iBAChB,aAAc,iBACd,SAAU,aACV,YAAY,EACZ,WAAW,IAEb,KAAK,YAAa,EAClB,KAAK,oBAAoB,EAC3B,CACA,gBAAI,GACF,OAAO,OAAO,KAAK,QAAQ,cAC7B,CACA,gBAAI,CAAa,GACf,KAAK,QAAQ,cAAgB,EAAM,QAAQ,GAC3C,KAAK,aAAc,CACrB,CACA,YAAA,CAAa,EAAG,GACd,KAAK,SAAS,UAAU,MAAM,IAAI,EAAG,EACvC,CACA,mBAAA,CAAoB,EAAS,MAC3B,GAAe,OAAX,EAAiB,CACnB,MAAM,EAAW,KAAK,SACtB,EAAS,WAAW,MAAQ,EAAO,KACnC,EAAS,UAAU,MAAQ,EAAO,IAC9B,aAAkB,mBACpB,KAAK,QAAQ,mBAAqB,WAE3B,KAAK,QAAQ,mBAEtB,KAAK,aAAc,CACrB,CACF,UAKA,gBACA,eACA,OACA,KACA,UACK,QACP,IAAI,YAAc,IAAI,OAClB,SAAW,KACf,SAAS,wBACP,GAAiB,OAAb,SAAmB,CACrB,MAAM,EAAW,IAAI,aAAa,EAAE,GAAI,EAAG,EAAG,GAAI,EAAG,GAAI,EAAG,EAAG,IACzD,EAAM,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,SAEf,KAD9B,SAAW,IAAI,gBACF,cACX,SAAS,aAAa,WAAY,IAAI,gBAAgB,EAAU,IAChE,SAAS,aAAa,KAAM,IAAI,gBAAgB,EAAK,MAErD,SAAS,aAAa,WAAY,IAAI,gBAAgB,EAAU,IAChE,SAAS,aAAa,KAAM,IAAI,gBAAgB,EAAK,IAEzD,CACA,OAAO,QACT,CACA,IAAI,KAAO,MACT,WAAA,CAAY,EAAO,OAAQ,EAAQ,IAAI,MAAS,EAAS,aACvD,KAAK,KAAO,EACZ,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,OAAS,KACd,KAAK,KAAM,EACX,KAAK,WAAY,EACjB,KAAK,mBAAoB,EACzB,KAAK,SAAU,CACjB,CACA,kBAAI,GACF,OAAQ,KAAK,GACf,CACA,kBAAI,CAAe,GACjB,GAAI,KAAK,MAAQ,EAAO,CACtB,MAAM,EAAW,KAAK,wBACL,OAAb,IACF,EAAS,aAAc,GAEzB,KAAK,KAAO,CACd,CACF,CACA,SAAA,GACE,OAAO,KAAK,OACd,CACA,UAAA,CAAW,GACT,KAAK,QAAU,CACjB,CACA,qBAAA,GACE,OAAuB,OAAhB,KAAK,OAAkB,KAAK,OAAO,SAAW,IACvD,CACA,qBAAA,CAAsB,GACpB,IAAI,EAAS,KAAK,OACH,OAAX,EACF,EAAO,SAAW,GAElB,EAAS,IAAI,KAAK,wBAAyB,GAC3C,EAAO,eAAgB,EACJ,OAAf,KAAK,QACP,KAAK,MAAQ,IAAI,OAEnB,KAAK,MAAM,IAAI,GACf,KAAK,OAAS,EAElB,CACA,eAAA,GACE,OAAO,IACT,CACA,eAAA,CAAgB,EAAc,EAAe,GAC7C,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,MAAM,IAAI,MAAM,iCAClB,CACA,OAAA,CAAQ,EAAO,GACf,CACA,UAAA,CAAW,EAAU,EAAO,GAC5B,CACA,OAAA,GACE,MAAM,EAAW,KAAK,wBACL,OAAb,GACF,EAAS,UAEX,IAAK,MAAM,KAAO,OAAO,KAAK,MAAO,CACnC,MAAM,EAAW,KAAK,GACtB,GAAiB,OAAb,GAAiD,mBAArB,EAAS,QAAwB,CAC/D,GAAI,aAAoB,MACtB,SAEF,KAAK,GAAK,SACZ,CACF,CACF,UAKA,aACA,8BACoB,kBACpB,sBACK,QACP,IAAI,SAAW,cAAc,KAC3B,WAAA,CAAY,EAAc,GAAS,GACjC,MAAM,YACN,KAAK,sBAAsB,IAAI,cAC/B,KAAK,WAAY,EACjB,KAAK,aAAe,OACC,IAAjB,IACF,KAAK,aAAe,IAAI,kBAAkB,EAAG,EAAG,CAC9C,UAAW,aACX,UAAW,aACX,eAAe,EACf,aAAa,IAEf,KAAK,aAAa,QAAQ,KAAO,mBAEnC,KAAK,OAAS,CAChB,CACA,WAAI,GACF,OAAO,KAAK,aAAa,OAC3B,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACpC,KAAK,wBACb,SAAS,YAAY,MAAQ,EAAY,QAClD,EAAS,gBAAgB,KAAK,eAAiB,KAAO,KAAK,cAC3D,EAAS,OAAO,KAAK,MAAO,KAAK,OACnC,CACA,OAAA,CAAQ,EAAO,GACb,GAAI,KAAK,OAAQ,CACf,MAAM,EAAI,KAAK,IAAI,EAAO,GACpB,EAAI,KAAK,IAAI,EAAQ,GAC3B,KAAK,aAAa,QAAQ,EAAG,EAC/B,CACF,CACA,UAAA,CAAW,EAAU,EAAO,GAI1B,GAHK,GAAS,IAAoB,oBAChC,KAAK,aAAa,QAAQ,OAAS,gBAEb,IAApB,IACF,KAAK,aAAa,QAAQ,KAAO,EAC7B,IAAoB,mBAAmB,CACxB,KAAK,wBACb,QAAQ,2BAA6B,GAChD,CAEJ,GAIE,sBAAwB,cAAc,KACxC,WAAA,CAAY,GAAiB,aAC3B,EAAe,IAAI,eACnB,EAAiB,GACf,CAAC,GACH,MAAM,yBACN,KAAK,sBAAsB,IAAI,2BAC/B,KAAK,WAAY,EACjB,KAAK,qBAAuB,IAAI,mBAAmB,EAAG,EAAG,CACvD,UAAW,cACX,UAAW,cACX,KAAM,cACN,eAAe,EACf,aAAa,EACb,OAAQ,aAEV,KAAK,qBAAqB,QAAQ,KAAO,qBACzC,MAAM,EAAW,KAAK,wBAAwB,SAC9C,EAAS,iBAAiB,MAAQ,KAAK,qBAAqB,QAC5D,EAAS,iBAAiB,MAAQ,EAClC,EAAS,aAAa,MAAQ,EAC9B,KAAK,oBAAsB,KAAK,qBAAqB,QACrD,KAAK,oBAAoB,QAAQ,KAAO,oBACxC,KAAK,SAAW,IAAI,SAAS,KAAK,sBAAsB,GACxD,KAAK,eAAiB,CACxB,CACA,WAAI,GACF,OAAO,KAAK,oBAAoB,OAClC,CACA,eAAI,CAAY,GACd,MAAM,EAAW,KAAK,wBACtB,EAAS,QAAQ,cAAgB,EAAM,QAAQ,GAC/C,EAAS,aAAc,CACzB,CACA,kBAAI,GACF,OAAO,KAAK,wBAAwB,SAAS,IAAI,KACnD,CACA,kBAAI,CAAe,GACjB,KAAK,wBAAwB,SAAS,IAAI,MAAQ,CACpD,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,KAAK,wBAAwB,SAAS,UAAU,MAAQ,EACxD,EAAS,gBAAgB,KAAK,eAAiB,KAAO,KAAK,qBAC3D,EAAS,OAAO,KAAK,MAAO,KAAK,QACjC,KAAK,SAAS,OAAO,EAAU,KAAK,oBACtC,0BAKgB,2BACH,+BACO,uCACC,uBAChB,0BAGa,cAAiB,QACrC,IAAI,WAAa,EACb,QAAU,MACZ,WAAA,CAAY,EAAW,EAAQ,UAAW,EAAS,UAAW,EAAQ,GACpE,KAAK,UAAY,EACjB,KAAK,KAAO,IAAI,UAAU,EAAG,GAC7B,KAAK,OAAS,IAAI,UAAU,EAAO,GACnC,KAAK,EAAI,CACX,CACA,SAAI,GACF,OAAO,KAAK,CACd,CACA,SAAI,CAAM,GACR,KAAK,EAAI,EACT,KAAK,OAAO,EAAI,UAChB,KAAK,OAAO,EAAI,UAChB,KAAK,UAAU,QAAQ,KAAK,KAAK,EAAG,KAAK,KAAK,EAChD,CACA,SAAI,GACF,MAAM,EAAO,KAAK,KACZ,EAAS,KAAK,OACpB,IAAI,EAQJ,OANE,EADE,EAAO,IAAM,UACN,EAAO,EACP,EAAO,IAAM,UACb,KAAK,MAAM,EAAO,GAAK,EAAK,EAAI,EAAK,IAErC,KAAK,MAAM,EAAK,EAAI,KAAK,GAE7B,CACT,CACA,SAAI,CAAM,GACR,KAAK,OAAO,EAAI,EAChB,KAAK,UAAU,QAAQ,KAAK,KAAK,EAAG,KAAK,KAAK,EAChD,CACA,UAAI,GACF,MAAM,EAAO,KAAK,KACZ,EAAS,KAAK,OACpB,IAAI,EAQJ,OANE,EADE,EAAO,IAAM,UACN,EAAO,EACP,EAAO,IAAM,UACb,KAAK,MAAM,EAAO,GAAK,EAAK,EAAI,EAAK,IAErC,KAAK,MAAM,EAAK,EAAI,KAAK,GAE7B,CACT,CACA,UAAI,CAAO,GACT,KAAK,OAAO,EAAI,EAChB,KAAK,UAAU,QAAQ,KAAK,KAAK,EAAG,KAAK,KAAK,EAChD,CACA,oBAAW,GACT,OAAO,SACT,GAIE,SAAW,cAAc,KAC3B,WAAA,EAAY,gBACV,EAAkB,GAAG,MACrB,EAAQ,QAAQ,UAAS,OACzB,EAAS,QAAQ,UAAS,WAC1B,EAAa,WAAW,OACtB,CAAC,GACH,MAAM,YACN,KAAK,cAAgB,IAAI,mBAAmB,EAAG,EAAG,CAChD,UAAW,cACX,UAAW,cACX,eAAe,EACf,aAAa,IAEf,KAAK,cAAc,QAAQ,KAAO,gBAClC,KAAK,cAAgB,KAAK,cAAc,QACxC,KAAK,cAAc,QAAQ,KAAO,gBAClC,KAAK,WAAa,IAAI,QAAQ,KAAM,EAAO,EAAQ,GACnD,KAAK,oBAAsB,IAAI,oBAC/B,KAAK,4BAA8B,IAAI,oBACvC,KAAK,4BAA4B,WAAY,EAC7C,KAAK,WAAY,EACjB,KAAK,WAAa,CACpB,CACA,SAAI,GACF,OAAO,KAAK,WAAW,KACzB,CACA,SAAI,CAAM,GACR,KAAK,WAAW,MAAQ,CAC1B,CACA,UAAI,GACF,OAAO,KAAK,WAAW,MACzB,CACA,UAAI,CAAO,GACT,KAAK,WAAW,OAAS,CAC3B,CACA,SAAI,GACF,OAAO,KAAK,oBAAoB,SAAS,MAAM,KACjD,CACA,SAAI,CAAM,GACR,KAAK,oBAAoB,SAAS,MAAM,MAAQ,EAChD,KAAK,4BAA4B,SAAS,MAAM,MAAQ,CAC1D,CACA,cAAI,GACF,OAAO,KAAK,oBAAoB,UAClC,CACA,cAAI,CAAW,GACb,KAAK,oBAAoB,WAAa,EACtC,KAAK,4BAA4B,WAAa,CAChD,CACA,kBAAA,GACE,OAAO,KAAK,WAAW,KACzB,CACA,kBAAA,CAAmB,GACjB,KAAK,WAAW,MAAQ,CAC1B,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,MAAM,EAAQ,KAAK,MACb,EAAS,KAAK,OACd,EAAgB,KAAK,cACrB,EAAgB,KAAK,cAC3B,IAAI,EAAW,KAAK,oBAChB,EAAW,EAAS,SACxB,MAAM,EAAS,EAAS,YACxB,IACI,EACA,EAAG,EAFH,EAAS,EAIb,IADA,KAAK,sBAAsB,GACtB,EAAI,EAAG,EAAI,EAAO,OAAS,EAAG,EAAI,IAAK,EAC1C,EAAc,EAAJ,EAA+B,EAAhB,EACzB,EAAS,OAAO,MAAQ,EAAO,GAC/B,EAAS,YAAY,MAAQ,EAAO,QACpC,EAAS,gBAAgB,GACzB,EAAS,OAAO,EAAO,GACvB,EAAS,EAEP,KAAK,YACP,EAAW,KAAK,4BAChB,EAAW,EAAS,SACpB,KAAK,sBAAsB,IAE7B,EAAS,OAAO,MAAQ,EAAO,GAC/B,EAAS,YAAY,MAAQ,EAAO,QACpC,EAAS,gBAAgB,KAAK,eAAiB,KAAO,GACtD,EAAS,OAAO,EAAO,EACzB,CACA,OAAA,CAAQ,EAAO,GACb,MAAM,EAAa,KAAK,WACxB,EAAW,KAAK,IAAI,EAAO,GAC3B,MAAM,EAAI,EAAW,MACf,EAAI,EAAW,OACrB,KAAK,cAAc,QAAQ,EAAG,GAC9B,KAAK,cAAc,QAAQ,EAAG,GAC9B,KAAK,oBAAoB,aAAa,EAAI,EAAG,EAAI,GACjD,KAAK,4BAA4B,aAAa,EAAI,EAAG,EAAI,EAC3D,CACA,UAAA,CAAW,EAAU,EAAO,GAK1B,GAJK,GAAS,IAAoB,oBAChC,KAAK,cAAc,QAAQ,OAAS,WACpC,KAAK,cAAc,QAAQ,OAAS,iBAEd,IAApB,IACF,KAAK,cAAc,QAAQ,KAAO,EAClC,KAAK,cAAc,QAAQ,KAAO,EAC9B,IAAoB,mBAAmB,CACzC,MAAM,EAAK,KAAK,oBACV,EAAK,KAAK,4BAChB,EAAG,QAAQ,2BAA6B,IACxC,EAAG,QAAQ,2BAA6B,GAC1C,CAEJ,CACA,oBAAW,GACT,OAAO,QAAQ,SACjB,GAIE,cAAgB,cAAc,KAChC,WAAA,GACE,MAAM,gBAAiB,KAAM,MAC7B,KAAK,WAAY,CACnB,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,MAAM,EAAU,EAAS,MAAM,QAAQ,QACvC,EAAQ,WAAU,GAClB,EAAQ,SAAQ,EAClB,UAIO,UAAa,QACtB,IAAI,MAAQ,IAAI,MACZ,UAAY,cAAc,KAC5B,WAAA,CAAY,GAAS,EAAM,GAAQ,EAAM,GAAU,GACjD,MAAM,YAAa,KAAM,MACzB,KAAK,WAAY,EACjB,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,QAAU,EACf,KAAK,mBAAqB,KAC1B,KAAK,oBAAsB,CAC7B,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,MAAM,EAAqB,KAAK,mBAC1B,EAAqB,KAAK,mBAC1B,EAAa,EAAS,gBACtB,EAA+C,OAAvB,EACxB,EAAwB,GAAsB,EAChD,GACF,MAAM,KAAK,EAAS,cAAc,QAClC,EAAS,cAAc,EAAoB,EAAwB,EAAqB,IAC/E,GACT,EAAS,cAAc,GAEzB,EAAS,gBAAgB,KAAK,eAAiB,KAAO,GACtD,EAAS,MAAM,KAAK,MAAO,KAAK,MAAO,KAAK,SACxC,EACF,EAAS,cAAc,MAAO,GACrB,GACT,EAAS,cAAc,EAE3B,mBAKS,OACT,mCACiB,eACjB,sCACqB,uBAChB,eAGE,SAAU,WAAY,cAAiB,QAChD,IAAI,mBAAoB,EACpB,wBAA0B,MAC5B,WAAA,CAAY,EAAW,MACrB,KAAK,kBAAoB,IAAI,IAC7B,KAAK,SAAW,KAChB,KAAK,UAAY,KACjB,KAAK,kBAAoB,KACzB,KAAK,oBAAsB,KAC3B,KAAK,oBAAsB,KAC3B,KAAK,4BAA8B,KACnC,KAAK,8BAAgC,KACrC,KAAK,YAAY,GACjB,KAAK,UAAY,EACjB,KAAK,gBAAmB,IACtB,GAAI,EAAK,OAAQ,CACf,IAAI,EACJ,GAAI,EAAK,SAAS,YAChB,OAAQ,EAAK,SAAS,MACpB,KAAK,WACH,EAAY,KAAK,8BACjB,MACF,KAAK,SACH,EAAY,KAAK,4BACjB,MACF,QACE,EAAY,KAAK,yBAIrB,OAAQ,EAAK,SAAS,MACpB,KAAK,WACH,EAAY,KAAK,oBACjB,MACF,KAAK,SACH,EAAY,KAAK,kBACjB,MACF,QACE,EAAY,KAAK,UAIvB,KAAK,kBAAkB,IAAI,EAAM,EAAK,UAClC,EAAK,cACP,EAAK,SAAW,EAAU,GACjB,EAAK,gBACd,EAAK,SAAW,EAAU,GAE1B,EAAK,SAAW,EAAU,KAE1B,KAAK,SACT,EAEJ,CACA,WAAA,CAAY,GAGV,GAFA,KAAK,mBACL,KAAK,SAAW,EACC,OAAb,EAAmB,CACrB,MAAM,EAAY,KAAK,UAAY,CACjC,EAAS,QACT,EAAS,QACT,EAAS,SAEX,IAAK,MAAM,KAAM,EACf,EAAG,SAAW,OAAO,OAAO,CAAC,EAAG,EAAS,UACzC,EAAG,KAAO,UAEZ,EAAU,GAAG,UAAW,EACxB,KAAK,kBAAoB,EAAU,KAAK,IACtC,MAAM,EAAK,EAAG,QAGd,OAFA,EAAG,SAAW,OAAO,OAAO,CAAC,EAAG,EAAS,UACzC,EAAG,KAAO,SACH,CAAE,IAEX,KAAK,oBAAsB,EAAU,KAAK,IACxC,MAAM,EAAK,EAAG,QAGd,OAFA,EAAG,SAAW,OAAO,OAAO,CAAC,EAAG,EAAS,UACzC,EAAG,KAAO,WACH,CAAE,IAEX,KAAK,oBAAsB,EAAU,KAAK,IACxC,MAAM,EAAK,EAAG,QAGd,OAFA,EAAG,SAAW,OAAO,OAAO,CAAC,EAAG,EAAS,UACzC,EAAG,aAAc,EACV,CAAE,IAEX,KAAK,4BAA8B,EAAU,KAAK,IAChD,MAAM,EAAK,EAAG,QAId,OAHA,EAAG,SAAW,OAAO,OAAO,CAAC,EAAG,EAAS,UACzC,EAAG,aAAc,EACjB,EAAG,KAAO,SACH,CAAE,IAEX,KAAK,8BAAgC,EAAU,KAAK,IAClD,MAAM,EAAK,EAAG,QAId,OAHA,EAAG,SAAW,OAAO,OAAO,CAAC,EAAG,EAAS,UACzC,EAAG,aAAc,EACjB,EAAG,KAAO,WACH,CAAE,GAEb,CACF,CACA,MAAA,CAAO,EAAU,EAAO,GACtB,MAAM,EAAmB,EAAS,UAAU,QAE5C,GADA,EAAS,UAAU,SAAU,EACzB,kBAAmB,CACrB,MAAM,EAAoB,KAAK,kBAC/B,KAAK,UAAY,EACjB,EAAM,SAAS,KAAK,iBACpB,EAAS,OAAO,EAAO,GACvB,IAAK,MAAM,KAAS,EAClB,EAAM,GAAG,SAAW,EAAM,GAExB,KAAK,YAAc,EAAkB,MACvC,EAAkB,OAEtB,KAAO,CACL,MAAM,EAAmB,EAAM,iBAC/B,EAAM,iBAAmB,KAAK,SAC9B,EAAS,OAAO,EAAO,GACvB,EAAM,iBAAmB,CAC3B,CACA,EAAS,UAAU,QAAU,CAC/B,CACA,gBAAA,GACE,GAAsB,OAAlB,KAAK,SAAmB,CAC1B,MAAM,EAAY,KAAK,UAAU,OAAO,KAAK,mBAAmB,OAAO,KAAK,qBAAqB,OAAO,KAAK,qBAAqB,OAAO,KAAK,6BAA6B,OAAO,KAAK,+BACvL,IAAK,MAAM,KAAM,EACf,EAAG,SAEP,CACF,CACA,OAAA,GACE,KAAK,kBAAkB,QACvB,KAAK,kBACP,CACA,4BAAW,GACT,OAAO,iBACT,CACA,4BAAW,CAAkB,GAC3B,kBAAoB,CACtB,GAIE,WAAa,cAAc,KAC7B,WAAA,CAAY,EAAO,EAAQ,EAAmB,MAC5C,MAAM,aAAc,EAAO,GAC3B,KAAK,WAAY,EACjB,KAAK,UAAY,IAAI,UACrB,KAAK,wBAA+C,OAArB,EAA4B,KAAO,IAAI,wBAAwB,GAC9F,KAAK,oBAAqB,EAC1B,KAAK,mBAAoB,EACzB,KAAK,UAAY,IACnB,CACA,kBAAI,GACF,OAAO,MAAM,cACf,CACA,kBAAI,CAAe,GACjB,MAAM,eAAiB,EACvB,KAAK,UAAU,eAAiB,CAClC,CACA,oBAAI,GACF,MAAM,EAAU,KAAK,wBACrB,OAAmB,OAAZ,EAAmB,EAAQ,SAAW,IAC/C,CACA,oBAAI,CAAiB,GACnB,MAAM,EAAU,KAAK,wBACP,OAAV,EACc,OAAZ,EACF,EAAQ,YAAY,GAEpB,KAAK,wBAA0B,IAAI,wBAAwB,GAExC,OAAZ,IACT,EAAQ,UACR,KAAK,wBAA0B,KAEnC,CACA,SAAI,GACF,OAAO,KAAK,UAAU,OACxB,CACA,SAAI,CAAM,GACR,KAAK,UAAU,QAAU,CAC3B,CACA,YAAA,GACE,OAAO,KAAK,SACd,CACA,YAAA,CAAa,GACX,KAAK,UAAY,CACnB,CACA,oBAAA,GACE,OAAO,KAAK,kBACd,CACA,qBAAA,CAAsB,GACpB,KAAK,mBAAqB,CAC5B,CACA,mBAAA,GACE,OAAO,KAAK,iBACd,CACA,oBAAA,CAAqB,GACnB,KAAK,kBAAoB,CAC3B,CACA,YAAA,GACE,OAAO,KAAK,SACd,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,MAAM,EAAQ,KAAK,MACb,EAAS,KAAK,OACd,EAAY,KAAK,UACjB,EAAO,EAAO,OAAO,KACrB,EAAa,EAAM,WACnB,EAAsB,EAAS,UAAU,WACzC,EAAe,KAAK,eAAiB,KAAO,EAChC,OAAd,GACF,EAAO,OAAO,IAAI,EAAU,YAE1B,KAAK,oBACP,EAAS,UAAU,YAAa,IAE9B,KAAK,oBAA4D,OAAtC,KAAK,UAAU,sBAC5C,EAAM,WAAa,MAEjB,KAAK,OACP,KAAK,UAAU,OAAO,EAAU,GAElC,EAAS,gBAAgB,GACY,OAAjC,KAAK,wBACP,KAAK,wBAAwB,OAAO,EAAU,EAAO,GAErD,EAAS,OAAO,EAAO,GAEzB,EAAO,OAAO,KAAO,EACrB,EAAM,WAAa,EACnB,EAAS,UAAU,WAAa,CAClC,GAIE,UAAY,cAAc,KAC5B,WAAA,CAAY,EAAO,GAAQ,gBACzB,EAAkB,EAAC,MACnB,EAAQ,QAAQ,UAAS,OACzB,EAAS,QAAQ,UAAS,aAC1B,GACE,CAAC,GACH,MAAM,aACN,KAAK,WAAY,EACjB,KAAK,WAAa,IAAI,WAAW,EAAO,EAAQ,IAAI,kBAAkB,CACpE,aAAc,oBAEhB,MAAM,EAAa,KAAK,WACxB,EAAW,uBAAsB,GACjC,EAAW,sBAAqB,GAChC,MAAM,EAAY,EAAW,eAC7B,EAAU,mBAAqB,IAAI,OAAO,UAC1C,EAAU,mBAAqB,EAC/B,KAAK,aAAe,OACM,IAAtB,KAAK,eACP,KAAK,aAAe,IAAI,mBAAmB,EAAG,EAAG,CAC/C,UAAW,eACX,UAAW,eACX,eAAe,IAEjB,KAAK,aAAa,QAAQ,KAAO,oBAEnC,KAAK,WAAa,IAAI,QAAQ,KAAM,EAAO,EAAQ,EACrD,CACA,WAAI,GACF,OAAO,KAAK,aAAa,OAC3B,CACA,kBAAA,GACE,OAAO,KAAK,eACd,CACA,kBAAA,CAAmB,GACjB,KAAK,gBAAkB,EACvB,KAAK,QAAQ,KAAK,WAAW,KAAK,EAAG,KAAK,WAAW,KAAK,EAC5D,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,MAAM,EAAe,KAAK,eAAiB,KAAO,KAAK,aACvD,KAAK,WAAW,OAAO,EAAU,EACnC,CACA,OAAA,CAAQ,EAAO,GACb,MAAM,EAAa,KAAK,WACxB,EAAW,KAAK,IAAI,EAAO,GAC3B,KAAK,aAAa,QAAQ,EAAW,MAAO,EAAW,OACzD,UAKA,kBACA,2BACiB,oCACI,uBAChB,QACP,IAAI,sBAAwB,cAAc,KACxC,WAAA,EAAY,aACV,EAAe,KAAI,gBACnB,EAAkB,GAAG,MACrB,EAAQ,QAAQ,UAAS,OACzB,EAAS,QAAQ,WACf,CAAC,GAKH,GAJA,MAAM,yBACN,KAAK,sBAAsB,IAAI,2BAC/B,KAAK,mBAAoB,EACzB,KAAK,WAAY,EACI,OAAjB,EAAuB,CACzB,MAAM,EAAW,KAAK,wBACtB,EAAS,SAAS,aAAa,MAAQ,EACvC,EAAS,QAAQ,mBAAqB,GACxC,CACA,KAAK,aAAe,IAAI,mBAAmB,EAAG,EAAG,CAC/C,UAAW,eACX,UAAW,eACX,eAAe,EACf,aAAa,EACb,KAAM,YAER,KAAK,aAAa,QAAQ,KAAO,+BACjC,KAAK,aAAa,QAAQ,iBAAkB,EAC5C,KAAK,WAAa,IAAI,QAAQ,KAAM,EAAO,GAC3C,KAAK,WAAW,MAAQ,CAC1B,CACA,WAAI,GACF,OAAO,KAAK,aAAa,OAC3B,CACA,eAAA,CAAgB,EAAc,EAAe,mBAC3C,MAAM,EAAW,KAAK,wBACtB,EAAS,SAAS,YAAY,MAAQ,EACtC,EAAS,aAAe,CAC1B,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,EAAS,gBAAgB,KAAK,eAAiB,KAAO,KAAK,cAC3D,EAAS,OAAO,KAAK,MAAO,KAAK,OACnC,CACA,OAAA,CAAQ,EAAO,GACb,MAAM,EAAa,KAAK,WACxB,EAAW,KAAK,IAAI,EAAO,GAC3B,KAAK,wBAAwB,aAAa,EAAI,EAAO,EAAI,GACzD,KAAK,aAAa,QAAQ,EAAW,MAAO,EAAW,OACzD,CACA,UAAA,CAAW,EAAU,EAAO,GACrB,EAAS,aAAa,UACzB,QAAQ,MAAM,6CAElB,uBAIoB,+BAAgC,sBAAyB,oCAIxD,gCACR,4BACI,mCACG,sCACA,uCACC,uBAChB,QACP,IAAI,cAAgB,cAAc,KAChC,WAAA,EAAY,aAAE,EAAe,mBAAsB,CAAC,GAClD,MAAM,iBACN,MAAM,EAAW,IAAI,kBACrB,EAAS,sBAAsB,GAC/B,KAAK,sBAAsB,GAC3B,KAAK,mBAAoB,EACzB,KAAK,WAAY,EACjB,KAAK,aAAe,IAAI,mBAAmB,EAAG,EAAG,CAC/C,KAAM,IAAiB,kBAAoB,kBAAoB,WAC/D,UAAW,eACX,UAAW,eACX,eAAe,EACf,aAAa,IAEf,KAAK,aAAa,QAAQ,KAAO,sBACnC,CACA,WAAI,GACF,OAAO,KAAK,aAAa,OAC3B,CACA,gBAAI,GACF,OAAO,KAAK,wBAAwB,uBACtC,CACA,eAAA,CAAgB,EAAc,EAAe,oBAC3C,MAAM,EAAW,KAAK,wBACtB,EAAS,SAAS,YAAY,MAAQ,EACtC,EAAS,qBAAqB,EAChC,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,EAAS,gBAAgB,KAAK,eAAiB,KAAO,KAAK,cAC3D,EAAS,OAAO,KAAK,MAAO,KAAK,OACnC,CACA,OAAA,CAAQ,EAAO,GACb,KAAK,aAAa,QAAQ,EAAO,EACnC,GAIE,cAAgB,IAAI,aAAa,CACnC,IAAM,IAAM,KAAO,EACnB,IAAM,IAAM,MACZ,IAAM,IAAM,IACZ,IAAM,MAER,SAAS,kBAAkB,GACzB,OAAQ,EAAY,GAAK,cAAc,GAAK,EAAY,GAAK,cAAc,GAAK,EAAY,GAAK,cAAc,GAAK,EAAY,GAAK,cAAc,IAAM,GAC3J,CACA,IAAI,iBAAmB,cAAc,cACnC,WAAA,EAAY,aACV,EAAe,kBAAiB,KAChC,EAAO,cAAc,QACnB,CAAC,GACH,MAAM,CAAE,iBACR,KAAK,KAAO,mBACZ,KAAK,wBAAwB,QAAQ,GACrC,KAAK,YAAc,IAAiB,kBAAoB,IAAI,WAAW,GAAK,IAAI,aAAa,GAC7F,KAAK,SAAW,IAClB,CACA,QAAI,GACF,OAAO,KAAK,wBAAwB,SACtC,CACA,kBAAI,GACF,OAAO,KAAK,wBAAwB,SAAS,eAAe,KAC9D,CACA,SAAA,CAAU,GAER,OADA,KAAK,eAAe,IAAY,GAAR,EAAI,EAAU,GAAa,GAAR,EAAI,EAAU,IAClD,IAAI,SAAS,IAClB,KAAK,SAAW,CAAO,GAE3B,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GAIrD,GAHI,KAAK,OAAS,cAAc,MAC9B,MAAM,OAAO,GAEO,OAAlB,KAAK,SAAmB,CAC1B,MAAM,EAAe,KAAK,aACpB,EAAc,KAAK,YACnB,EAAS,EAAa,QAAQ,OAAS,WAC7C,IAAI,EAAI,EAAG,EAAI,EACf,GAAI,KAAK,OAAS,cAAc,OAC9B,MAAM,OAAO,OACR,CACL,MAAM,EAAiB,KAAK,eAC5B,EAAI,KAAK,MAAM,EAAe,EAAI,EAAa,OAC/C,EAAI,KAAK,MAAM,EAAe,EAAI,EAAa,OACjD,CACA,EAAS,uBAAuB,EAAc,EAAG,EAAG,EAAG,EAAG,GAC1D,KAAK,SAAS,EAAS,kBAAkB,GAAe,EAAY,IACpE,KAAK,SAAW,IAClB,CACF,CACA,OAAA,CAAQ,EAAO,GACT,KAAK,OAAS,cAAc,MAC9B,MAAM,QAAQ,EAAO,EAEzB,+BAI4B,uCAAwC,sBAAyB,QAG/F,IAAI,cAAgB,CAClB,KAAM,EACN,IAAK,EACL,MAAO,EACP,QAAS,EACT,WAAY,EACZ,YAAa,EACb,OAAQ,EACR,WAAY,EACZ,UAAW,EACX,QAAS,EACT,SAAU,GACV,OAAQ,GACR,SAAU,GACV,OAAQ,GACR,QAAS,GACT,QAAS,GACT,OAAQ,GACR,WAAY,GACZ,SAAU,WAIH,2BAA4B,cAAiB,QAGtD,IAAI,iBAAmB,mHAGnB,iBAAmB,kPAGnB,iBAAmB,+GAGnB,iBAAmB,4QAGnB,iBAAmB,wQAGnB,iBAAmB,+GAGnB,iBAAmB,+GAGnB,iBAAmB,mHAGnB,iBAAmB,+GAGnB,iBAAmB,0GAGnB,iBAAmB,kQAGnB,iBAAmB,wHAGnB,iBAAmB,wGAGnB,iBAAmB,mRAGnB,iBAAmB,0QAGnB,iBAAmB,2HAGnB,iBAAmB,6SAGnB,iBAAmB,uHAGnB,eAAiB,IAAI,IAAI,CAC3B,CAAC,cAAc,KAAM,MACrB,CAAC,cAAc,IAAK,kBACpB,CAAC,cAAc,MAAO,kBACtB,CAAC,cAAc,QAAS,kBACxB,CAAC,cAAc,WAAY,kBAC3B,CAAC,cAAc,YAAa,kBAC5B,CAAC,cAAc,OAAQ,kBACvB,CAAC,cAAc,WAAY,kBAC3B,CAAC,cAAc,UAAW,kBAC1B,CAAC,cAAc,QAAS,kBACxB,CAAC,cAAc,SAAU,kBACzB,CAAC,cAAc,OAAQ,kBACvB,CAAC,cAAc,SAAU,kBACzB,CAAC,cAAc,OAAQ,kBACvB,CAAC,cAAc,QAAS,kBACxB,CAAC,cAAc,QAAS,kBACxB,CAAC,cAAc,OAAQ,kBACvB,CAAC,cAAc,WAAY,kBAC3B,CAAC,cAAc,SAAU,oBAEvB,UAAY,cAAc,gBAC5B,WAAA,CAAY,EAAe,EAAU,GACnC,QACA,KAAK,cAAgB,EACrB,KAAK,QAAU,IAAI,UAAU,EAC/B,CACA,gBAAA,GACE,OAAO,KAAK,aACd,CACA,gBAAA,CAAiB,GACf,KAAK,cAAgB,EACrB,KAAK,cAAc,CAAE,KAAM,UAC7B,CACA,aAAA,GACE,OAAO,eAAe,IAAI,KAAK,cACjC,6BAI0B,0BAA2B,WAAc,QACrE,IAAI,OAAS,cAAc,iBACzB,WAAA,CAAY,EAAM,GAAgB,WAChC,EAAa,gBAAgB,KAAI,cACjC,EAAgB,cAAc,OAAM,QACpC,EAAU,IAAI,IAAK,SACnB,EAAW,IAAI,IAAK,WACpB,EAAa,KAAI,aACjB,EAAe,MACb,CAAC,GACH,QACA,KAAK,KAAO,EACZ,KAAK,WAAa,EAClB,KAAK,eAAiB,EACtB,KAAK,aAAe,EACpB,KAAK,QAAU,EACf,KAAK,SAAW,EAChB,KAAK,WAAa,EAClB,KAAK,UAAY,IAAI,UAAU,GAC/B,KAAK,UAAU,iBAAiB,UAAW,GAAU,KAAK,cAC5D,CACA,UAAA,GACE,KAAK,cAAc,CAAE,KAAM,UAC7B,CACA,aAAA,GACE,OAAO,KAAK,UACd,CACA,aAAA,CAAc,GACZ,KAAK,WAAa,EAClB,KAAK,YACP,CACA,iBAAA,GACE,OAAO,KAAK,cACd,CACA,iBAAA,CAAkB,GAChB,KAAK,eAAiB,EACtB,KAAK,YACP,CACA,eAAA,GACE,OAAO,KAAK,YACd,CACA,eAAA,CAAgB,GACd,KAAK,aAAe,EACpB,KAAK,YACP,CACA,eAAA,CAAgB,EAAc,EAAe,GAC7C,CACA,MAAA,CAAO,EAAU,EAAa,GAC9B,CACA,OAAA,CAAQ,EAAO,GACf,CACA,UAAA,CAAW,EAAU,EAAO,GAC5B,CACA,OAAA,GACE,IAAK,MAAM,KAAO,OAAO,KAAK,MAAO,CACnC,MAAM,EAAW,KAAK,GACtB,GAAiB,OAAb,GAAiD,mBAArB,EAAS,QAAwB,CAC/D,GAAI,aAAoB,OACtB,SAEF,KAAK,GAAK,SACZ,CACF,CACF,GAEE,gBAAkB,CACpB,KAAM,EACN,MAAO,EACP,YAAa,GAEX,eAAiB,CACnB,YAAa,cACb,WAAY,YACZ,aAAc,cACd,mBAAoB,oBAItB,SAAS,eAAe,EAAQ,GAC9B,MAAM,EAAa,GACnB,IAAI,EACJ,KAA0C,QAAlC,EAAS,EAAO,KAAK,KAC3B,EAAW,KAAK,EAAO,IAEzB,OAAO,CACT,CACA,SAAS,iBAAiB,EAAQ,EAAY,GAC5C,IAAI,EAAU,EACd,IAAK,MAAM,KAAa,EAAY,CAClC,EAAW,KAAO,EAAS,EAAU,OAAO,GAAG,cAAgB,EAAU,MAAM,GAC/E,EAAS,IAAI,OAAO,eAAiB,EAAY,OAAQ,KACzD,IAAK,MAAM,KAAS,EAAQ,UACT,OAAb,EAAM,IACR,EAAQ,IAAI,EAAM,GAAI,EAAM,GAAG,QAAQ,EAAQ,GAGrD,CACF,CACA,SAAS,gBAAgB,EAAQ,EAAQ,EAAa,EAAY,EAAS,EAAU,GACnF,MAAM,EAAiB,yCACjB,EAAgB,6BAChB,EAAY,EAAO,UACnB,EAAU,IAAI,IAAI,CACtB,CAAC,WAAY,EAAO,qBACpB,CAAC,SAAU,EAAO,qBAEd,OAA8C,IAA5B,EAAQ,IAAI,aAA0B,YAAY,KAAK,EAAQ,IAAI,aACrF,OAA2C,IAA5B,EAAQ,IAAI,aAA0B,SAAS,KAAK,EAAQ,IAAI,aACrF,IAAI,EAAW,GAAI,EAAQ,GACvB,GAAgB,EAChB,GAAY,EAChB,QAAgC,IAA5B,EAAQ,IAAI,YACd,QAAQ,MAAM,0BAA2B,QACpC,GAAI,GAAiB,EAAa,gBAAgB,YACvD,QAAQ,MAAM,kFAAmF,QAC5F,GAAK,GAAoB,EAEzB,CAKL,GAJI,IACF,EAAY,IAAI,QAAQ,iBAAkB,EAAY,IAAI,QAAQ,kBAAoB,KAAM,EAAS,iBACrG,GAAgB,GAEY,OAA1B,EAAQ,IAAI,WAAsB,cAAc,KAAK,EAAQ,IAAI,WAAY,CAC/E,IAAI,EAAS,KAAM,EAAS,eACxB,kCAAkC,KAAK,EAAQ,IAAI,aACrD,GAAU,OAEZ,GAAU,OACV,EAAY,IAAI,QAAQ,oBAAqB,EAAY,IAAI,QAAQ,qBAAuB,GAC5F,EAAW,EAAS,OAAO,eAAe,EAAe,EAAQ,IAAI,YACrE,EAAQ,EAAM,OAAO,GAAU,OAAO,eAAe,EAAgB,EAAQ,IAAI,WACnF,CASA,GARA,EAAQ,EAAM,OAAO,eAAe,EAAgB,EAAQ,IAAI,cAChE,EAAQ,EAAM,OAAO,MAAM,KAAK,EAAO,QAAQ,QAAQ,KAAK,GAAM,EAAE,QAAQ,gBAAiB,OAC7F,EAAQ,EAAM,OAAO,MAAM,KAAK,EAAO,SAAS,SAChD,EAAO,SAAS,SAAQ,CAAC,EAAO,IAAQ,EAAS,IAAI,EAAS,EAAI,OAAO,GAAG,cAAgB,EAAI,MAAM,GAAI,KAC1G,EAAO,QAAQ,SAAQ,CAAC,EAAO,IAAQ,EAAQ,IAAI,EAAS,EAAI,OAAO,GAAG,cAAgB,EAAI,MAAM,GAAI,KACxG,iBAAiB,EAAQ,EAAO,GAChC,iBAAiB,EAAQ,EAAO,GAChC,EAAW,IAAI,EAAU,cAAe,GACpC,EAAiB,CACnB,MAAM,EAAmB,yCACzB,IAAI,EAAS,EAAS,yBACjB,EAAa,gBAAgB,OAAgB,EAAiB,KAAK,EAAQ,IAAI,eAClF,GAAU,UACV,GAAY,GAEd,GAAU,eACV,MAAM,EAAe,EAAS,eAC9B,EAAS,IAAI,EAAc,EAAU,SACrC,GAAU,iBAAmB,EAAU,mBAAqB,oBAAsB,EAAe,WACjG,EAAY,IAAI,QAAQ,oBAAqB,EAAY,IAAI,QAAQ,qBAAuB,GAC5F,EAAY,IAAI,QAAQ,cAAe,EAAY,IAAI,QAAQ,eAAiB,iBAAmB,EAAe,QACpH,CACA,EAAY,IAAI,QAAQ,cAAe,EAAY,IAAI,QAAQ,eAAiB,EAAQ,IAAI,YAAc,MAC5E,OAA1B,EAAQ,IAAI,WACd,EAAY,IAAI,QAAQ,YAAa,EAAY,IAAI,QAAQ,aAAe,EAAQ,IAAI,UAAY,KAExG,MA1CE,QAAQ,MAAM,yEAA0E,GA2C1F,MAAO,CAAE,WAAU,gBAAe,YACpC,CACA,IAAI,WAAa,cAAc,KAC7B,WAAA,CAAY,KAAW,GACrB,MAAM,cACN,KAAK,sBAAsB,IAAI,eAAe,KAAM,KAAM,KAAM,IAChE,KAAK,QAAU,EAAQ,MAAK,CAAC,EAAG,IAAM,EAAE,WAAa,EAAE,aACvD,KAAK,eAAgB,EACrB,KAAK,SAAW,EAChB,KAAK,SAAW,EAChB,KAAK,QAAU,EACf,KAAK,QAAU,OAAO,iBACxB,CACA,gBAAI,GACF,YAA8D,IAAvD,KAAK,wBAAwB,QAAQ,aAC9C,CACA,gBAAI,CAAa,GACf,GAAI,KAAK,eAAiB,EAAO,CAC/B,MAAM,EAAW,KAAK,wBACtB,EAAS,aAAc,EACnB,EACF,EAAS,QAAQ,cAAgB,WAE1B,EAAS,QAAQ,aAE5B,CACF,CACA,aAAI,GACF,OAAO,KAAK,wBAAwB,SACtC,CACA,aAAI,CAAU,GACZ,MAAM,EAAW,KAAK,wBAClB,EAAS,YAAc,IACzB,EAAS,UAAY,EACrB,EAAS,aAAc,EAE3B,CACA,eAAA,CAAgB,GACd,MAAM,EAAe,EAAS,aAC9B,IAAI,EAAM,KAAK,IAAI,EAAa,oBAAqB,EAAa,mBAC9D,KAAK,SAAW,GAClB,QAAQ,KAAK,2DAA6D,EAAM,kBAAoB,KAAK,SAAW,iBAEtH,EAAM,EAAa,YACf,KAAK,SAAW,GAClB,QAAQ,KAAK,2DAA6D,EAAM,kBAAoB,KAAK,SAAW,gBAExH,CACA,cAAA,GACE,MAAM,EAAc,aACd,EAAc,IAAI,IAAI,CAC1B,CAAC,QAAQ,cAAe,IACxB,CAAC,QAAQ,iBAAkB,IAC3B,CAAC,QAAQ,oBAAqB,IAC9B,CAAC,QAAQ,YAAa,IACtB,CAAC,QAAQ,oBAAqB,MAE1B,EAAa,IAAI,IACjB,EAAU,IAAI,IACd,EAAW,IAAI,IACf,EAAa,IAAI,IACvB,IAGI,EAHA,EAAK,EAAG,EAAW,EAAG,EAAa,EACnC,GAAgB,EAChB,GAAY,EAEhB,IAAK,MAAM,KAAU,KAAK,QACxB,GAAI,EAAO,UAAU,qBAAuB,cAAc,KACxD,GAAc,EAAO,gBAAkB,gBAAgB,WAClD,GAAK,EAAa,gBAAgB,aAAuB,EAAO,gBAAkB,gBAAgB,YACvG,QAAQ,MAAM,uCAAwC,QAOtD,GALA,GAAc,EAAO,gBACrB,EAAS,gBAAgB,IAAM,IAAM,EAAQ,EAAa,EAAY,EAAS,EAAU,GACzF,GAAY,EAAO,SAAS,OAC5B,EAAgB,GAAiB,EAAO,cACxC,EAAY,GAAa,EAAO,UACN,OAAtB,EAAO,WACT,IAAK,MAAM,KAAa,EAAO,WAC7B,EAAW,IAAI,GAKvB,IAAK,MAAM,KAAa,EAAW,SACjC,EAAY,IAAI,QAAQ,cAAe,EAAY,IAAI,QAAQ,eAAiB,EAAU,gBAAgB,QAAQ,EAAa,QAAU,EAAU,oBAAsB,MAEtK,EAAa,gBAAgB,OAC5B,GACF,EAAY,IAAI,QAAQ,oBAAqB,qCAAsC,EAAY,IAAI,QAAQ,sBAE7G,KAAK,kBAA+C,OAA3B,KAAK,mBAE9B,KAAK,mBAAoB,EAEvB,GACF,EAAY,IAAI,QAAQ,iBAAkB,8BAAgC,EAAY,IAAI,QAAQ,mBAClG,EAAQ,IAAI,KAAM,kBAElB,EAAQ,IAAI,KAAM,OAEpB,EAAY,SAAQ,CAAC,EAAO,EAAK,IAAQ,EAAI,IAAI,EAAK,EAAM,OAAO,QAAQ,KAAM,UACjF,KAAK,SAAW,EAAS,KACzB,KAAK,SAAW,EAChB,KAAK,cAAuB,IAAP,EACrB,KAAK,WAAa,KAAK,cACvB,MAAM,EAAW,KAAK,wBAKtB,GAJA,EAAS,eAAe,GACxB,EAAS,WAAW,GACpB,EAAS,YAAY,GACrB,EAAS,WAAa,CAAC,EACnB,EAAW,KAAO,EACpB,IAAK,MAAM,KAAa,EACtB,EAAS,WAAW,IAAa,EAGrC,KAAK,aAAc,CACrB,CACA,SAAA,CAAU,GACR,KAAK,sBACY,IAAb,GACF,KAAK,gBAAgB,EAEzB,CACA,eAAA,GACE,OAAO,KAAK,wBAAwB,SAAS,YAAY,KAC3D,CACA,eAAA,CAAgB,EAAc,EAAe,oBAC3C,MAAM,EAAW,KAAK,wBACtB,EAAS,SAAS,YAAY,MAAQ,EACtC,EAAS,aAAe,EACxB,EAAS,aAAc,EACvB,IAAK,MAAM,KAAU,KAAK,QACxB,EAAO,gBAAgB,EAAc,EAEzC,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,MAAM,EAAW,KAAK,wBAChB,EAAO,EAAS,SAAS,KAAK,MAAQ,EACxC,KAAK,aACP,KAAK,UAAU,GAEjB,IAAK,MAAM,KAAU,KAAK,QACxB,EAAO,OAAO,EAAU,EAAa,GAElC,KAAK,gBAAiB,KAAK,iBAC9B,EAAS,SAAS,YAAY,MAAQ,EAAY,QAClD,EAAS,SAAS,KAAK,MAAQ,GAAQ,KAAK,QAAU,EAAO,KAAK,QAClE,EAAS,gBAAgB,KAAK,eAAiB,KAAO,GACtD,EAAS,OAAO,KAAK,MAAO,KAAK,QAErC,CACA,OAAA,CAAQ,EAAO,GACb,KAAK,wBAAwB,QAAQ,EAAO,GAC5C,IAAK,MAAM,KAAU,KAAK,QACxB,EAAO,QAAQ,EAAO,EAE1B,CACA,UAAA,CAAW,EAAU,EAAO,GAC1B,IAAK,MAAM,KAAU,KAAK,QACxB,EAAO,WAAW,EAAU,EAAO,GACnC,EAAO,iBAAiB,UAAW,GAAU,KAAK,YAAY,KAIhE,GAFA,KAAK,iBACL,KAAK,gBAAgB,QACG,IAApB,GAA8B,IAAoB,kBAAmB,CACtD,KAAK,wBACb,QAAQ,2BAA6B,GAChD,CACF,CACA,OAAA,GACE,MAAM,UACN,IAAK,MAAM,KAAU,KAAK,QACxB,EAAO,SAEX,CACA,WAAA,CAAY,GACV,GACO,WADC,EAAM,KAEV,KAAK,aAAc,CAGzB,GAIE,WAAa,cAAc,KAC7B,WAAA,CAAY,GACV,MAAM,aAAc,KAAM,MAC1B,KAAK,WAAY,EACjB,KAAK,EAAI,CACX,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,KAAK,GACP,0BAKgB,cAChB,8BACc,gCACM,uCACC,uBAChB,QACP,IAAI,cAAgB,cAAc,KAChC,WAAA,EAAY,MACV,EAAQ,QAAQ,UAAS,OACzB,EAAS,QAAQ,UAAS,aAC1B,EAAY,eACZ,EAAc,YACd,GACE,CAAC,GACH,MAAM,iBACN,KAAK,sBAAsB,IAAI,kBAAkB,EAAa,IAC9D,KAAK,WAAY,EACjB,KAAK,aAAe,OACM,IAAtB,KAAK,eACP,KAAK,aAAe,IAAI,mBAAmB,EAAG,EAAG,CAC/C,UAAW,cACX,UAAW,cACX,OAAQ,EAAc,YAAc,gBACpC,eAAe,EACf,aAAa,IAEf,KAAK,aAAa,QAAQ,KAAO,uBACjC,KAAK,aAAa,QAAQ,iBAAkB,GAE9C,KAAK,WAAa,IAAI,QAAQ,KAAM,EAAO,EAC7C,CACA,WAAI,GACF,OAAO,KAAK,aAAa,OAC3B,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACpC,KAAK,wBACb,SAAS,YAAY,MAAQ,EAAY,QAClD,EAAS,gBAAgB,KAAK,eAAiB,KAAO,KAAK,cAC3D,EAAS,OAAO,KAAK,MAAO,KAAK,OACnC,CACA,OAAA,CAAQ,EAAO,GACb,MAAM,EAAa,KAAK,WACxB,EAAW,KAAK,IAAI,EAAO,GAC3B,KAAK,aAAa,QAAQ,EAAW,MAAO,EAAW,OACzD,CACA,UAAA,CAAW,EAAU,EAAO,GAC1B,QAAwB,IAApB,GAA8B,IAAoB,kBAAmB,CACtD,KAAK,wBACb,QAAQ,2BAA6B,GAChD,CACF,GAIE,SAAW,cAAc,KAC3B,WAAA,CAAY,EAAO,GACjB,MAAM,WAAY,EAAO,GACzB,KAAK,WAAY,EACjB,KAAK,UAAY,IAAI,WAAU,GAAO,GAAO,GAC7C,KAAK,SAAU,CACjB,CACA,SAAI,GACF,OAAO,KAAK,UAAU,OACxB,CACA,SAAI,CAAM,GACR,KAAK,UAAU,QAAU,CAC3B,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,MAAM,EAAU,EAAS,aACnB,EAAU,EAAS,MAAM,QACzB,EAAQ,KAAK,MACb,EAAS,KAAK,OACd,EAAY,KAAK,UACjB,EAAa,KAAK,QAAU,EAAI,EAChC,EAAa,EAAI,EACvB,EAAQ,MAAM,SAAQ,GACtB,EAAQ,MAAM,SAAQ,GACtB,EAAQ,MAAM,WAAU,GACxB,EAAQ,MAAM,WAAU,GACxB,EAAQ,QAAQ,SAAQ,GACxB,EAAQ,QAAQ,MAAM,EAAQ,QAAS,EAAQ,QAAS,EAAQ,SAChE,EAAQ,QAAQ,QAAQ,EAAQ,OAAQ,EAAY,YACpD,EAAQ,QAAQ,SAAS,GACzB,EAAQ,QAAQ,WAAU,GACtB,KAAK,QACH,KAAK,eACP,EAAU,OAAO,EAAU,OAE3B,EAAU,OAAO,EAAU,GAC3B,EAAU,OAAO,EAAU,KAG3B,KAAK,gBACP,EAAS,gBAAgB,MACzB,EAAS,OAAO,EAAO,KAEvB,EAAS,gBAAgB,GACzB,EAAS,OAAO,EAAO,GACvB,EAAS,gBAAgB,GACzB,EAAS,OAAO,EAAO,IAEzB,EAAQ,MAAM,WAAU,GACxB,EAAQ,MAAM,WAAU,GACxB,EAAQ,QAAQ,WAAU,GAC1B,EAAQ,QAAQ,QAAQ,EAAQ,MAAO,EAAG,YAC1C,EAAQ,QAAQ,MAAM,EAAQ,KAAM,EAAQ,KAAM,EAAQ,MAC1D,EAAQ,QAAQ,WAAU,EAC5B,mBAKS,OACT,oCACiB,4BACJ,gCACQ,uBAChB,QACP,IAAI,WAAa,cAAc,KAC7B,WAAA,CAAY,EAAO,GAAQ,gBACzB,EAAkB,EAAC,MACnB,EAAQ,QAAQ,UAAS,OACzB,EAAS,QAAQ,UAAS,aAC1B,GACE,CAAC,GACH,MAAM,cACN,KAAK,WAAY,EACjB,KAAK,WAAa,IAAI,WAAW,EAAO,EAAQ,IAAI,oBACpD,MAAM,EAAa,KAAK,WACxB,EAAW,uBAAsB,GACjC,EAAW,sBAAqB,GAChC,MAAM,EAAY,EAAW,eAC7B,EAAU,mBAAqB,IAAI,OAAO,SAC1C,EAAU,mBAAqB,EAC/B,KAAK,aAAe,OACM,IAAtB,KAAK,eACP,KAAK,aAAe,IAAI,mBAAmB,EAAG,EAAG,CAC/C,UAAW,eACX,UAAW,eACX,OAAQ,WACR,eAAe,IAEjB,KAAK,aAAa,QAAQ,KAAO,qBAEnC,KAAK,WAAa,IAAI,QAAQ,KAAM,EAAO,EAAQ,EACrD,CACA,WAAI,GACF,OAAO,KAAK,aAAa,OAC3B,CACA,kBAAA,GACE,OAAO,KAAK,eACd,CACA,kBAAA,CAAmB,GACjB,KAAK,gBAAkB,EACvB,KAAK,QAAQ,KAAK,WAAW,KAAK,EAAG,KAAK,WAAW,KAAK,EAC5D,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GACrD,MAAM,EAAe,KAAK,eAAiB,KAAO,KAAK,aACvD,KAAK,WAAW,OAAO,EAAU,EAAc,EACjD,CACA,OAAA,CAAQ,EAAO,GACb,MAAM,EAAa,KAAK,WACxB,EAAW,KAAK,IAAI,EAAO,GAC3B,KAAK,aAAa,QAAQ,EAAW,MAAO,EAAW,OACzD,8BAI2B,sBAAyB,QACtD,IAAI,WAAa,cAAc,KAC7B,WAAA,CAAY,EAAU,EAAQ,eAC5B,MAAM,cACN,KAAK,sBAAsB,GAC3B,KAAK,QAAU,KACf,KAAK,SAAS,EAChB,CACA,QAAA,CAAS,GACP,MAAM,EAAW,KAAK,wBAEtB,GADA,KAAK,QAAU,KACE,OAAb,EAAmB,CACrB,MAAM,EAAW,EAAS,cACT,IAAb,QAA2C,IAApB,EAAS,KAClC,KAAK,QAAU,EAAS,GAE5B,CACF,CACA,MAAA,CAAO,EAAU,EAAa,EAAc,EAAW,GAChC,OAAjB,KAAK,SAAoC,OAAhB,IAC3B,KAAK,QAAQ,MAAQ,EAAY,SAEnC,EAAS,gBAAgB,KAAK,eAAiB,KAAO,GACtD,EAAS,OAAO,KAAK,MAAO,KAAK,OACnC,CACA,UAAA,CAAW,EAAU,EAAO,GAC1B,QAAwB,IAApB,GAA8B,IAAoB,kBAAmB,CACtD,KAAK,wBACb,QAAQ,2BAA6B,GAChD,CACF,GAIE,wBAA0B,KAC1B,wBAA0B,IAC1B,MAAQ,MACV,WAAA,GACE,KAAK,aAAe,EACpB,KAAK,YAAc,EACnB,KAAK,MAAQ,EACb,KAAK,WAAa,IAAM,GACxB,KAAK,QAAU,EACf,KAAK,UAAY,EACjB,KAAK,mBAAoB,CAC3B,CACA,oBAAA,CAAqB,GAEnB,OADA,KAAK,kBAAoB,EAClB,IACT,CACA,mBAAA,CAAoB,GAQlB,MAPwB,oBAAb,eAAgD,IAApB,SAAS,SAC1C,EACF,SAAS,iBAAiB,mBAAoB,MAE9C,SAAS,oBAAoB,mBAAoB,OAG9C,IACT,CACA,QAAA,GACE,OAAO,KAAK,MAAQ,uBACtB,CACA,aAAA,GACE,OAAO,KAAK,WAAa,uBAC3B,CACA,aAAA,CAAc,GAEZ,OADA,KAAK,WAAa,EAAa,wBACxB,IACT,CACA,UAAA,GACE,OAAO,KAAK,QAAU,uBACxB,CACA,YAAA,GACE,OAAO,KAAK,SACd,CACA,YAAA,CAAa,GAEX,OADA,KAAK,UAAY,EACV,IACT,CACA,MAAA,CAAO,GAUL,OATI,KAAK,kBACP,KAAK,MAAQ,KAAK,YAElB,KAAK,aAAe,KAAK,YACzB,KAAK,iBAA4B,IAAd,EAAuB,EAAY,YAAY,MAClE,KAAK,MAAQ,KAAK,YAAc,KAAK,cAEvC,KAAK,OAAS,KAAK,UACnB,KAAK,SAAW,KAAK,UACd,IACT,CACA,KAAA,GAIE,OAHA,KAAK,MAAQ,EACb,KAAK,QAAU,EACf,KAAK,YAAc,YAAY,MACxB,IACT,CACA,WAAA,CAAY,GACL,SAAS,SACZ,KAAK,YAAc,YAAY,MAEnC,CACA,OAAA,GAC0B,oBAAb,UACT,SAAS,oBAAoB,mBAAoB,KAErD,GAIE,eAAiB,MACnB,WAAA,CAAY,EAAW,MAAM,YAC3B,GAAc,EAAI,cAClB,GAAgB,EAAK,MACrB,GAAQ,EAAK,cACb,EAAgB,EAAC,gBACjB,GACE,CAAC,GACH,KAAK,SAAW,EAChB,KAAK,YAAc,KACnB,KAAK,aAAe,KACE,OAAlB,KAAK,WACP,KAAK,SAAS,WAAY,EAC1B,KAAK,YAAc,KAAK,aAAa,EAAa,EAAe,EAAiB,GAClF,KAAK,aAAe,KAAK,YAAY,SAEvC,KAAK,SAAW,IAAI,WAAW,IAAI,cACnC,KAAK,MAAQ,EACb,KAAK,aAAe,KACpB,KAAK,OAAS,GACd,KAAK,MAAQ,IAAI,MACjB,KAAK,oBAAqB,CAC5B,CACA,iBAAI,GACF,OAAO,KAAK,uBAAuB,6BAA+B,KAAK,YAAY,QAAU,CAC/F,CACA,iBAAI,CAAc,GAChB,MAAM,EAAS,KAAK,YACd,EAAgB,KAAK,cACvB,EAAgB,GAAK,EAAQ,GAC/B,KAAK,YAAY,QAAU,EAC3B,KAAK,aAAa,QAAU,GACnB,IAAkB,IAC3B,KAAK,YAAY,UACjB,KAAK,aAAa,UAClB,KAAK,YAAc,KAAK,aAAa,EAAO,YAAa,EAAO,cAAe,EAAO,QAAQ,KAAM,GACpG,KAAK,YAAY,aAAe,KAAK,aACrC,KAAK,aAAe,KAAK,YAAY,QAEzC,CACA,QAAA,GACE,OAAO,KAAK,KACd,CACA,WAAA,GACE,OAAO,KAAK,QACd,CACA,eAAA,CAAgB,EAAU,GAAY,GACpC,MAAM,EAAc,KAAK,SACzB,GAAoB,OAAhB,GAAwB,IAAgB,EAAU,CACpD,MAAM,EAAU,EAAY,QAAQ,IAAI,WAClC,EAAU,EAAS,QAAQ,IAAI,WAC/B,EAAS,EAAY,WAAW,WACtC,KAAK,SAAW,EAChB,KAAK,SAAS,WAAY,EACrB,EAAQ,OAAO,IAClB,KAAK,UAEH,GAAwB,OAAX,IACf,EAAO,YAAY,EAAY,YAC/B,EAAO,YAAY,EAAS,YAEhC,CACA,OAAO,CACT,CACA,kBAAA,GACE,MAAM,EAAe,KAAK,aAAe,IAAI,aAS7C,OARA,KAAK,YAAY,aAAe,EAChC,KAAK,YAAY,UACb,KAAK,YAAY,eACnB,EAAa,OAAS,mBACtB,EAAa,KAAO,oBAEpB,EAAa,KAAO,gBAEf,CACT,CACA,kBAAA,GACE,GAA0B,OAAtB,KAAK,aAAuB,CAC9B,KAAK,aAAa,UAClB,KAAK,aAAe,KACpB,KAAK,YAAY,aAAe,KAChC,KAAK,YAAY,UACjB,IAAK,MAAM,KAAQ,KAAK,OACtB,EAAK,gBAAgB,KAEzB,CACF,CACA,YAAA,CAAa,EAAa,EAAe,EAAM,GAC7C,MAAM,EAAW,KAAK,SAChB,EAAU,EAAS,aACnB,EAAO,EAAS,qBAAqB,IAAI,WAEzC,EAAU,CACd,OAFY,KAAK,OAAS,EAAQ,uBAAuB,OAEvC,IAAS,kBAAiC,YAAb,WAC/C,UAAW,cACX,UAAW,cACX,gBACA,cACA,QAEI,EAAe,EAAgB,EAAI,IAAI,6BAA6B,EAAK,MAAO,EAAK,OAAQ,GAAW,IAAI,mBAAmB,EAAK,MAAO,EAAK,OAAQ,GAM9J,OALI,EAAgB,IAClB,EAAa,QAAU,GAEzB,EAAa,QAAQ,KAAO,wBAC5B,EAAa,QAAQ,iBAAkB,EAChC,CACT,CACA,OAAA,CAAQ,EAAM,GACZ,MAAM,EAAS,KAAK,OACd,EAAW,KAAK,SAChB,EAAoB,EAAS,qBAAqB,IAAI,WACtD,EAAQ,EAAS,aAAa,uBAAuB,MACrD,EAAkB,KAAK,YAAY,QAAQ,KAmBjD,GAlBA,EAAK,QAAQ,EAAkB,MAAO,EAAkB,QACxD,EAAK,WAAW,EAAU,EAAO,GAC7B,KAAK,qBACH,EAAO,OAAS,IAClB,EAAO,EAAO,OAAS,GAAG,gBAAiB,GAEzC,EAAK,iBACP,KAAK,oBAAqB,SAGhB,IAAV,EACF,EAAO,OAAO,EAAO,EAAG,GAExB,EAAO,KAAK,GAEV,KAAK,qBACP,EAAO,EAAO,OAAS,GAAG,gBAAiB,GAEzC,EAAK,mBAA2C,OAAtB,KAAK,aACjC,GAA0B,OAAtB,KAAK,aAAuB,CAC9B,MAAM,EAAe,KAAK,qBAC1B,IAAK,KAAQ,EACX,EAAK,gBAAgB,EAEzB,MACE,EAAK,gBAAgB,KAAK,aAGhC,CACA,UAAA,CAAW,GACT,MAAM,EAAS,KAAK,OACd,EAAQ,EAAO,QAAQ,GAG7B,IAF0B,IAAX,GACW,EAAO,OAAO,EAAO,GAAG,OAAS,EAC9C,CACX,GAA0B,OAAtB,KAAK,aAAuB,CAC9B,MAAM,EAAU,CAAC,EAAG,IAAM,GAAK,EAAE,kBACJ,EAAO,OAAO,GAAS,KAE9C,EAAK,oBAAsB,KAAK,cAClC,EAAK,gBAAgB,MAEvB,KAAK,qBAET,CACI,KAAK,oBACH,IAAU,EAAO,SACnB,EAAK,gBAAiB,EAClB,EAAO,OAAS,IAClB,EAAO,EAAO,OAAS,GAAG,gBAAiB,GAInD,CACF,CACA,eAAA,GACE,MAAM,EAAS,KAAK,OACpB,KAAK,qBACD,EAAO,OAAS,IACd,KAAK,qBACP,EAAO,EAAO,OAAS,GAAG,gBAAiB,GAE7C,KAAK,OAAS,GAElB,CACA,MAAA,CAAO,GACL,MAAM,EAAW,KAAK,SAChB,EAAW,KAAK,SACtB,IAGI,EAAS,EAAS,EAHlB,EAAc,KAAK,YACnB,EAAe,KAAK,aACpB,GAAc,OAEA,IAAd,IACF,EAAY,KAAK,MAAM,SAAS,YAElC,IAAK,MAAM,KAAQ,KAAK,OAClB,EAAK,cACP,EAAK,OAAO,EAAU,EAAa,EAAc,EAAW,GACxD,EAAK,YACH,IACF,EAAS,eAAiB,EAAK,eAC/B,EAAU,EAAS,aACnB,EAAU,EAAS,MAAM,QAAQ,QACjC,EAAQ,QAAQ,EAAQ,SAAU,EAAG,YACrC,EAAS,OAAO,EAAU,EAAa,EAAc,EAAW,GAChE,EAAQ,QAAQ,EAAQ,MAAO,EAAG,aAEpC,EAAS,EACT,EAAc,EACd,EAAe,GAEb,aAAgB,SAClB,GAAc,EACL,aAAgB,gBACzB,GAAc,GAItB,CACA,OAAA,CAAQ,EAAO,EAAQ,GACrB,MAAM,EAAW,KAAK,SACtB,QAAc,IAAV,QAA+B,IAAX,EAAmB,CACzC,MAAM,EAAO,EAAS,QAAQ,IAAI,WAClC,EAAQ,EAAK,MACb,EAAS,EAAK,MAChB,MACE,EAAS,QAAQ,EAAO,EAAQ,GAElC,MAAM,EAAoB,EAAS,qBAAqB,IAAI,WACtD,EAAc,KAAK,YACnB,EAAe,KAAK,aAC1B,EAAY,QAAQ,EAAkB,MAAO,EAAkB,QAC/D,EAAa,QAAQ,EAAkB,MAAO,EAAkB,QAChE,IAAK,MAAM,KAAQ,KAAK,OACtB,EAAK,QAAQ,EAAkB,MAAO,EAAkB,OAE5D,CACA,KAAA,GACE,KAAK,UACL,KAAK,oBAAqB,CAC5B,CACA,OAAA,GACE,IAAK,MAAM,KAAQ,KAAK,OACtB,EAAK,UAEP,KAAK,OAAS,GACW,OAArB,KAAK,aACP,KAAK,YAAY,UAEO,OAAtB,KAAK,cACP,KAAK,aAAa,UAEpB,KAAK,qBACL,KAAK,SAAS,UACd,KAAK,MAAM,SACb,GAIE,cAAgB,MAClB,UAAA,CAAW,EAAU,EAAO,GAC5B,GAIE,UAAY,MACd,OAAA,CAAQ,EAAO,GACf,GAIE,UAAY,cAAc,IAC5B,WAAA,CAAY,EAAU,EAAQ,IAC5B,QACA,KAAK,aAAe,EACpB,KAAK,WAAY,OACA,IAAb,GACF,KAAK,IAAI,EAEb,CACA,SAAI,GACF,OAAO,KAAK,YACd,CACA,SAAI,CAAM,GACR,KAAK,SAAS,EAChB,CACA,QAAA,GACE,OAAO,KAAK,YACd,CACA,QAAA,CAAS,GACP,MAAM,EAAe,KAAK,aAC1B,IAAK,MAAM,KAAU,KACnB,EAAO,OAAO,QAAQ,GACtB,EAAO,OAAO,OAAO,GAEvB,KAAK,aAAe,CACtB,CACA,KAAA,GACE,MAAM,EAAQ,KAAK,MACnB,IAAK,MAAM,KAAU,KACnB,EAAO,OAAO,QAAQ,GAExB,OAAO,MAAM,OACf,CACA,GAAA,CAAI,GACF,KAAK,QACL,IAAK,MAAM,KAAU,EACnB,KAAK,IAAI,GAEX,OAAO,IACT,CACA,OAAA,CAAQ,GACN,OAAO,KAAK,IAAI,GAAU,GAAK,CACjC,CACA,GAAA,CAAI,GAMF,OALI,KAAK,UACP,EAAO,OAAO,IAAI,KAAK,OAEvB,EAAO,OAAO,OAAO,KAAK,OAErB,MAAM,IAAI,EACnB,CACA,OAAO,GAIL,OAHI,KAAK,IAAI,IACX,EAAO,OAAO,QAAQ,KAAK,OAEtB,MAAM,OAAO,EACtB,CACA,UAAA,CAAW,GACT,IAAK,MAAM,KAAU,KACf,EACF,EAAO,OAAO,OAAO,GAErB,EAAO,OAAO,QAAQ,GAG1B,OAAO,IACT,0BAKgB,2BACH,sBACF,8BACS,uCACC,wBAChB,QAGP,IAAI,iBAAmB,iRAGnB,YAAc,cAAc,OAC9B,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,mBACpC,EAAqB,GAAG,mBACxB,EAAqB,KAAK,gBAC1B,EAAkB,GAAG,UACrB,EAAY,EAAC,MACb,EAAQ,QAAQ,UAAS,OACzB,EAAS,QAAQ,UAAS,WAC1B,EAAa,WAAW,OACtB,CAAC,GACH,MAAM,cAAe,iBAAkB,CACrC,gBACA,SAAU,IAAI,IAAI,CAChB,CAAC,MAAO,IAAI,UAAU,OACtB,CAAC,YAAa,IAAI,UAAU,QAGhC,KAAK,aAAe,IAAI,oBAAoB,EAAG,EAAG,CAChD,UAAW,cACX,UAAW,cACX,eAAe,EACf,aAAa,IAEf,KAAK,aAAa,QAAQ,KAAO,eACjC,KAAK,aAAa,QAAQ,iBAAkB,EAC5C,KAAK,SAAS,IAAI,OAAO,MAAQ,KAAK,aAAa,QACnD,KAAK,SAAW,IAAI,SAAS,CAC3B,kBACA,QACA,SACA,eAEF,KAAK,SAAS,WAAW,UAAY,KACrC,KAAK,cAAgB,IAAI,cAAc,CACrC,aAAc,KAAK,aACnB,aAAa,IAEf,KAAK,cAAc,WAAa,KAAK,WACrC,KAAK,kBAAkB,UAAY,EACnC,KAAK,kBAAkB,UAAY,CACrC,CACA,WAAI,GACF,OAAO,KAAK,aAAa,OAC3B,CACA,qBAAI,GACF,OAAO,KAAK,cAAc,uBAC5B,CACA,cAAI,GACF,OAAO,KAAK,SAAS,UACvB,CACA,SAAI,GACF,OAAO,KAAK,WAAW,KACzB,CACA,SAAI,CAAM,GACR,KAAK,WAAW,MAAQ,CAC1B,CACA,UAAI,GACF,OAAO,KAAK,WAAW,MACzB,CACA,UAAI,CAAO,GACT,KAAK,WAAW,OAAS,CAC3B,CACA,aAAI,GACF,OAAO,KAAK,SAAS,SACvB,CACA,aAAI,CAAU,GACZ,KAAK,SAAS,UAAY,CAC5B,CACA,cAAI,GACF,OAAO,KAAK,SAAS,UACvB,CACA,cAAI,CAAW,GACb,KAAK,SAAS,WAAa,CAC7B,CACA,eAAI,GAEF,OADA,QAAQ,KAAK,KAAK,KAAM,kFACjB,CACT,CACA,eAAI,CAAY,GACd,QAAQ,KAAK,KAAK,KAAM,iFAC1B,CACA,aAAI,GACF,OAAO,KAAK,SAAS,IAAI,aAAa,KACxC,CACA,aAAI,CAAU,GACZ,KAAK,SAAS,IAAI,aAAa,MAAQ,CACzC,CACA,kBAAA,GACE,OAAO,KAAK,WAAW,KACzB,CACA,kBAAA,CAAmB,GACjB,KAAK,WAAW,MAAQ,CAC1B,CACA,MAAA,CAAO,EAAU,EAAa,GAC5B,MAAM,EAAe,KAAK,aACtB,KAAK,cAAc,aACrB,KAAK,cAAc,OAAO,EAAU,EAAa,GACjD,KAAK,SAAS,OAAO,EAAU,EAAc,IAE7C,KAAK,SAAS,OAAO,EAAU,EAAa,EAEhD,CACA,OAAA,CAAQ,EAAO,GACb,KAAK,SAAS,QAAQ,EAAO,GAC7B,KAAK,aAAa,QAAQ,KAAK,WAAW,MAAO,KAAK,WAAW,OACnE,CACA,UAAA,CAAW,EAAU,EAAO,GAC1B,KAAK,SAAS,WAAW,EAAU,EAAO,GACrC,GAAS,IAAoB,oBAChC,KAAK,aAAa,QAAQ,OAAS,iBAEb,IAApB,IACF,KAAK,aAAa,QAAQ,KAAO,EAErC,qBAIkB,cAAiB,QAGrC,IAAI,iBAAmB,60HAGnB,YAAc,cAAc,OAC9B,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,MACpC,EAAQ,GAAG,IACX,EAAM,IAAI,SACV,EAAW,KAAK,QAChB,EAAU,GACR,CAAC,GACH,MAAM,cAAe,iBAAkB,CACrC,gBACA,WAAY,gBAAgB,YAAc,gBAAgB,MAC1D,SAAU,IAAI,IAAI,CAChB,CAAC,QAAS,IAAI,UAAU,IACxB,CAAC,MAAO,IAAI,UAAU,IACtB,CAAC,WAAY,IAAI,UAAU,IAC3B,CAAC,UAAW,IAAI,UAAU,OAGhC,qBAIkB,cAAiB,QAGrC,IAAI,iBAAmB,sTAGnB,yBAA2B,cAAc,OAC3C,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,WACpC,EAAa,EAAC,SACd,EAAW,GACT,CAAC,GACH,MAAM,2BAA4B,iBAAkB,CAClD,gBACA,SAAU,IAAI,IAAI,CAChB,CAAC,aAAc,IAAI,UAAU,IAC7B,CAAC,WAAY,IAAI,UAAU,OAGjC,GAIE,iBAAmB,iLAGnB,mBAAqB,cAAc,OACrC,WAAA,CAAY,EAAgB,cAAc,QACxC,MAAM,qBAAsB,iBAAkB,CAAE,iBAClD,qBAIkB,cAAiB,QAGrC,IAAI,iBAAmB,+KAGnB,iBAAmB,cAAc,OACnC,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,KACpC,EAAO,IACL,CAAC,GACH,MAAM,mBAAoB,iBAAkB,CAC1C,gBACA,SAAU,IAAI,IAAI,CAChB,CAAC,SAAU,IAAI,UAAU,QAG7B,KAAK,KAAO,EACZ,KAAK,YAAY,EACnB,CACA,WAAA,GACE,OAAO,KAAK,IACd,CACA,WAAA,CAAY,GACV,KAAK,KAAO,EACZ,KAAK,SAAS,IAAI,UAAU,MAAQ,KAAK,IAAI,EAAG,EAAO,EACzD,qBAIkB,qBAAsB,cAAiB,QAG3D,IAAI,iBAAmB,+ZAGnB,iBAAmB,6HAGnB,0BAA4B,cAAc,OAC5C,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,OACpC,EAAS,IAAI,UAAU,KAAM,OAC3B,CAAC,GACH,MAAM,4BAA6B,iBAAkB,CACnD,aAAc,iBACd,gBACA,WAAY,gBAAgB,YAC5B,SAAU,IAAI,IAAI,CAChB,CAAC,SAAU,IAAI,UAAU,OAG/B,CACA,UAAI,GACF,OAAO,KAAK,SAAS,IAAI,UAAU,KACrC,CACA,UAAI,CAAO,GACT,KAAK,SAAS,IAAI,UAAU,MAAQ,CACtC,CACA,UAAA,CAAW,EAAU,EAAO,GACtB,EACF,KAAK,QAAQ,IAAI,QAAS,KAE1B,KAAK,QAAQ,OAAO,QAExB,GAIE,iBAAmB,qOAGnB,YAAc,cAAc,OAC9B,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,SACpC,GAAW,GACT,CAAC,GACH,MAAM,cAAe,iBAAkB,CACrC,gBACA,WAAY,gBAAgB,QAE9B,KAAK,SAAW,CAClB,CACA,YAAI,GACF,OAAO,KAAK,QAAQ,IAAI,WAC1B,CACA,YAAI,CAAS,GACP,KAAK,WAAa,IAChB,EACF,KAAK,QAAQ,IAAI,WAAY,KAE7B,KAAK,QAAQ,OAAO,YAEtB,KAAK,aAET,+BAKqB,mCACL,2BACH,sBACF,8BACS,wCACC,wBAChB,QAGP,IAAI,iBAAmB,moBAGnB,mBAAqB,cAAc,OACrC,WAAA,CAAY,GAAQ,cAClB,EAAgB,cAAc,OAAM,cACpC,EAAgB,EAAC,YACjB,EAAc,GAAG,WACjB,EAAa,EAAC,MACd,EAAQ,QAAQ,UAAS,OACzB,EAAS,QAAQ,WACf,CAAC,GACH,MAAM,qBAAsB,iBAAkB,CAC5C,gBACA,WAAY,gBAAgB,MAC5B,SAAU,IAAI,IAAI,CAChB,CAAC,kBAAmB,IAAI,UAAU,OAClC,CAAC,iBAAkB,IAAI,UAAU,OACjC,CAAC,gBAAiB,IAAI,UAAU,OAChC,CAAC,QAAS,IAAI,UAAU,QAG5B,KAAK,OAAS,EACd,KAAK,aAAe,IAAI,oBAAoB,EAAG,EAAG,CAChD,UAAW,cACX,UAAW,cACX,eAAe,EACf,aAAa,IAEf,KAAK,aAAa,QAAQ,KAAO,mBACjC,KAAK,aAAa,QAAQ,iBAAkB,EAC5C,KAAK,mBAAqB,KAAK,aAAa,QAC5C,KAAK,mBAAmB,QAAQ,KAAO,iBACvC,KAAK,iBAAmB,KAAK,aAAa,QAC1C,KAAK,iBAAiB,QAAQ,KAAO,iBACrC,KAAK,SAAS,IAAI,mBAAmB,MAAQ,KAAK,iBAAiB,QACnE,KAAK,gBAAkB,KAAK,aAAa,QACzC,KAAK,gBAAgB,QAAQ,KAAO,gBACpC,KAAK,SAAS,IAAI,kBAAkB,MAAQ,KAAK,gBAAgB,QACjE,KAAK,gBAAkB,KAAK,aAAa,QACzC,KAAK,gBAAgB,QAAQ,OAAS,WACtC,KAAK,gBAAgB,QAAQ,KAAO,UACpC,KAAK,uBAAyB,KAAK,gBAAgB,QACnD,KAAK,uBAAuB,QAAQ,KAAO,kBAC3C,KAAK,SAAS,IAAI,iBAAiB,MAAQ,KAAK,uBAAuB,QACvE,KAAK,QAAU,IAAI,WAAW,IAAI,0BAA0B,IAC5D,MAAM,EAAc,KAAK,0BACzB,EAAY,SAAS,cAAc,MAAQ,EAC3C,EAAY,SAAS,YAAY,MAAQ,EACzC,KAAK,SAAW,IAAI,SAAS,CAC3B,QACA,SACA,WAAY,WAAW,SAEzB,KAAK,SAAS,WAAW,UAAY,KACrC,KAAK,SAAW,IAAI,WAAW,IAAI,aAAa,KAAK,gBAAgB,UACrE,MAAM,EAAe,KAAK,SAAS,wBACnC,EAAa,aAAe,aAAa,SACzC,EAAa,aAAe,aAAa,MACzC,KAAK,kBAAoB,IAAI,WAAW,IAAI,eAAc,GAAO,IACjE,KAAK,kBAAoB,IAAI,WAAW,IAAI,eAAc,GAAM,IAChE,KAAK,iBAAmB,IAAI,WAAW,IAAI,eAAc,GAAO,IAChE,KAAK,iBAAmB,IAAI,WAAW,IAAI,eAAc,GAAM,IAC/D,KAAK,WAAa,EAClB,KAAK,OAAS,IAChB,CACA,6BAAI,GACF,OAAO,KAAK,QAAQ,uBACtB,CACA,cAAI,GACF,OAAO,KAAK,SAAS,UACvB,CACA,cAAI,GACF,OAAO,KAAK,SAAS,IAAI,SAAS,KACpC,CACA,cAAI,CAAW,GACE,CACb,KAAK,kBACL,KAAK,kBACL,KAAK,iBACL,KAAK,kBAEA,KAAK,GAAM,EAAE,wBAAwB,SAAS,QAAO,SAAS,IACnE,EAAE,MAAQ,CAAK,IAEjB,KAAK,SAAS,wBAAwB,SAAS,SAAS,MAAQ,EAChE,KAAK,SAAS,IAAI,SAAS,MAAQ,CACrC,CACA,sBAAA,CAAuB,GACrB,MAAM,EAAS,KAAK,OACd,EAAe,EAAO,IAAM,EAAO,KACnC,EAAW,EAAO,SAAS,WAAW,GAC5C,OAAO,KAAK,IAAI,KAAK,IAAI,EAAW,EAAc,GAAI,EACxD,CACA,eAAA,CAAgB,EAAc,EAAe,oBAC3C,MAAM,EAAW,KAAK,0BACtB,EAAS,SAAS,YAAY,MAAQ,EACtC,EAAS,aAAe,CAC1B,CACA,MAAA,CAAO,EAAU,EAAa,GAC5B,MAAM,EAAe,KAAK,aACpB,EAAkB,KAAK,gBACvB,EAAyB,KAAK,uBAC9B,EAAqB,KAAK,mBAC1B,EAAmB,KAAK,iBACxB,EAAmB,KAAK,iBACxB,EAAkB,EAAiB,wBAAwB,SAC3D,EAAkB,EAAiB,wBAAwB,SAC3D,EAAoB,KAAK,kBACzB,EAAoB,KAAK,kBACzB,EAAmB,EAAkB,wBAAwB,SAC7D,EAAmB,EAAkB,wBAAwB,SACnE,GAAoB,OAAhB,KAAK,OAAiB,CACxB,MAAM,EAAW,KAAK,uBAAuB,KAAK,QAClD,KAAK,0BAA0B,SAAS,cAAc,MAAQ,CAChE,CACA,KAAK,QAAQ,OAAO,EAAU,KAAM,GACpC,KAAK,SAAS,OAAO,EAAU,EAAiB,GAChD,KAAK,SAAS,OAAO,EAAU,EAAa,GAC5C,EAAgB,UAAU,MAAQ,EAAgB,QAClD,EAAgB,UAAU,MAAQ,EAAgB,QAClD,EAAiB,OAAO,EAAU,EAAoB,GACtD,EAAiB,OAAO,EAAU,EAAc,KAAK,iBACrD,EAAiB,UAAU,MAAQ,EAAuB,QAC1D,EAAiB,UAAU,MAAQ,EAAuB,QAC1D,EAAkB,OAAO,EAAU,EAAa,GAChD,EAAkB,OAAO,EAAU,EAAc,KAAK,iBACxD,CACA,OAAA,CAAQ,EAAO,GACb,MAAM,EAAa,KAAK,WACxB,IAAI,EAAa,CACf,KAAK,QACL,KAAK,SACL,KAAK,SACL,KAAK,kBACL,KAAK,kBACL,KAAK,iBACL,KAAK,kBAEP,EAAW,KAAK,KAAK,gBAAiB,KAAK,oBAC3C,EAAW,SAAS,GAAM,EAAE,QAAQ,EAAO,KAC3C,MAAM,EAAI,EAAW,MACf,EAAI,EAAW,OACrB,EAAa,CACX,KAAK,aACL,KAAK,iBACL,KAAK,gBACL,KAAK,wBAEP,EAAW,SAAS,GAAM,EAAE,QAAQ,EAAG,KACxB,CACb,KAAK,kBACL,KAAK,kBACL,KAAK,iBACL,KAAK,kBAEA,SAAS,GAAM,EAAE,wBAAwB,aAAa,EAAI,EAAG,EAAI,IAC1E,CACA,UAAA,CAAW,EAAU,EAAO,GACH,CACrB,KAAK,QACL,KAAK,SACL,KAAK,kBACL,KAAK,kBACL,KAAK,iBACL,KAAK,kBAEQ,SAAS,GAAM,EAAE,WAAW,EAAU,EAAO,KAC5D,KAAK,SAAS,WAAW,EAAU,EAAO,oBACrC,GAAS,IAAoB,qBAChC,KAAK,iBAAiB,QAAQ,KAAO,iBAEf,IAApB,IACF,KAAK,aAAa,QAAQ,KAAO,EACjC,KAAK,iBAAiB,QAAQ,KAAO,EACrC,KAAK,gBAAgB,QAAQ,KAAO,EACpC,KAAK,mBAAmB,QAAQ,KAAO,EAE3C,qBAIkB,qBAAsB,cAAiB,QAG3D,IAAI,iBAAmB,0WAGnB,gBAAkB,cAAc,OAClC,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,MACpC,EAAkB,GAAV,KAAK,GAAQ,MACrB,EAAQ,GACN,CAAC,GACH,MAAM,kBAAmB,iBAAkB,CACzC,gBACA,SAAU,IAAI,IAAI,CAChB,CAAC,QAAS,IAAI,UAAU,IAAI,YAC5B,CAAC,QAAS,IAAI,UAAU,QAG5B,KAAK,SAAS,EAChB,CACA,QAAA,CAAS,GACP,KAAK,SAAS,IAAI,SAAS,MAAM,IAAI,KAAK,IAAI,GAAQ,KAAK,IAAI,GACjE,qBAIkB,cAAiB,QAGrC,IAAI,iBAAmB,4JAGnB,sBAAwB,cAAc,OACxC,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,MACpC,EAAQ,GACN,CAAC,GACH,MAAM,wBAAyB,iBAAkB,CAC/C,gBACA,SAAU,IAAI,IAAI,CAChB,CAAC,QAAS,IAAI,UAAU,OAG9B,2BAKiB,eACjB,4BACa,sBACF,qBACA,cACN,eAIL,+BACmB,iBACnB,UACA,sBACa,yBACC,gCACM,uBACf,QACP,SAAS,SAAS,EAAM,EAAQ,GAC9B,MAAM,EAAW,IAAI,IAAI,CACvB,CAAC,iBAAkB,GACnB,CAAC,UAAW,GACZ,CAAC,SAAU,GACX,CAAC,WAAY,GACb,CAAC,YAAa,KAEhB,IAAI,EAIJ,GAHK,EAAS,IAAI,IAChB,QAAQ,MAAM,gCAEZ,IAAS,mBAAoB,CAC/B,EAAO,IAAI,WAAW,EAAO,EAAS,IAAI,IAC1C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAI,IAAK,EACxC,EAAK,GAAqB,IAAhB,KAAK,QAEnB,KAAO,CACL,EAAO,IAAI,aAAa,EAAO,EAAS,IAAI,IAC5C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAI,IAAK,EACxC,EAAK,GAAK,KAAK,QAEnB,CACA,OAAO,CACT,CACA,IAAI,aAAe,cAAc,YAC/B,WAAA,CAAY,EAAO,EAAQ,EAAS,iBAAkB,EAAO,oBAC3D,MAAM,SAAS,EAAQ,EAAQ,EAAQ,GAAO,EAAO,EAAQ,EAAQ,EACvE,GAIE,iBAAmB,+kBAGnB,IAAM,mBACV,SAAS,YAAY,EAAK,GACxB,OAAO,EAAM,KAAK,UAAY,EAAO,EACvC,CACA,IAAI,aAAe,cAAc,OAC/B,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,0BACpC,EAA4B,KAAI,MAChC,EAAQ,IAAI,UAAU,IAAK,KAAI,SAC/B,EAAW,IAAI,UAAU,GAAK,GAAE,SAChC,EAAW,IAAI,UAAU,GAAK,GAAE,QAChC,EAAU,IAAI,MACd,EAAQ,IAAI,gBACZ,EAAkB,KAAI,OACtB,EAAS,IACP,CAAC,GACH,MAAM,eAAgB,iBAAkB,CACtC,gBACA,SAAU,IAAI,IAAI,CAChB,CAAC,kBAAmB,IAAI,UAAU,OAClC,CAAC,UAAW,IAAI,UAAU,IAC1B,CAAC,SAAU,IAAI,WAAU,IACzB,CAAC,SAAU,IAAI,UAAU,IACzB,CAAC,OAAQ,IAAI,UAAU,IAAI,YAC3B,CAAC,aAAc,IAAI,UAAU,IAAI,gBAGrC,KAAK,mBAAuC,OAApB,EAA2B,KAAK,wBAAwB,GAAU,GAC1F,KAAK,MAAQ,EACb,KAAK,SAAW,EAChB,KAAK,WAAa,IAAI,UAAU,YAAY,KAAK,MAAM,EAAG,KAAK,MAAM,GAAI,YAAY,KAAK,SAAS,EAAG,KAAK,SAAS,IACpH,KAAK,KAAO,EACZ,KAAK,KAAO,KAAK,SAAS,IAAI,QAAQ,MACtC,KAAK,WAAa,KAAK,SAAS,IAAI,cAAc,MAClD,KAAK,KAAO,WAAW,SACvB,KAAK,SAAW,EAChB,KAAK,MAAQ,EACb,KAAK,0BAA4B,CACnC,CACA,UAAI,GACF,OAAO,KAAK,SAAS,IAAI,UAAU,KACrC,CACA,kBAAA,GACE,OAAO,KAAK,SAAS,IAAI,mBAAmB,KAC9C,CACA,kBAAA,CAAmB,GACjB,MAAM,EAAa,KAAK,qBACL,OAAf,GAAuB,EAAW,OAAS,KAC7C,EAAW,UAEb,EAAI,UAAY,EAAI,UAAY,eAChC,EAAI,MAAQ,EAAI,MAAQ,eACxB,EAAI,iBAAkB,EACtB,KAAK,SAAS,IAAI,mBAAmB,MAAQ,CAC/C,CACA,uBAAA,CAAwB,EAAO,IAC7B,MAAM,EAAM,IAAI,aAAa,EAAM,EAAM,YAEzC,OADA,EAAI,KAAO,IACJ,CACT,CACA,MAAA,CAAO,EAAU,EAAa,GAC5B,MAAM,EAAO,KAAK,KACZ,EAAa,KAAK,WAClB,EAAS,KAAK,0BACd,EAAI,KAAK,SACf,IAGI,EAHA,EAAO,KAAK,KACZ,GAAS,EACT,EAAI,EAAG,EAAI,EAEX,IAAS,WAAW,WAClB,IAAS,WAAW,WACtB,GAAQ,EACR,EAAU,EAAO,EAAW,EACxB,GAAQ,EAAW,EAAI,EAAW,IACpC,EAAW,IAAI,YAAY,KAAK,MAAM,EAAG,KAAK,MAAM,GAAI,YAAY,KAAK,SAAS,EAAG,KAAK,SAAS,IACnG,EAAO,IAGX,EAAI,KAAK,SACT,KAAK,SAAS,IAAI,UAAU,MAAQ,EAChC,GAAW,EAAI,KAAK,OAAS,IAAS,WAAW,eACnD,GAAS,EACT,GAAW,IAAN,EAAE,EACP,EAAI,aAAa,KAAK,GAAI,KAAK,IAC/B,KAAK,KAAK,IAAI,aAAa,EAAE,EAAG,EAAE,GAAI,aAAa,EAAE,EAAG,EAAE,IAC1D,KAAK,WAAW,IAAI,YAAY,EAAG,GAAI,YAAY,EAAG,MAC7C,GAAW,IAAS,WAAW,iBACxC,GAAS,EACT,GAAW,IAAN,EAAE,EACP,EAAI,aAAa,KAAK,GAAI,KAAK,IAC/B,KAAK,KAAK,IAAI,aAAa,EAAE,EAAG,EAAE,GAAI,aAAa,EAAE,EAAG,EAAE,IAC1D,KAAK,WAAW,IAAI,YAAY,EAAG,GAAI,YAAY,EAAG,KAExD,KAAK,KAAO,GAEC,OAAX,IACE,EACF,EAAO,IAAI,KAAK,IAAI,GAAI,KAAK,IAAI,IAAI,eAAe,GAEpD,EAAO,IAAI,EAAG,IAGlB,KAAK,SAAS,IAAI,UAAU,MAAQ,CACtC,GAEE,WAAa,CACf,SAAU,EACV,SAAU,EACV,cAAe,EACf,cAAe,+BAKM,4BACZ,uBACO,8BACA,yBACL,sBACE,oBACJ,kBACE,qBACA,UACX,4BACoB,wCACC,wBAChB,QAGP,IAAI,iBAAmB,gOAGnB,EAAI,IAAI,QACR,EAAI,IAAI,SACR,cAAgB,cAAc,OAChC,WAAA,CAAY,EAAQ,GAAa,cAC/B,EAAgB,cAAc,OAAM,QACpC,EAAU,GAAE,QACZ,EAAU,IAAI,MACd,EAAQ,GAAG,OACX,EAAS,GAAG,SACZ,EAAW,GAAG,SACd,EAAW,EAAC,gBACZ,EAAkB,GAAG,MACrB,EAAQ,QAAQ,UAAS,OACzB,EAAS,QAAQ,UAAS,WAC1B,EAAa,WAAW,MAAK,KAC7B,GAAO,GACL,CAAC,GACH,MAAM,gBAAiB,iBAAkB,CACvC,gBACA,WAAY,gBAAgB,MAC5B,SAAU,IAAI,IAAI,CAChB,CAAC,MAAO,IAAI,UAAU,WAG1B,KAAK,OAAS,EACd,KAAK,YAAc,EACnB,KAAK,YAAY,SAAS,YAAa,EACvC,KAAK,YAAY,SAAS,aAAc,EACxC,KAAK,WAAa,IAAI,OACtB,KAAK,eAAiB,IAAI,UAC1B,KAAK,cAAgB,IAAI,oBAAoB,EAAG,EAAG,CACjD,UAAW,cACX,UAAW,cACX,eAAe,EACf,aAAa,IAEf,KAAK,cAAc,QAAQ,KAAO,mBAClC,KAAK,cAAgB,KAAK,cAAc,QACxC,KAAK,cAAc,QAAQ,KAAO,mBAClC,KAAK,SAAS,IAAI,OAAO,MAAQ,KAAK,cAAc,QACpD,KAAK,kBAAoB,KAAK,cAAc,QAC5C,KAAK,kBAAkB,QAAQ,KAAO,gBACtC,KAAK,kBAAkB,aAAc,EACrC,KAAK,kBAAkB,aAAe,IAAI,cAC1C,KAAK,gBAAkB,IAAI,WAAW,KAAK,WAAY,GACvD,KAAK,gBAAgB,eAAe,mBAAqB,IAAI,OAAO,GACpE,KAAK,UAAY,IAAI,WAAU,GAAM,GAAO,GAC5C,KAAK,UAAU,mBAAqB,IAAI,OAAO,GAC/C,KAAK,SAAW,IAAI,SAAS,CAC3B,kBACA,QACA,SACA,eAEF,KAAK,SAAS,WAAW,UAAY,KACrC,KAAK,cAAgB,IAAI,WAAW,IAAI,mBACd,KAAK,cAAc,wBAC3B,SAAS,aAAa,MAAQ,KAAK,kBAAkB,aACvE,KAAK,YAAc,IAAI,WAAW,IAAI,gBAAgB,KAAK,iBAC3D,MAAM,EAAkB,KAAK,YAAY,wBACzC,EAAgB,SAAS,QAAQ,MAAQ,EACzC,EAAgB,SAAS,MAAM,MAAQ,EACvC,EAAgB,SAAS,OAAO,MAAQ,EACxC,EAAgB,SAAS,SAAS,MAAQ,EAC1C,EAAgB,SAAS,SAAS,MAAQ,EAC1C,KAAK,QAAU,EACf,KAAK,KAAO,CACd,CACA,WAAI,GACF,OAAO,KAAK,cAAc,OAC5B,CACA,mBAAI,GACF,OAAO,KAAK,YAAY,uBAC1B,CACA,cAAI,GACF,OAAO,KAAK,SAAS,UACvB,CACA,SAAI,GACF,OAAO,KAAK,WAAW,KACzB,CACA,SAAI,CAAM,GACR,KAAK,WAAW,MAAQ,CAC1B,CACA,UAAI,GACF,OAAO,KAAK,WAAW,MACzB,CACA,UAAI,CAAO,GACT,KAAK,WAAW,OAAS,CAC3B,CACA,aAAI,GACF,OAAO,KAAK,gBAAgB,SAC9B,CACA,aAAI,CAAU,GACZ,MAAM,EAAW,KAAK,gBACtB,EAAS,UAAY,EACrB,EAAS,aAAc,CACzB,CACA,QAAI,GACF,OAAO,KAAK,SAAS,WACvB,CACA,QAAI,CAAK,GACP,KAAK,SAAS,WAAW,EAC3B,CACA,cAAI,GACF,OAAO,KAAK,SAAS,UACvB,CACA,cAAI,CAAW,GACb,KAAK,SAAS,WAAa,CAC7B,CACA,kBAAA,GACE,OAAO,KAAK,WAAW,KACzB,CACA,kBAAA,CAAmB,GACjB,KAAK,WAAW,MAAQ,CAC1B,CACA,WAAI,GACF,OAAO,KAAK,gBAAgB,OAC9B,CACA,WAAI,CAAQ,GACV,KAAK,gBAAgB,QAAU,CACjC,CACA,eAAA,CAAgB,EAAc,EAAe,oBAC3C,MAAM,EAAW,KAAK,cAAc,wBACpC,EAAS,SAAS,aAAa,MAAQ,EACvC,EAAS,QAAQ,gBAAkB,EAAa,QAAQ,GACxD,EAAS,aAAc,CACzB,CACA,MAAA,CAAO,EAAU,EAAa,GAC5B,MAAM,EAAc,KAAK,YACnB,EAAS,EAAY,OACrB,EAAmB,EAAY,iBAC/B,EAAgB,KAAK,cACrB,EAAoB,KAAK,kBAC/B,EAAY,SAAS,YAAa,EAClC,EAAY,kBAAmB,EAC/B,EAAY,mBAAkB,GAAM,GACrB,OAAX,IACG,GACH,EAAE,KAAK,EAAY,QAErB,EAAY,OAAO,KAAK,EAAY,cAEtC,KAAK,WAAW,IAAI,GACpB,KAAK,gBAAgB,OAAO,EAAU,GACtC,KAAK,UAAU,OAAO,EAAU,GAChC,KAAK,cAAc,OAAO,EAAU,EAAmB,GACvD,EAAY,SAAS,YAAa,EAClC,EAAY,iBAAmB,EAChB,OAAX,IACG,GACH,EAAY,OAAO,KAAK,GAE1B,EAAO,IAAI,IAEb,EAAE,sBAAsB,EAAY,aAAa,QAAQ,KAAK,QAC9D,KAAK,eAAe,IAAI,KAAK,IAAI,KAAK,IAAgB,IAAX,EAAE,EAAI,IAAW,GAAI,GAAI,KAAK,IAAI,KAAK,IAAgB,IAAX,EAAE,EAAI,IAAW,GAAI,IACxG,KAAK,MACP,KAAK,SAAS,OAAO,EAAU,EAAe,GAEhD,KAAK,YAAY,OAAO,EAAU,EAAe,KAAK,cACxD,CACA,OAAA,CAAQ,EAAO,GACb,KAAK,SAAS,QAAQ,EAAO,GAC7B,KAAK,gBAAgB,QAAQ,EAAO,GACpC,KAAK,cAAc,QAAQ,EAAO,GAClC,KAAK,YAAY,QAAQ,EAAO,GAChC,MAAM,EAAI,KAAK,WAAW,MACpB,EAAI,KAAK,WAAW,OAC1B,KAAK,cAAc,QAAQ,EAAG,GAC9B,KAAK,cAAc,QAAQ,EAAG,GAC9B,KAAK,kBAAkB,QAAQ,EAAG,EACpC,CACA,UAAA,CAAW,EAAU,EAAO,GAC1B,KAAK,SAAS,WAAW,EAAU,EAAO,GAC1C,KAAK,gBAAgB,WAAW,EAAU,EAAO,GACjD,KAAK,cAAc,WAAW,EAAU,EAAO,GAC/C,KAAK,YAAY,WAAW,EAAU,EAAO,GACxC,GAAS,IAAoB,qBAChC,KAAK,cAAc,QAAQ,OAAS,WACpC,KAAK,cAAc,QAAQ,OAAS,WACpC,KAAK,kBAAkB,QAAQ,OAAS,iBAElB,IAApB,IACF,KAAK,cAAc,QAAQ,KAAO,EAClC,KAAK,cAAc,QAAQ,KAAO,EAClC,KAAK,kBAAkB,QAAQ,KAAO,EAE1C,qBAIkB,qBAAsB,cAAiB,QAG3D,IAAI,iBAAmB,oRAGnB,WAAa,cAAc,OAC7B,WAAA,EAAY,cACV,EAAgB,cAAc,QAAO,MACrC,EAAQ,EAAC,UACT,EAAY,GACV,CAAC,GACH,MAAM,aAAc,iBAAkB,CACpC,gBACA,SAAU,IAAI,IAAI,CAChB,CAAC,QAAS,IAAI,UAAU,IAAI,YAC5B,CAAC,YAAa,IAAI,UAAU,QAGhC,KAAK,WAAa,IAAI,UACtB,KAAK,MAAQ,KAAK,IAAI,EAAO,MAC7B,KAAK,UAAY,KAAK,IAAI,EAAW,EACvC,CACA,QAAA,GACE,OAAO,KAAK,KACd,CACA,QAAA,CAAS,GACP,KAAK,MAAQ,EACb,KAAK,QAAQ,KAAK,WAAW,EAAG,KAAK,WAAW,EAClD,CACA,YAAA,GACE,OAAO,KAAK,SACd,CACA,YAAA,CAAa,GACX,KAAK,UAAY,EACjB,KAAK,QAAQ,KAAK,WAAW,EAAG,KAAK,WAAW,EAClD,CACA,OAAA,CAAQ,EAAO,GACb,KAAK,WAAW,IAAI,EAAO,GAC3B,MAAM,EAAS,EAAQ,EACjB,EAAQ,KAAK,OAAkB,KAAT,GAC5B,KAAK,SAAS,IAAI,SAAS,MAAM,IAAI,EAAS,EAAO,GACrD,KAAK,SAAS,IAAI,aAAa,MAAQ,EAAQ,EAAS,KAAK,SAC/D,qBAIkB,qBAAsB,aAAgB,QAG1D,IAAI,iBAAmB,+aAGnB,oBAAsB,cAAc,OACtC,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,IACpC,EAAM,EAAC,WACP,EAAa,GACX,CAAC,GACH,MAAM,sBAAuB,iBAAkB,CAC7C,gBACA,SAAU,IAAI,IAAI,CAChB,CAAC,MAAO,IAAI,UAAU,IAAI,WAC1B,CAAC,aAAc,IAAI,UAAU,QAGjC,KAAK,OAAO,EACd,CACA,MAAA,CAAO,GACL,MAAM,EAAI,KAAK,IAAI,GAAM,EAAK,KAAK,IAAI,GACvC,KAAK,SAAS,IAAI,OAAO,MAAM,IAAI,EAAI,GAAK,KAAK,KAAK,GAAK,EAAI,EAAI,KAAK,KAAK,GAAK,EAAI,GAAI,UAAU,GAAG,aAAa,EACtH,2BAKiB,4BACJ,4BACI,iCACC,gCACF,+BACC,+BACD,yBACL,qBACA,aACN,wBAII,OACT,mCACe,aACf,2BACa,2BACG,cAChB,4BACa,0BACC,YACd,iCACoB,8BACT,aACN,QAGP,SAAS,aAAa,EAAO,EAAQ,GACnC,MAAM,EAAS,SAAS,gBAAgB,+BAAgC,UAClE,EAAU,EAAO,WAAW,MAGlC,GAFA,EAAO,MAAQ,EACf,EAAO,OAAS,EACZ,aAAgB,MAClB,EAAQ,UAAU,EAAM,EAAG,OACtB,CACL,MAAM,EAAY,EAAQ,gBAAgB,EAAO,GACjD,EAAU,KAAK,IAAI,GACnB,EAAQ,aAAa,EAAW,EAAG,EACrC,CACA,OAAO,CACT,CACA,IAAI,aAAe,MACjB,WAAA,CAAY,EAAQ,EAAG,EAAS,EAAG,EAAO,MACxC,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,KAAO,CACd,CACA,QAAA,GACE,MAA2B,oBAAb,SAA2B,KAAO,aAAa,KAAK,MAAO,KAAK,OAAQ,KAAK,KAC7F,CACA,WAAO,CAAK,GACV,MAAM,MAAE,EAAK,OAAE,GAAW,EAC1B,IAAI,EACJ,GAAI,aAAiB,MAAO,CAC1B,MAAM,EAAS,aAAa,EAAO,EAAQ,GAC3C,GAAe,OAAX,EAAiB,CAEnB,EADgB,EAAO,WAAW,MACnB,aAAa,EAAG,EAAG,EAAO,GAAQ,IACnD,CACF,MACE,EAAO,EAAM,KAEf,OAAO,IAAI,aAAa,EAAO,EAAQ,EACzC,GAIE,aAAe,CACjB,SAAU,eAIR,eAAiB,0iFAGjB,EAAI,IAAI,OACR,gBAAkB,cAAc,cAClC,WAAA,CAAY,EAAM,GAChB,MAAM,EAAM,EAAM,EAAM,GACxB,KAAK,KAAO,WACZ,KAAK,OAAS,YACd,KAAK,SAAW,eAChB,KAAK,UAAY,cACjB,KAAK,UAAY,cACjB,KAAK,MAAQ,oBACb,KAAK,MAAQ,oBACb,KAAK,MAAQ,oBACb,KAAK,gBAAkB,EACvB,KAAK,UAAY,IAAI,SAAS,EAAG,EAAG,GACpC,KAAK,UAAY,IAAI,SAAS,EAAG,EAAG,EACtC,CACA,qBAAI,GACF,OAAO,CACT,CACA,OAAA,CAAQ,EAAM,GAAe,GAC3B,MAAM,EAAQ,KAAK,MACnB,IAAI,EACJ,GAAI,GAAQ,EAAM,MAChB,EAAU,QAAQ,OAAO,IAAI,MAAM,8DAC9B,CACL,MAAM,EAAY,IAAI,gBAAgB,IAAI,KAAK,CAAC,gBAAiB,CAC/D,KAAM,qBAEF,EAAS,IAAI,OAAO,GAC1B,EAAU,IAAI,SAAQ,CAAC,EAAS,KAC9B,EAAO,iBAAiB,SAAU,GAAU,EAAO,EAAM,SACzD,EAAO,iBAAiB,WAAY,IAClC,MAAM,EAAM,IAAI,gBAAgB,EAAM,KAAM,GAC5C,EAAI,SAAW,KAAK,SACpB,EAAI,KAAO,KAAK,KAChB,EAAI,KAAO,KAAK,KAChB,IAAI,gBAAgB,GACpB,EAAQ,EAAI,IAEd,MAAM,EAAe,EAAe,CAAC,EAAM,KAAK,QAAU,GAC1D,EAAO,YAAY,CACjB,UAAW,aAAa,SACxB,KAAM,EAAM,KACZ,QACC,EAAa,GAEpB,CACA,OAAO,CACT,CACA,QAAA,CAAS,GACP,MAAM,EAAO,KAAK,MACZ,EAAO,EAAI,MACX,EAAQ,KAAK,IAAI,EAAK,MAAO,EAAK,OAAQ,EAAK,OAErD,GAAI,IADU,KAAK,IAAI,EAAK,MAAO,EAAK,OAAQ,EAAK,OAEnD,QAAQ,MAAM,sBACT,GAAI,EAAI,OAAS,YAAc,KAAK,OAAS,WAClD,QAAQ,MAAM,6CACT,GAAI,EAAI,SAAW,aAAe,KAAK,SAAW,YACvD,QAAQ,MAAM,sCACT,CACL,MAAM,EAAQ,EAAK,KACb,EAAQ,EAAK,KACb,EAAO,EACP,EAAI,EAAO,EACjB,IAAK,IAAI,EAAI,EAAG,EAAI,GAAQ,EAAG,EAAI,IAAK,EAAG,CACzC,MAAM,EAAS,EAAJ,EACL,EAAI,EAAM,EAAK,GAAK,EACpB,EAAI,EAAM,EAAK,GAAK,EACpB,EAAI,EAAM,EAAK,GAAK,EACpB,EAAoD,EAA7C,KAAK,MAAM,EAAI,EAAI,EAAO,EAAI,EAAO,GAClD,EAAM,EAAK,GAAK,EAAM,EAAO,GAC7B,EAAM,EAAK,GAAK,EAAM,EAAO,GAC7B,EAAM,EAAK,GAAK,EAAM,EAAO,EAC/B,CACA,KAAK,aAAc,CACrB,CACA,OAAO,IACT,CACA,cAAA,GACE,GAAI,KAAK,OAAS,WAAY,CAC5B,MAAM,EAAY,KAAK,MAAM,KACvB,EAAY,IAAI,WAAW,EAAU,QAC3C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,EAAI,IAAK,EAC7C,EAAU,GAAoB,IAAf,EAAU,GAE3B,KAAK,MAAM,KAAO,EAClB,KAAK,KAAO,mBACZ,KAAK,aAAc,CACrB,CACA,OAAO,IACT,CACA,cAAA,GACE,GAAI,KAAK,OAAS,mBAAoB,CACpC,MAAM,EAAY,KAAK,MAAM,KACvB,EAAY,IAAI,aAAa,EAAU,QAC7C,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,EAAI,IAAK,EAC7C,EAAU,GAAK,EAAU,GAAK,IAEhC,KAAK,MAAM,KAAO,EAClB,KAAK,KAAO,WACZ,KAAK,aAAc,CACrB,CACA,OAAO,IACT,CACA,mBAAA,GACE,MAAM,EAAO,KAAK,MAAM,KACxB,GAAI,KAAK,OAAS,WAAY,CAC5B,MAAM,EAAS,KAAK,SAAW,YAAc,EAAI,EACjD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAI,EAAG,GAAK,EAC3C,EAAE,UAAU,EAAM,GAAG,sBAAsB,QAAQ,EAAM,GAE3D,KAAK,SAAW,aAChB,KAAK,aAAc,CACrB,MACE,QAAQ,MAAM,kDAEhB,OAAO,IACT,CACA,mBAAA,GACE,MAAM,EAAO,KAAK,MAAM,KACxB,GAAI,KAAK,OAAS,WAAY,CAC5B,MAAM,EAAS,KAAK,SAAW,YAAc,EAAI,EACjD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAI,EAAG,GAAK,EAC3C,EAAE,UAAU,EAAM,GAAG,sBAAsB,QAAQ,EAAM,GAE3D,KAAK,SAAW,eAChB,KAAK,aAAc,CACrB,MACE,QAAQ,MAAM,kDAEhB,OAAO,IACT,CACA,aAAA,GACE,GAAI,KAAK,SAAW,YAAa,CAC/B,MAAM,EAAO,KAAK,MAAM,MAClB,EAAU,KAAK,MAAM,KACrB,EAAW,IAAI,EAAQ,YAAY,GAAQ,EAAI,GAC/C,EAAW,KAAK,OAAS,WAAa,EAAI,IAChD,IAAK,IAAI,EAAI,EAAG,EAAI,EAAG,EAAI,EAAQ,OAAQ,EAAI,EAAG,GAAK,EAAG,GAAK,EAC7D,EAAS,EAAI,GAAK,EAAQ,EAAI,GAC9B,EAAS,EAAI,GAAK,EAAQ,EAAI,GAC9B,EAAS,EAAI,GAAK,EAAQ,EAAI,GAC9B,EAAS,EAAI,GAAK,EAEpB,KAAK,MAAM,KAAO,EAClB,KAAK,OAAS,YACd,KAAK,aAAc,CACrB,CACA,OAAO,IACT,CACA,aAAA,GACE,MAAM,EAAQ,KAAK,MAAM,MACnB,EAAS,KAAK,MAAM,OAAS,KAAK,MAAM,MACxC,EAAU,IAAI,aAAa,KAAK,MAAM,KAAM,EAAO,GAUzD,OATA,EAAQ,KAAO,KAAK,KACpB,EAAQ,KAAO,KAAK,KACpB,EAAQ,OAAS,KAAK,OACtB,EAAQ,SAAW,KAAK,SACxB,EAAQ,UAAY,cACpB,EAAQ,UAAY,cACpB,EAAQ,MAAQ,KAAK,MACrB,EAAQ,MAAQ,KAAK,MACrB,EAAQ,iBAAkB,EACnB,CACT,CACA,WAAO,CAAK,GACV,MAAM,EAAQ,EAAQ,OAChB,MAAE,EAAK,OAAE,GAAW,EACpB,EAAO,KAAK,IAAI,EAAO,GAC7B,IAAI,EACJ,GAAI,aAAiB,MAAO,CAE1B,EADqB,aAAa,KAAK,GACnB,KACpB,MAAM,EAAiB,IAAI,WAAW,GAAQ,EAAI,GAClD,GAAI,EAAQ,EACV,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAC1B,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAC1B,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAAG,CAC7B,MAAM,EAAwC,GAAlC,EAAI,EAAI,EAAO,EAAI,EAAO,GAChC,EAAwC,GAAlC,EAAI,EAAI,EAAO,EAAI,EAAO,GACtC,EAAe,EAAK,GAAK,EAAK,EAAK,GACnC,EAAe,EAAK,GAAK,EAAK,EAAK,GACnC,EAAe,EAAK,GAAK,EAAK,EAAK,EACrC,MAIJ,IAAK,IAAI,EAAI,EAAG,EAAI,GAAQ,EAAG,EAAI,IAAK,EAAG,CACzC,MAAM,EAAS,EAAJ,EACL,EAAS,EAAJ,EACX,EAAe,EAAK,GAAK,EAAK,EAAK,GACnC,EAAe,EAAK,GAAK,EAAK,EAAK,GACnC,EAAe,EAAK,GAAK,EAAK,EAAK,EACrC,CAEF,EAAO,CACT,MACE,EAAO,EAAM,KAAK,QAEpB,MAAM,EAAM,IAAI,gBAAgB,EAAM,GAItC,OAHA,EAAI,KAAO,EAAQ,KACnB,EAAI,SAAW,EAAQ,SACvB,EAAI,KAAO,EAAQ,KACZ,CACT,CACA,oBAAO,CAAc,GACnB,MAAM,EAAO,IAAI,aAAa,GAAQ,EAAI,GACpC,EAAI,GAAK,EAAO,GACtB,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAC1B,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAC1B,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAAG,CAC7B,MAAM,EAAwC,GAAlC,EAAI,EAAI,EAAO,EAAI,EAAO,GACtC,EAAK,EAAK,GAAK,EAAI,EACnB,EAAK,EAAK,GAAK,EAAI,EACnB,EAAK,EAAK,GAAK,EAAI,CACrB,CAGJ,MAAM,EAAM,IAAI,gBAAgB,EAAM,GAEtC,OADA,EAAI,KAAO,UACJ,CACT,GAIE,iBAAmB,suFAGnB,UAAY,cAAc,OAC5B,WAAA,CAAY,GAAK,cACf,EAAgB,cAAc,OAAM,yBACpC,GAA2B,GACzB,CAAC,GACH,MAAM,YAAa,iBAAkB,CACnC,gBACA,SAAU,IAAI,IAAI,CAChB,CAAC,MAAO,IAAI,UAAU,OACtB,CAAC,QAAS,IAAI,UAAU,IAAI,WAC5B,CAAC,SAAU,IAAI,UAAU,IAAI,WAC7B,CAAC,YAAa,IAAI,UAAU,OAC5B,CAAC,YAAa,IAAI,UAAU,WAGhC,KAAK,yBAA2B,EAChC,KAAK,cAAgB,cACrB,KAAK,eAAiB,KAAK,cAC3B,KAAK,iBAAiB,eACtB,KAAK,OAAO,EACd,CACA,iBAAA,GACE,OAAO,KAAK,cACd,CACA,gBAAA,GACE,OAAO,KAAK,aACd,CACA,gBAAA,CAAiB,GACf,MAAM,EAAU,KAAK,QACf,EAAM,KAAK,SACjB,OAAQ,GACN,KAAK,cACH,EAAQ,IAAI,4BAA6B,uBACzC,MACF,KAAK,gBACH,EAAQ,IAAI,4BAA6B,SACzC,MACF,QACE,QAAQ,MAAM,8BAA+B,GAGjD,GAAY,OAAR,EAEF,OADA,KAAK,eAAiB,EAAI,WAAa,gBAAkB,EAAQ,EAAI,SAC7D,KAAK,gBACX,KAAK,cACH,EAAQ,IAAI,uBAAwB,uBACpC,MACF,KAAK,gBACH,EAAQ,IAAI,uBAAwB,SACpC,MACF,QACE,QAAQ,MAAM,4BAA6B,EAAI,UAIjD,KAAK,gBAAkB,IACzB,KAAK,cAAgB,EACrB,KAAK,aAET,CACA,MAAA,GACE,OAAO,KAAK,SAAS,IAAI,OAAO,KAClC,CACA,MAAA,CAAO,GACL,MAAM,EAAU,KAAK,QACf,EAAW,KAAK,SACtB,GAAI,KAAK,WAAa,EAAK,CACzB,MAAM,EAAQ,EAAI,MAgBlB,GAfA,EAAQ,QACR,EAAQ,IAAI,WAAY,KAAK,IAAI,EAAM,MAAO,EAAM,QAAQ,QAAQ,KACpE,EAAQ,IAAI,mBAAoB,EAAI,EAAM,OAAO,QAAQ,KACzD,EAAQ,IAAI,oBAAqB,EAAI,EAAM,QAAQ,QAAQ,KAC3D,EAAS,IAAI,OAAO,MAAQ,EAC5B,EAAS,IAAI,aAAa,MAAQ,KAClC,EAAS,IAAI,aAAa,MAAQ,KAC9B,EAAI,OAAS,YAAc,EAAI,OAAS,gBAC1C,EAAQ,IAAI,qBAAsB,KAEhC,EAAM,MAAQ,EAAM,OACtB,EAAQ,IAAI,uBAAwB,KAC3B,aAAe,gBACxB,EAAQ,IAAI,SAAU,KAEpB,aAAe,gBAAiB,CAClC,MAAM,EAAM,EAAI,UACV,EAAM,EAAI,UACF,IAAV,EAAI,GAAqB,IAAV,EAAI,GAAqB,IAAV,EAAI,GAAqB,IAAV,EAAI,GAAqB,IAAV,EAAI,GAAqB,IAAV,EAAI,IACjF,EAAQ,IAAI,sBAAuB,KACnC,EAAS,IAAI,aAAa,MAAQ,EAAI,QACtC,EAAS,IAAI,aAAa,MAAQ,EAAI,QAE1C,CACA,KAAK,oCACL,KAAK,oBACL,KAAK,iBAAiB,KAAK,eAC3B,KAAK,YACP,CACF,CACA,iBAAA,GACE,MAAM,EAAM,KAAK,SACX,EAAO,KAAK,IAAI,EAAI,MAAM,MAAO,EAAI,MAAM,QAC3C,EAAQ,KAAK,SAAS,IAAI,SAAS,MACnC,EAAS,KAAK,SAAS,IAAI,UAAU,MAC3C,GAAI,KAAK,QAAQ,IAAI,6BACnB,GAAI,KAAK,QAAQ,IAAI,uBAAwB,CAC3C,MAAM,EAAc,EAAI,UAAU,QAAQ,IAAI,EAAI,WAClD,EAAM,UAAU,EAAO,GAAG,OAAO,GACjC,EAAO,KAAK,EAAI,WAAW,SAAS,SAAS,EAC/C,MACE,EAAM,UAAU,EAAO,GACvB,EAAO,UAAU,QAGnB,GAAI,KAAK,QAAQ,IAAI,uBAAwB,CAC3C,MAAM,EAAc,EAAI,UAAU,QAAQ,IAAI,EAAI,WAAW,eAAe,GAC5E,EAAM,UAAU,EAAO,GAAG,OAAO,GACjC,EAAO,KAAK,EAAI,WAAW,SAAS,SAAS,GAAO,UAAU,GAAK,EAAI,GACzE,MACE,EAAM,WAAW,EAAO,GAAK,GAC7B,EAAO,UAAU,GAAK,EAAI,GAGhC,CACA,iCAAA,GACE,MAAM,EAAM,KAAK,SACjB,EAAI,UAAY,cAChB,EAAI,UAAY,cAChB,KAAK,QAAQ,OAAO,6BAChB,KAAK,0BAAoC,OAAR,IAC/B,aAAe,gBACjB,KAAK,QAAQ,IAAI,4BAA6B,KAC9C,EAAI,UAAY,eAChB,EAAI,UAAY,gBAEhB,QAAQ,KAAK,oDAGjB,EAAI,aAAc,CACpB,CACA,kCAAA,CAAmC,GACjC,KAAK,yBAA2B,EAChC,KAAK,oCACL,KAAK,oBACL,KAAK,YACP,GAIE,iBAAmB,mQAGnB,YAAc,cAAc,OAC9B,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,YACpC,GAAc,GACZ,CAAC,GACH,MAAM,cAAe,iBAAkB,CAAE,kBACzC,KAAK,YAAc,CACrB,CACA,eAAI,GACF,OAAO,KAAK,QAAQ,IAAI,cAC1B,CACA,eAAI,CAAY,GACV,KAAK,cAAgB,IACnB,EACF,KAAK,QAAQ,IAAI,cAAe,KAEhC,KAAK,QAAQ,OAAO,eAEtB,KAAK,aAET,mBAKS,uBACO,iCACE,6BACL,uBACF,8BACS,wCACC,wBAChB,QAGP,IAAI,iBAAmB,uiCAGnB,iBAAmB,sIAGnB,cAAgB,cAAc,OAChC,WAAA,CAAY,EAAO,GAAQ,cACzB,EAAgB,cAAc,OAAM,eACpC,EAAiB,KAAI,aACrB,EAAe,EAAC,WAChB,EAAa,EAAC,iBACd,EAAmB,SAAQ,gBAC3B,EAAkB,QAAO,gBACzB,EAAkB,GAAG,MACrB,EAAQ,QAAQ,UAAS,OACzB,EAAS,QAAQ,UAAS,WAC1B,EAAa,WAAW,WAAU,KAClC,GAAO,EAAK,KACZ,GAAO,GACL,CAAC,GACH,MAAM,gBAAiB,iBAAkB,CACvC,SAAU,IAAI,IAAI,CAChB,CAAC,cAAe,IAAI,UAAU,OAC9B,CAAC,cAAe,IAAI,UAAU,OAC9B,CAAC,eAAgB,IAAI,UAAU,IAC/B,CAAC,mBAAoB,IAAI,UAAU,IAAI,OAAO,KAC9C,CAAC,kBAAmB,IAAI,UAAU,IAAI,OAAO,KAC7C,CAAC,QAAS,IAAI,UAAU,IACxB,CAAC,eAAgB,IAAI,UAAU,IAC/B,CAAC,iBAAkB,IAAI,UAAU,WAGrC,KAAK,UAAU,iBAAiB,UAAW,IACrC,KAAK,UAAU,qBAAuB,cAAc,MACtD,KAAK,QAAQ,IAAI,QAAS,KAE1B,KAAK,QAAQ,OAAO,SAEtB,KAAK,YAAY,IAEnB,KAAK,UAAU,iBAAiB,GAChC,KAAK,kBAAkB,GACvB,KAAK,KAAO,EACZ,KAAK,MAAQ,EACb,KAAK,OAAS,EACd,KAAK,iBAAmB,IAAI,oBAAoB,EAAG,EAAG,CACpD,UAAW,eACX,UAAW,eACX,eAAe,EACf,OAAQ,cAEV,KAAK,iBAAiB,QAAQ,KAAO,eACrC,KAAK,SAAS,IAAI,eAAe,MAAQ,KAAK,iBAAiB,QAC/D,KAAK,oBAAsB,KAAK,iBAAiB,QACjD,KAAK,oBAAoB,QAAQ,KAAO,gBACxC,KAAK,oBAAoB,aAAc,EACvC,KAAK,2BAA6B,KAAK,oBAAoB,QAC3D,KAAK,2BAA2B,QAAQ,KAAO,uBAC/C,KAAK,UAAY,IAAI,UACrB,KAAK,UAAU,mBAAqB,IAAI,OAAO,GAC/C,KAAK,UAAU,mBAAqB,EACpC,KAAK,UAAY,IAAI,UAAU,EAAO,GACtC,KAAK,SAAW,IAAI,WAAW,EAAO,EAAQ,IAAI,wBAAwB,KAAK,UAAU,QAAS,IAClG,MAAM,EAAY,KAAK,SAAS,eAChC,EAAU,mBAAqB,IAAI,OAAO,UAC1C,EAAU,mBAAqB,EAC/B,KAAK,SAAW,IAAI,SAAS,CAAE,kBAAiB,QAAO,SAAQ,eAC/D,KAAK,SAAS,WAAW,UAAY,KACrC,KAAK,KAAO,EACZ,KAAK,YAAc,IAAI,WAAW,IAAI,iBACd,KAAK,YAAY,wBACzB,SAAS,YAAY,MAAQ,KAAK,iBAAiB,QACnE,KAAK,KAAO,EACZ,KAAK,UAAY,IAAI,UACrB,KAAK,UAAU,SAAS,IACxB,KAAK,WAAa,CACpB,CACA,cAAI,GACF,OAAO,KAAK,SAAS,UACvB,CACA,SAAI,GACF,OAAO,KAAK,WAAW,KACzB,CACA,SAAI,CAAM,GACR,KAAK,WAAW,MAAQ,CAC1B,CACA,UAAI,GACF,OAAO,KAAK,WAAW,MACzB,CACA,UAAI,CAAO,GACT,KAAK,WAAW,OAAS,CAC3B,CACA,kBAAI,GACF,OAAO,KAAK,UAAU,KACxB,CACA,kBAAI,CAAe,GACjB,KAAK,UAAU,MAAQ,CACzB,CACA,aAAI,GACF,OAAO,KAAK,SAAS,SACvB,CACA,aAAI,CAAU,GACZ,KAAK,SAAS,UAAY,CAC5B,CACA,cAAI,GACF,OAAO,KAAK,SAAS,UACvB,CACA,cAAI,CAAW,GACb,KAAK,SAAS,WAAa,CAC7B,CACA,QAAI,GACF,OAAO,KAAK,SAAS,WACvB,CACA,QAAI,CAAK,GACP,KAAK,SAAS,WAAW,GACzB,KAAK,SAAS,IAAI,eAAe,MAAQ,EAAQ,KAAK,2BAA2B,QAAU,KAAK,oBAAoB,OACtH,CACA,QAAI,GACF,OAAO,KAAK,QAAQ,IAAI,QAC1B,CACA,QAAI,CAAK,GACH,KAAK,OAAS,IACZ,EACF,KAAK,QAAQ,IAAI,QAAS,KAE1B,KAAK,QAAQ,OAAO,SAEtB,KAAK,aAET,CACA,iBAAA,CAAkB,GACA,OAAZ,GACF,EAAQ,MAAQ,EAAQ,MAAQ,gBAChC,KAAK,QAAQ,IAAI,cAAe,KAChC,KAAK,SAAS,IAAI,kBAAkB,MAAQ,EAC5C,KAAK,gBAAgB,oBAErB,KAAK,QAAQ,OAAO,eACpB,KAAK,SAAS,IAAI,kBAAkB,MAAQ,KAC5C,KAAK,gBAAgB,OAEvB,KAAK,YACP,CACA,kBAAA,GACE,OAAO,KAAK,WAAW,KACzB,CACA,kBAAA,CAAmB,GACjB,KAAK,WAAW,MAAQ,CAC1B,CACA,YAAA,CAAa,GAEX,OADA,KAAK,UAAU,IAAI,GACZ,IACT,CACA,cAAA,GAEE,OADA,KAAK,UAAU,QACR,IACT,CACA,YAAA,CAAa,GAEX,OADA,KAAK,UAAU,IAAI,GACZ,IACT,CACA,cAAA,CAAe,GAEb,OADA,KAAK,UAAU,OAAO,GACf,IACT,CACA,MAAA,CAAO,EAAU,EAAa,GAC5B,MAAM,EAAQ,KAAK,MACb,EAAS,KAAK,OACd,EAAY,KAAK,UACjB,EAAQ,KAAK,SAAS,IAAI,SAC1B,EAAa,EAAM,WACnB,EAAO,EAAO,OAAO,KACvB,EAAU,KAAO,GACnB,EAAM,WAAa,KACnB,EAAM,MAAQ,EACV,KAAK,WAAa,IACpB,EAAM,MAAqD,KAA7C,KAAK,IAAI,KAAK,KAAO,KAAK,WAAa,IAAc,MAErE,KAAK,MAAQ,EACb,EAAU,YAAW,GACrB,KAAK,UAAU,OAAO,GACtB,EAAU,YAAW,GACrB,EAAO,OAAO,IAAI,EAAU,YAC5B,KAAK,SAAS,OAAO,EAAU,KAAK,kBACpC,EAAO,OAAO,KAAO,EACrB,EAAM,WAAa,EACnB,KAAK,YAAY,OAAO,EAAU,KAAM,KAAK,qBACzC,KAAK,MACP,KAAK,SAAS,OAAO,EAAU,KAAK,oBAAqB,KAAK,6BAEvD,KAAK,KAAO,IACrB,KAAK,UAAU,OAAO,EAAU,KAAK,kBACrC,KAAK,KAAO,EAEhB,CACA,OAAA,CAAQ,EAAO,GACb,KAAK,SAAS,QAAQ,EAAO,GAC7B,KAAK,iBAAiB,QAAQ,EAAO,GACrC,MAAM,EAAI,KAAK,WAAW,MACpB,EAAI,KAAK,WAAW,OAC1B,KAAK,UAAU,QAAQ,EAAG,GAC1B,KAAK,oBAAoB,QAAQ,EAAG,GACpC,KAAK,2BAA2B,QAAQ,EAAG,GAC3C,KAAK,YAAY,wBAAwB,aAAa,EAAI,EAAG,EAAI,EACnE,CACA,UAAA,CAAW,EAAU,EAAO,GAC1B,KAAK,SAAS,WAAW,EAAU,EAAO,yBAClB,IAApB,IACF,KAAK,UAAU,WAAW,EAAU,EAAO,GAC3C,KAAK,SAAS,WAAW,EAAU,EAAO,GAC1C,KAAK,YAAY,WAAW,EAAU,EAAO,GAEjD,qBAIkB,qBAAsB,cAAiB,QAG3D,IAAI,iBAAmB,2IAGnB,iBAAmB,cAAc,OACnC,WAAA,CAAY,EAAc,IACxB,MAAM,mBAAoB,iBAAkB,CAC1C,SAAU,IAAI,IAAI,CAChB,CAAC,SAAU,IAAI,WAAU,IACzB,CAAC,IAAK,IAAI,UAAU,IAAI,gBAG5B,KAAK,WAAa,IAAI,UACtB,KAAK,YAAc,CACrB,CACA,cAAA,GACE,OAAO,KAAK,WACd,CACA,cAAA,CAAe,IACb,EAAc,KAAK,MAAM,IACP,EAAI,IACpB,GAAe,GAEjB,MAAM,EAAW,KAAK,SACtB,EAAS,IAAI,UAAU,MAAQ,EAAc,EAC7C,EAAS,IAAI,KAAK,MAAM,IAAI,EAAa,GAAa,OAAO,KAAK,YAClE,KAAK,YAAc,CACrB,CACA,OAAA,CAAQ,EAAO,GACb,KAAK,WAAW,IAAI,EAAO,GAC3B,KAAK,eAAe,KAAK,YAC3B,qBAIkB,qBAAsB,aAAgB,QAG1D,IAAI,iBAAmB,2yGAGnB,qBAAuB,cAAc,OACvC,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,MACpC,EAAQ,EAAC,YACT,EAAc,GAAE,MAChB,EAAQ,GAAG,mBACX,EAAqB,GAAG,cACxB,EAAgB,EAAC,KACjB,EAAO,GAAG,OACV,EAAS,GAAG,QACZ,EAAU,EAAC,MACX,EAAQ,EAAC,QACT,EAAU,EAAC,UACX,GAAY,EAAK,UACjB,GAAY,EAAK,SACjB,GAAW,GACT,CAAC,GACH,MAAM,uBAAwB,iBAAkB,CAC9C,gBACA,WAAY,gBAAgB,YAAc,gBAAgB,MAC1D,SAAU,IAAI,IAAI,CAChB,CAAC,QAAS,IAAI,UAAU,IACxB,CAAC,cAAe,IAAI,UAAU,IAC9B,CAAC,QAAS,IAAI,UAAU,IACxB,CAAC,qBAAsB,IAAI,UAAU,IACrC,CAAC,gBAAiB,IAAI,UAAU,IAChC,CAAC,OAAQ,IAAI,UAAU,IACvB,CAAC,SAAU,IAAI,UAAU,IACzB,CAAC,UAAW,IAAI,UAAU,IAC1B,CAAC,MAAO,IAAI,UAAU,WAG1B,KAAK,MAAQ,EACb,KAAK,QAAU,EACf,KAAK,UAAY,EACjB,KAAK,UAAY,EACjB,KAAK,SAAW,CAClB,CACA,SAAI,GACF,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,aAC1C,CACA,SAAI,CAAM,GACR,MAAM,EAAI,KAAK,MAAM,GACrB,KAAK,QAAQ,IAAI,YAAa,EAAE,QAAQ,IACxC,KAAK,QAAQ,IAAI,cAAe,EAAE,QAAQ,IAC1C,KAAK,YACP,CACA,WAAI,GACF,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,eAC1C,CACA,WAAI,CAAQ,GACV,MAAM,EAAI,KAAK,MAAM,GACrB,KAAK,QAAQ,IAAI,cAAe,EAAE,QAAQ,IAC1C,KAAK,QAAQ,IAAI,gBAAiB,EAAE,QAAQ,IAC5C,KAAK,YACP,CACA,aAAI,GACF,OAAO,KAAK,QAAQ,IAAI,aAC1B,CACA,aAAI,CAAU,GACR,KAAK,YAAc,IACjB,EACF,KAAK,QAAQ,IAAI,aAAc,KAE/B,KAAK,QAAQ,OAAO,cAEtB,KAAK,aAET,CACA,aAAI,GACF,OAAO,KAAK,QAAQ,IAAI,aAC1B,CACA,aAAI,CAAU,GACR,KAAK,YAAc,IACjB,GACF,KAAK,QAAQ,IAAI,aAAc,KAC/B,KAAK,SAAS,IAAI,OAAO,MAAQ,IAAI,SAAS,GAAK,EAAG,GAAK,KAE3D,KAAK,QAAQ,OAAO,cACpB,KAAK,SAAS,IAAI,OAAO,MAAQ,MAEnC,KAAK,aAET,CACA,YAAI,GACF,OAAO,KAAK,QAAQ,IAAI,WAC1B,CACA,YAAI,CAAS,GACP,KAAK,WAAa,IAChB,EACF,KAAK,QAAQ,IAAI,WAAY,KAE7B,KAAK,QAAQ,OAAO,YAEtB,KAAK,aAET,qBAIkB,qBAAsB,cAAiB,QAG3D,IAAI,iBAAmB,kOAGnB,eAAiB,cAAc,OACjC,WAAA,EAAY,cAAE,EAAgB,cAAc,QAAO,QAAE,EAAU,MAAS,CAAC,GACvE,MAAM,iBAAkB,iBAAkB,CACxC,gBACA,SAAU,IAAI,IAAI,CAChB,CAAC,QAAS,IAAI,UAAU,QAG5B,KAAK,WAAa,IAAI,UACtB,KAAK,QAAU,CACjB,CACA,UAAA,GACE,OAAO,KAAK,OACd,CACA,UAAA,CAAW,GACT,KAAK,QAAU,EACf,KAAK,QAAQ,KAAK,WAAW,EAAG,KAAK,WAAW,EAClD,CACA,OAAA,CAAQ,EAAO,GACb,KAAK,WAAW,IAAI,EAAO,GAC3B,KAAK,SAAS,IAAI,SAAS,MAAQ,KAAK,MAAM,EAAS,KAAK,QAC9D,qBAIkB,qBAAsB,qBAAsB,aAAgB,QAGhF,IAAI,iBAAmB,omBAGnB,iBAAmB,2HAGnB,QAAoB,GAAV,KAAK,GACf,GAAK,IAAI,SACT,GAAK,IAAI,SACT,gBAAkB,cAAc,OAClC,WAAA,CAAY,EAAQ,EAAY,IAAI,UAAY,MAC9C,EAAQ,EAAC,UACT,EAAY,EAAC,SACb,EAAW,GAAG,UACd,EAAY,KACV,CAAC,GACH,MAAM,kBAAmB,iBAAkB,CACzC,aAAc,iBACd,SAAU,IAAI,IAAI,CAChB,CAAC,SAAU,IAAI,WAAU,IACzB,CAAC,SAAU,IAAI,UAAU,IAAI,UAAU,GAAK,MAC5C,CAAC,iBAAkB,IAAI,UAAU,IACjC,CAAC,OAAQ,IAAI,UAAU,IACvB,CAAC,SAAU,IAAI,WAAW,IAC1B,CAAC,YAAa,IAAI,UAAU,IAC5B,CAAC,WAAY,IAAI,UAAU,IAC3B,CAAC,YAAa,IAAI,UAAU,QAGhC,KAAK,OAAS,EACd,KAAK,UAAY,EACjB,KAAK,eAAiB,KAAK,SAAS,IAAI,UAAU,MAClD,KAAK,MAAQ,EACb,KAAK,KAAO,EACZ,KAAK,QAAS,CAChB,CACA,OAAA,GACE,KAAK,KAAO,EACZ,KAAK,QAAS,EACd,KAAK,SAAS,IAAI,UAAU,OAAQ,CACtC,CACA,MAAA,CAAO,EAAU,EAAa,GAC5B,MAAM,EAAY,KAAK,UACjB,EAAS,KAAK,OACd,EAAW,KAAK,SAChB,EAAgB,EAAS,IAAI,UACnC,GAAI,KAAK,OAAQ,CACf,MAAM,EAAW,EAAS,IAAI,YAAY,MAC1C,EAAO,kBAAkB,IACzB,GAAG,KAAK,EAAO,UAAU,IAAI,GAC7B,EAAc,MAAQ,GAAG,QAAQ,IAAM,QACnC,EAAc,QAChB,EAAS,IAAI,kBAAkB,MAAQ,EAAO,SAAS,WAAW,GAClE,GAAG,KAAK,GAAW,QAAQ,GAC3B,KAAK,eAAe,IAAiB,IAAZ,GAAG,EAAI,GAAuB,IAAZ,GAAG,EAAI,KAEpD,KAAK,MAAQ,EAAQ,KAAK,MAC1B,MAAM,EAAS,KAAK,KAAO,EAC3B,EAAS,IAAI,UAAU,MAAQ,EAC3B,GAAyD,GAA9C,EAAS,IAAI,aAAa,MAAQ,KAC/C,KAAK,QAAS,EACd,EAAc,OAAQ,EAE1B,CACF,+BAKqB,4BACZ,uBACO,gCACC,6BACH,gCACM,+BACP,gCACO,wCACC,wBAChB,QACP,IAAI,qBAAuB,cAAc,YACvC,WAAA,CAAY,EAAO,EAAQ,GACzB,MAAM,GACN,KAAK,cAAc,KAAK,gBAAkB,gBAAgB,OAC1D,KAAK,OAAS,EACd,KAAK,UAAY,IAAI,UAAU,EAAO,GACtC,KAAK,UAAY,IAAI,WAAU,GAAM,GAAO,GAC5C,KAAK,UAAU,mBAAqB,IAAI,OAAO,GAC/C,KAAK,cAAgB,IAAI,WAAW,IAAI,mBACxC,MAAM,EAAoB,KAAK,kBAC/B,EAAkB,SAAS,aAAa,MAAQ,KAAK,UAAU,QAC/D,EAAkB,QAAQ,gBAAkB,kBAAkB,QAAQ,GACtE,EAAkB,aAAa,aAC/B,KAAK,mBAAqB,IAAI,oBAAoB,EAAG,EAAG,CACtD,UAAW,eACX,UAAW,eACX,eAAe,EACf,aAAa,IAEf,KAAK,mBAAmB,QAAQ,KAAO,eACvC,KAAK,mBAAmB,QAAQ,iBAAkB,EAClD,KAAK,UAAY,IAAI,UACrB,KAAK,UAAU,SAAS,GAC1B,CACA,qBAAI,GACF,OAAO,KAAK,cAAc,uBAC5B,CACA,YAAI,GACF,OAAO,KAAK,kBAAkB,iBAAmB,cACnD,CACA,YAAI,CAAS,GACX,KAAK,kBAAkB,aAAa,EAAQ,eAAiB,YAC/D,CACA,oBAAI,GACF,OAAQ,KAAK,kBAAkB,OACjC,CACA,oBAAI,CAAiB,GACnB,KAAK,kBAAkB,SAAW,CACpC,CACA,eAAA,CAAgB,EAAc,EAAe,oBAC3C,MAAM,EAAW,KAAK,cAAc,wBACpC,EAAS,SAAS,aAAa,MAAQ,EACvC,EAAS,QAAQ,gBAAkB,EAAa,QAAQ,GACxD,EAAS,aAAc,CACzB,CACA,MAAA,CAAO,EAAU,EAAa,GAC5B,MAAM,EAAS,KAAK,OACd,EAAY,KAAK,UACjB,EAAe,KAAK,mBACpB,EAAO,EAAO,OAAO,KAC3B,EAAO,OAAO,IAAI,EAAU,YAC5B,KAAK,UAAU,OAAO,GACtB,EAAO,OAAO,KAAO,EACrB,KAAK,UAAU,OAAO,EAAU,GAChC,KAAK,cAAc,OAAO,EAAU,EAAa,GACjD,MAAM,OAAO,EAAU,EAAc,EACvC,CACA,OAAA,CAAQ,EAAO,GACb,MAAM,QAAQ,EAAO,GACrB,KAAK,UAAU,QAAQ,EAAO,GAC9B,KAAK,UAAU,QAAQ,EAAO,GAC9B,KAAK,cAAc,QAAQ,EAAO,GAClC,KAAK,mBAAmB,QAAQ,EAAO,EACzC,CACA,UAAA,CAAW,EAAU,EAAO,GAC1B,MAAM,WAAW,EAAU,EAAO,GAClC,KAAK,UAAU,WAAW,EAAU,EAAO,GAC3C,KAAK,UAAU,WAAW,EAAU,EAAO,GAC3C,KAAK,cAAc,WAAW,EAAU,EAAO,GAC1C,GAAS,IAAoB,qBAChC,KAAK,mBAAmB,QAAQ,OAAS,kBAEnB,IAApB,IACF,KAAK,mBAAmB,QAAQ,KAAO,EAE3C,qBAIkB,cAAiB,QAGrC,IAAI,iBAAmB,2YAGnB,YAAc,cAAc,OAC9B,WAAA,EAAY,cAAE,EAAgB,cAAc,OAAM,UAAE,EAAY,GAAM,CAAC,GACrE,MAAM,cAAe,iBAAkB,CACrC,gBACA,SAAU,IAAI,IAAI,CAChB,CAAC,YAAa,IAAI,UAAU,OAGlC,+BAKqB,4BACZ,uBACO,gCACC,6BACH,yBACD,YACb,mBACW,qBACA,+BACU,wBAChB,QAGP,IAAI,2BAA6B,qQAG7B,yBAA2B,6tiEAG3B,iBAAmB,mgCAGnB,iBAAmB,2JAGnB,WAAa,cAAc,OAC7B,WAAA,CAAY,EAAa,EAAW,EAAS,WAAW,KAAM,EAAoB,kBAAkB,OAClG,MAAM,aAAc,iBAAkB,CACpC,aAAc,iBACd,cAAe,cAAc,OAC7B,WAAY,gBAAgB,YAAc,gBAAgB,MAC1D,SAAU,IAAI,IAAI,CAChB,CAAC,YAAa,IAAI,UAAU,WAGhC,KAAK,kBAAoB,IAAI,oBAAoB,EAAG,EAAG,CACrD,UAAW,eACX,eAAe,EACf,aAAa,EACb,OAAQ,cAEV,KAAK,kBAAkB,QAAQ,KAAO,aACtC,KAAK,oBAAsB,KAAK,kBAAkB,QAClD,KAAK,oBAAoB,QAAQ,KAAO,eACxC,KAAK,oBAAoB,QAAQ,OAAS,YAC1C,KAAK,SAAS,IAAI,aAAa,MAAQ,KAAK,oBAAoB,QAChE,KAAK,UAAY,IAAI,WAAU,GAAM,GAAO,GAC5C,KAAK,UAAU,mBAAqB,IAAI,OAAO,GAC/C,KAAK,UAAU,mBAAqB,EACpC,KAAK,kBAAoB,IAAI,WAAW,IAAI,sBAAsB,IAAI,UAAa,IACnF,KAAK,YAAc,IAAI,WAAW,IAAI,qBACtC,MAAM,EAAgB,IAAI,QAAQ,GAClC,EAAc,KAAO,cACrB,EAAc,UAAY,eAC1B,EAAc,UAAY,eAC1B,EAAc,OAAS,YACvB,EAAc,iBAAkB,EAChC,EAAc,aAAc,EAC5B,EAAc,OAAQ,EACtB,MAAM,EAAc,IAAI,QAAQ,GAChC,EAAY,KAAO,YACnB,EAAY,UAAY,eACxB,EAAY,UAAY,eACxB,EAAY,OAAS,YACrB,EAAY,iBAAkB,EAC9B,EAAY,aAAc,EAC1B,EAAY,OAAQ,EACpB,MAAM,EAAkB,KAAK,YAAY,wBACzC,EAAgB,SAAS,cAAc,MAAQ,EAC/C,EAAgB,SAAS,YAAY,MAAQ,EAC7C,KAAK,YAAY,EACnB,CACA,yBAAI,GACF,OAAO,KAAK,kBAAkB,uBAChC,CACA,sBAAI,GACF,OAAO,KAAK,qBACd,CACA,mBAAI,GACF,OAAO,KAAK,YAAY,uBAC1B,CACA,yBAAA,CAA0B,GACxB,KAAK,kBAAkB,wBAAwB,0BAA0B,EAC3E,CACA,wBAAA,CAAyB,GACvB,KAAK,YAAY,wBAAwB,yBAAyB,EACpE,CACA,WAAA,CAAY,GACV,MAAM,EAAwB,KAAK,sBAC7B,EAAkB,KAAK,gBAC7B,OAAQ,GACN,KAAK,WAAW,IACd,EAAsB,0BAA0B,KAChD,EAAgB,yBAAyB,GACzC,EAAgB,mBAAoB,EACpC,EAAgB,gBAAiB,EACjC,MACF,KAAK,WAAW,OACd,EAAsB,0BAA0B,IAChD,EAAgB,yBAAyB,GACzC,EAAgB,mBAAoB,EACpC,EAAgB,gBAAiB,EACjC,MACF,KAAK,WAAW,KACd,EAAsB,0BAA0B,IAChD,EAAgB,yBAAyB,IACzC,EAAgB,uBAAuB,GACvC,EAAgB,kBAAkB,IAClC,EAAgB,mBAAoB,EACpC,EAAgB,gBAAiB,EACjC,MACF,KAAK,WAAW,MACd,EAAsB,0BAA0B,KAChD,EAAgB,yBAAyB,IACzC,EAAgB,uBAAuB,IACvC,EAAgB,kBAAkB,IAClC,EAAgB,mBAAoB,EACpC,EAAgB,gBAAiB,EAGvC,CACA,eAAA,CAAgB,EAAc,EAAe,oBAC3C,MAAM,EAAW,KAAK,sBACtB,EAAS,SAAS,YAAY,MAAQ,EACtC,EAAS,aAAe,CAC1B,CACA,MAAA,CAAO,EAAU,EAAa,GAC5B,KAAK,UAAU,OAAO,EAAU,KAAK,mBACrC,KAAK,kBAAkB,OAAO,EAAU,EAAa,KAAK,mBAC1D,KAAK,YAAY,OAAO,EAAU,KAAK,kBAAmB,KAAK,oBACjE,CACA,OAAA,CAAQ,EAAO,GACb,MAAM,EAAkB,KAAK,YAAY,wBACnC,EAAwB,KAAK,kBAAkB,wBACrD,KAAK,kBAAkB,QAAQ,EAAO,GACtC,KAAK,oBAAoB,QAAQ,EAAO,GACxC,EAAgB,SAAS,WAAW,MAAM,IAAI,EAAO,GACrD,EAAgB,SAAS,UAAU,MAAM,IAAI,EAAI,EAAO,EAAI,GAC5D,EAAsB,SAAS,UAAU,MAAM,KAAK,EAAgB,SAAS,UAAU,MACzF,CACA,OAAA,GACE,MAAM,EAAW,KAAK,YAAY,wBAAwB,SAC1D,EAAS,cAAc,MAAM,UAC7B,EAAS,YAAY,MAAM,UAC3B,MAAM,SACR,CACA,6BAAW,GACT,OAAO,0BACT,CACA,2BAAW,GACT,OAAO,wBACT,GAEE,WAAa,CACf,IAAK,EACL,OAAQ,EACR,KAAM,EACN,MAAO,+BAKc,4BACZ,uBACO,iCACE,6BACL,uBACF,+BACU,wBAChB,QAGP,IAAI,iBAAmB,gpDAGnB,mBAAqB,GACrB,WAAa,cAAc,OAC7B,WAAA,CAAY,EAAQ,GAAc,cAChC,EAAgB,cAAc,SAAQ,gBACtC,GAAkB,EAAI,qBACtB,GAAuB,EAAI,kBAC3B,EAAoB,KAAI,QACxB,EAAU,EAAC,MACX,EAAQ,EAAC,kBACT,EAAoB,IAAI,gBACxB,EAAkB,IAAI,eACtB,EAAiB,KAAI,aACrB,EAAe,KAAI,eACnB,EAAiB,IAAI,mBACrB,EAAqB,GAAG,OACxB,EAAS,MAAM,UACf,EAAY,EAAC,KACb,EAAO,KAAK,KACZ,EAAO,IACP,MAAO,EAAS,KAAI,gBACpB,EAAkB,EAAC,MACnB,EAAQ,QAAQ,UAAS,OACzB,EAAS,QAAQ,WACf,CAAC,GACH,MAAM,aAAc,iBAAkB,CACpC,gBACA,WAAY,gBAAgB,MAC5B,QAAS,IAAI,IAAI,CACf,CAAC,YAAa,WAEhB,SAAU,IAAI,IAAI,CAChB,CAAC,WAAY,IAAI,UAAU,OAC3B,CAAC,oBAAqB,IAAI,UAAU,OACpC,CAAC,qBAAsB,IAAI,UAAU,IACrC,CAAC,QAAS,IAAI,UAAU,OACxB,CAAC,QAAS,IAAI,UAAU,QAG5B,KAAK,eAAiB,IAAI,oBAAoB,EAAG,EAAG,CAClD,UAAW,eACX,UAAW,eACX,eAAe,EACf,aAAa,EACb,OAAQ,cAEV,KAAK,eAAe,QAAQ,KAAO,YACnC,KAAK,eAAe,QAAQ,iBAAkB,EAC9C,KAAK,SAAS,IAAI,YAAY,MAAQ,KAAK,eAAe,QAC1D,KAAK,WAAa,IAAI,QAAQ,KAAM,EAAO,EAAQ,GACnD,KAAK,EAAI,EACT,KAAK,OAAS,EACd,KAAK,SAAW,IAAI,WAAW,MAC7B,MAAM,EAAe,IAAI,aAAa,mBAAoB,oBAC1D,EAAa,MAAQ,EAAa,MAAQ,gBAC1C,MAAM,EAAW,IAAI,aAAa,GAgBlC,OAfA,EAAS,SAAS,aAAa,MAAQ,EACvC,EAAS,SAAS,UAAU,MAAQ,EACpC,EAAS,SAAS,eAAe,MAAQ,EACzC,EAAS,SAAS,KAAK,MAAQ,EAC/B,EAAS,SAAS,KAAK,MAAQ,EACL,OAAtB,GACF,EAAS,SAAS,kBAAkB,MAAQ,EAC5C,EAAS,QAAQ,aAAe,IAC5B,IACF,KAAK,qBAAuB,EAC5B,KAAK,SAAS,IAAI,qBAAqB,MAAQ,IAGjD,EAAS,SAAS,aAAa,MAAQ,EAElC,CACR,EApB8B,IAqB/B,KAAK,gBAAkB,EACvB,KAAK,QAAU,EACf,KAAK,MAAQ,EACb,KAAK,MAAQ,EACb,KAAK,OAAS,EAAS,EAAI,EAAS,IAAM,EAC1C,KAAK,kBAAkB,EAAmB,GAC1C,KAAK,mBAAmB,EAAgB,EAC1C,CACA,gBAAI,GACF,OAAO,KAAK,SAAS,uBACvB,CACA,WAAI,GACF,OAAO,OAAO,KAAK,aAAa,QAAQ,YAC1C,CACA,WAAI,CAAQ,GACV,MAAM,EAAW,KAAK,aACtB,EAAS,QAAQ,YAAc,EAAM,QAAQ,GAC7C,EAAS,QAAQ,cAAgB,EAAM,QAAQ,GAC/C,EAAS,aAAc,CACzB,CACA,SAAI,GACF,OAAO,OAAO,KAAK,aAAa,QAAQ,aAC1C,CACA,SAAI,CAAM,GACR,MAAM,EAAW,KAAK,aACtB,EAAS,QAAQ,aAAe,EAAM,QAAQ,GAC9C,EAAS,aAAc,CACzB,CACA,UAAI,GACF,OAAO,KAAK,CACd,CACA,UAAI,CAAO,GACT,KAAK,EAAI,KAAK,IAAI,KAAK,IAAI,EAAO,MAAO,GACzC,MAAM,EAAS,KAAK,EAAI,KAAK,WAAW,OAClC,EAAW,KAAK,aACtB,EAAS,QAAQ,OAAS,EAAO,QAAQ,IACzC,EAAS,QAAQ,WAAa,EAAS,GAAQ,QAAQ,IACvD,EAAS,aAAc,CACzB,CACA,wBAAI,GACF,OAAO,KAAK,QAAQ,IAAI,yBAC1B,CACA,wBAAI,CAAqB,GACnB,KAAK,uBAAyB,IAC5B,EACF,KAAK,QAAQ,IAAI,yBAA0B,KAE3C,KAAK,QAAQ,OAAO,0BAEtB,KAAK,aAET,CACA,mBAAI,GACF,YAAsD,IAA/C,KAAK,aAAa,QAAQ,gBACnC,CACA,mBAAI,CAAgB,GAClB,GAAI,KAAK,kBAAoB,EAAO,CAClC,MAAM,EAAW,KAAK,aAClB,EACF,EAAS,QAAQ,iBAAmB,WAE7B,EAAS,QAAQ,iBAE1B,EAAS,aAAc,CACzB,CACF,CACA,SAAI,GACF,OAAO,KAAK,SAAS,IAAI,SAAS,KACpC,CACA,SAAI,CAAM,GACR,MAAM,EAAW,KAAK,SAChB,EAAU,KAAK,QACP,OAAV,EACE,EAAQ,IAAI,YACd,EAAS,IAAI,SAAS,MAAM,IAAI,IAEhC,EAAQ,IAAI,WAAY,KACxB,EAAS,IAAI,SAAS,MAAQ,IAAI,OAAO,GACzC,KAAK,cAEE,EAAQ,IAAI,cACrB,EAAQ,OAAO,YACf,EAAS,IAAI,SAAS,MAAQ,KAC9B,KAAK,aAET,CACA,iBAAA,CAAkB,EAAW,GAC3B,KAAK,aAAa,SAAS,eAAe,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,EAAW,GAAI,GAAI,KAAK,IAAI,KAAK,IAAI,EAAY,EAAS,GAAI,GACtI,CACA,kBAAA,CAAmB,EAAW,GAC5B,KAAK,aAAa,SAAS,gBAAgB,MAAM,IAAI,KAAK,IAAI,KAAK,IAAI,EAAW,GAAI,GAAI,KAAK,IAAI,KAAK,IAAI,EAAY,EAAS,GAAI,GACvI,CACA,eAAA,CAAgB,EAAc,EAAe,oBAC3C,MAAM,EAAW,KAAK,kBACgB,IAAlC,EAAS,QAAQ,eACnB,EAAS,SAAS,kBAAkB,MAAQ,EAC5C,EAAS,aAAe,EAE5B,CACA,MAAA,CAAO,EAAU,EAAa,GAC5B,KAAK,SAAS,OAAO,EAAU,KAAM,KAAK,eAC5C,CACA,OAAA,CAAQ,EAAO,GACb,MAAM,EAAa,KAAK,WACxB,EAAW,KAAK,IAAI,EAAO,GAC3B,MAAM,EAAI,EAAW,MACf,EAAI,EAAW,OACrB,KAAK,eAAe,QAAQ,EAAG,GAC/B,KAAK,aAAa,aAAa,EAAI,EAAG,EAAI,GAC1C,MAAM,EAAS,KAAK,OACd,EAAW,KAAK,aAAa,SACnC,EAAS,WAAW,MAAM,IAAI,EAAG,GAAG,aAAa,oBACjD,EAAS,iBAAiB,MAAM,KAAK,EAAO,kBAC5C,EAAS,wBAAwB,MAAM,KAAK,EAAO,kBAAkB,SACrE,KAAK,OAAS,KAAK,CACrB,4BAKkB,gBAClB,wBACgB,yBACL,8BACS,uBACf,QAGP,IAAI,iBAAmB,6cAGnB,iBAAmB,oQAGnB,cAAgB,cAAc,OAChC,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,QACpC,EAAU,KAAI,iBACd,GAAmB,GACjB,CAAC,GACH,MAAM,gBAAiB,iBAAkB,CACvC,gBACA,QAAS,IAAI,IAAI,CACf,CAAC,QAAS,WAEZ,SAAU,IAAI,IAAI,CAChB,CAAC,MAAO,IAAI,UAAU,OACtB,CAAC,QAAS,IAAI,UAAU,IACxB,CAAC,cAAe,IAAI,UAAU,WAGlC,KAAK,QAAU,EACf,KAAK,iBAAmB,CAC1B,CACA,WAAI,GACF,OAAO,KAAK,SAAS,IAAI,OAAO,KAClC,CACA,WAAI,CAAQ,GACV,MAAM,EAAiB,KAAK,QAC5B,GAAI,IAAmB,IACrB,KAAK,SAAS,IAAI,OAAO,MAAQ,EACjC,KAAK,QAAQ,OAAO,0BACN,OAAV,GAAgB,CAClB,OAAQ,EAAM,UACZ,KAAK,cACH,KAAK,QAAQ,IAAI,uBAAwB,uBACzC,MACF,KAAK,gBACH,KAAK,QAAQ,IAAI,uBAAwB,SACzC,MACF,QACE,QAAQ,MAAM,wBAAyB,EAAM,UAG7C,EAAM,OAAS,oBACjB,KAAK,QAAQ,IAAI,yBAA0B,KAEtB,OAAnB,GAA2B,EAAe,OAAS,EAAM,MAAQ,EAAe,WAAa,EAAM,UACrG,KAAK,YAET,CAEJ,CACA,oBAAI,GACF,OAAO,KAAK,QAAQ,IAAI,oBAC1B,CACA,oBAAI,CAAiB,GACf,KAAK,mBAAqB,IACxB,GACE,KAAK,cACP,KAAK,aAAc,GAErB,KAAK,QAAQ,IAAI,oBAAqB,KACtC,KAAK,gBAAgB,oBAErB,KAAK,QAAQ,OAAO,qBACpB,KAAK,gBAAgB,OAEvB,KAAK,aAET,CACA,eAAI,GACF,OAAO,KAAK,QAAQ,IAAI,eAC1B,CACA,eAAI,CAAY,GACV,KAAK,cAAgB,IACnB,GACE,KAAK,mBACP,KAAK,kBAAmB,GAE1B,KAAK,QAAQ,IAAI,eAAgB,KACjC,KAAK,SAAS,IAAI,eAAe,MAAQ,IAAI,QAC7C,KAAK,gBAAgB,oBAErB,KAAK,QAAQ,OAAO,gBACpB,KAAK,SAAS,IAAI,eAAe,MAAQ,KACzC,KAAK,gBAAgB,OAEvB,KAAK,aAET,CACA,qBAAA,CAAsB,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,GACzC,MAAM,EAAO,OACb,IAAI,EAAU,GACV,IAAM,aAAa,KAAO,IAAM,aAAa,OAAS,IAAM,aAAa,MAAQ,IAAM,aAAa,QACtG,EAAU,CAAC,IAAK,EAAK,GAAI,EAAK,GAAI,EAAK,GAAI,EAAK,IAAI,KAAK,KAE3D,KAAK,QAAQ,IAAI,QAAS,QAAU,GACpC,KAAK,YACP,CACA,MAAA,CAAO,EAAU,EAAa,GAC5B,MAAM,EAAU,KAAK,SAAS,IAAI,OAAO,MACrC,KAAK,aAAe,EAAQ,mBAC9B,EAAQ,eACR,KAAK,SAAS,IAAI,eAAe,MAAM,KAAK,EAAQ,QAExD,0BAKgB,eAChB,yBACA,sCACa,uBACF,+BACU,wBAChB,QAGP,IAAI,iBAAmB,u1BAGnB,kBAAoB,cAAc,OACpC,WAAA,EAAY,cACV,EAAgB,cAAc,OAAM,SACpC,GAAW,EAAI,KACf,GAAO,EAAW,gBAAgB,mBAAqB,gBAAgB,WAAS,WAChF,EAAa,IAAG,aAChB,EAAe,GAAE,WACjB,EAAa,EAAY,WACzB,EAAa,GAAG,aAChB,EAAe,IAAI,iBACnB,EAAmB,EAAC,eACpB,EAAiB,GACf,CAAC,GACH,MAAM,oBAAqB,iBAAkB,CAC3C,gBACA,SAAU,IAAI,IAAI,CAChB,CAAC,kBAAmB,IAAI,UAAU,OAClC,CAAC,eAAgB,IAAI,UAAU,IAC/B,CAAC,aAAc,IAAI,UAAU,IAC7B,CAAC,aAAc,IAAI,UAAU,IAC7B,CAAC,mBAAoB,IAAI,UAAU,QAGvC,KAAK,sBAAwB,IAAI,oBAAoB,EAAG,EAAG,CACzD,eAAwC,IAA7B,yBAAsC,yBAA2B,yBAC5E,UAAW,eACX,eAAe,EACf,aAAa,EACb,OAAQ,cAEV,KAAK,sBAAsB,QAAQ,KAAO,YAC1C,KAAK,sBAAsB,QAAQ,iBAAkB,EACrD,KAAK,cAAgB,IAAI,cAAc,CACrC,aAAc,KAAK,wBAErB,KAAK,sBAAwB,IAAI,sBAAsB,KAAK,cAAc,QAAS,CACjF,eACA,mBAEF,KAAK,SAAS,IAAI,mBAAmB,MAAQ,KAAK,sBAAsB,QACxE,KAAK,KAAO,KACZ,KAAK,QAAQ,GACb,KAAK,WAAa,CACpB,CACA,OAAA,GACE,OAAO,KAAK,IACd,CACA,OAAA,CAAQ,GAEN,GADoB,KAAK,OACL,EAAO,CAEzB,OADA,KAAK,QAAQ,QACL,GACN,KAAK,gBAAgB,SACnB,KAAK,QAAQ,IAAI,qBAAsB,8BACvC,MACF,KAAK,gBAAgB,iBACnB,KAAK,QAAQ,IAAI,qBAAsB,qCACvC,MACF,KAAK,gBAAgB,YACnB,KAAK,QAAQ,IAAI,qBAAsB,gCACvC,MACF,QACE,KAAK,QAAQ,IAAI,qBAAsB,SAGvC,IAAU,gBAAgB,UAC5B,KAAK,QAAQ,IAAI,YAAa,KACrB,IAAU,gBAAgB,qBACnC,KAAK,QAAQ,IAAI,YAAa,KAC9B,KAAK,QAAQ,IAAI,WAAY,MAE/B,KAAK,KAAO,EACZ,KAAK,YACP,CACF,CACA,cAAI,GACF,OAAO,KAAK,cAAc,WAAW,KACvC,CACA,cAAI,CAAW,GACb,MAAM,EAAW,KAAK,IAAI,EAAG,KAAK,KAAK,KAAK,KAAK,KAC3C,EAAO,KAAK,IAAI,EAAG,GACzB,KAAK,cAAc,WAAW,MAAQ,EACtC,KAAK,cAAc,WAAW,OAAS,EACvC,KAAK,sBAAsB,YAAc,CAC3C,CACA,YAAI,GACF,OAAO,KAAK,QAAQ,IAAI,WAC1B,CACA,YAAI,CAAS,GACX,KAAK,KAAO,EAAQ,gBAAgB,mBAAqB,gBAAgB,SAC3E,CACA,kBAAI,GACF,OAAO,KAAK,sBAAsB,cACpC,CACA,kBAAI,CAAe,GACjB,KAAK,sBAAsB,eAAiB,CAC9C,CACA,eAAI,GAEF,OADA,QAAQ,KAAK,KAAK,KAAM,2CACjB,CACT,CACA,eAAI,CAAY,GACd,QAAQ,KAAK,KAAK,KAAM,0CAC1B,CACA,MAAA,CAAO,EAAU,EAAa,GACxB,KAAK,OAAS,gBAAgB,qBAChC,KAAK,cAAc,OAAO,EAAU,GACpC,KAAK,sBAAsB,OAAO,EAAU,KAAM,KAAM,GAE5D,CACA,UAAA,CAAW,EAAU,EAAO,GAC1B,KAAK,sBAAsB,WAAW,EAAU,EAAO,EACzD,GAEE,gBAAkB,CACpB,SAAU,EACV,UAAW,EACX,mBAAoB,EACpB,iBAAkB,EAClB,YAAa,qBAIK,cAAiB,QAGrC,IAAI,iBAAmB,0aAGnB,eAAiB,cAAc,OACjC,WAAA,CAAY,EAAU,CAAC,GACrB,MAAM,EAAW,OAAO,OAAO,CAC7B,cAAe,cAAc,OAC7B,OAAO,EACP,OAAQ,GACR,SAAU,IACT,GACH,MAAM,iBAAkB,iBAAkB,CACxC,cAAe,EAAS,cACxB,SAAU,IAAI,IAAI,CAChB,CAAC,SAAU,IAAI,UAAU,EAAS,SAClC,CAAC,WAAY,IAAI,UAAU,EAAS,eAGxC,KAAK,MAAQ,EAAS,KACxB,CACA,SAAI,GACF,OAAO,KAAK,QAAQ,IAAI,QAC1B,CACA,SAAI,CAAM,GACJ,KAAK,QAAU,IACb,EACF,KAAK,QAAQ,IAAI,QAAS,KAE1B,KAAK,QAAQ,OAAO,SAEtB,KAAK,aAET,GAIE,EAAI,CACN,IAAI,aAAa,GACjB,IAAI,aAAa,IAEf,EAAI,CACN,IAAI,aAAa,GACjB,IAAI,aAAa,GACjB,IAAI,aAAa,GACjB,IAAI,aAAa,IAEf,EAAI,CACN,CACE,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,KAE1B,CACE,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,KAE1B,CACE,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,KAE1B,CACE,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,KAE1B,CACE,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,KAE1B,CACE,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,IACxB,IAAI,aAAa,CAAC,EAAG,EAAG,MAG5B,SAAS,2BAA2B,EAAG,EAAG,EAAI,GAC5C,MAAM,EAAM,EAAG,GAAK,EAAE,GAChB,EAAM,EAAG,GAAK,EAAE,GAChB,EAAM,EAAG,GAAK,EAAE,GAChB,EAAM,EAAE,GAAK,EAAE,GACf,EAAM,EAAE,GAAK,EAAE,GACf,EAAM,EAAE,GAAK,EAAE,GACf,EAAS,EAAM,EAAM,EAAM,EAC3B,EAAS,EAAM,EAAM,EAAM,EAC3B,EAAS,EAAM,EAAM,EAAM,EAC3B,EAAS,KAAK,KAAK,EAAS,EAAS,EAAS,EAAS,EAAS,GAChE,EAAwB,GAAT,EACf,EAAU,EAAS,EACnB,EAAU,EAAS,EACnB,EAAU,EAAS,EACnB,IAAa,EAAE,GAAK,EAAU,EAAE,GAAK,EAAU,EAAE,GAAK,GACtD,EAAM,EAAE,GAAK,EAAU,EAAE,GAAK,EAAU,EAAE,GAAK,EAErD,OADe,KAAK,IAAI,EAAM,GACd,EAAe,CACjC,CACA,SAAS,OAAO,EAAM,EAAM,EAAG,EAAG,EAAG,GACnC,MAAM,EAAwC,GAAlC,EAAI,EAAI,EAAO,EAAI,EAAO,GACtC,EAAO,GAAK,EAAK,EAAK,GACtB,EAAO,GAAK,EAAK,EAAK,GACtB,EAAO,GAAK,EAAK,EAAK,EACxB,CACA,SAAS,kBAAkB,EAAM,EAAM,EAAG,EAAI,EAAG,GAC/C,MAAM,EAAK,GAAK,EAAO,GACjB,EAAK,GAAM,EAAO,GAClB,EAAK,GAAK,EAAO,GACjB,EAAO,KAAK,MAAM,GAClB,EAAO,KAAK,MAAM,GAClB,EAAO,KAAK,MAAM,GAClB,EAAO,KAAK,KAAK,GACjB,EAAO,KAAK,KAAK,GACjB,EAAO,KAAK,KAAK,GACjB,EAAK,EAAK,EACV,EAAK,EAAK,EACV,EAAK,EAAK,EAChB,GAAI,IAAS,GAAM,IAAS,GAAM,IAAS,EACzC,OAAO,EAAM,EAAM,EAAI,EAAI,EAAI,OAC1B,CACL,IAAI,EACA,GAAM,GAAM,GAAM,EACpB,EAAW,EAAE,GACJ,GAAM,GAAM,GAAM,EAC3B,EAAW,EAAE,GACJ,GAAM,GAAM,GAAM,EAC3B,EAAW,EAAE,GACJ,GAAM,GAAM,GAAM,EAC3B,EAAW,EAAE,GACJ,GAAM,GAAM,GAAM,EAC3B,EAAW,EAAE,GACJ,GAAM,GAAM,GAAM,IAC3B,EAAW,EAAE,IAEf,MAAO,EAAI,EAAI,EAAI,GAAM,EACnB,EAAS,EAAE,GACjB,EAAO,GAAK,EACZ,EAAO,GAAK,EACZ,EAAO,GAAK,EACZ,MAAM,EAAM,EAAE,GACR,EAAQ,EAAO,EACf,EAAQ,EAAO,EACf,EAAQ,EAAO,EACrB,EAAI,GAAK,EAAQ,EAAG,GAAK,EACzB,EAAI,GAAK,EAAQ,EAAG,GAAK,EACzB,EAAI,GAAK,EAAQ,EAAG,GAAK,EACzB,OAAO,EAAM,EAAM,EAAI,GAAI,EAAI,GAAI,EAAI,GAAI,EAAE,IAC7C,EAAI,GAAK,EAAQ,EAAG,GAAK,EACzB,EAAI,GAAK,EAAQ,EAAG,GAAK,EACzB,EAAI,GAAK,EAAQ,EAAG,GAAK,EACzB,OAAO,EAAM,EAAM,EAAI,GAAI,EAAI,GAAI,EAAI,GAAI,EAAE,IAC7C,EAAI,GAAK,EAAQ,EAAG,GAAK,EACzB,EAAI,GAAK,EAAQ,EAAG,GAAK,EACzB,EAAI,GAAK,EAAQ,EAAG,GAAK,EACzB,OAAO,EAAM,EAAM,EAAI,GAAI,EAAI,GAAI,EAAI,GAAI,EAAE,IAC7C,EAAI,GAAK,EAAQ,EAAG,GAAK,EACzB,EAAI,GAAK,EAAQ,EAAG,GAAK,EACzB,EAAI,GAAK,EAAQ,EAAG,GAAK,EACzB,OAAO,EAAM,EAAM,EAAI,GAAI,EAAI,GAAI,EAAI,GAAI,EAAE,IAC7C,MAAM,EAAsD,EAAjD,2BAA2B,EAAI,EAAI,EAAI,GAC5C,EAAsD,EAAjD,2BAA2B,EAAI,EAAI,EAAI,GAC5C,EAAsD,EAAjD,2BAA2B,EAAI,EAAI,EAAI,GAC5C,EAAsD,EAAjD,2BAA2B,EAAI,EAAI,EAAI,GAClD,EAAE,GAAG,IAAM,EACX,EAAE,GAAG,IAAM,EACX,EAAE,GAAG,IAAM,EACX,EAAE,GAAG,IAAM,EACX,EAAE,GAAG,IAAM,EACX,EAAE,GAAG,IAAM,EACX,EAAE,GAAG,IAAM,EACX,EAAE,GAAG,IAAM,EACX,EAAE,GAAG,IAAM,EACX,EAAE,GAAG,IAAM,EACX,EAAE,GAAG,IAAM,EACX,EAAE,GAAG,IAAM,EACX,EAAO,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAC/C,EAAO,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAC/C,EAAO,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,GAAK,EAAE,GAAG,EACjD,CACF,CACA,IAAI,oBAAsB,MACxB,aAAO,CAAO,EAAM,GAClB,MAAM,EAAe,KAAK,KAAK,EAAK,OAAS,GACvC,EAAM,IAAI,aAAa,GACvB,EAAQ,IAAI,EAAK,YAAY,GAAQ,EAAI,GACzC,EAAI,GAAK,EAAO,GACtB,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAC1B,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAC1B,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAAG,CAC7B,MAAM,EAAI,EAAI,EACR,EAAK,EAAI,EACT,EAAI,EAAI,EACR,EAAkD,EAA7C,KAAK,MAAM,EAAI,EAAI,EAAO,EAAI,EAAO,GAChD,kBAAkB,EAAM,EAAc,EAAG,EAAI,EAAG,GAChD,EAAM,EAAK,GAAK,EAAI,GACpB,EAAM,EAAK,GAAK,EAAI,GACpB,EAAM,EAAK,GAAK,EAAI,EACtB,CAGJ,OAAO,CACT,GAIE,KAAO,CACT,IAAI,aAAa,GACjB,IAAI,aAAa,IAEf,gBAAkB,GAClB,cAAgB,GAChB,iBAAmB,GACnB,oBAAsB,GACtB,6BAA+B,IAAI,aAAa,CAClD,GACC,IACD,KACC,KACD,MACC,KACD,OAEE,2BAA6B,CAC/B,IAAI,aAAa,CAAC,EAAG,IACrB,IAAI,aAAa,CAAC,KAAO,MACzB,IAAI,aAAa,EAAE,IAAM,MACzB,IAAI,aAAa,CAAC,MAAQ,OAC1B,IAAI,aAAa,EAAE,KAAO,QAExB,gBAAkB,CACpB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,KAEjB,cAAgB,CAClB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,IACnB,IAAI,WAAW,CAAC,EAAG,KAErB,SAAS,KAAK,EAAG,EAAG,GAClB,OAAO,GAAK,EAAI,GAAK,CACvB,CACA,SAAS,SAAS,GAChB,OAAO,KAAK,IAAI,KAAK,IAAI,EAAG,GAAI,EAClC,CACA,SAAS,WAAW,GAClB,MAAM,EAAK,KAAK,GACV,EAAK,KAAK,GACV,EAA6B,GAAvB,KAAK,KAAa,EAAR,EAAG,IACnB,EAA6B,GAAvB,KAAK,KAAa,EAAR,EAAG,IACnB,EAA6B,GAAvB,KAAK,KAAa,EAAR,EAAG,IACnB,EAA6B,GAAvB,KAAK,KAAa,EAAR,EAAG,IACnB,EAAI,SAAS,EAAI,qBACvB,EAAG,GAAK,KAAK,EAAK,EAAG,GAAI,GACzB,EAAG,GAAK,KAAK,EAAK,EAAG,GAAI,GACzB,EAAG,GAAK,KAAK,EAAK,EAAG,GAAI,GACzB,EAAG,GAAK,KAAK,EAAK,EAAG,GAAI,EAC3B,CACA,SAAS,YAAY,EAAK,EAAK,EAAK,EAAK,EAAG,GAC1C,MAAM,EAAK,EAAM,EACX,EAAK,EAAM,EAEX,EAAK,EAAI,EACT,EAAK,EAAM,GAFN,EAEiB,GAAO,EAC7B,EAAK,EAAM,GAAM,EAAK,GAAO,EACnC,GAJW,GAID,GAJC,EAIW,GAAO,EAAK,GAAO,GAAM,EAC7C,GAAI,KAAK,KAAK,KAAQ,KAAK,KAAK,IAAO,KAAK,IAAI,GAAM,MAAQ,KAAK,IAAI,GAAM,KAAM,CACjF,MAAM,GAAK,EAAK,GAAM,EAClB,EAAI,GACN,EAAO,GAAK,KAAK,IAAI,GACrB,EAAO,GAAK,IAEZ,EAAO,GAAK,EACZ,EAAO,GAAK,KAAK,IAAI,GAEzB,KAAO,CACL,MAAM,GAAK,EAAM,EAAK,EAAK,EACrB,EAAO,KAAK,MAAM,GAClB,EAAK,EAAI,EAAM,GAAM,EAAI,GAAQ,EAAI,EACrC,EAAK,EAAI,EAAM,GAAM,GAAK,EAAI,IAAS,EAAI,GACvC,KAAK,IAAI,GAAM,KAAK,IAAI,GAAM,GAAM,GACtC,GACN,EAAO,GAAK,KAAK,IAAI,GACrB,EAAO,GAAK,KAAK,IAAI,KAErB,EAAO,GAAK,KAAK,IAAI,GACrB,EAAO,GAAK,KAAK,IAAI,GAEzB,MAEA,EAAO,GAAK,EACZ,EAAO,GAAK,EAEd,OAAO,CACT,CACA,SAAS,sBAAsB,EAAS,EAAM,EAAO,EAAQ,GAC3D,MAAM,EAAK,KAAK,GACV,EAAK,KAAK,GACV,EAAK,GAAM,EACX,EAAK,GAAM,EAAS,EACpB,EAAI,EAAO,EAAQ,EACzB,OAAQ,GACN,KAAK,EAwCL,KAAK,EA8CL,KAAK,GAyBL,KAAK,GACH,EAAO,GAAK,EACZ,EAAO,GAAK,EACZ,MA7GF,KAAK,EACC,GAAQ,EACV,YAAY,EAAG,EAAI,EAAI,EAAG,EAAG,EAAM,IAEnC,EAAO,GAAK,EACZ,EAAO,GAAK,GAEd,MAEF,KAAK,EACC,GAAQ,EACV,YAAY,EAAI,EAAG,EAAG,EAAG,EAAI,EAAM,IAEnC,EAAO,GAAK,EACZ,EAAO,GAAK,GAEd,MAEF,KAAK,EACH,YAAY,EAAG,EAAI,EAAI,EAAG,EAAG,EAAM,GACnC,YAAY,EAAI,EAAG,EAAG,EAAG,EAAI,EAAM,GACnC,WAAW,EAAG,MACd,EAAO,GAAK,EAAG,GAAK,EAAG,GACvB,EAAO,GAAK,EAAG,GAAK,EAAG,GACvB,MAEF,KAAK,EACC,GAAQ,EACV,YAAY,EAAG,EAAI,EAAI,EAAG,EAAG,EAAM,IAEnC,EAAO,GAAK,EACZ,EAAO,GAAK,GAEd,MAOF,KAAK,EACC,KAAK,IAAI,GAAU,GACrB,YAAY,EAAG,EAAI,EAAG,EAAI,EAAM,GAChC,YAAY,EAAG,EAAI,EAAI,EAAG,EAAG,EAAM,GACnC,YAAY,EAAI,EAAG,EAAG,EAAG,EAAI,EAAM,GACnC,EAAG,GAAK,EAAG,GAAK,EAAO,GACvB,EAAG,GAAK,EAAG,GAAK,EAAO,GACvB,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,GAE9B,YAAY,EAAG,EAAI,EAAG,EAAI,EAAM,GAElC,MAEF,KAAK,EAgDL,KAAK,GACH,YAAY,EAAG,EAAI,EAAG,EAAI,EAAM,GAChC,MA9CF,KAAK,EACC,GAAQ,EACV,YAAY,EAAI,EAAG,EAAG,EAAG,EAAI,EAAM,IAEnC,EAAO,GAAK,EACZ,EAAO,GAAK,GAEd,MAEF,KAAK,EACC,KAAK,IAAI,GAAU,GACrB,YAAY,EAAG,EAAI,EAAG,EAAI,EAAM,GAChC,YAAY,EAAG,EAAI,EAAI,EAAG,EAAG,EAAM,GACnC,YAAY,EAAI,EAAG,EAAG,EAAG,EAAI,EAAM,GACnC,EAAG,GAAK,EAAG,GAAK,EAAO,GACvB,EAAG,GAAK,EAAG,GAAK,EAAO,GACvB,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,GAE9B,YAAY,EAAG,EAAI,EAAG,EAAI,EAAM,GAElC,MAOF,KAAK,GAYL,KAAK,GACH,YAAY,EAAG,EAAI,EAAG,EAAI,EAAM,GAChC,MAVF,KAAK,GACH,YAAY,EAAG,EAAI,EAAI,EAAG,EAAG,EAAM,GACnC,YAAY,EAAI,EAAG,EAAG,EAAG,EAAI,EAAM,GACnC,WAAW,EAAG,MACd,EAAO,GAAK,EAAG,GAAK,EAAG,GACvB,EAAO,GAAK,EAAG,GAAK,EAAG,GAiB3B,OAAO,CACT,CACA,SAAS,aAAa,EAAK,EAAK,EAAK,EAAK,EAAG,GAC3C,IAAI,EAAS,IAAQ,GAAO,IAAQ,EACpC,IAAK,EAAQ,CAMX,GAHU,EAAM,IAEA,GAJJ,EAAM,GAAO,IAGf,EAAM,IACe,GAHnB,EAAM,GAAO,GAIX,CAChB,CACA,OAAO,CACT,CACA,SAAS,oBAAoB,EAAK,EAAK,EAAK,EAAK,EAAI,GACnD,IAAI,EAAI,EACR,IAAK,IAAI,EAAI,EAAG,EAAI,mBAAoB,EACtC,IAAK,IAAI,EAAI,EAAG,EAAI,mBAAoB,EAAG,CAGrC,aAAa,EAAK,EAAK,EAAK,EAAK,EAFrB,GAAK,iBAAmB,GAEW,EADnC,GAAK,iBAAmB,OAEpC,CAEN,CAEF,OAAO,GAAK,iBAAmB,iBACjC,CACA,SAAS,YAAY,EAAS,EAAK,EAAK,EAAK,EAAK,EAAM,EAAQ,GAC9D,MAAM,EAAI,cAAc,GAClB,EAAK,EAAE,GACP,EAAK,EAAE,GAWb,OAVI,EAAK,IACP,GAAO,EAAO,GACd,GAAO,EAAO,IAEZ,EAAK,IACP,GAAO,EAAO,GACd,GAAO,EAAO,IAEhB,EAAO,GAAK,EAAI,oBAAoB,EAAK,EAAK,EAAK,EAAK,EAAI,EAAM,EAAI,GACtE,EAAO,GAAK,oBAAoB,EAAK,EAAK,EAAK,EAAK,EAAI,EAAM,EAAI,GAC3D,CACT,CACA,SAAS,sBAAsB,EAAS,EAAM,EAAO,EAAQ,GAC3D,MAAM,EAAK,KAAK,GACV,EAAK,KAAK,GACV,EAAI,EAAO,EAAQ,EACzB,OAAQ,GACN,KAAK,EA8FL,KAAK,GACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,MA5FF,KAAK,EACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,MAEF,KAAK,EACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,MAEF,KAAK,EACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,MAEF,KAAK,EACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,MAEF,KAAK,EACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,MAEF,KAAK,EACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,MAEF,KAAK,EACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,MAEF,KAAK,EACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,MAEF,KAAK,EACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,MAEF,KAAK,GACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,MAEF,KAAK,GACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,MAEF,KAAK,GACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,MAEF,KAAK,GACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,MAEF,KAAK,GACH,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,YAAY,EAAS,EAAG,EAAG,EAAI,EAAG,EAAI,EAAG,EAAM,EAAQ,GACvD,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAC9B,EAAO,IAAM,EAAG,GAAK,EAAG,IAAM,EAWlC,OAAO,CACT,CACA,SAAS,iBAAiB,EAAU,EAAQ,GAC1C,MAAM,EAAS,IAAI,aAAa,GAChC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,OAAQ,EAAI,IAAK,EAAG,CAC/C,MAAM,EAAU,EAAS,GACnB,EAAO,EAAQ,KACf,EAAO,EAAQ,MACrB,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAC1B,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAAG,CACzB,EACF,sBAAsB,EAAG,EAAG,EAAG,EAAQ,GAEvC,sBAAsB,EAAG,EAAG,EAAG,EAAQ,GAEzC,MAAM,EAAsB,GAAhB,EAAI,EAAO,GACvB,EAAK,GAAkB,IAAZ,EAAO,GAClB,EAAK,EAAK,GAAiB,IAAZ,EAAO,EACxB,CAEJ,CACF,CACA,SAAS,SAAS,EAAO,EAAO,EAAU,EAAQ,EAAM,EAAY,GAClE,MAAM,EAAU,EAAO,KACjB,EAAW,EAAO,MACxB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAS,OAAQ,EAAI,IAAK,EAAG,CAC/C,MAAM,EAAO,EAAO,GACd,EAAU,EAAS,GACnB,EAAU,EAAQ,KAClB,EAAW,EAAQ,MACzB,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAC1B,IAAK,IAAI,EAAI,EAAG,EAAI,IAAQ,EAAG,CAC7B,MAAM,EAAK,EAAK,GAAK,EAAO,EAAQ,EAE9B,EAA4B,IADvB,EAAK,GAAK,EAAO,EAAQ,GACnB,EAAW,GACtB,EAAI,EAA0C,GAA5B,EAAI,EAAI,EAAW,EAAI,GAA8B,GAApB,EAAI,EAAW,GACxE,EAAQ,GAAM,EAAQ,GACtB,EAAQ,EAAK,GAAK,EAAQ,EAAI,GAC9B,EAAQ,EAAK,GAAK,EAClB,EAAQ,EAAK,GAAK,GACpB,CAEJ,CACF,CACA,IAAI,kBAAoB,MACtB,eAAO,GACL,MAAM,EAAQ,GAAQ,gBAChB,EAA+C,EAAtC,6BAA6B,OAAa,gBACnD,EAAO,IAAI,kBAAkB,EAAQ,EAAS,GAC9C,EAAS,IAAI,aAAa,EAAO,EAAQ,GACzC,EAAkB,KAAK,IAAI,gBAAkB,EAAG,GAAK,EACrD,EAAkB,cAClB,EAAqB,GACrB,EAAmB,GACzB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAI,EAAG,GAAK,EAC3C,EAAK,GAAK,IAEZ,IAAK,IAAI,EAAI,EAAG,EAAI,KAAM,EACxB,EAAmB,KAAK,IAAI,aAAa,EAAiB,EAAiB,IAAI,kBAAkB,EAAkB,EAAkB,GAAI,IACzI,EAAiB,KAAK,IAAI,aAAa,EAAiB,EAAiB,IAAI,kBAAkB,EAAkB,EAAkB,GAAI,IAEzI,IAAK,IAAI,EAAI,EAAG,EAAI,6BAA6B,OAAQ,EAAI,IAAK,EAChE,iBAAiB,EAAoB,6BAA6B,IAAI,GACtE,SAAS,EAAG,EAAI,gBAAkB,EAAG,EAAoB,gBAAiB,iBAAiB,EAAM,GAEnG,IAAK,IAAI,EAAI,EAAG,EAAI,2BAA2B,OAAQ,EAAI,IAAK,EAC9D,iBAAiB,EAAkB,2BAA2B,IAAI,GAClE,SAAS,EAAI,gBAAiB,EAAI,cAAgB,EAAG,EAAkB,cAAe,eAAe,EAAO,GAE9G,OAAO,CACT,UAIO,mBAAsB,QAG/B,IAAI,gBAAkB,09OAGtB,SAAS,SAAS,GAAW,GAC3B,MAAM,EAAY,IAAI,gBAAgB,IAAI,KAAK,CAAC,iBAAkB,CAChE,KAAM,qBAEF,EAAS,IAAI,OAAO,GAE1B,OADA,IAAI,gBAAgB,GACb,IAAI,SAAQ,CAAC,EAAS,KAC3B,EAAO,iBAAiB,SAAU,GAAU,EAAO,EAAM,SACzD,EAAO,iBAAiB,WAAY,IAClC,MAAM,EAAkB,aAAa,KAAK,EAAM,KAAK,iBAC/C,EAAgB,aAAa,KAAK,EAAM,KAAK,eAC7C,EAAO,CACX,EAAgB,WAAW,UAAU,YAAa,GAClD,EAAc,WAAW,UAAU,YAAa,IAE9C,IACF,aAAa,QAAQ,cAAe,EAAK,IACzC,aAAa,QAAQ,YAAa,EAAK,KAEzC,EAAQ,EAAK,IAEf,EAAO,YAAY,KAAK,GAE5B,CACA,IAAI,mBAAqB,MACvB,WAAA,GACE,KAAK,cAAe,CACtB,CACA,QAAA,GACE,MAAM,GAAY,KAAK,mBAAwC,IAAxB,OAAO,aACxC,EAAa,EAAW,CAC5B,aAAa,QAAQ,eACrB,aAAa,QAAQ,cACnB,CAAC,KAAM,MAEX,OADkC,OAAlB,EAAW,IAAiC,OAAlB,EAAW,GAAc,QAAQ,QAAQ,GAAc,SAAS,IAC3F,MAAM,GACZ,IAAI,SAAQ,CAAC,EAAS,KAC3B,MAAM,EAAc,IAAI,MAClB,EAAY,IAAI,MAChB,EAAU,IAAI,eACpB,EAAQ,OAAS,IAAM,EAAQ,CAAC,EAAa,IAC7C,EAAQ,QAAU,EAClB,EAAY,iBAAiB,SAAU,GAAM,EAAQ,UAAU,iBAC/D,EAAU,iBAAiB,SAAU,GAAM,EAAQ,UAAU,eAC7D,EAAY,iBAAiB,QAAQ,IAAM,EAAQ,QAAQ,iBAC3D,EAAU,iBAAiB,QAAQ,IAAM,EAAQ,QAAQ,eACzD,EAAQ,UAAU,eAClB,EAAQ,UAAU,aAClB,EAAY,IAAM,EAAK,GACvB,EAAU,IAAM,EAAK,EAAE,KAG7B,GAIE,MAAQ,IAAI,IAAI,CAClB,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,KAClD,CAAC,SAAS,EAAG,EAAG,EAAG,GAAI,IAAI,aAAa,CAAC,EAAG,EAAG,EAAG,OAEpD,SAAS,MAAM,EAAG,EAAG,GACnB,OAAO,GAAK,EAAI,GAAK,CACvB,CACA,SAAS,SAAS,EAAI,EAAI,EAAI,GAC5B,MAAM,EAAI,MAAM,EAAI,EAAI,KAClB,EAAI,MAAM,EAAI,EAAI,KACxB,OAAO,MAAM,EAAG,EAAG,KACrB,CACA,SAAS,UAAU,EAAM,GACvB,IAAI,EAAI,EAOR,OANe,IAAX,EAAI,KACN,GAAK,GAEG,IAAN,GAAsB,IAAX,EAAI,IAAwB,IAAZ,EAAK,IAAwB,IAAZ,EAAK,KACnD,GAAK,GAEA,CACT,CACA,SAAS,WAAW,EAAM,GACxB,IAAI,EAAI,EAOR,OANe,IAAX,EAAI,IAAwB,IAAZ,EAAK,IAAwB,IAAZ,EAAK,KACxC,GAAK,GAEG,IAAN,GAAsB,IAAX,EAAI,IAAwB,IAAZ,EAAK,IAAwB,IAAZ,EAAK,KACnD,GAAK,GAEA,CACT,CACA,IAAI,oBAAsB,MACxB,eAAO,GACL,MAKM,EAAO,IAAI,kBAAkB,MAC7B,EAAc,IAAI,kBAAkB,MAC1C,IAAK,IAAI,EAAI,EAAG,EAND,KAMe,EAC5B,IAAK,IAAI,EAAI,EAAG,EARJ,KAQiB,EAAG,CAC9B,MAAM,EAAI,OAAU,EACd,EAAI,OAAU,EACpB,GAAI,MAAM,IAAI,IAAM,MAAM,IAAI,GAAI,CAChC,MAAM,EAAK,MAAM,IAAI,GACf,EAAK,MAAM,IAAI,GACf,EAdE,GAcE,EAAY,EACtB,EAAK,GAAK,IAAM,UAAU,EAAI,GAC9B,EAAK,EAdO,IAcU,IAAM,WAAW,EAAI,EAC7C,CACF,CAEF,IAAK,IAAI,EAAI,EAAG,EAAI,GAAwB,EAnB7B,KAmB2C,EACxD,IAAK,IAAI,EAAI,EAAG,EAlBG,KAkBiB,EAAG,GAAK,EAC1C,EAAY,GAAK,EAtBP,GAsBY,EAAY,GAClC,EAAY,EAAI,GAAK,IAGzB,OAAO,IAAI,aAvBU,GACC,GAsB+B,EACvD,UAIO,WAAY,yBAA0B,gCAAiC,kBAAqB,QACrG,IAAI,aAAe,cAAc,OAC/B,IAAA,CAAK,EAAK,EAAS,OAChB,EAAa,OACb,EAAU,MACX,MAAM,EAAkB,KAAK,QACvB,EAAkB,IAAI,gBACtB,EAAS,IAAI,WAAW,GAG9B,OAFA,EAAO,QAAQ,KAAK,MACpB,EAAO,gBAAgB,QAChB,IAAI,SAAQ,CAAC,EAAS,KAC3B,EAAgB,QAAW,IACzB,EAAgB,UAAU,GACV,OAAZ,GACF,EAAQ,kBAAkB,KAC1B,KAEA,EAAO,kBAAkB,IAC3B,EAEF,EAAgB,UAAU,GAC1B,EAAO,KAAK,GAAM,IAChB,IACE,MAAM,EAAS,KAAK,MAAM,GAC1B,EAAgB,QAAQ,GACxB,EAAO,GACP,EAAQ,EACV,CAAE,MAAO,GACP,QAAQ,MAAM,GACd,EAAgB,QAAQ,EAC1B,IACC,EAAW,GAElB,CACA,KAAA,CAAM,GACJ,MACM,EAAmB,qCACzB,IAAI,EAFmB,YAEK,KAAK,GACjC,GAAe,OAAX,EACF,MAAM,IAAI,MAAM,4BAElB,MAAM,EAAY,EAAO,GAAG,OAAO,MAAM,QAAQ,KAAK,GAAM,OAAO,KAC7D,EAAW,EAAU,GAAK,EAAU,GACpC,EAAO,EAAU,OACvB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAU,OAAQ,EAAI,IAAK,EAC7C,GAAI,IAAa,EAAU,GAAK,EAAU,EAAI,GAC5C,MAAM,IAAI,MAAM,0BAGpB,MAAM,EAAO,IAAI,aAAa,GAAQ,EAAI,GAC1C,IAAI,EAAW,EACX,EAAQ,EACZ,KAAmD,QAA3C,EAAS,EAAiB,KAAK,KAAkB,CACvD,MAAM,EAAI,OAAO,EAAO,IAClB,EAAI,OAAO,EAAO,IAClB,EAAI,OAAO,EAAO,IACxB,EAAW,KAAK,IAAI,EAAU,EAAG,EAAG,GACpC,MAGM,EAAuD,GAH9C,EAAQ,EAGF,EAAO,EAFb,KAAK,MAAM,EAAQ,GAAQ,EAEE,EAD7B,KAAK,MAAM,GAAS,EAAO,IAAS,GAEnD,EAAK,EAAK,GAAK,EACf,EAAK,EAAK,GAAK,EACf,EAAK,EAAK,GAAK,IACb,CACJ,CACA,MAAM,EAAO,KAAK,KAAK,KAAK,KAAK,IAC3B,EAAc,KAAK,IAAI,EAAG,GAChC,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAI,IAAK,EACxC,EAAK,IAAM,EAEb,MAAM,EAAM,IAAI,gBAAgB,EAAM,EAAM,EAAM,GAElD,OADA,EAAI,SAAW,cACR,CACT,wBAIqB,sBAAuB,0BAA2B,gCAAiC,yBAA0B,aAAgB,QACpJ,IAAI,cAAgB,cAAc,QAChC,IAAA,CAAK,EAAK,EAAS,OAChB,EAAa,OACb,EAAU,MACX,MAAM,EAAkB,KAAK,QACvB,EAAkB,IAAI,gBACtB,EAAS,IAAI,YAAY,GAG/B,OAFA,EAAO,QAAQ,KAAK,MACpB,EAAO,gBAAgB,QAChB,IAAI,SAAQ,CAAC,EAAS,KAC3B,EAAgB,QAAW,IACzB,EAAgB,UAAU,GACV,OAAZ,GACF,EAAQ,kBAAkB,KAC1B,KAEA,EAAO,kBAAkB,IAC3B,EAEF,EAAgB,UAAU,GAC1B,EAAO,KAAK,GAAM,IAChB,IACE,MAAM,EAAS,KAAK,MAAM,GAC1B,EAAgB,QAAQ,GACxB,EAAO,GACP,EAAQ,EACV,CAAE,MAAO,GACP,QAAQ,MAAM,GACd,EAAgB,QAAQ,EAC1B,IACC,EAAW,GAElB,CACA,KAAA,CAAM,GACJ,MAIM,EAAmB,qCACzB,IAAI,EALgB,mBAKK,KAAK,GAC9B,MAAM,EAAmB,OAAX,EAAkB,EAAO,GAAK,KAE5C,GADA,EANmB,qBAMC,KAAK,GACV,OAAX,EACF,MAAM,IAAI,MAAM,mCAElB,MAAM,EAAO,OAAO,EAAO,IACrB,EAAO,IAAI,aAAa,GAAQ,EAAI,GACpC,EAAY,IAAI,SAAS,EAAG,EAAG,GAC/B,EAAY,IAAI,SAAS,EAAG,EAAG,GASrC,GARA,EAbwB,2CAaC,KAAK,GACf,OAAX,GACF,EAAU,IAAI,OAAO,EAAO,IAAK,OAAO,EAAO,IAAK,OAAO,EAAO,KAEpE,EAhBwB,2CAgBC,KAAK,GACf,OAAX,GACF,EAAU,IAAI,OAAO,EAAO,IAAK,OAAO,EAAO,IAAK,OAAO,EAAO,KAEhE,EAAU,EAAI,EAAU,GAAK,EAAU,EAAI,EAAU,GAAK,EAAU,EAAI,EAAU,EAGpF,MAFA,EAAU,IAAI,EAAG,EAAG,GACpB,EAAU,IAAI,EAAG,EAAG,GACd,IAAI,MAAM,wBAElB,IAAI,EAAI,EACR,KAAmD,QAA3C,EAAS,EAAiB,KAAK,KACrC,EAAK,KAAO,OAAO,EAAO,IAC1B,EAAK,KAAO,OAAO,EAAO,IAC1B,EAAK,KAAO,OAAO,EAAO,IAE5B,MAAM,EAAM,IAAI,gBAAgB,EAAM,EAAM,EAAM,GAOlD,OANA,EAAI,SAAW,cACf,EAAI,UAAU,KAAK,GACnB,EAAI,UAAU,KAAK,GACL,OAAV,IACF,EAAI,KAAO,GAEN,CACT,oBAIiB,0BAA2B,oBAAuB,QACrE,IAAI,gBAAkB,cAAc,QAClC,IAAA,CAAK,EAAS,OACX,EAAU,MACc,IAArB,UAAU,QACZ,EAAS,UAAU,GACnB,EAAU,UAAU,IACU,IAArB,UAAU,QAAwC,mBAAjB,UAAU,KACpD,EAAS,UAAU,GACnB,EAAU,MAEZ,MAAM,EAAkB,KAAK,QACvB,EAAkB,IAAI,gBAC5B,OAAO,IAAI,SAAQ,CAAC,EAAS,KAC3B,MAAM,EAAc,IAAI,MAClB,EAAY,IAAI,MACtB,EAAgB,QAAW,IACzB,EAAgB,UAAU,GACV,OAAZ,GACF,EAAQ,kBAAkB,KAC1B,KAEA,EAAO,kBAAkB,IAC3B,EAEF,EAAgB,OAAS,KACvB,MAAM,EAAS,CAAC,EAAa,GAC7B,EAAO,GACP,EAAQ,EAAO,EAEjB,EAAY,iBAAiB,SAAU,IACrC,EAAgB,UAAU,cAAc,IAE1C,EAAU,iBAAiB,SAAU,IACnC,EAAgB,UAAU,YAAY,IAExC,EAAY,iBAAiB,QAAQ,KACnC,EAAgB,QAAQ,eACxB,EAAgB,QAAQ,cAAc,IAExC,EAAU,iBAAiB,QAAQ,KACjC,EAAgB,QAAQ,aACxB,EAAgB,QAAQ,YAAY,IAEtC,EAAgB,UAAU,eAC1B,EAAgB,UAAU,aAC1B,EAAgB,UAAU,eAC1B,EAAgB,UAAU,aAC1B,EAAY,IAAM,2BAClB,EAAU,IAAM,wBAAwB,GAE5C,UAGA,0BACA,sBACA,cACA,UACA,YACA,SACA,YACA,cACA,yBACA,0BACA,0BACA,cACA,UACA,mBACA,aACA,iBACA,mBACA,oBACA,aACA,wBACA,kBACA,cACA,0BACA,sBACA,YACA,kBACA,mBACA,UACA,iBACA,cACA,WACA,gBACA,sBACA,kBACA,OACA,gBACA,eACA,eACA,WACA,sBACA,aACA,WACA,cACA,gBACA,WACA,oBACA,cACA,WACA,aACA,cACA,UACA,aACA,WACA,gBACA,kBACA,cACA,aACA,aACA,SACA,YACA,aACA,WACA,qBACA,cACA,gBACA,wBACA,KACA,iBACA,gBACA,aACA,qBACA,WACA,UACA,QACA,kBACA,WACA,mBACA,gBACA,WACA,oBACA,oBACA,WACA,aACA,SACA,eACA,QACA,UACA,qBACA,YACA,WACA,gBACA,oBACA,cACA,kBACA,gBACA,eACA","file":"/npm/postprocessing@6.23.0/build/postprocessing.esm.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/postprocessing@6.23.0/build/postprocessing.esm.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * postprocessing v6.23.0 build Fri Sep 24 2021\n * https://github.com/vanruesc/postprocessing\n * Copyright 2021 Raoul van Rüschen\n * @license Zlib\n */\n// src/core/ColorChannel.js\nvar ColorChannel = {\n  RED: 0,\n  GREEN: 1,\n  BLUE: 2,\n  ALPHA: 3\n};\n\n// src/core/Disposable.js\nvar Disposable = class {\n  dispose() {\n  }\n};\n\n// src/core/EffectComposer.js\nimport {\n  DepthStencilFormat,\n  DepthTexture,\n  LinearFilter as LinearFilter4,\n  RGBAFormat as RGBAFormat3,\n  RGBFormat as RGBFormat4,\n  UnsignedByteType as UnsignedByteType8,\n  UnsignedIntType,\n  UnsignedInt248Type,\n  Vector2 as Vector213,\n  WebGLMultisampleRenderTarget,\n  WebGLRenderTarget as WebGLRenderTarget9\n} from \"three\";\n\n// src/passes/AdaptiveLuminancePass.js\nimport {\n  HalfFloatType,\n  NearestFilter,\n  RGBAFormat,\n  WebGLRenderTarget as WebGLRenderTarget2\n} from \"three\";\n\n// src/materials/AdaptiveLuminanceMaterial.js\nimport { NoBlending, ShaderMaterial, Uniform } from \"three\";\n\n// src/materials/glsl/adaptive-luminance/shader.frag\nvar shader_default = \"uniform mediump sampler2D luminanceBuffer0;uniform lowp sampler2D luminanceBuffer1;uniform float minLuminance;uniform float deltaTime;uniform float tau;varying vec2 vUv;void main(){float l0=texture2D(luminanceBuffer0,vUv).r;\\n#if __VERSION__ < 300\\nfloat l1=texture2DLodEXT(luminanceBuffer1,vUv,MIP_LEVEL_1X1).r;\\n#else\\nfloat l1=textureLod(luminanceBuffer1,vUv,MIP_LEVEL_1X1).r;\\n#endif\\nl0=max(minLuminance,l0);l1=max(minLuminance,l1);float adaptedLum=l0+(l1-l0)*(1.0-exp(-deltaTime*tau));gl_FragColor.r=adaptedLum;}\";\n\n// src/materials/glsl/common/shader.vert\nvar shader_default2 = \"varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/AdaptiveLuminanceMaterial.js\nvar AdaptiveLuminanceMaterial = class extends ShaderMaterial {\n  constructor() {\n    super({\n      type: \"AdaptiveLuminanceMaterial\",\n      defines: {\n        MIP_LEVEL_1X1: \"0.0\"\n      },\n      uniforms: {\n        luminanceBuffer0: new Uniform(null),\n        luminanceBuffer1: new Uniform(null),\n        minLuminance: new Uniform(0.01),\n        deltaTime: new Uniform(0),\n        tau: new Uniform(1)\n      },\n      fragmentShader: shader_default,\n      vertexShader: shader_default2,\n      blending: NoBlending,\n      depthWrite: false,\n      depthTest: false,\n      extensions: {\n        shaderTextureLOD: true\n      }\n    });\n    this.toneMapped = false;\n  }\n};\n\n// src/materials/BokehMaterial.js\nimport { NoBlending as NoBlending2, ShaderMaterial as ShaderMaterial2, Uniform as Uniform2, Vector2, Vector4 } from \"three\";\n\n// src/materials/glsl/bokeh/shader.frag\nvar shader_default3 = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\nuniform lowp sampler2D cocBuffer;uniform vec2 texelSize;uniform float scale;\\n#if PASS == 1\\nuniform vec4 kernel64[32];\\n#else\\nuniform vec4 kernel16[8];\\n#endif\\nvarying vec2 vUv;void main(){\\n#ifdef FOREGROUND\\nvec2 CoCNearFar=texture2D(cocBuffer,vUv).rg;float CoC=CoCNearFar.r*scale;\\n#else\\nfloat CoC=texture2D(cocBuffer,vUv).g*scale;\\n#endif\\nif(CoC==0.0){gl_FragColor=texture2D(inputBuffer,vUv);}else{\\n#ifdef FOREGROUND\\nvec2 step=texelSize*max(CoC,CoCNearFar.g*scale);\\n#else\\nvec2 step=texelSize*CoC;\\n#endif\\n#if PASS == 1\\nvec4 acc=vec4(0.0);for(int i=0;i<32;++i){vec4 kernel=kernel64[i];vec2 uv=step*kernel.xy+vUv;acc+=texture2D(inputBuffer,uv);uv=step*kernel.zw+vUv;acc+=texture2D(inputBuffer,uv);}gl_FragColor=acc/64.0;\\n#else\\nvec4 maxValue=texture2D(inputBuffer,vUv);for(int i=0;i<8;++i){vec4 kernel=kernel16[i];vec2 uv=step*kernel.xy+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);uv=step*kernel.zw+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);}gl_FragColor=maxValue;\\n#endif\\n}}\";\n\n// src/materials/BokehMaterial.js\nvar BokehMaterial = class extends ShaderMaterial2 {\n  constructor(fill = false, foreground = false) {\n    super({\n      type: \"BokehMaterial\",\n      defines: {\n        PASS: fill ? \"2\" : \"1\"\n      },\n      uniforms: {\n        kernel64: new Uniform2(null),\n        kernel16: new Uniform2(null),\n        inputBuffer: new Uniform2(null),\n        cocBuffer: new Uniform2(null),\n        texelSize: new Uniform2(new Vector2()),\n        scale: new Uniform2(1)\n      },\n      fragmentShader: shader_default3,\n      vertexShader: shader_default2,\n      blending: NoBlending2,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n    if (foreground) {\n      this.defines.FOREGROUND = \"1\";\n    }\n    this.generateKernel();\n  }\n  generateKernel() {\n    const GOLDEN_ANGLE = 2.39996323;\n    const points64 = new Float32Array(128);\n    const points16 = new Float32Array(32);\n    let i64 = 0, i16 = 0;\n    for (let i = 0; i < 80; ++i) {\n      const theta = i * GOLDEN_ANGLE;\n      const r = Math.sqrt(i) / Math.sqrt(80);\n      const u = r * Math.cos(theta), v3 = r * Math.sin(theta);\n      if (i % 5 === 0) {\n        points16[i16++] = u;\n        points16[i16++] = v3;\n      } else {\n        points64[i64++] = u;\n        points64[i64++] = v3;\n      }\n    }\n    const kernel64 = [];\n    const kernel16 = [];\n    for (let i = 0; i < 128; ) {\n      kernel64.push(new Vector4(points64[i++], points64[i++], points64[i++], points64[i++]));\n    }\n    for (let i = 0; i < 32; ) {\n      kernel16.push(new Vector4(points16[i++], points16[i++], points16[i++], points16[i++]));\n    }\n    this.uniforms.kernel64.value = kernel64;\n    this.uniforms.kernel16.value = kernel16;\n  }\n  setTexelSize(x, y) {\n    this.uniforms.texelSize.value.set(x, y);\n  }\n};\n\n// src/materials/CircleOfConfusionMaterial.js\nimport { NoBlending as NoBlending3, PerspectiveCamera, ShaderMaterial as ShaderMaterial3, Uniform as Uniform3 } from \"three\";\n\n// src/materials/glsl/circle-of-confusion/shader.frag\nvar shader_default4 = \"#include <common>\\n#include <packing>\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\nuniform float focusDistance;uniform float focalLength;uniform float cameraNear;uniform float cameraFar;varying vec2 vUv;float readDepth(const in vec2 uv){\\n#if DEPTH_PACKING == 3201\\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\\n#else\\nreturn texture2D(depthBuffer,uv).r;\\n#endif\\n}void main(){float depth=readDepth(vUv);\\n#ifdef PERSPECTIVE_CAMERA\\nfloat viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);float linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);\\n#else\\nfloat linearDepth=depth;\\n#endif\\nfloat signedDistance=linearDepth-focusDistance;float magnitude=smoothstep(0.0,focalLength,abs(signedDistance));gl_FragColor.rg=vec2(step(signedDistance,0.0)*magnitude,step(0.0,signedDistance)*magnitude);}\";\n\n// src/materials/CircleOfConfusionMaterial.js\nvar CircleOfConfusionMaterial = class extends ShaderMaterial3 {\n  constructor(camera) {\n    super({\n      type: \"CircleOfConfusionMaterial\",\n      defines: {\n        DEPTH_PACKING: \"0\"\n      },\n      uniforms: {\n        depthBuffer: new Uniform3(null),\n        focusDistance: new Uniform3(0),\n        focalLength: new Uniform3(0),\n        cameraNear: new Uniform3(0.3),\n        cameraFar: new Uniform3(1e3)\n      },\n      fragmentShader: shader_default4,\n      vertexShader: shader_default2,\n      blending: NoBlending3,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n    this.adoptCameraSettings(camera);\n  }\n  get depthPacking() {\n    return Number(this.defines.DEPTH_PACKING);\n  }\n  set depthPacking(value) {\n    this.defines.DEPTH_PACKING = value.toFixed(0);\n    this.needsUpdate = true;\n  }\n  adoptCameraSettings(camera = null) {\n    if (camera !== null) {\n      this.uniforms.cameraNear.value = camera.near;\n      this.uniforms.cameraFar.value = camera.far;\n      if (camera instanceof PerspectiveCamera) {\n        this.defines.PERSPECTIVE_CAMERA = \"1\";\n      } else {\n        delete this.defines.PERSPECTIVE_CAMERA;\n      }\n      this.needsUpdate = true;\n    }\n  }\n};\n\n// src/materials/ColorEdgesMaterial.js\nimport { NoBlending as NoBlending4, ShaderMaterial as ShaderMaterial4, Uniform as Uniform4, Vector2 as Vector22 } from \"three\";\n\n// src/materials/glsl/edge-detection/shader.frag\nvar shader_default5 = \"varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;\\n#if EDGE_DETECTION_MODE != 0\\nvarying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;\\n#endif\\n#if EDGE_DETECTION_MODE == 1\\n#include <common>\\n#endif\\n#if EDGE_DETECTION_MODE == 0 || PREDICATION_MODE == 1\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\nfloat readDepth(const in vec2 uv){\\n#if DEPTH_PACKING == 3201\\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\\n#else\\nreturn texture2D(depthBuffer,uv).r;\\n#endif\\n}vec3 gatherNeighbors(){float p=readDepth(vUv);float pLeft=readDepth(vUv0);float pTop=readDepth(vUv1);return vec3(p,pLeft,pTop);}\\n#elif PREDICATION_MODE == 2\\nuniform sampler2D predicationBuffer;vec3 gatherNeighbors(){float p=texture2D(predicationBuffer,vUv).r;float pLeft=texture2D(predicationBuffer,vUv0).r;float pTop=texture2D(predicationBuffer,vUv1).r;return vec3(p,pLeft,pTop);}\\n#endif\\n#if PREDICATION_MODE != 0\\nvec2 calculatePredicatedThreshold(){vec3 neighbours=gatherNeighbors();vec2 delta=abs(neighbours.xx-neighbours.yz);vec2 edges=step(PREDICATION_THRESHOLD,delta);return PREDICATION_SCALE*EDGE_THRESHOLD*(1.0-PREDICATION_STRENGTH*edges);}\\n#endif\\n#if EDGE_DETECTION_MODE != 0\\nuniform sampler2D inputBuffer;\\n#endif\\nvoid main(){\\n#if EDGE_DETECTION_MODE == 0\\nconst vec2 threshold=vec2(DEPTH_THRESHOLD);\\n#elif PREDICATION_MODE != 0\\nvec2 threshold=calculatePredicatedThreshold();\\n#else\\nconst vec2 threshold=vec2(EDGE_THRESHOLD);\\n#endif\\n#if EDGE_DETECTION_MODE == 0\\nvec3 neighbors=gatherNeighbors();vec2 delta=abs(neighbors.xx-vec2(neighbors.y,neighbors.z));vec2 edges=step(threshold,delta);if(dot(edges,vec2(1.0))==0.0){discard;}gl_FragColor=vec4(edges,0.0,1.0);\\n#elif EDGE_DETECTION_MODE == 1\\nfloat l=linearToRelativeLuminance(texture2D(inputBuffer,vUv).rgb);float lLeft=linearToRelativeLuminance(texture2D(inputBuffer,vUv0).rgb);float lTop=linearToRelativeLuminance(texture2D(inputBuffer,vUv1).rgb);vec4 delta;delta.xy=abs(l-vec2(lLeft,lTop));vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}float lRight=linearToRelativeLuminance(texture2D(inputBuffer,vUv2).rgb);float lBottom=linearToRelativeLuminance(texture2D(inputBuffer,vUv3).rgb);delta.zw=abs(l-vec2(lRight,lBottom));vec2 maxDelta=max(delta.xy,delta.zw);float lLeftLeft=linearToRelativeLuminance(texture2D(inputBuffer,vUv4).rgb);float lTopTop=linearToRelativeLuminance(texture2D(inputBuffer,vUv5).rgb);delta.zw=abs(vec2(lLeft,lTop)-vec2(lLeftLeft,lTopTop));maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges.xy*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0);\\n#elif EDGE_DETECTION_MODE == 2\\nvec4 delta;vec3 c=texture2D(inputBuffer,vUv).rgb;vec3 cLeft=texture2D(inputBuffer,vUv0).rgb;vec3 t=abs(c-cLeft);delta.x=max(max(t.r,t.g),t.b);vec3 cTop=texture2D(inputBuffer,vUv1).rgb;t=abs(c-cTop);delta.y=max(max(t.r,t.g),t.b);vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}vec3 cRight=texture2D(inputBuffer,vUv2).rgb;t=abs(c-cRight);delta.z=max(max(t.r,t.g),t.b);vec3 cBottom=texture2D(inputBuffer,vUv3).rgb;t=abs(c-cBottom);delta.w=max(max(t.r,t.g),t.b);vec2 maxDelta=max(delta.xy,delta.zw);vec3 cLeftLeft=texture2D(inputBuffer,vUv4).rgb;t=abs(c-cLeftLeft);delta.z=max(max(t.r,t.g),t.b);vec3 cTopTop=texture2D(inputBuffer,vUv5).rgb;t=abs(c-cTopTop);delta.w=max(max(t.r,t.g),t.b);maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0);\\n#endif\\n}\";\n\n// src/materials/glsl/edge-detection/shader.vert\nvar shader_default6 = \"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;\\n#if EDGE_DETECTION_MODE != 0\\nvarying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;\\n#endif\\nvoid main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,0.0);vUv1=vUv+texelSize*vec2(0.0,-1.0);\\n#if EDGE_DETECTION_MODE != 0\\nvUv2=vUv+texelSize*vec2(1.0,0.0);vUv3=vUv+texelSize*vec2(0.0,1.0);vUv4=vUv+texelSize*vec2(-2.0,0.0);vUv5=vUv+texelSize*vec2(0.0,-2.0);\\n#endif\\ngl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/ColorEdgesMaterial.js\nvar ColorEdgesMaterial = class extends ShaderMaterial4 {\n  constructor(texelSize = new Vector22()) {\n    super({\n      type: \"ColorEdgesMaterial\",\n      defines: {\n        EDGE_DETECTION_MODE: \"2\",\n        LOCAL_CONTRAST_ADAPTATION_FACTOR: \"2.0\",\n        EDGE_THRESHOLD: \"0.1\"\n      },\n      uniforms: {\n        inputBuffer: new Uniform4(null),\n        texelSize: new Uniform4(texelSize)\n      },\n      fragmentShader: shader_default5,\n      vertexShader: shader_default6,\n      blending: NoBlending4,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n  }\n  setLocalContrastAdaptationFactor(factor) {\n    this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR = factor.toFixed(\"2\");\n    this.needsUpdate = true;\n  }\n  setEdgeDetectionThreshold(threshold) {\n    const t = Math.min(Math.max(threshold, 0.05), 0.5);\n    this.defines.EDGE_THRESHOLD = t.toFixed(\"2\");\n    this.needsUpdate = true;\n  }\n};\n\n// src/materials/ConvolutionMaterial.js\nimport { NoBlending as NoBlending5, ShaderMaterial as ShaderMaterial5, Uniform as Uniform5, Vector2 as Vector23 } from \"three\";\n\n// src/materials/glsl/convolution/shader.frag\nvar shader_default7 = \"#include <common>\\n#include <dithering_pars_fragment>\\n#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\nvarying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec4 sum=texture2D(inputBuffer,vUv0);sum+=texture2D(inputBuffer,vUv1);sum+=texture2D(inputBuffer,vUv2);sum+=texture2D(inputBuffer,vUv3);gl_FragColor=sum*0.25;\\n#include <dithering_fragment>\\n}\";\n\n// src/materials/glsl/convolution/shader.vert\nvar shader_default8 = \"uniform vec2 texelSize;uniform vec2 halfTexelSize;uniform float kernel;uniform float scale;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize*vec2(kernel)+halfTexelSize)*scale;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/ConvolutionMaterial.js\nvar ConvolutionMaterial = class extends ShaderMaterial5 {\n  constructor(texelSize = new Vector23()) {\n    super({\n      type: \"ConvolutionMaterial\",\n      uniforms: {\n        inputBuffer: new Uniform5(null),\n        texelSize: new Uniform5(new Vector23()),\n        halfTexelSize: new Uniform5(new Vector23()),\n        kernel: new Uniform5(0),\n        scale: new Uniform5(1)\n      },\n      fragmentShader: shader_default7,\n      vertexShader: shader_default8,\n      blending: NoBlending5,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n    this.setTexelSize(texelSize.x, texelSize.y);\n    this.kernelSize = KernelSize.LARGE;\n  }\n  getKernel() {\n    return kernelPresets[this.kernelSize];\n  }\n  setTexelSize(x, y) {\n    this.uniforms.texelSize.value.set(x, y);\n    this.uniforms.halfTexelSize.value.set(x, y).multiplyScalar(0.5);\n  }\n};\nvar kernelPresets = [\n  new Float32Array([0, 0]),\n  new Float32Array([0, 1, 1]),\n  new Float32Array([0, 1, 1, 2]),\n  new Float32Array([0, 1, 2, 2, 3]),\n  new Float32Array([0, 1, 2, 3, 4, 4, 5]),\n  new Float32Array([0, 1, 2, 3, 4, 5, 7, 8, 9, 10])\n];\nvar KernelSize = {\n  VERY_SMALL: 0,\n  SMALL: 1,\n  MEDIUM: 2,\n  LARGE: 3,\n  VERY_LARGE: 4,\n  HUGE: 5\n};\n\n// src/materials/CopyMaterial.js\nimport { NoBlending as NoBlending6, ShaderMaterial as ShaderMaterial6, Uniform as Uniform6 } from \"three\";\n\n// src/materials/glsl/copy/shader.frag\nvar shader_default9 = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\nuniform float opacity;varying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=opacity*texel;\\n#include <encodings_fragment>\\n}\";\n\n// src/materials/CopyMaterial.js\nvar CopyMaterial = class extends ShaderMaterial6 {\n  constructor() {\n    super({\n      type: \"CopyMaterial\",\n      uniforms: {\n        inputBuffer: new Uniform6(null),\n        opacity: new Uniform6(1)\n      },\n      fragmentShader: shader_default9,\n      vertexShader: shader_default2,\n      blending: NoBlending6,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n  }\n};\n\n// src/materials/DepthComparisonMaterial.js\nimport { NoBlending as NoBlending7, PerspectiveCamera as PerspectiveCamera2, ShaderMaterial as ShaderMaterial7, Uniform as Uniform7 } from \"three\";\n\n// src/materials/glsl/depth-comparison/shader.frag\nvar shader_default10 = \"#include <packing>\\n#include <clipping_planes_pars_fragment>\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\nuniform float cameraNear;uniform float cameraFar;varying float vViewZ;varying vec4 vProjTexCoord;void main(){\\n#include <clipping_planes_fragment>\\nvec2 projTexCoord=(vProjTexCoord.xy/vProjTexCoord.w)*0.5+0.5;projTexCoord=clamp(projTexCoord,0.002,0.998);float fragCoordZ=unpackRGBAToDepth(texture2D(depthBuffer,projTexCoord));\\n#ifdef PERSPECTIVE_CAMERA\\nfloat viewZ=perspectiveDepthToViewZ(fragCoordZ,cameraNear,cameraFar);\\n#else\\nfloat viewZ=orthographicDepthToViewZ(fragCoordZ,cameraNear,cameraFar);\\n#endif\\nfloat depthTest=(-vViewZ>-viewZ)? 1.0 : 0.0;gl_FragColor.rg=vec2(0.0,depthTest);}\";\n\n// src/materials/glsl/depth-comparison/shader.vert\nvar shader_default11 = \"#include <common>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <clipping_planes_pars_vertex>\\nvarying float vViewZ;varying vec4 vProjTexCoord;void main(){\\n#include <skinbase_vertex>\\n#include <begin_vertex>\\n#include <morphtarget_vertex>\\n#include <skinning_vertex>\\n#include <project_vertex>\\nvViewZ=mvPosition.z;vProjTexCoord=gl_Position;\\n#include <clipping_planes_vertex>\\n}\";\n\n// src/materials/DepthComparisonMaterial.js\nvar DepthComparisonMaterial = class extends ShaderMaterial7 {\n  constructor(depthTexture = null, camera) {\n    super({\n      type: \"DepthComparisonMaterial\",\n      uniforms: {\n        depthBuffer: new Uniform7(depthTexture),\n        cameraNear: new Uniform7(0.3),\n        cameraFar: new Uniform7(1e3)\n      },\n      fragmentShader: shader_default10,\n      vertexShader: shader_default11,\n      blending: NoBlending7,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n    this.adoptCameraSettings(camera);\n  }\n  adoptCameraSettings(camera = null) {\n    if (camera !== null) {\n      this.uniforms.cameraNear.value = camera.near;\n      this.uniforms.cameraFar.value = camera.far;\n      if (camera instanceof PerspectiveCamera2) {\n        this.defines.PERSPECTIVE_CAMERA = \"1\";\n      } else {\n        delete this.defines.PERSPECTIVE_CAMERA;\n      }\n    }\n  }\n};\n\n// src/materials/DepthCopyMaterial.js\nimport { NoBlending as NoBlending8, ShaderMaterial as ShaderMaterial8, Uniform as Uniform8, Vector2 as Vector24 } from \"three\";\n\n// src/materials/glsl/depth-copy/shader.frag\nvar shader_default12 = \"#include <packing>\\n#if INPUT_DEPTH_PACKING == 3201\\nuniform lowp sampler2D depthBuffer;\\n#else\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\n#endif\\nvarying vec2 vUv;void main(){\\n#if INPUT_DEPTH_PACKING == OUTPUT_DEPTH_PACKING\\ngl_FragColor=texture2D(depthBuffer,vUv);\\n#else\\n#if INPUT_DEPTH_PACKING == 3201\\nfloat depth=unpackRGBAToDepth(texture2D(depthBuffer,vUv));gl_FragColor=vec4(vec3(depth),1.0);\\n#else\\nfloat depth=texture2D(depthBuffer,vUv).r;gl_FragColor=packDepthToRGBA(depth);\\n#endif\\n#endif\\n}\";\n\n// src/materials/glsl/depth-copy/shader.vert\nvar shader_default13 = \"varying vec2 vUv;\\n#if DEPTH_COPY_MODE == 1\\nuniform vec2 screenPosition;\\n#endif\\nvoid main(){\\n#if DEPTH_COPY_MODE == 1\\nvUv=screenPosition;\\n#else\\nvUv=position.xy*0.5+0.5;\\n#endif\\ngl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/DepthCopyMaterial.js\nvar DepthCopyMaterial = class extends ShaderMaterial8 {\n  constructor() {\n    super({\n      type: \"DepthCopyMaterial\",\n      defines: {\n        INPUT_DEPTH_PACKING: \"0\",\n        OUTPUT_DEPTH_PACKING: \"0\",\n        DEPTH_COPY_MODE: \"0\"\n      },\n      uniforms: {\n        depthBuffer: new Uniform8(null),\n        screenPosition: new Uniform8(new Vector24())\n      },\n      fragmentShader: shader_default12,\n      vertexShader: shader_default13,\n      blending: NoBlending8,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n    this.mode = DepthCopyMode.FULL;\n  }\n  getInputDepthPacking() {\n    return Number(this.defines.INPUT_DEPTH_PACKING);\n  }\n  setInputDepthPacking(value) {\n    this.defines.INPUT_DEPTH_PACKING = value.toFixed(0);\n    this.needsUpdate = true;\n  }\n  getOutputDepthPacking() {\n    return Number(this.defines.OUTPUT_DEPTH_PACKING);\n  }\n  setOutputDepthPacking(value) {\n    this.defines.OUTPUT_DEPTH_PACKING = value.toFixed(0);\n    this.needsUpdate = true;\n  }\n  getMode() {\n    return this.mode;\n  }\n  setMode(value) {\n    this.mode = value;\n    this.defines.DEPTH_COPY_MODE = value.toFixed(0);\n    this.needsUpdate = true;\n  }\n};\nvar DepthCopyMode = {\n  FULL: 0,\n  SINGLE: 1\n};\n\n// src/materials/DepthDownsamplingMaterial.js\nimport { NoBlending as NoBlending9, ShaderMaterial as ShaderMaterial9, Uniform as Uniform9, Vector2 as Vector25 } from \"three\";\n\n// src/materials/glsl/depth-downsampling/shader.frag\nvar shader_default14 = \"#include <packing>\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\n#ifdef DOWNSAMPLE_NORMALS\\nuniform lowp sampler2D normalBuffer;\\n#endif\\nvarying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;float readDepth(const in vec2 uv){\\n#if DEPTH_PACKING == 3201\\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\\n#else\\nreturn texture2D(depthBuffer,uv).r;\\n#endif\\n}int findBestDepth(const in float samples[4]){float c=(samples[0]+samples[1]+samples[2]+samples[3])/4.0;float distances[4];distances[0]=abs(c-samples[0]);distances[1]=abs(c-samples[1]);distances[2]=abs(c-samples[2]);distances[3]=abs(c-samples[3]);float maxDistance=max(max(distances[0],distances[1]),max(distances[2],distances[3]));int remaining[3];int rejected[3];int i,j,k;for(i=0,j=0,k=0;i<4;++i){if(distances[i]<maxDistance){remaining[j++]=i;}else{rejected[k++]=i;}}for(;j<3;++j){remaining[j]=rejected[--k];}vec3 s=vec3(samples[remaining[0]],samples[remaining[1]],samples[remaining[2]]);c=(s.x+s.y+s.z)/3.0;distances[0]=abs(c-s.x);distances[1]=abs(c-s.y);distances[2]=abs(c-s.z);float minDistance=min(distances[0],min(distances[1],distances[2]));for(i=0;i<3;++i){if(distances[i]==minDistance){break;}}return remaining[i];}void main(){float d[4];d[0]=readDepth(vUv0);d[1]=readDepth(vUv1);d[2]=readDepth(vUv2);d[3]=readDepth(vUv3);int index=findBestDepth(d);\\n#ifdef DOWNSAMPLE_NORMALS\\nvec2 uvs[4];uvs[0]=vUv0;uvs[1]=vUv1;uvs[2]=vUv2;uvs[3]=vUv3;vec3 n=texture2D(normalBuffer,uvs[index]).rgb;\\n#else\\nvec3 n=vec3(0.0);\\n#endif\\ngl_FragColor=vec4(n,d[index]);}\";\n\n// src/materials/glsl/depth-downsampling/shader.vert\nvar shader_default15 = \"uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=uv;vUv1=vec2(uv.x,uv.y+texelSize.y);vUv2=vec2(uv.x+texelSize.x,uv.y);vUv3=uv+texelSize;gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/DepthDownsamplingMaterial.js\nvar DepthDownsamplingMaterial = class extends ShaderMaterial9 {\n  constructor() {\n    super({\n      type: \"DepthDownsamplingMaterial\",\n      defines: {\n        DEPTH_PACKING: \"0\"\n      },\n      uniforms: {\n        depthBuffer: new Uniform9(null),\n        normalBuffer: new Uniform9(null),\n        texelSize: new Uniform9(new Vector25())\n      },\n      fragmentShader: shader_default14,\n      vertexShader: shader_default15,\n      blending: NoBlending9,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n  }\n  get depthPacking() {\n    return Number(this.defines.DEPTH_PACKING);\n  }\n  set depthPacking(value) {\n    this.defines.DEPTH_PACKING = value.toFixed(0);\n    this.needsUpdate = true;\n  }\n  setTexelSize(x, y) {\n    this.uniforms.texelSize.value.set(x, y);\n  }\n};\n\n// src/materials/DepthMaskMaterial.js\nimport {\n  AlwaysDepth,\n  EqualDepth,\n  GreaterDepth,\n  GreaterEqualDepth,\n  LessDepth,\n  LessEqualDepth,\n  NeverDepth,\n  NoBlending as NoBlending10,\n  NotEqualDepth,\n  ShaderMaterial as ShaderMaterial10,\n  Uniform as Uniform10\n} from \"three\";\n\n// src/materials/glsl/depth-mask/shader.frag\nvar shader_default16 = \"#include <common>\\n#include <packing>\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D depthBuffer0;uniform highp sampler2D depthBuffer1;\\n#else\\nuniform mediump sampler2D depthBuffer0;uniform mediump sampler2D depthBuffer1;\\n#endif\\nuniform sampler2D inputBuffer;uniform float bias0;uniform float bias1;varying vec2 vUv;void main(){vec2 depth;\\n#if DEPTH_PACKING_0 == 3201\\ndepth.x=unpackRGBAToDepth(texture2D(depthBuffer0,vUv));\\n#else\\ndepth.x=texture2D(depthBuffer0,vUv).r;\\n#endif\\n#if DEPTH_PACKING_1 == 3201\\ndepth.y=unpackRGBAToDepth(texture2D(depthBuffer1,vUv));\\n#else\\ndepth.y=texture2D(depthBuffer1,vUv).r;\\n#endif\\ndepth=clamp(depth+vec2(bias0,bias1),0.0,1.0);\\n#ifdef KEEP_FAR\\nbool keep=(depth.x==1.0)||depthTest(depth.x,depth.y);\\n#else\\nbool keep=(depth.x!=1.0)&&depthTest(depth.x,depth.y);\\n#endif\\nif(keep){gl_FragColor=texture2D(inputBuffer,vUv);}else{discard;}}\";\n\n// src/materials/DepthMaskMaterial.js\nvar DepthMaskMaterial = class extends ShaderMaterial10 {\n  constructor() {\n    super({\n      type: \"DepthMaskMaterial\",\n      defines: {\n        DEPTH_EPSILON: \"0.00001\",\n        DEPTH_PACKING_0: \"0\",\n        DEPTH_PACKING_1: \"0\",\n        KEEP_FAR: \"1\"\n      },\n      uniforms: {\n        inputBuffer: new Uniform10(null),\n        depthBuffer0: new Uniform10(null),\n        depthBuffer1: new Uniform10(null),\n        bias0: new Uniform10(0),\n        bias1: new Uniform10(0)\n      },\n      fragmentShader: shader_default16,\n      vertexShader: shader_default2,\n      blending: NoBlending10,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n    this.depthMode = LessDepth;\n    this.setDepthMode(LessDepth);\n  }\n  get keepFar() {\n    return this.defines.KEEP_FAR !== void 0;\n  }\n  set keepFar(value) {\n    if (value) {\n      this.defines.KEEP_FAR = \"1\";\n    } else {\n      delete this.defines.KEEP_FAR;\n    }\n    this.needsUpdate = true;\n  }\n  getEpsilon() {\n    return Number(this.defines.DEPTH_EPSILON);\n  }\n  setEpsilon(value) {\n    this.defines.DEPTH_EPSILON = value.toFixed(16);\n    this.needsUpdate = true;\n  }\n  getDepthMode() {\n    return this.depthMode;\n  }\n  setDepthMode(mode) {\n    let depthTest;\n    switch (mode) {\n      case NeverDepth:\n        depthTest = \"false\";\n        break;\n      case AlwaysDepth:\n        depthTest = \"true\";\n        break;\n      case EqualDepth:\n        depthTest = \"abs(d1 - d0) <= DEPTH_EPSILON\";\n        break;\n      case NotEqualDepth:\n        depthTest = \"abs(d1 - d0) > DEPTH_EPSILON\";\n        break;\n      case LessDepth:\n        depthTest = \"d0 > d1\";\n        break;\n      case LessEqualDepth:\n        depthTest = \"d0 >= d1\";\n        break;\n      case GreaterEqualDepth:\n        depthTest = \"d0 <= d1\";\n        break;\n      case GreaterDepth:\n      default:\n        depthTest = \"d0 < d1\";\n        break;\n    }\n    this.depthMode = mode;\n    this.defines[\"depthTest(d0, d1)\"] = depthTest;\n    this.needsUpdate = true;\n  }\n};\n\n// src/materials/EdgeDetectionMaterial.js\nimport { NoBlending as NoBlending11, ShaderMaterial as ShaderMaterial11, Uniform as Uniform11, Vector2 as Vector26 } from \"three\";\nvar EdgeDetectionMaterial = class extends ShaderMaterial11 {\n  constructor(texelSize = new Vector26(), mode = EdgeDetectionMode.COLOR) {\n    super({\n      type: \"EdgeDetectionMaterial\",\n      defines: {\n        LOCAL_CONTRAST_ADAPTATION_FACTOR: \"2.0\",\n        EDGE_THRESHOLD: \"0.1\",\n        DEPTH_THRESHOLD: \"0.01\",\n        PREDICATION_MODE: \"0\",\n        PREDICATION_THRESHOLD: \"0.01\",\n        PREDICATION_SCALE: \"2.0\",\n        PREDICATION_STRENGTH: \"1.0\",\n        DEPTH_PACKING: \"0\"\n      },\n      uniforms: {\n        inputBuffer: new Uniform11(null),\n        depthBuffer: new Uniform11(null),\n        predicationBuffer: new Uniform11(null),\n        texelSize: new Uniform11(texelSize)\n      },\n      fragmentShader: shader_default5,\n      vertexShader: shader_default6,\n      blending: NoBlending11,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n    this.setEdgeDetectionMode(mode);\n  }\n  get depthPacking() {\n    return Number(this.defines.DEPTH_PACKING);\n  }\n  set depthPacking(value) {\n    this.defines.DEPTH_PACKING = value.toFixed(0);\n    this.needsUpdate = true;\n  }\n  setEdgeDetectionMode(mode) {\n    this.defines.EDGE_DETECTION_MODE = mode.toFixed(0);\n    this.needsUpdate = true;\n  }\n  setLocalContrastAdaptationFactor(factor) {\n    this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR = factor.toFixed(\"6\");\n    this.needsUpdate = true;\n  }\n  setEdgeDetectionThreshold(threshold) {\n    this.defines.EDGE_THRESHOLD = threshold.toFixed(\"6\");\n    this.defines.DEPTH_THRESHOLD = (threshold * 0.1).toFixed(\"6\");\n    this.needsUpdate = true;\n  }\n  setPredicationMode(mode) {\n    this.defines.PREDICATION_MODE = mode.toFixed(0);\n    this.needsUpdate = true;\n  }\n  setPredicationBuffer(predicationBuffer) {\n    this.uniforms.predicationBuffer.value = predicationBuffer;\n  }\n  setPredicationThreshold(threshold) {\n    this.defines.PREDICATION_THRESHOLD = threshold.toFixed(\"6\");\n    this.needsUpdate = true;\n  }\n  setPredicationScale(scale) {\n    this.defines.PREDICATION_SCALE = scale.toFixed(\"6\");\n    this.needsUpdate = true;\n  }\n  setPredicationStrength(strength) {\n    this.defines.PREDICATION_STRENGTH = strength.toFixed(\"6\");\n    this.needsUpdate = true;\n  }\n};\nvar EdgeDetectionMode = {\n  DEPTH: 0,\n  LUMA: 1,\n  COLOR: 2\n};\nvar PredicationMode = {\n  DISABLED: 0,\n  DEPTH: 1,\n  CUSTOM: 2\n};\n\n// src/materials/EffectMaterial.js\nimport { NoBlending as NoBlending12, PerspectiveCamera as PerspectiveCamera3, ShaderMaterial as ShaderMaterial12, Uniform as Uniform12, Vector2 as Vector27 } from \"three\";\n\n// src/materials/glsl/effect/shader.frag\nvar shader_default17 = \"#include <common>\\n#include <packing>\\n#include <dithering_pars_fragment>\\n#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D depthBuffer;\\n#else\\nuniform mediump sampler2D depthBuffer;\\n#endif\\nuniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;float readDepth(const in vec2 uv){\\n#if DEPTH_PACKING == 3201\\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\\n#else\\nreturn texture2D(depthBuffer,uv).r;\\n#endif\\n}float getViewZ(const in float depth){\\n#ifdef PERSPECTIVE_CAMERA\\nreturn perspectiveDepthToViewZ(depth,cameraNear,cameraFar);\\n#else\\nreturn orthographicDepthToViewZ(depth,cameraNear,cameraFar);\\n#endif\\n}FRAGMENT_HEADvoid main(){FRAGMENT_MAIN_UVvec4 color0=texture2D(inputBuffer,UV);vec4 color1=vec4(0.0);FRAGMENT_MAIN_IMAGEgl_FragColor=color0;\\n#ifdef ENCODE_OUTPUT\\n#include <encodings_fragment>\\n#endif\\n#include <dithering_fragment>\\n}\";\n\n// src/materials/glsl/effect/shader.vert\nvar shader_default18 = \"uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEADvoid main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORTgl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/EffectMaterial.js\nvar EffectMaterial = class extends ShaderMaterial12 {\n  constructor(shaderParts = null, defines = null, uniforms = null, camera, dithering = false) {\n    super({\n      type: \"EffectMaterial\",\n      defines: {\n        DEPTH_PACKING: \"0\",\n        ENCODE_OUTPUT: \"1\"\n      },\n      uniforms: {\n        inputBuffer: new Uniform12(null),\n        depthBuffer: new Uniform12(null),\n        resolution: new Uniform12(new Vector27()),\n        texelSize: new Uniform12(new Vector27()),\n        cameraNear: new Uniform12(0.3),\n        cameraFar: new Uniform12(1e3),\n        aspect: new Uniform12(1),\n        time: new Uniform12(0)\n      },\n      blending: NoBlending12,\n      depthWrite: false,\n      depthTest: false,\n      dithering\n    });\n    this.toneMapped = false;\n    if (shaderParts !== null) {\n      this.setShaderParts(shaderParts);\n    }\n    if (defines !== null) {\n      this.setDefines(defines);\n    }\n    if (uniforms !== null) {\n      this.setUniforms(uniforms);\n    }\n    this.adoptCameraSettings(camera);\n  }\n  get depthPacking() {\n    return Number(this.defines.DEPTH_PACKING);\n  }\n  set depthPacking(value) {\n    this.defines.DEPTH_PACKING = value.toFixed(0);\n    this.needsUpdate = true;\n  }\n  setShaderParts(shaderParts) {\n    this.fragmentShader = shader_default17.replace(Section.FRAGMENT_HEAD, shaderParts.get(Section.FRAGMENT_HEAD)).replace(Section.FRAGMENT_MAIN_UV, shaderParts.get(Section.FRAGMENT_MAIN_UV)).replace(Section.FRAGMENT_MAIN_IMAGE, shaderParts.get(Section.FRAGMENT_MAIN_IMAGE));\n    this.vertexShader = shader_default18.replace(Section.VERTEX_HEAD, shaderParts.get(Section.VERTEX_HEAD)).replace(Section.VERTEX_MAIN_SUPPORT, shaderParts.get(Section.VERTEX_MAIN_SUPPORT));\n    this.needsUpdate = true;\n    return this;\n  }\n  setDefines(defines) {\n    for (const entry of defines.entries()) {\n      this.defines[entry[0]] = entry[1];\n    }\n    this.needsUpdate = true;\n    return this;\n  }\n  setUniforms(uniforms) {\n    for (const entry of uniforms.entries()) {\n      this.uniforms[entry[0]] = entry[1];\n    }\n    return this;\n  }\n  adoptCameraSettings(camera = null) {\n    if (camera !== null) {\n      this.uniforms.cameraNear.value = camera.near;\n      this.uniforms.cameraFar.value = camera.far;\n      if (camera instanceof PerspectiveCamera3) {\n        this.defines.PERSPECTIVE_CAMERA = \"1\";\n      } else {\n        delete this.defines.PERSPECTIVE_CAMERA;\n      }\n      this.needsUpdate = true;\n    }\n  }\n  setSize(width, height) {\n    const w = Math.max(width, 1);\n    const h = Math.max(height, 1);\n    this.uniforms.resolution.value.set(w, h);\n    this.uniforms.texelSize.value.set(1 / w, 1 / h);\n    this.uniforms.aspect.value = w / h;\n  }\n};\nvar Section = {\n  FRAGMENT_HEAD: \"FRAGMENT_HEAD\",\n  FRAGMENT_MAIN_UV: \"FRAGMENT_MAIN_UV\",\n  FRAGMENT_MAIN_IMAGE: \"FRAGMENT_MAIN_IMAGE\",\n  VERTEX_HEAD: \"VERTEX_HEAD\",\n  VERTEX_MAIN_SUPPORT: \"VERTEX_MAIN_SUPPORT\"\n};\n\n// src/materials/GodRaysMaterial.js\nimport { NoBlending as NoBlending13, ShaderMaterial as ShaderMaterial13, Uniform as Uniform13 } from \"three\";\n\n// src/materials/glsl/god-rays/shader.frag\nvar shader_default19 = \"#include <common>\\n#include <dithering_pars_fragment>\\n#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\nuniform vec2 lightPosition;uniform float exposure;uniform float decay;uniform float density;uniform float weight;uniform float clampMax;varying vec2 vUv;void main(){vec2 coord=vUv;vec2 delta=lightPosition-coord;delta*=1.0/SAMPLES_FLOAT*density;float illuminationDecay=1.0;vec4 color=vec4(0.0);for(int i=0;i<SAMPLES_INT;++i){coord+=delta;vec4 texel=texture2D(inputBuffer,coord);texel*=illuminationDecay*weight;color+=texel;illuminationDecay*=decay;}gl_FragColor=clamp(color*exposure,0.0,clampMax);\\n#include <dithering_fragment>\\n}\";\n\n// src/materials/GodRaysMaterial.js\nvar GodRaysMaterial = class extends ShaderMaterial13 {\n  constructor(lightPosition) {\n    super({\n      type: \"GodRaysMaterial\",\n      defines: {\n        SAMPLES_INT: \"60\",\n        SAMPLES_FLOAT: \"60.0\"\n      },\n      uniforms: {\n        inputBuffer: new Uniform13(null),\n        lightPosition: new Uniform13(lightPosition),\n        density: new Uniform13(1),\n        decay: new Uniform13(1),\n        weight: new Uniform13(1),\n        exposure: new Uniform13(1),\n        clampMax: new Uniform13(1)\n      },\n      fragmentShader: shader_default19,\n      vertexShader: shader_default2,\n      blending: NoBlending13,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n  }\n  get samples() {\n    return Number(this.defines.SAMPLES_INT);\n  }\n  set samples(value) {\n    const s = Math.floor(value);\n    this.defines.SAMPLES_INT = s.toFixed(0);\n    this.defines.SAMPLES_FLOAT = s.toFixed(1);\n    this.needsUpdate = true;\n  }\n};\n\n// src/materials/LuminanceMaterial.js\nimport { NoBlending as NoBlending14, ShaderMaterial as ShaderMaterial14, Uniform as Uniform14, Vector2 as Vector28 } from \"three\";\n\n// src/materials/glsl/luminance/shader.frag\nvar shader_default20 = \"#include <common>\\n#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\n#ifdef RANGE\\nuniform vec2 range;\\n#elif defined(THRESHOLD)\\nuniform float threshold;uniform float smoothing;\\n#endif\\nvarying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=linearToRelativeLuminance(texel.rgb);\\n#ifdef RANGE\\nfloat low=step(range.x,l);float high=step(l,range.y);l*=low*high;\\n#elif defined(THRESHOLD)\\nl=smoothstep(threshold,threshold+smoothing,l);\\n#endif\\n#ifdef COLOR\\ngl_FragColor=vec4(texel.rgb*l,l);\\n#else\\ngl_FragColor=vec4(l);\\n#endif\\n}\";\n\n// src/materials/LuminanceMaterial.js\nvar LuminanceMaterial = class extends ShaderMaterial14 {\n  constructor(colorOutput = false, luminanceRange = null) {\n    const useRange = luminanceRange !== null;\n    super({\n      type: \"LuminanceMaterial\",\n      uniforms: {\n        inputBuffer: new Uniform14(null),\n        threshold: new Uniform14(0),\n        smoothing: new Uniform14(1),\n        range: new Uniform14(useRange ? luminanceRange : new Vector28())\n      },\n      fragmentShader: shader_default20,\n      vertexShader: shader_default2,\n      blending: NoBlending14,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n    this.colorOutput = colorOutput;\n    this.useThreshold = true;\n    this.useRange = useRange;\n  }\n  get threshold() {\n    return this.uniforms.threshold.value;\n  }\n  set threshold(value) {\n    this.uniforms.threshold.value = value;\n  }\n  get smoothing() {\n    return this.uniforms.smoothing.value;\n  }\n  set smoothing(value) {\n    this.uniforms.smoothing.value = value;\n  }\n  get useThreshold() {\n    return this.defines.THRESHOLD !== void 0;\n  }\n  set useThreshold(value) {\n    if (value) {\n      this.defines.THRESHOLD = \"1\";\n    } else {\n      delete this.defines.THRESHOLD;\n    }\n    this.needsUpdate = true;\n  }\n  get colorOutput() {\n    return this.defines.COLOR !== void 0;\n  }\n  set colorOutput(value) {\n    if (value) {\n      this.defines.COLOR = \"1\";\n    } else {\n      delete this.defines.COLOR;\n    }\n    this.needsUpdate = true;\n  }\n  setColorOutputEnabled(enabled) {\n    this.colorOutput = enabled;\n  }\n  get useRange() {\n    return this.defines.RANGE !== void 0;\n  }\n  set useRange(value) {\n    if (value) {\n      this.defines.RANGE = \"1\";\n    } else {\n      delete this.defines.RANGE;\n    }\n    this.needsUpdate = true;\n  }\n  get luminanceRange() {\n    return this.useRange;\n  }\n  set luminanceRange(value) {\n    this.useRange = value;\n  }\n  setLuminanceRangeEnabled(enabled) {\n    this.useRange = enabled;\n  }\n};\n\n// src/materials/MaskMaterial.js\nimport { NoBlending as NoBlending15, ShaderMaterial as ShaderMaterial15, Uniform as Uniform15, UnsignedByteType } from \"three\";\n\n// src/materials/glsl/mask/shader.frag\nvar shader_default21 = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\n#ifdef MASK_PRECISION_HIGH\\nuniform mediump sampler2D maskTexture;\\n#else\\nuniform lowp sampler2D maskTexture;\\n#endif\\n#if MASK_FUNCTION != 0\\nuniform float strength;\\n#endif\\nvarying vec2 vUv;void main(){\\n#if COLOR_CHANNEL == 0\\nfloat mask=texture2D(maskTexture,vUv).r;\\n#elif COLOR_CHANNEL == 1\\nfloat mask=texture2D(maskTexture,vUv).g;\\n#elif COLOR_CHANNEL == 2\\nfloat mask=texture2D(maskTexture,vUv).b;\\n#else\\nfloat mask=texture2D(maskTexture,vUv).a;\\n#endif\\n#if MASK_FUNCTION == 0\\n#ifdef INVERTED\\nmask=step(mask,0.0);\\n#else\\nmask=1.0-step(mask,0.0);\\n#endif\\n#else\\nmask=clamp(mask*strength,0.0,1.0);\\n#ifdef INVERTED\\nmask=1.0-mask;\\n#endif\\n#endif\\n#if MASK_FUNCTION == 2\\ngl_FragColor=vec4(mask*texture2D(inputBuffer,vUv).rgb,mask);\\n#else\\ngl_FragColor=mask*texture2D(inputBuffer,vUv);\\n#endif\\n}\";\n\n// src/materials/MaskMaterial.js\nvar MaskMaterial = class extends ShaderMaterial15 {\n  constructor(maskTexture = null) {\n    super({\n      type: \"MaskMaterial\",\n      uniforms: {\n        maskTexture: new Uniform15(maskTexture),\n        inputBuffer: new Uniform15(null),\n        strength: new Uniform15(1)\n      },\n      fragmentShader: shader_default21,\n      vertexShader: shader_default2,\n      blending: NoBlending15,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n    this.colorChannel = ColorChannel.RED;\n    this.maskFunction = MaskFunction.DISCARD;\n  }\n  set maskTexture(value) {\n    this.uniforms.maskTexture.value = value;\n    delete this.defines.MASK_PRECISION_HIGH;\n    if (value.type !== UnsignedByteType) {\n      this.defines.MASK_PRECISION_HIGH = \"1\";\n    }\n    this.needsUpdate = true;\n  }\n  set colorChannel(value) {\n    this.defines.COLOR_CHANNEL = value.toFixed(0);\n    this.needsUpdate = true;\n  }\n  set maskFunction(value) {\n    this.defines.MASK_FUNCTION = value.toFixed(0);\n    this.needsUpdate = true;\n  }\n  get inverted() {\n    return this.defines.INVERTED !== void 0;\n  }\n  set inverted(value) {\n    if (this.inverted && !value) {\n      delete this.defines.INVERTED;\n    } else if (value) {\n      this.defines.INVERTED = \"1\";\n    }\n    this.needsUpdate = true;\n  }\n  get strength() {\n    return this.uniforms.strength.value;\n  }\n  set strength(value) {\n    this.uniforms.strength.value = value;\n  }\n};\nvar MaskFunction = {\n  DISCARD: 0,\n  MULTIPLY: 1,\n  MULTIPLY_RGB_SET_ALPHA: 2\n};\n\n// src/materials/OutlineMaterial.js\nimport { NoBlending as NoBlending16, ShaderMaterial as ShaderMaterial16, Uniform as Uniform16, Vector2 as Vector29 } from \"three\";\n\n// src/materials/glsl/outline/shader.frag\nvar shader_default22 = \"uniform lowp sampler2D inputBuffer;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 c0=texture2D(inputBuffer,vUv0).rg;vec2 c1=texture2D(inputBuffer,vUv1).rg;vec2 c2=texture2D(inputBuffer,vUv2).rg;vec2 c3=texture2D(inputBuffer,vUv3).rg;float d0=(c0.x-c1.x)*0.5;float d1=(c2.x-c3.x)*0.5;float d=length(vec2(d0,d1));float a0=min(c0.y,c1.y);float a1=min(c2.y,c3.y);float visibilityFactor=min(a0,a1);gl_FragColor.rg=(1.0-visibilityFactor>0.001)? vec2(d,0.0): vec2(0.0,d);}\";\n\n// src/materials/glsl/outline/shader.vert\nvar shader_default23 = \"uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=vec2(uv.x+texelSize.x,uv.y);vUv1=vec2(uv.x-texelSize.x,uv.y);vUv2=vec2(uv.x,uv.y+texelSize.y);vUv3=vec2(uv.x,uv.y-texelSize.y);gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/OutlineMaterial.js\nvar OutlineMaterial = class extends ShaderMaterial16 {\n  constructor(texelSize = new Vector29()) {\n    super({\n      type: \"OutlineMaterial\",\n      uniforms: {\n        inputBuffer: new Uniform16(null),\n        texelSize: new Uniform16(new Vector29())\n      },\n      fragmentShader: shader_default22,\n      vertexShader: shader_default23,\n      blending: NoBlending16,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n    this.setTexelSize(texelSize.x, texelSize.y);\n    this.uniforms.maskTexture = this.uniforms.inputBuffer;\n  }\n  setTexelSize(x, y) {\n    this.uniforms.texelSize.value.set(x, y);\n  }\n};\nvar OutlineEdgesMaterial = OutlineMaterial;\n\n// src/materials/SMAAWeightsMaterial.js\nimport { NoBlending as NoBlending17, ShaderMaterial as ShaderMaterial17, Uniform as Uniform17, Vector2 as Vector210 } from \"three\";\n\n// src/materials/glsl/smaa-weights/shader.frag\nvar shader_default24 = \"#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + offset * texelSize)\\n#if __VERSION__ < 300\\n#define round(v) floor(v + 0.5)\\n#endif\\n#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D inputBuffer;\\n#else\\nuniform lowp sampler2D inputBuffer;\\n#endif\\nuniform lowp sampler2D areaTexture;uniform lowp sampler2D searchTexture;uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}vec2 decodeDiagBilinearAccess(in vec2 e){e.r=e.r*abs(5.0*e.r-5.0*0.75);return round(e);}vec4 decodeDiagBilinearAccess(in vec4 e){e.rb=e.rb*abs(5.0*e.rb-5.0*0.75);return round(e);}vec2 searchDiag1(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);vec3 t=vec3(texelSize,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(coord.z<float(MAX_SEARCH_STEPS_DIAG_INT-1)&&coord.w>0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 searchDiag2(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);coord.x+=0.25*texelSize.x;vec3 t=vec3(texelSize,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(coord.z<float(MAX_SEARCH_STEPS_DIAG_INT-1)&&coord.w>0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;e=decodeDiagBilinearAccess(e);coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 areaDiag(const in vec2 dist,const in vec2 e,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE_DIAG,AREATEX_MAX_DISTANCE_DIAG)*e+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.x+=0.5;texCoord.y+=AREATEX_SUBTEX_SIZE*offset;return texture2D(areaTexture,texCoord).rg;}vec2 calculateDiagWeights(const in vec2 texCoord,const in vec2 e,const in vec4 subsampleIndices){vec2 weights=vec2(0.0);vec4 d;vec2 end;if(e.r>0.0){d.xz=searchDiag1(texCoord,vec2(-1.0,1.0),end);d.x+=float(end.y>0.9);}else{d.xz=vec2(0.0);}d.yw=searchDiag1(texCoord,vec2(1.0,-1.0),end);if(d.x+d.y>2.0){vec4 coords=vec4(-d.x+0.25,d.x,d.y,-d.y-0.25)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.xy=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).rg;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).rg;c.yxwz=decodeDiagBilinearAccess(c.xyzw);vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.z);}d.xz=searchDiag2(texCoord,vec2(-1.0,-1.0),end);if(sampleLevelZeroOffset(inputBuffer,texCoord,vec2(1,0)).r>0.0){d.yw=searchDiag2(texCoord,vec2(1.0),end);d.y+=float(end.y>0.9);}else{d.yw=vec2(0.0);}if(d.x+d.y>2.0){vec4 coords=vec4(-d.x,-d.x,d.y,d.y)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.x=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).g;c.y=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(0,-1)).r;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).gr;vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.w).gr;}return weights;}float searchLength(const in vec2 e,const in float offset){vec2 scale=SEARCHTEX_SIZE*vec2(0.5,-1.0);vec2 bias=SEARCHTEX_SIZE*vec2(offset,1.0);scale+=vec2(-1.0,1.0);bias+=vec2(0.5,-0.5);scale*=1.0/SEARCHTEX_PACKED_SIZE;bias*=1.0/SEARCHTEX_PACKED_SIZE;return texture2D(searchTexture,scale*e+bias).r;}float searchXLeft(in vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.x>end&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(-2.0,0.0)*texelSize+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.0)+3.25;return texelSize.x*offset+texCoord.x;}float searchXRight(vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.x<end&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(2.0,0.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.5)+3.25;return-texelSize.x*offset+texCoord.x;}float searchYUp(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.y>end&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=-vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.0)+3.25;return texelSize.y*offset+texCoord.y;}float searchYDown(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;i++){if(!(texCoord.y<end&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.5)+3.25;return-texelSize.y*offset+texCoord.y;}vec2 area(const in vec2 dist,const in float e1,const in float e2,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE)*round(4.0*vec2(e1,e2))+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.y=AREATEX_SUBTEX_SIZE*offset+texCoord.y;return texture2D(areaTexture,texCoord).rg;}void detectHorizontalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){\\n#if !defined(DISABLE_CORNER_DETECTION)\\nvec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,1)).r;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).r;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,-2)).r;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,-2)).r;weights*=clamp(factor,0.0,1.0);\\n#endif\\n}void detectVerticalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){\\n#if !defined(DISABLE_CORNER_DETECTION)\\nvec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(1,0)).g;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).g;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(-2,0)).g;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(-2,1)).g;weights*=clamp(factor,0.0,1.0);\\n#endif\\n}void main(){vec4 weights=vec4(0.0);vec4 subsampleIndices=vec4(0.0);vec2 e=texture2D(inputBuffer,vUv).rg;if(e.g>0.0){\\n#if !defined(DISABLE_DIAG_DETECTION)\\nweights.rg=calculateDiagWeights(vUv,e,subsampleIndices);if(weights.r==-weights.g){\\n#endif\\nvec2 d;vec3 coords;coords.x=searchXLeft(vOffset[0].xy,vOffset[2].x);coords.y=vOffset[1].y;d.x=coords.x;float e1=texture2D(inputBuffer,coords.xy).r;coords.z=searchXRight(vOffset[0].zw,vOffset[2].y);d.y=coords.z;d=round(resolution.xx*d+-vPixCoord.xx);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.zy,vec2(1,0)).r;weights.rg=area(sqrtD,e1,e2,subsampleIndices.y);coords.y=vUv.y;detectHorizontalCornerPattern(weights.rg,coords.xyzy,d);\\n#if !defined(DISABLE_DIAG_DETECTION)\\n}else{e.r=0.0;}\\n#endif\\n}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}\";\n\n// src/materials/glsl/smaa-weights/shader.vert\nvar shader_default25 = \"uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/SMAAWeightsMaterial.js\nvar SMAAWeightsMaterial = class extends ShaderMaterial17 {\n  constructor(texelSize = new Vector210(), resolution = new Vector210()) {\n    super({\n      type: \"SMAAWeightsMaterial\",\n      defines: {\n        MAX_SEARCH_STEPS_INT: \"16\",\n        MAX_SEARCH_STEPS_FLOAT: \"16.0\",\n        MAX_SEARCH_STEPS_DIAG_INT: \"8\",\n        MAX_SEARCH_STEPS_DIAG_FLOAT: \"8.0\",\n        CORNER_ROUNDING: \"25\",\n        CORNER_ROUNDING_NORM: \"0.25\",\n        AREATEX_MAX_DISTANCE: \"16.0\",\n        AREATEX_MAX_DISTANCE_DIAG: \"20.0\",\n        AREATEX_PIXEL_SIZE: \"(1.0 / vec2(160.0, 560.0))\",\n        AREATEX_SUBTEX_SIZE: \"(1.0 / 7.0)\",\n        SEARCHTEX_SIZE: \"vec2(66.0, 33.0)\",\n        SEARCHTEX_PACKED_SIZE: \"vec2(64.0, 16.0)\"\n      },\n      uniforms: {\n        inputBuffer: new Uniform17(null),\n        areaTexture: new Uniform17(null),\n        searchTexture: new Uniform17(null),\n        texelSize: new Uniform17(texelSize),\n        resolution: new Uniform17(resolution)\n      },\n      fragmentShader: shader_default24,\n      vertexShader: shader_default25,\n      blending: NoBlending17,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n  }\n  setOrthogonalSearchSteps(steps) {\n    const s = Math.min(Math.max(steps, 0), 112);\n    this.defines.MAX_SEARCH_STEPS_INT = s.toFixed(\"0\");\n    this.defines.MAX_SEARCH_STEPS_FLOAT = s.toFixed(\"1\");\n    this.needsUpdate = true;\n  }\n  setDiagonalSearchSteps(steps) {\n    const s = Math.min(Math.max(steps, 0), 20);\n    this.defines.MAX_SEARCH_STEPS_DIAG_INT = s.toFixed(\"0\");\n    this.defines.MAX_SEARCH_STEPS_DIAG_FLOAT = s.toFixed(\"1\");\n    this.needsUpdate = true;\n  }\n  setCornerRounding(rounding) {\n    const r = Math.min(Math.max(rounding, 0), 100);\n    this.defines.CORNER_ROUNDING = r.toFixed(\"4\");\n    this.defines.CORNER_ROUNDING_NORM = (r / 100).toFixed(\"4\");\n    this.needsUpdate = true;\n  }\n  get diagonalDetection() {\n    return this.defines.DISABLE_DIAG_DETECTION === void 0;\n  }\n  set diagonalDetection(value) {\n    if (value) {\n      delete this.defines.DISABLE_DIAG_DETECTION;\n    } else {\n      this.defines.DISABLE_DIAG_DETECTION = \"1\";\n    }\n    this.needsUpdate = true;\n  }\n  get cornerRounding() {\n    return this.defines.DISABLE_CORNER_DETECTION === void 0;\n  }\n  set cornerRounding(value) {\n    if (value) {\n      delete this.defines.DISABLE_CORNER_DETECTION;\n    } else {\n      this.defines.DISABLE_CORNER_DETECTION = \"1\";\n    }\n    this.needsUpdate = true;\n  }\n};\n\n// src/materials/SSAOMaterial.js\nimport {\n  Matrix4,\n  NoBlending as NoBlending18,\n  PerspectiveCamera as PerspectiveCamera4,\n  ShaderMaterial as ShaderMaterial18,\n  Uniform as Uniform18,\n  Vector2 as Vector211\n} from \"three\";\n\n// src/materials/glsl/ssao/shader.frag\nvar shader_default26 = \"#include <common>\\n#include <packing>\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D normalDepthBuffer;\\n#else\\nuniform mediump sampler2D normalDepthBuffer;\\n#endif\\n#ifndef NORMAL_DEPTH\\nuniform lowp sampler2D normalBuffer;float readDepth(const in vec2 uv){\\n#if DEPTH_PACKING == 3201\\nreturn unpackRGBAToDepth(texture2D(normalDepthBuffer,uv));\\n#else\\nreturn texture2D(normalDepthBuffer,uv).r;\\n#endif\\n}\\n#endif\\nuniform lowp sampler2D noiseTexture;uniform mat4 inverseProjectionMatrix;uniform mat4 projectionMatrix;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float minRadiusScale;uniform float intensity;uniform float fade;uniform float bias;uniform vec2 distanceCutoff;uniform vec2 proximityCutoff;varying vec2 vUv;varying vec2 vUv2;float getViewZ(const in float depth){\\n#ifdef PERSPECTIVE_CAMERA\\nreturn perspectiveDepthToViewZ(depth,cameraNear,cameraFar);\\n#else\\nreturn orthographicDepthToViewZ(depth,cameraNear,cameraFar);\\n#endif\\n}vec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){vec4 clipPosition=vec4(vec3(screenPosition,depth)*2.0-1.0,1.0);float clipW=projectionMatrix[2][3]*viewZ+projectionMatrix[3][3];clipPosition*=clipW;return(inverseProjectionMatrix*clipPosition).xyz;}float getAmbientOcclusion(const in vec3 p,const in vec3 n,const in float depth,const in vec2 uv){\\n#ifdef DISTANCE_SCALING\\nfloat radiusScale=1.0-smoothstep(0.0,distanceCutoff.y,depth);radiusScale=radiusScale*(1.0-minRadiusScale)+minRadiusScale;float radius=RADIUS*radiusScale;\\n#else\\nfloat radius=RADIUS;\\n#endif\\nfloat noise=texture2D(noiseTexture,vUv2).r;float baseAngle=noise*PI2;float invSamples=1.0/SAMPLES_FLOAT;float rings=SPIRAL_TURNS*PI2;float occlusion=0.0;int taps=0;for(int i=0;i<SAMPLES_INT;++i){float alpha=(float(i)+0.5)*invSamples;float angle=alpha*rings+baseAngle;vec2 coord=alpha*radius*vec2(cos(angle),sin(angle))*texelSize+uv;if(coord.s<0.0||coord.s>1.0||coord.t<0.0||coord.t>1.0){continue;}\\n#ifdef NORMAL_DEPTH\\nfloat sampleDepth=texture2D(normalDepthBuffer,coord).a;\\n#else\\nfloat sampleDepth=readDepth(coord);\\n#endif\\nfloat viewZ=getViewZ(sampleDepth);\\n#ifdef PERSPECTIVE_CAMERA\\nfloat linearSampleDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);\\n#else\\nfloat linearSampleDepth=sampleDepth;\\n#endif\\nfloat proximity=abs(depth-linearSampleDepth);if(proximity<proximityCutoff.y){float falloff=1.0-smoothstep(proximityCutoff.x,proximityCutoff.y,proximity);vec3 Q=getViewPosition(coord,sampleDepth,viewZ);vec3 v=Q-p;float vv=dot(v,v);float vn=dot(v,n)-bias;float f=max(RADIUS_SQ-vv,0.0)/RADIUS_SQ;occlusion+=(f*f*f*max(vn/(fade+vv),0.0))*falloff;}++taps;}return occlusion/(4.0*max(float(taps),1.0));}void main(){\\n#ifdef NORMAL_DEPTH\\nvec4 normalDepth=texture2D(normalDepthBuffer,vUv);\\n#else\\nvec4 normalDepth=vec4(texture2D(normalBuffer,vUv).rgb,readDepth(vUv));\\n#endif\\nfloat ao=1.0;float depth=normalDepth.a;float viewZ=getViewZ(depth);\\n#ifdef PERSPECTIVE_CAMERA\\nfloat linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);\\n#else\\nfloat linearDepth=depth;\\n#endif\\nif(linearDepth<distanceCutoff.y){vec3 viewPosition=getViewPosition(vUv,depth,viewZ);vec3 viewNormal=unpackRGBToNormal(normalDepth.rgb);ao-=getAmbientOcclusion(viewPosition,viewNormal,linearDepth,vUv);float d=smoothstep(distanceCutoff.x,distanceCutoff.y,linearDepth);ao=mix(ao,1.0,d);ao=clamp(pow(ao,abs(intensity)),0.0,1.0);}gl_FragColor.r=ao;}\";\n\n// src/materials/glsl/ssao/shader.vert\nvar shader_default27 = \"uniform vec2 noiseScale;varying vec2 vUv;varying vec2 vUv2;void main(){vUv=position.xy*0.5+0.5;vUv2=vUv*noiseScale;gl_Position=vec4(position.xy,1.0,1.0);}\";\n\n// src/materials/SSAOMaterial.js\nvar SSAOMaterial = class extends ShaderMaterial18 {\n  constructor(camera) {\n    super({\n      type: \"SSAOMaterial\",\n      defines: {\n        SAMPLES_INT: \"0\",\n        SAMPLES_FLOAT: \"0.0\",\n        SPIRAL_TURNS: \"0.0\",\n        RADIUS: \"1.0\",\n        RADIUS_SQ: \"1.0\",\n        DISTANCE_SCALING: \"1\",\n        DEPTH_PACKING: \"0\"\n      },\n      uniforms: {\n        normalBuffer: new Uniform18(null),\n        normalDepthBuffer: new Uniform18(null),\n        noiseTexture: new Uniform18(null),\n        inverseProjectionMatrix: new Uniform18(new Matrix4()),\n        projectionMatrix: new Uniform18(new Matrix4()),\n        texelSize: new Uniform18(new Vector211()),\n        cameraNear: new Uniform18(0),\n        cameraFar: new Uniform18(0),\n        distanceCutoff: new Uniform18(new Vector211()),\n        proximityCutoff: new Uniform18(new Vector211()),\n        noiseScale: new Uniform18(new Vector211()),\n        minRadiusScale: new Uniform18(0.33),\n        intensity: new Uniform18(1),\n        fade: new Uniform18(0.01),\n        bias: new Uniform18(0)\n      },\n      fragmentShader: shader_default26,\n      vertexShader: shader_default27,\n      blending: NoBlending18,\n      depthWrite: false,\n      depthTest: false\n    });\n    this.toneMapped = false;\n    this.adoptCameraSettings(camera);\n  }\n  get depthPacking() {\n    return Number(this.defines.DEPTH_PACKING);\n  }\n  set depthPacking(value) {\n    this.defines.DEPTH_PACKING = value.toFixed(0);\n    this.needsUpdate = true;\n  }\n  setTexelSize(x, y) {\n    this.uniforms.texelSize.value.set(x, y);\n  }\n  adoptCameraSettings(camera = null) {\n    if (camera !== null) {\n      const uniforms = this.uniforms;\n      uniforms.cameraNear.value = camera.near;\n      uniforms.cameraFar.value = camera.far;\n      if (camera instanceof PerspectiveCamera4) {\n        this.defines.PERSPECTIVE_CAMERA = \"1\";\n      } else {\n        delete this.defines.PERSPECTIVE_CAMERA;\n      }\n      this.needsUpdate = true;\n    }\n  }\n};\n\n// src/passes/Pass.js\nimport {\n  BufferAttribute,\n  BufferGeometry,\n  Camera,\n  Mesh,\n  Scene\n} from \"three\";\nvar dummyCamera = new Camera();\nvar geometry = null;\nfunction getFullscreenTriangle() {\n  if (geometry === null) {\n    const vertices = new Float32Array([-1, -1, 0, 3, -1, 0, -1, 3, 0]);\n    const uvs = new Float32Array([0, 0, 2, 0, 0, 2]);\n    geometry = new BufferGeometry();\n    if (geometry.setAttribute !== void 0) {\n      geometry.setAttribute(\"position\", new BufferAttribute(vertices, 3));\n      geometry.setAttribute(\"uv\", new BufferAttribute(uvs, 2));\n    } else {\n      geometry.addAttribute(\"position\", new BufferAttribute(vertices, 3));\n      geometry.addAttribute(\"uv\", new BufferAttribute(uvs, 2));\n    }\n  }\n  return geometry;\n}\nvar Pass = class {\n  constructor(name = \"Pass\", scene = new Scene(), camera = dummyCamera) {\n    this.name = name;\n    this.scene = scene;\n    this.camera = camera;\n    this.screen = null;\n    this.rtt = true;\n    this.needsSwap = true;\n    this.needsDepthTexture = false;\n    this.enabled = true;\n  }\n  get renderToScreen() {\n    return !this.rtt;\n  }\n  set renderToScreen(value) {\n    if (this.rtt === value) {\n      const material = this.getFullscreenMaterial();\n      if (material !== null) {\n        material.needsUpdate = true;\n      }\n      this.rtt = !value;\n    }\n  }\n  isEnabled() {\n    return this.enabled;\n  }\n  setEnabled(enabled) {\n    this.enabled = enabled;\n  }\n  getFullscreenMaterial() {\n    return this.screen !== null ? this.screen.material : null;\n  }\n  setFullscreenMaterial(material) {\n    let screen = this.screen;\n    if (screen !== null) {\n      screen.material = material;\n    } else {\n      screen = new Mesh(getFullscreenTriangle(), material);\n      screen.frustumCulled = false;\n      if (this.scene === null) {\n        this.scene = new Scene();\n      }\n      this.scene.add(screen);\n      this.screen = screen;\n    }\n  }\n  getDepthTexture() {\n    return null;\n  }\n  setDepthTexture(depthTexture, depthPacking = 0) {\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    throw new Error(\"Render method not implemented!\");\n  }\n  setSize(width, height) {\n  }\n  initialize(renderer, alpha, frameBufferType) {\n  }\n  dispose() {\n    const material = this.getFullscreenMaterial();\n    if (material !== null) {\n      material.dispose();\n    }\n    for (const key of Object.keys(this)) {\n      const property = this[key];\n      if (property !== null && typeof property.dispose === \"function\") {\n        if (property instanceof Scene) {\n          continue;\n        }\n        this[key].dispose();\n      }\n    }\n  }\n};\n\n// src/passes/SavePass.js\nimport {\n  LinearFilter,\n  RGBFormat,\n  UnsignedByteType as UnsignedByteType2,\n  WebGLRenderTarget\n} from \"three\";\nvar SavePass = class extends Pass {\n  constructor(renderTarget, resize = true) {\n    super(\"SavePass\");\n    this.setFullscreenMaterial(new CopyMaterial());\n    this.needsSwap = false;\n    this.renderTarget = renderTarget;\n    if (renderTarget === void 0) {\n      this.renderTarget = new WebGLRenderTarget(1, 1, {\n        minFilter: LinearFilter,\n        magFilter: LinearFilter,\n        stencilBuffer: false,\n        depthBuffer: false\n      });\n      this.renderTarget.texture.name = \"SavePass.Target\";\n    }\n    this.resize = resize;\n  }\n  get texture() {\n    return this.renderTarget.texture;\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    const material = this.getFullscreenMaterial();\n    material.uniforms.inputBuffer.value = inputBuffer.texture;\n    renderer.setRenderTarget(this.renderToScreen ? null : this.renderTarget);\n    renderer.render(this.scene, this.camera);\n  }\n  setSize(width, height) {\n    if (this.resize) {\n      const w = Math.max(width, 1);\n      const h = Math.max(height, 1);\n      this.renderTarget.setSize(w, h);\n    }\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    if (!alpha && frameBufferType === UnsignedByteType2) {\n      this.renderTarget.texture.format = RGBFormat;\n    }\n    if (frameBufferType !== void 0) {\n      this.renderTarget.texture.type = frameBufferType;\n      if (frameBufferType !== UnsignedByteType2) {\n        const material = this.getFullscreenMaterial();\n        material.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n      }\n    }\n  }\n};\n\n// src/passes/AdaptiveLuminancePass.js\nvar AdaptiveLuminancePass = class extends Pass {\n  constructor(luminanceBuffer, {\n    minLuminance = 0.01,\n    adaptationRate = 1\n  } = {}) {\n    super(\"AdaptiveLuminancePass\");\n    this.setFullscreenMaterial(new AdaptiveLuminanceMaterial());\n    this.needsSwap = false;\n    this.renderTargetPrevious = new WebGLRenderTarget2(1, 1, {\n      minFilter: NearestFilter,\n      magFilter: NearestFilter,\n      type: HalfFloatType,\n      stencilBuffer: false,\n      depthBuffer: false,\n      format: RGBAFormat\n    });\n    this.renderTargetPrevious.texture.name = \"Luminance.Previous\";\n    const uniforms = this.getFullscreenMaterial().uniforms;\n    uniforms.luminanceBuffer0.value = this.renderTargetPrevious.texture;\n    uniforms.luminanceBuffer1.value = luminanceBuffer;\n    uniforms.minLuminance.value = minLuminance;\n    this.renderTargetAdapted = this.renderTargetPrevious.clone();\n    this.renderTargetAdapted.texture.name = \"Luminance.Adapted\";\n    this.savePass = new SavePass(this.renderTargetPrevious, false);\n    this.adaptationRate = adaptationRate;\n  }\n  get texture() {\n    return this.renderTargetAdapted.texture;\n  }\n  set mipLevel1x1(value) {\n    const material = this.getFullscreenMaterial();\n    material.defines.MIP_LEVEL_1X1 = value.toFixed(1);\n    material.needsUpdate = true;\n  }\n  get adaptationRate() {\n    return this.getFullscreenMaterial().uniforms.tau.value;\n  }\n  set adaptationRate(value) {\n    this.getFullscreenMaterial().uniforms.tau.value = value;\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    this.getFullscreenMaterial().uniforms.deltaTime.value = deltaTime;\n    renderer.setRenderTarget(this.renderToScreen ? null : this.renderTargetAdapted);\n    renderer.render(this.scene, this.camera);\n    this.savePass.render(renderer, this.renderTargetAdapted);\n  }\n};\n\n// src/passes/BlurPass.js\nimport {\n  LinearFilter as LinearFilter2,\n  RGBFormat as RGBFormat2,\n  UnsignedByteType as UnsignedByteType3,\n  WebGLRenderTarget as WebGLRenderTarget3\n} from \"three\";\n\n// src/core/Resizer.js\nimport { Vector2 as Vector212 } from \"three\";\nvar AUTO_SIZE = -1;\nvar Resizer = class {\n  constructor(resizable, width = AUTO_SIZE, height = AUTO_SIZE, scale = 1) {\n    this.resizable = resizable;\n    this.base = new Vector212(1, 1);\n    this.target = new Vector212(width, height);\n    this.s = scale;\n  }\n  get scale() {\n    return this.s;\n  }\n  set scale(value) {\n    this.s = value;\n    this.target.x = AUTO_SIZE;\n    this.target.y = AUTO_SIZE;\n    this.resizable.setSize(this.base.x, this.base.y);\n  }\n  get width() {\n    const base = this.base;\n    const target = this.target;\n    let result;\n    if (target.x !== AUTO_SIZE) {\n      result = target.x;\n    } else if (target.y !== AUTO_SIZE) {\n      result = Math.round(target.y * (base.x / base.y));\n    } else {\n      result = Math.round(base.x * this.s);\n    }\n    return result;\n  }\n  set width(value) {\n    this.target.x = value;\n    this.resizable.setSize(this.base.x, this.base.y);\n  }\n  get height() {\n    const base = this.base;\n    const target = this.target;\n    let result;\n    if (target.y !== AUTO_SIZE) {\n      result = target.y;\n    } else if (target.x !== AUTO_SIZE) {\n      result = Math.round(target.x / (base.x / base.y));\n    } else {\n      result = Math.round(base.y * this.s);\n    }\n    return result;\n  }\n  set height(value) {\n    this.target.y = value;\n    this.resizable.setSize(this.base.x, this.base.y);\n  }\n  static get AUTO_SIZE() {\n    return AUTO_SIZE;\n  }\n};\n\n// src/passes/BlurPass.js\nvar BlurPass = class extends Pass {\n  constructor({\n    resolutionScale = 0.5,\n    width = Resizer.AUTO_SIZE,\n    height = Resizer.AUTO_SIZE,\n    kernelSize = KernelSize.LARGE\n  } = {}) {\n    super(\"BlurPass\");\n    this.renderTargetA = new WebGLRenderTarget3(1, 1, {\n      minFilter: LinearFilter2,\n      magFilter: LinearFilter2,\n      stencilBuffer: false,\n      depthBuffer: false\n    });\n    this.renderTargetA.texture.name = \"Blur.Target.A\";\n    this.renderTargetB = this.renderTargetA.clone();\n    this.renderTargetB.texture.name = \"Blur.Target.B\";\n    this.resolution = new Resizer(this, width, height, resolutionScale);\n    this.convolutionMaterial = new ConvolutionMaterial();\n    this.ditheredConvolutionMaterial = new ConvolutionMaterial();\n    this.ditheredConvolutionMaterial.dithering = true;\n    this.dithering = false;\n    this.kernelSize = kernelSize;\n  }\n  get width() {\n    return this.resolution.width;\n  }\n  set width(value) {\n    this.resolution.width = value;\n  }\n  get height() {\n    return this.resolution.height;\n  }\n  set height(value) {\n    this.resolution.height = value;\n  }\n  get scale() {\n    return this.convolutionMaterial.uniforms.scale.value;\n  }\n  set scale(value) {\n    this.convolutionMaterial.uniforms.scale.value = value;\n    this.ditheredConvolutionMaterial.uniforms.scale.value = value;\n  }\n  get kernelSize() {\n    return this.convolutionMaterial.kernelSize;\n  }\n  set kernelSize(value) {\n    this.convolutionMaterial.kernelSize = value;\n    this.ditheredConvolutionMaterial.kernelSize = value;\n  }\n  getResolutionScale() {\n    return this.resolution.scale;\n  }\n  setResolutionScale(scale) {\n    this.resolution.scale = scale;\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    const scene = this.scene;\n    const camera = this.camera;\n    const renderTargetA = this.renderTargetA;\n    const renderTargetB = this.renderTargetB;\n    let material = this.convolutionMaterial;\n    let uniforms = material.uniforms;\n    const kernel = material.getKernel();\n    let lastRT = inputBuffer;\n    let destRT;\n    let i, l;\n    this.setFullscreenMaterial(material);\n    for (i = 0, l = kernel.length - 1; i < l; ++i) {\n      destRT = (i & 1) === 0 ? renderTargetA : renderTargetB;\n      uniforms.kernel.value = kernel[i];\n      uniforms.inputBuffer.value = lastRT.texture;\n      renderer.setRenderTarget(destRT);\n      renderer.render(scene, camera);\n      lastRT = destRT;\n    }\n    if (this.dithering) {\n      material = this.ditheredConvolutionMaterial;\n      uniforms = material.uniforms;\n      this.setFullscreenMaterial(material);\n    }\n    uniforms.kernel.value = kernel[i];\n    uniforms.inputBuffer.value = lastRT.texture;\n    renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\n    renderer.render(scene, camera);\n  }\n  setSize(width, height) {\n    const resolution = this.resolution;\n    resolution.base.set(width, height);\n    const w = resolution.width;\n    const h = resolution.height;\n    this.renderTargetA.setSize(w, h);\n    this.renderTargetB.setSize(w, h);\n    this.convolutionMaterial.setTexelSize(1 / w, 1 / h);\n    this.ditheredConvolutionMaterial.setTexelSize(1 / w, 1 / h);\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    if (!alpha && frameBufferType === UnsignedByteType3) {\n      this.renderTargetA.texture.format = RGBFormat2;\n      this.renderTargetB.texture.format = RGBFormat2;\n    }\n    if (frameBufferType !== void 0) {\n      this.renderTargetA.texture.type = frameBufferType;\n      this.renderTargetB.texture.type = frameBufferType;\n      if (frameBufferType !== UnsignedByteType3) {\n        const m0 = this.convolutionMaterial;\n        const m1 = this.ditheredConvolutionMaterial;\n        m0.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n        m1.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n      }\n    }\n  }\n  static get AUTO_SIZE() {\n    return Resizer.AUTO_SIZE;\n  }\n};\n\n// src/passes/ClearMaskPass.js\nvar ClearMaskPass = class extends Pass {\n  constructor() {\n    super(\"ClearMaskPass\", null, null);\n    this.needsSwap = false;\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    const stencil = renderer.state.buffers.stencil;\n    stencil.setLocked(false);\n    stencil.setTest(false);\n  }\n};\n\n// src/passes/ClearPass.js\nimport { Color } from \"three\";\nvar color = new Color();\nvar ClearPass = class extends Pass {\n  constructor(color2 = true, depth = true, stencil = false) {\n    super(\"ClearPass\", null, null);\n    this.needsSwap = false;\n    this.color = color2;\n    this.depth = depth;\n    this.stencil = stencil;\n    this.overrideClearColor = null;\n    this.overrideClearAlpha = -1;\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    const overrideClearColor = this.overrideClearColor;\n    const overrideClearAlpha = this.overrideClearAlpha;\n    const clearAlpha = renderer.getClearAlpha();\n    const hasOverrideClearColor = overrideClearColor !== null;\n    const hasOverrideClearAlpha = overrideClearAlpha >= 0;\n    if (hasOverrideClearColor) {\n      color.copy(renderer.getClearColor(color));\n      renderer.setClearColor(overrideClearColor, hasOverrideClearAlpha ? overrideClearAlpha : clearAlpha);\n    } else if (hasOverrideClearAlpha) {\n      renderer.setClearAlpha(overrideClearAlpha);\n    }\n    renderer.setRenderTarget(this.renderToScreen ? null : inputBuffer);\n    renderer.clear(this.color, this.depth, this.stencil);\n    if (hasOverrideClearColor) {\n      renderer.setClearColor(color, clearAlpha);\n    } else if (hasOverrideClearAlpha) {\n      renderer.setClearAlpha(clearAlpha);\n    }\n  }\n};\n\n// src/passes/DepthPass.js\nimport {\n  Color as Color2,\n  MeshDepthMaterial,\n  NearestFilter as NearestFilter2,\n  RGBADepthPacking,\n  WebGLRenderTarget as WebGLRenderTarget4\n} from \"three\";\n\n// src/core/OverrideMaterialManager.js\nimport { BackSide, DoubleSide, FrontSide } from \"three\";\nvar workaroundEnabled = false;\nvar OverrideMaterialManager = class {\n  constructor(material = null) {\n    this.originalMaterials = new Map();\n    this.material = null;\n    this.materials = null;\n    this.materialsBackSide = null;\n    this.materialsDoubleSide = null;\n    this.materialsFlatShaded = null;\n    this.materialsFlatShadedBackSide = null;\n    this.materialsFlatShadedDoubleSide = null;\n    this.setMaterial(material);\n    this.meshCount = 0;\n    this.replaceMaterial = (node) => {\n      if (node.isMesh) {\n        let materials;\n        if (node.material.flatShading) {\n          switch (node.material.side) {\n            case DoubleSide:\n              materials = this.materialsFlatShadedDoubleSide;\n              break;\n            case BackSide:\n              materials = this.materialsFlatShadedBackSide;\n              break;\n            default:\n              materials = this.materialsFlatShaded;\n              break;\n          }\n        } else {\n          switch (node.material.side) {\n            case DoubleSide:\n              materials = this.materialsDoubleSide;\n              break;\n            case BackSide:\n              materials = this.materialsBackSide;\n              break;\n            default:\n              materials = this.materials;\n              break;\n          }\n        }\n        this.originalMaterials.set(node, node.material);\n        if (node.isSkinnedMesh) {\n          node.material = materials[2];\n        } else if (node.isInstancedMesh) {\n          node.material = materials[1];\n        } else {\n          node.material = materials[0];\n        }\n        ++this.meshCount;\n      }\n    };\n  }\n  setMaterial(material) {\n    this.disposeMaterials();\n    this.material = material;\n    if (material !== null) {\n      const materials = this.materials = [\n        material.clone(),\n        material.clone(),\n        material.clone()\n      ];\n      for (const m2 of materials) {\n        m2.uniforms = Object.assign({}, material.uniforms);\n        m2.side = FrontSide;\n      }\n      materials[2].skinning = true;\n      this.materialsBackSide = materials.map((m2) => {\n        const c2 = m2.clone();\n        c2.uniforms = Object.assign({}, material.uniforms);\n        c2.side = BackSide;\n        return c2;\n      });\n      this.materialsDoubleSide = materials.map((m2) => {\n        const c2 = m2.clone();\n        c2.uniforms = Object.assign({}, material.uniforms);\n        c2.side = DoubleSide;\n        return c2;\n      });\n      this.materialsFlatShaded = materials.map((m2) => {\n        const c2 = m2.clone();\n        c2.uniforms = Object.assign({}, material.uniforms);\n        c2.flatShading = true;\n        return c2;\n      });\n      this.materialsFlatShadedBackSide = materials.map((m2) => {\n        const c2 = m2.clone();\n        c2.uniforms = Object.assign({}, material.uniforms);\n        c2.flatShading = true;\n        c2.side = BackSide;\n        return c2;\n      });\n      this.materialsFlatShadedDoubleSide = materials.map((m2) => {\n        const c2 = m2.clone();\n        c2.uniforms = Object.assign({}, material.uniforms);\n        c2.flatShading = true;\n        c2.side = DoubleSide;\n        return c2;\n      });\n    }\n  }\n  render(renderer, scene, camera) {\n    const shadowMapEnabled = renderer.shadowMap.enabled;\n    renderer.shadowMap.enabled = false;\n    if (workaroundEnabled) {\n      const originalMaterials = this.originalMaterials;\n      this.meshCount = 0;\n      scene.traverse(this.replaceMaterial);\n      renderer.render(scene, camera);\n      for (const entry of originalMaterials) {\n        entry[0].material = entry[1];\n      }\n      if (this.meshCount !== originalMaterials.size) {\n        originalMaterials.clear();\n      }\n    } else {\n      const overrideMaterial = scene.overrideMaterial;\n      scene.overrideMaterial = this.material;\n      renderer.render(scene, camera);\n      scene.overrideMaterial = overrideMaterial;\n    }\n    renderer.shadowMap.enabled = shadowMapEnabled;\n  }\n  disposeMaterials() {\n    if (this.material !== null) {\n      const materials = this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide);\n      for (const m2 of materials) {\n        m2.dispose();\n      }\n    }\n  }\n  dispose() {\n    this.originalMaterials.clear();\n    this.disposeMaterials();\n  }\n  static get workaroundEnabled() {\n    return workaroundEnabled;\n  }\n  static set workaroundEnabled(value) {\n    workaroundEnabled = value;\n  }\n};\n\n// src/passes/RenderPass.js\nvar RenderPass = class extends Pass {\n  constructor(scene, camera, overrideMaterial = null) {\n    super(\"RenderPass\", scene, camera);\n    this.needsSwap = false;\n    this.clearPass = new ClearPass();\n    this.overrideMaterialManager = overrideMaterial === null ? null : new OverrideMaterialManager(overrideMaterial);\n    this.backgroundDisabled = false;\n    this.shadowMapDisabled = false;\n    this.selection = null;\n  }\n  get renderToScreen() {\n    return super.renderToScreen;\n  }\n  set renderToScreen(value) {\n    super.renderToScreen = value;\n    this.clearPass.renderToScreen = value;\n  }\n  get overrideMaterial() {\n    const manager = this.overrideMaterialManager;\n    return manager !== null ? manager.material : null;\n  }\n  set overrideMaterial(value) {\n    const manager = this.overrideMaterialManager;\n    if (value !== null) {\n      if (manager !== null) {\n        manager.setMaterial(value);\n      } else {\n        this.overrideMaterialManager = new OverrideMaterialManager(value);\n      }\n    } else if (manager !== null) {\n      manager.dispose();\n      this.overrideMaterialManager = null;\n    }\n  }\n  get clear() {\n    return this.clearPass.enabled;\n  }\n  set clear(value) {\n    this.clearPass.enabled = value;\n  }\n  getSelection() {\n    return this.selection;\n  }\n  setSelection(selection) {\n    this.selection = selection;\n  }\n  isBackgroundDisabled() {\n    return this.backgroundDisabled;\n  }\n  setBackgroundDisabled(disabled) {\n    this.backgroundDisabled = disabled;\n  }\n  isShadowMapDisabled() {\n    return this.shadowMapDisabled;\n  }\n  setShadowMapDisabled(disabled) {\n    this.shadowMapDisabled = disabled;\n  }\n  getClearPass() {\n    return this.clearPass;\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    const scene = this.scene;\n    const camera = this.camera;\n    const selection = this.selection;\n    const mask = camera.layers.mask;\n    const background = scene.background;\n    const shadowMapAutoUpdate = renderer.shadowMap.autoUpdate;\n    const renderTarget = this.renderToScreen ? null : inputBuffer;\n    if (selection !== null) {\n      camera.layers.set(selection.getLayer());\n    }\n    if (this.shadowMapDisabled) {\n      renderer.shadowMap.autoUpdate = false;\n    }\n    if (this.backgroundDisabled || this.clearPass.overrideClearColor !== null) {\n      scene.background = null;\n    }\n    if (this.clear) {\n      this.clearPass.render(renderer, inputBuffer);\n    }\n    renderer.setRenderTarget(renderTarget);\n    if (this.overrideMaterialManager !== null) {\n      this.overrideMaterialManager.render(renderer, scene, camera);\n    } else {\n      renderer.render(scene, camera);\n    }\n    camera.layers.mask = mask;\n    scene.background = background;\n    renderer.shadowMap.autoUpdate = shadowMapAutoUpdate;\n  }\n};\n\n// src/passes/DepthPass.js\nvar DepthPass = class extends Pass {\n  constructor(scene, camera, {\n    resolutionScale = 1,\n    width = Resizer.AUTO_SIZE,\n    height = Resizer.AUTO_SIZE,\n    renderTarget\n  } = {}) {\n    super(\"DepthPass\");\n    this.needsSwap = false;\n    this.renderPass = new RenderPass(scene, camera, new MeshDepthMaterial({\n      depthPacking: RGBADepthPacking\n    }));\n    const renderPass = this.renderPass;\n    renderPass.setBackgroundDisabled(true);\n    renderPass.setShadowMapDisabled(true);\n    const clearPass = renderPass.getClearPass();\n    clearPass.overrideClearColor = new Color2(16777215);\n    clearPass.overrideClearAlpha = 1;\n    this.renderTarget = renderTarget;\n    if (this.renderTarget === void 0) {\n      this.renderTarget = new WebGLRenderTarget4(1, 1, {\n        minFilter: NearestFilter2,\n        magFilter: NearestFilter2,\n        stencilBuffer: false\n      });\n      this.renderTarget.texture.name = \"DepthPass.Target\";\n    }\n    this.resolution = new Resizer(this, width, height, resolutionScale);\n  }\n  get texture() {\n    return this.renderTarget.texture;\n  }\n  getResolutionScale() {\n    return this.resolutionScale;\n  }\n  setResolutionScale(scale) {\n    this.resolutionScale = scale;\n    this.setSize(this.resolution.base.x, this.resolution.base.y);\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    const renderTarget = this.renderToScreen ? null : this.renderTarget;\n    this.renderPass.render(renderer, renderTarget);\n  }\n  setSize(width, height) {\n    const resolution = this.resolution;\n    resolution.base.set(width, height);\n    this.renderTarget.setSize(resolution.width, resolution.height);\n  }\n};\n\n// src/passes/DepthDownsamplingPass.js\nimport {\n  BasicDepthPacking,\n  FloatType,\n  NearestFilter as NearestFilter3,\n  WebGLRenderTarget as WebGLRenderTarget5\n} from \"three\";\nvar DepthDownsamplingPass = class extends Pass {\n  constructor({\n    normalBuffer = null,\n    resolutionScale = 0.5,\n    width = Resizer.AUTO_SIZE,\n    height = Resizer.AUTO_SIZE\n  } = {}) {\n    super(\"DepthDownsamplingPass\");\n    this.setFullscreenMaterial(new DepthDownsamplingMaterial());\n    this.needsDepthTexture = true;\n    this.needsSwap = false;\n    if (normalBuffer !== null) {\n      const material = this.getFullscreenMaterial();\n      material.uniforms.normalBuffer.value = normalBuffer;\n      material.defines.DOWNSAMPLE_NORMALS = \"1\";\n    }\n    this.renderTarget = new WebGLRenderTarget5(1, 1, {\n      minFilter: NearestFilter3,\n      magFilter: NearestFilter3,\n      stencilBuffer: false,\n      depthBuffer: false,\n      type: FloatType\n    });\n    this.renderTarget.texture.name = \"DepthDownsamplingPass.Target\";\n    this.renderTarget.texture.generateMipmaps = false;\n    this.resolution = new Resizer(this, width, height);\n    this.resolution.scale = resolutionScale;\n  }\n  get texture() {\n    return this.renderTarget.texture;\n  }\n  setDepthTexture(depthTexture, depthPacking = BasicDepthPacking) {\n    const material = this.getFullscreenMaterial();\n    material.uniforms.depthBuffer.value = depthTexture;\n    material.depthPacking = depthPacking;\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    renderer.setRenderTarget(this.renderToScreen ? null : this.renderTarget);\n    renderer.render(this.scene, this.camera);\n  }\n  setSize(width, height) {\n    const resolution = this.resolution;\n    resolution.base.set(width, height);\n    this.getFullscreenMaterial().setTexelSize(1 / width, 1 / height);\n    this.renderTarget.setSize(resolution.width, resolution.height);\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    if (!renderer.capabilities.isWebGL2) {\n      console.error(\"The DepthDownsamplingPass requires WebGL 2\");\n    }\n  }\n};\n\n// src/passes/DepthPickingPass.js\nimport { FloatType as FloatType3, RGBADepthPacking as RGBADepthPacking3 } from \"three\";\n\n// src/passes/DepthSavePass.js\nimport {\n  BasicDepthPacking as BasicDepthPacking2,\n  FloatType as FloatType2,\n  NearestFilter as NearestFilter4,\n  RGBADepthPacking as RGBADepthPacking2,\n  UnsignedByteType as UnsignedByteType4,\n  WebGLRenderTarget as WebGLRenderTarget6\n} from \"three\";\nvar DepthSavePass = class extends Pass {\n  constructor({ depthPacking = RGBADepthPacking2 } = {}) {\n    super(\"DepthSavePass\");\n    const material = new DepthCopyMaterial();\n    material.setOutputDepthPacking(depthPacking);\n    this.setFullscreenMaterial(material);\n    this.needsDepthTexture = true;\n    this.needsSwap = false;\n    this.renderTarget = new WebGLRenderTarget6(1, 1, {\n      type: depthPacking === RGBADepthPacking2 ? UnsignedByteType4 : FloatType2,\n      minFilter: NearestFilter4,\n      magFilter: NearestFilter4,\n      stencilBuffer: false,\n      depthBuffer: false\n    });\n    this.renderTarget.texture.name = \"DepthSavePass.Target\";\n  }\n  get texture() {\n    return this.renderTarget.texture;\n  }\n  get depthPacking() {\n    return this.getFullscreenMaterial().getOutputDepthPacking();\n  }\n  setDepthTexture(depthTexture, depthPacking = BasicDepthPacking2) {\n    const material = this.getFullscreenMaterial();\n    material.uniforms.depthBuffer.value = depthTexture;\n    material.setInputDepthPacking(depthPacking);\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    renderer.setRenderTarget(this.renderToScreen ? null : this.renderTarget);\n    renderer.render(this.scene, this.camera);\n  }\n  setSize(width, height) {\n    this.renderTarget.setSize(width, height);\n  }\n};\n\n// src/passes/DepthPickingPass.js\nvar unpackFactors = new Float32Array([\n  255 / 256 / 256 ** 3,\n  255 / 256 / 256 ** 2,\n  255 / 256 / 256,\n  255 / 256\n]);\nfunction unpackRGBAToDepth(packedDepth) {\n  return (packedDepth[0] * unpackFactors[0] + packedDepth[1] * unpackFactors[1] + packedDepth[2] * unpackFactors[2] + packedDepth[3] * unpackFactors[3]) / 256;\n}\nvar DepthPickingPass = class extends DepthSavePass {\n  constructor({\n    depthPacking = RGBADepthPacking3,\n    mode = DepthCopyMode.SINGLE\n  } = {}) {\n    super({ depthPacking });\n    this.name = \"DepthPickingPass\";\n    this.getFullscreenMaterial().setMode(mode);\n    this.pixelBuffer = depthPacking === RGBADepthPacking3 ? new Uint8Array(4) : new Float32Array(4);\n    this.callback = null;\n  }\n  get mode() {\n    return this.getFullscreenMaterial().getMode();\n  }\n  get screenPosition() {\n    return this.getFullscreenMaterial().uniforms.screenPosition.value;\n  }\n  readDepth(ndc) {\n    this.screenPosition.set(ndc.x * 0.5 + 0.5, ndc.y * 0.5 + 0.5);\n    return new Promise((resolve) => {\n      this.callback = resolve;\n    });\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    if (this.mode === DepthCopyMode.FULL) {\n      super.render(renderer);\n    }\n    if (this.callback !== null) {\n      const renderTarget = this.renderTarget;\n      const pixelBuffer = this.pixelBuffer;\n      const packed = renderTarget.texture.type !== FloatType3;\n      let x = 0, y = 0;\n      if (this.mode === DepthCopyMode.SINGLE) {\n        super.render(renderer);\n      } else {\n        const screenPosition = this.screenPosition;\n        x = Math.round(screenPosition.x * renderTarget.width);\n        y = Math.round(screenPosition.y * renderTarget.height);\n      }\n      renderer.readRenderTargetPixels(renderTarget, x, y, 1, 1, pixelBuffer);\n      this.callback(packed ? unpackRGBAToDepth(pixelBuffer) : pixelBuffer[0]);\n      this.callback = null;\n    }\n  }\n  setSize(width, height) {\n    if (this.mode === DepthCopyMode.FULL) {\n      super.setSize(width, height);\n    }\n  }\n};\n\n// src/passes/EffectPass.js\nimport { BasicDepthPacking as BasicDepthPacking3, UnsignedByteType as UnsignedByteType5 } from \"three\";\n\n// src/effects/blending/BlendFunction.js\nvar BlendFunction = {\n  SKIP: 0,\n  ADD: 1,\n  ALPHA: 2,\n  AVERAGE: 3,\n  COLOR_BURN: 4,\n  COLOR_DODGE: 5,\n  DARKEN: 6,\n  DIFFERENCE: 7,\n  EXCLUSION: 8,\n  LIGHTEN: 9,\n  MULTIPLY: 10,\n  DIVIDE: 11,\n  NEGATION: 12,\n  NORMAL: 13,\n  OVERLAY: 14,\n  REFLECT: 15,\n  SCREEN: 16,\n  SOFT_LIGHT: 17,\n  SUBTRACT: 18\n};\n\n// src/effects/blending/BlendMode.js\nimport { EventDispatcher, Uniform as Uniform19 } from \"three\";\n\n// src/effects/blending/glsl/add/shader.frag\nvar shader_default28 = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return min(x+y,1.0)*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/alpha/shader.frag\nvar shader_default29 = \"vec3 blend(const in vec3 x,const in vec3 y,const in float opacity){return y*opacity+x*(1.0-opacity);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){float a=min(y.a,opacity);return vec4(blend(x.rgb,y.rgb,a),max(x.a,a));}\";\n\n// src/effects/blending/glsl/average/shader.frag\nvar shader_default30 = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(x+y)*0.5*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/color-burn/shader.frag\nvar shader_default31 = \"float blend(const in float x,const in float y){return(y==0.0)? y : max(1.0-(1.0-x)/y,0.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/color-dodge/shader.frag\nvar shader_default32 = \"float blend(const in float x,const in float y){return(y==1.0)? y : min(x/(1.0-y),1.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/darken/shader.frag\nvar shader_default33 = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return min(x,y)*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/difference/shader.frag\nvar shader_default34 = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return abs(x-y)*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/exclusion/shader.frag\nvar shader_default35 = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(x+y-2.0*x*y)*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/lighten/shader.frag\nvar shader_default36 = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return max(x,y)*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/multiply/shader.frag\nvar shader_default37 = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return x*y*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/divide/shader.frag\nvar shader_default38 = \"float blend(const in float x,const in float y){return(y>0.0)? min(x/y,1.0): 1.0;}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/negation/shader.frag\nvar shader_default39 = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(1.0-abs(1.0-x-y))*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/normal/shader.frag\nvar shader_default40 = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return y*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/overlay/shader.frag\nvar shader_default41 = \"float blend(const in float x,const in float y){return(x<0.5)?(2.0*x*y):(1.0-2.0*(1.0-x)*(1.0-y));}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/reflect/shader.frag\nvar shader_default42 = \"float blend(const in float x,const in float y){return(y==1.0)? y : min(x*x/(1.0-y),1.0);}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/screen/shader.frag\nvar shader_default43 = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return(1.0-(1.0-x)*(1.0-y))*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/soft-light/shader.frag\nvar shader_default44 = \"float blend(const in float x,const in float y){return(y<0.5)?(2.0*x*y+x*x*(1.0-2.0*y)):(sqrt(x)*(2.0*y-1.0)+2.0*x*(1.0-y));}vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec4 z=vec4(blend(x.r,y.r),blend(x.g,y.g),blend(x.b,y.b),blend(x.a,y.a));return z*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/glsl/subtract/shader.frag\nvar shader_default45 = \"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return max(x+y-1.0,0.0)*opacity+x*(1.0-opacity);}\";\n\n// src/effects/blending/BlendMode.js\nvar blendFunctions = new Map([\n  [BlendFunction.SKIP, null],\n  [BlendFunction.ADD, shader_default28],\n  [BlendFunction.ALPHA, shader_default29],\n  [BlendFunction.AVERAGE, shader_default30],\n  [BlendFunction.COLOR_BURN, shader_default31],\n  [BlendFunction.COLOR_DODGE, shader_default32],\n  [BlendFunction.DARKEN, shader_default33],\n  [BlendFunction.DIFFERENCE, shader_default34],\n  [BlendFunction.EXCLUSION, shader_default35],\n  [BlendFunction.LIGHTEN, shader_default36],\n  [BlendFunction.MULTIPLY, shader_default37],\n  [BlendFunction.DIVIDE, shader_default38],\n  [BlendFunction.NEGATION, shader_default39],\n  [BlendFunction.NORMAL, shader_default40],\n  [BlendFunction.OVERLAY, shader_default41],\n  [BlendFunction.REFLECT, shader_default42],\n  [BlendFunction.SCREEN, shader_default43],\n  [BlendFunction.SOFT_LIGHT, shader_default44],\n  [BlendFunction.SUBTRACT, shader_default45]\n]);\nvar BlendMode = class extends EventDispatcher {\n  constructor(blendFunction, opacity = 1) {\n    super();\n    this.blendFunction = blendFunction;\n    this.opacity = new Uniform19(opacity);\n  }\n  getBlendFunction() {\n    return this.blendFunction;\n  }\n  setBlendFunction(blendFunction) {\n    this.blendFunction = blendFunction;\n    this.dispatchEvent({ type: \"change\" });\n  }\n  getShaderCode() {\n    return blendFunctions.get(this.blendFunction);\n  }\n};\n\n// src/effects/Effect.js\nimport { EventDispatcher as EventDispatcher2, Scene as Scene2 } from \"three\";\nvar Effect = class extends EventDispatcher2 {\n  constructor(name, fragmentShader, {\n    attributes = EffectAttribute.NONE,\n    blendFunction = BlendFunction.SCREEN,\n    defines = new Map(),\n    uniforms = new Map(),\n    extensions = null,\n    vertexShader = null\n  } = {}) {\n    super();\n    this.name = name;\n    this.attributes = attributes;\n    this.fragmentShader = fragmentShader;\n    this.vertexShader = vertexShader;\n    this.defines = defines;\n    this.uniforms = uniforms;\n    this.extensions = extensions;\n    this.blendMode = new BlendMode(blendFunction);\n    this.blendMode.addEventListener(\"change\", (event) => this.setChanged());\n  }\n  setChanged() {\n    this.dispatchEvent({ type: \"change\" });\n  }\n  getAttributes() {\n    return this.attributes;\n  }\n  setAttributes(attributes) {\n    this.attributes = attributes;\n    this.setChanged();\n  }\n  getFragmentShader() {\n    return this.fragmentShader;\n  }\n  setFragmentShader(fragmentShader) {\n    this.fragmentShader = fragmentShader;\n    this.setChanged();\n  }\n  getVertexShader() {\n    return this.vertexShader;\n  }\n  setVertexShader(vertexShader) {\n    this.vertexShader = vertexShader;\n    this.setChanged();\n  }\n  setDepthTexture(depthTexture, depthPacking = 0) {\n  }\n  update(renderer, inputBuffer, deltaTime) {\n  }\n  setSize(width, height) {\n  }\n  initialize(renderer, alpha, frameBufferType) {\n  }\n  dispose() {\n    for (const key of Object.keys(this)) {\n      const property = this[key];\n      if (property !== null && typeof property.dispose === \"function\") {\n        if (property instanceof Scene2) {\n          continue;\n        }\n        this[key].dispose();\n      }\n    }\n  }\n};\nvar EffectAttribute = {\n  NONE: 0,\n  DEPTH: 1,\n  CONVOLUTION: 2\n};\nvar WebGLExtension = {\n  DERIVATIVES: \"derivatives\",\n  FRAG_DEPTH: \"fragDepth\",\n  DRAW_BUFFERS: \"drawBuffers\",\n  SHADER_TEXTURE_LOD: \"shaderTextureLOD\"\n};\n\n// src/passes/EffectPass.js\nfunction findSubstrings(regExp, string) {\n  const substrings = [];\n  let result;\n  while ((result = regExp.exec(string)) !== null) {\n    substrings.push(result[1]);\n  }\n  return substrings;\n}\nfunction prefixSubstrings(prefix, substrings, strings) {\n  let prefixed, regExp;\n  for (const substring of substrings) {\n    prefixed = \"$1\" + prefix + substring.charAt(0).toUpperCase() + substring.slice(1);\n    regExp = new RegExp(\"([^\\\\.])(\\\\b\" + substring + \"\\\\b)\", \"g\");\n    for (const entry of strings.entries()) {\n      if (entry[1] !== null) {\n        strings.set(entry[0], entry[1].replace(regExp, prefixed));\n      }\n    }\n  }\n}\nfunction integrateEffect(prefix, effect, shaderParts, blendModes, defines, uniforms, attributes) {\n  const functionRegExp = /(?:\\w+\\s+(\\w+)\\([\\w\\s,]*\\)\\s*{[^}]+})/g;\n  const varyingRegExp = /(?:varying\\s+\\w+\\s+(\\w*))/g;\n  const blendMode = effect.blendMode;\n  const shaders = new Map([\n    [\"fragment\", effect.getFragmentShader()],\n    [\"vertex\", effect.getVertexShader()]\n  ]);\n  const mainImageExists = shaders.get(\"fragment\") !== void 0 && /mainImage/.test(shaders.get(\"fragment\"));\n  const mainUvExists = shaders.get(\"fragment\") !== void 0 && /mainUv/.test(shaders.get(\"fragment\"));\n  let varyings = [], names = [];\n  let transformedUv = false;\n  let readDepth = false;\n  if (shaders.get(\"fragment\") === void 0) {\n    console.error(\"Missing fragment shader\", effect);\n  } else if (mainUvExists && (attributes & EffectAttribute.CONVOLUTION) !== 0) {\n    console.error(\"Effects that transform UV coordinates are incompatible with convolution effects\", effect);\n  } else if (!mainImageExists && !mainUvExists) {\n    console.error(\"The fragment shader contains neither a mainImage nor a mainUv function\", effect);\n  } else {\n    if (mainUvExists) {\n      shaderParts.set(Section.FRAGMENT_MAIN_UV, shaderParts.get(Section.FRAGMENT_MAIN_UV) + \"\t\" + prefix + \"MainUv(UV);\\n\");\n      transformedUv = true;\n    }\n    if (shaders.get(\"vertex\") !== null && /mainSupport/.test(shaders.get(\"vertex\"))) {\n      let string = \"\t\" + prefix + \"MainSupport(\";\n      if (/mainSupport *\\([\\w\\s]*?uv\\s*?\\)/.test(shaders.get(\"vertex\"))) {\n        string += \"vUv\";\n      }\n      string += \");\\n\";\n      shaderParts.set(Section.VERTEX_MAIN_SUPPORT, shaderParts.get(Section.VERTEX_MAIN_SUPPORT) + string);\n      varyings = varyings.concat(findSubstrings(varyingRegExp, shaders.get(\"vertex\")));\n      names = names.concat(varyings).concat(findSubstrings(functionRegExp, shaders.get(\"vertex\")));\n    }\n    names = names.concat(findSubstrings(functionRegExp, shaders.get(\"fragment\")));\n    names = names.concat(Array.from(effect.defines.keys()).map((s) => s.replace(/\\([\\w\\s,]*\\)/g, \"\")));\n    names = names.concat(Array.from(effect.uniforms.keys()));\n    effect.uniforms.forEach((value, key) => uniforms.set(prefix + key.charAt(0).toUpperCase() + key.slice(1), value));\n    effect.defines.forEach((value, key) => defines.set(prefix + key.charAt(0).toUpperCase() + key.slice(1), value));\n    prefixSubstrings(prefix, names, defines);\n    prefixSubstrings(prefix, names, shaders);\n    blendModes.set(blendMode.blendFunction, blendMode);\n    if (mainImageExists) {\n      const depthParamRegExp = /MainImage *\\([\\w\\s,]*?depth[\\w\\s,]*?\\)/;\n      let string = prefix + \"MainImage(color0, UV, \";\n      if ((attributes & EffectAttribute.DEPTH) !== 0 && depthParamRegExp.test(shaders.get(\"fragment\"))) {\n        string += \"depth, \";\n        readDepth = true;\n      }\n      string += \"color1);\\n\t\";\n      const blendOpacity = prefix + \"BlendOpacity\";\n      uniforms.set(blendOpacity, blendMode.opacity);\n      string += \"color0 = blend\" + blendMode.getBlendFunction() + \"(color0, color1, \" + blendOpacity + \");\\n\\n\t\";\n      shaderParts.set(Section.FRAGMENT_MAIN_IMAGE, shaderParts.get(Section.FRAGMENT_MAIN_IMAGE) + string);\n      shaderParts.set(Section.FRAGMENT_HEAD, shaderParts.get(Section.FRAGMENT_HEAD) + \"uniform float \" + blendOpacity + \";\\n\\n\");\n    }\n    shaderParts.set(Section.FRAGMENT_HEAD, shaderParts.get(Section.FRAGMENT_HEAD) + shaders.get(\"fragment\") + \"\\n\");\n    if (shaders.get(\"vertex\") !== null) {\n      shaderParts.set(Section.VERTEX_HEAD, shaderParts.get(Section.VERTEX_HEAD) + shaders.get(\"vertex\") + \"\\n\");\n    }\n  }\n  return { varyings, transformedUv, readDepth };\n}\nvar EffectPass = class extends Pass {\n  constructor(camera, ...effects) {\n    super(\"EffectPass\");\n    this.setFullscreenMaterial(new EffectMaterial(null, null, null, camera));\n    this.effects = effects.sort((a, b) => b.attributes - a.attributes);\n    this.skipRendering = false;\n    this.uniforms = 0;\n    this.varyings = 0;\n    this.minTime = 1;\n    this.maxTime = Number.POSITIVE_INFINITY;\n  }\n  get encodeOutput() {\n    return this.getFullscreenMaterial().defines.ENCODE_OUTPUT !== void 0;\n  }\n  set encodeOutput(value) {\n    if (this.encodeOutput !== value) {\n      const material = this.getFullscreenMaterial();\n      material.needsUpdate = true;\n      if (value) {\n        material.defines.ENCODE_OUTPUT = \"1\";\n      } else {\n        delete material.defines.ENCODE_OUTPUT;\n      }\n    }\n  }\n  get dithering() {\n    return this.getFullscreenMaterial().dithering;\n  }\n  set dithering(value) {\n    const material = this.getFullscreenMaterial();\n    if (material.dithering !== value) {\n      material.dithering = value;\n      material.needsUpdate = true;\n    }\n  }\n  verifyResources(renderer) {\n    const capabilities = renderer.capabilities;\n    let max = Math.min(capabilities.maxFragmentUniforms, capabilities.maxVertexUniforms);\n    if (this.uniforms > max) {\n      console.warn(\"The current rendering context doesn't support more than \" + max + \" uniforms, but \" + this.uniforms + \" were defined\");\n    }\n    max = capabilities.maxVaryings;\n    if (this.varyings > max) {\n      console.warn(\"The current rendering context doesn't support more than \" + max + \" varyings, but \" + this.varyings + \" were defined\");\n    }\n  }\n  updateMaterial() {\n    const blendRegExp = /\\bblend\\b/g;\n    const shaderParts = new Map([\n      [Section.FRAGMENT_HEAD, \"\"],\n      [Section.FRAGMENT_MAIN_UV, \"\"],\n      [Section.FRAGMENT_MAIN_IMAGE, \"\"],\n      [Section.VERTEX_HEAD, \"\"],\n      [Section.VERTEX_MAIN_SUPPORT, \"\"]\n    ]);\n    const blendModes = new Map();\n    const defines = new Map();\n    const uniforms = new Map();\n    const extensions = new Set();\n    let id = 0, varyings = 0, attributes = 0;\n    let transformedUv = false;\n    let readDepth = false;\n    let result;\n    for (const effect of this.effects) {\n      if (effect.blendMode.getBlendFunction() === BlendFunction.SKIP) {\n        attributes |= effect.getAttributes() & EffectAttribute.DEPTH;\n      } else if ((attributes & EffectAttribute.CONVOLUTION) !== 0 && (effect.getAttributes() & EffectAttribute.CONVOLUTION) !== 0) {\n        console.error(\"Convolution effects cannot be merged\", effect);\n      } else {\n        attributes |= effect.getAttributes();\n        result = integrateEffect(\"e\" + id++, effect, shaderParts, blendModes, defines, uniforms, attributes);\n        varyings += result.varyings.length;\n        transformedUv = transformedUv || result.transformedUv;\n        readDepth = readDepth || result.readDepth;\n        if (effect.extensions !== null) {\n          for (const extension of effect.extensions) {\n            extensions.add(extension);\n          }\n        }\n      }\n    }\n    for (const blendMode of blendModes.values()) {\n      shaderParts.set(Section.FRAGMENT_HEAD, shaderParts.get(Section.FRAGMENT_HEAD) + blendMode.getShaderCode().replace(blendRegExp, \"blend\" + blendMode.getBlendFunction()) + \"\\n\");\n    }\n    if ((attributes & EffectAttribute.DEPTH) !== 0) {\n      if (readDepth) {\n        shaderParts.set(Section.FRAGMENT_MAIN_IMAGE, \"float depth = readDepth(UV);\\n\\n\t\" + shaderParts.get(Section.FRAGMENT_MAIN_IMAGE));\n      }\n      this.needsDepthTexture = this.getDepthTexture() === null;\n    } else {\n      this.needsDepthTexture = false;\n    }\n    if (transformedUv) {\n      shaderParts.set(Section.FRAGMENT_MAIN_UV, \"vec2 transformedUv = vUv;\\n\" + shaderParts.get(Section.FRAGMENT_MAIN_UV));\n      defines.set(\"UV\", \"transformedUv\");\n    } else {\n      defines.set(\"UV\", \"vUv\");\n    }\n    shaderParts.forEach((value, key, map) => map.set(key, value.trim().replace(/^#/, \"\\n#\")));\n    this.uniforms = uniforms.size;\n    this.varyings = varyings;\n    this.skipRendering = id === 0;\n    this.needsSwap = !this.skipRendering;\n    const material = this.getFullscreenMaterial();\n    material.setShaderParts(shaderParts);\n    material.setDefines(defines);\n    material.setUniforms(uniforms);\n    material.extensions = {};\n    if (extensions.size > 0) {\n      for (const extension of extensions) {\n        material.extensions[extension] = true;\n      }\n    }\n    this.needsUpdate = false;\n  }\n  recompile(renderer) {\n    this.updateMaterial();\n    if (renderer !== void 0) {\n      this.verifyResources(renderer);\n    }\n  }\n  getDepthTexture() {\n    return this.getFullscreenMaterial().uniforms.depthBuffer.value;\n  }\n  setDepthTexture(depthTexture, depthPacking = BasicDepthPacking3) {\n    const material = this.getFullscreenMaterial();\n    material.uniforms.depthBuffer.value = depthTexture;\n    material.depthPacking = depthPacking;\n    material.needsUpdate = true;\n    for (const effect of this.effects) {\n      effect.setDepthTexture(depthTexture, depthPacking);\n    }\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    const material = this.getFullscreenMaterial();\n    const time = material.uniforms.time.value + deltaTime;\n    if (this.needsUpdate) {\n      this.recompile(renderer);\n    }\n    for (const effect of this.effects) {\n      effect.update(renderer, inputBuffer, deltaTime);\n    }\n    if (!this.skipRendering || this.renderToScreen) {\n      material.uniforms.inputBuffer.value = inputBuffer.texture;\n      material.uniforms.time.value = time <= this.maxTime ? time : this.minTime;\n      renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\n      renderer.render(this.scene, this.camera);\n    }\n  }\n  setSize(width, height) {\n    this.getFullscreenMaterial().setSize(width, height);\n    for (const effect of this.effects) {\n      effect.setSize(width, height);\n    }\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    for (const effect of this.effects) {\n      effect.initialize(renderer, alpha, frameBufferType);\n      effect.addEventListener(\"change\", (event) => this.handleEvent(event));\n    }\n    this.updateMaterial();\n    this.verifyResources(renderer);\n    if (frameBufferType !== void 0 && frameBufferType !== UnsignedByteType5) {\n      const material = this.getFullscreenMaterial();\n      material.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n    }\n  }\n  dispose() {\n    super.dispose();\n    for (const effect of this.effects) {\n      effect.dispose();\n    }\n  }\n  handleEvent(event) {\n    switch (event.type) {\n      case \"change\":\n        this.needsUpdate = true;\n        break;\n    }\n  }\n};\n\n// src/passes/LambdaPass.js\nvar LambdaPass = class extends Pass {\n  constructor(f) {\n    super(\"LambdaPass\", null, null);\n    this.needsSwap = false;\n    this.f = f;\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    this.f();\n  }\n};\n\n// src/passes/LuminancePass.js\nimport {\n  LinearFilter as LinearFilter3,\n  LuminanceFormat,\n  RGBAFormat as RGBAFormat2,\n  UnsignedByteType as UnsignedByteType6,\n  WebGLRenderTarget as WebGLRenderTarget7\n} from \"three\";\nvar LuminancePass = class extends Pass {\n  constructor({\n    width = Resizer.AUTO_SIZE,\n    height = Resizer.AUTO_SIZE,\n    renderTarget,\n    luminanceRange,\n    colorOutput\n  } = {}) {\n    super(\"LuminancePass\");\n    this.setFullscreenMaterial(new LuminanceMaterial(colorOutput, luminanceRange));\n    this.needsSwap = false;\n    this.renderTarget = renderTarget;\n    if (this.renderTarget === void 0) {\n      this.renderTarget = new WebGLRenderTarget7(1, 1, {\n        minFilter: LinearFilter3,\n        magFilter: LinearFilter3,\n        format: colorOutput ? RGBAFormat2 : LuminanceFormat,\n        stencilBuffer: false,\n        depthBuffer: false\n      });\n      this.renderTarget.texture.name = \"LuminancePass.Target\";\n      this.renderTarget.texture.generateMipmaps = false;\n    }\n    this.resolution = new Resizer(this, width, height);\n  }\n  get texture() {\n    return this.renderTarget.texture;\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    const material = this.getFullscreenMaterial();\n    material.uniforms.inputBuffer.value = inputBuffer.texture;\n    renderer.setRenderTarget(this.renderToScreen ? null : this.renderTarget);\n    renderer.render(this.scene, this.camera);\n  }\n  setSize(width, height) {\n    const resolution = this.resolution;\n    resolution.base.set(width, height);\n    this.renderTarget.setSize(resolution.width, resolution.height);\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    if (frameBufferType !== void 0 && frameBufferType !== UnsignedByteType6) {\n      const material = this.getFullscreenMaterial();\n      material.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n    }\n  }\n};\n\n// src/passes/MaskPass.js\nvar MaskPass = class extends Pass {\n  constructor(scene, camera) {\n    super(\"MaskPass\", scene, camera);\n    this.needsSwap = false;\n    this.clearPass = new ClearPass(false, false, true);\n    this.inverse = false;\n  }\n  get clear() {\n    return this.clearPass.enabled;\n  }\n  set clear(value) {\n    this.clearPass.enabled = value;\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    const context = renderer.getContext();\n    const buffers = renderer.state.buffers;\n    const scene = this.scene;\n    const camera = this.camera;\n    const clearPass = this.clearPass;\n    const writeValue = this.inverse ? 0 : 1;\n    const clearValue = 1 - writeValue;\n    buffers.color.setMask(false);\n    buffers.depth.setMask(false);\n    buffers.color.setLocked(true);\n    buffers.depth.setLocked(true);\n    buffers.stencil.setTest(true);\n    buffers.stencil.setOp(context.REPLACE, context.REPLACE, context.REPLACE);\n    buffers.stencil.setFunc(context.ALWAYS, writeValue, 4294967295);\n    buffers.stencil.setClear(clearValue);\n    buffers.stencil.setLocked(true);\n    if (this.clear) {\n      if (this.renderToScreen) {\n        clearPass.render(renderer, null);\n      } else {\n        clearPass.render(renderer, inputBuffer);\n        clearPass.render(renderer, outputBuffer);\n      }\n    }\n    if (this.renderToScreen) {\n      renderer.setRenderTarget(null);\n      renderer.render(scene, camera);\n    } else {\n      renderer.setRenderTarget(inputBuffer);\n      renderer.render(scene, camera);\n      renderer.setRenderTarget(outputBuffer);\n      renderer.render(scene, camera);\n    }\n    buffers.color.setLocked(false);\n    buffers.depth.setLocked(false);\n    buffers.stencil.setLocked(false);\n    buffers.stencil.setFunc(context.EQUAL, 1, 4294967295);\n    buffers.stencil.setOp(context.KEEP, context.KEEP, context.KEEP);\n    buffers.stencil.setLocked(true);\n  }\n};\n\n// src/passes/NormalPass.js\nimport {\n  Color as Color3,\n  MeshNormalMaterial,\n  NearestFilter as NearestFilter5,\n  RGBFormat as RGBFormat3,\n  WebGLRenderTarget as WebGLRenderTarget8\n} from \"three\";\nvar NormalPass = class extends Pass {\n  constructor(scene, camera, {\n    resolutionScale = 1,\n    width = Resizer.AUTO_SIZE,\n    height = Resizer.AUTO_SIZE,\n    renderTarget\n  } = {}) {\n    super(\"NormalPass\");\n    this.needsSwap = false;\n    this.renderPass = new RenderPass(scene, camera, new MeshNormalMaterial());\n    const renderPass = this.renderPass;\n    renderPass.setBackgroundDisabled(true);\n    renderPass.setShadowMapDisabled(true);\n    const clearPass = renderPass.getClearPass();\n    clearPass.overrideClearColor = new Color3(7829503);\n    clearPass.overrideClearAlpha = 1;\n    this.renderTarget = renderTarget;\n    if (this.renderTarget === void 0) {\n      this.renderTarget = new WebGLRenderTarget8(1, 1, {\n        minFilter: NearestFilter5,\n        magFilter: NearestFilter5,\n        format: RGBFormat3,\n        stencilBuffer: false\n      });\n      this.renderTarget.texture.name = \"NormalPass.Target\";\n    }\n    this.resolution = new Resizer(this, width, height, resolutionScale);\n  }\n  get texture() {\n    return this.renderTarget.texture;\n  }\n  getResolutionScale() {\n    return this.resolutionScale;\n  }\n  setResolutionScale(scale) {\n    this.resolutionScale = scale;\n    this.setSize(this.resolution.base.x, this.resolution.base.y);\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    const renderTarget = this.renderToScreen ? null : this.renderTarget;\n    this.renderPass.render(renderer, renderTarget, renderTarget);\n  }\n  setSize(width, height) {\n    const resolution = this.resolution;\n    resolution.base.set(width, height);\n    this.renderTarget.setSize(resolution.width, resolution.height);\n  }\n};\n\n// src/passes/ShaderPass.js\nimport { UnsignedByteType as UnsignedByteType7 } from \"three\";\nvar ShaderPass = class extends Pass {\n  constructor(material, input = \"inputBuffer\") {\n    super(\"ShaderPass\");\n    this.setFullscreenMaterial(material);\n    this.uniform = null;\n    this.setInput(input);\n  }\n  setInput(input) {\n    const material = this.getFullscreenMaterial();\n    this.uniform = null;\n    if (material !== null) {\n      const uniforms = material.uniforms;\n      if (uniforms !== void 0 && uniforms[input] !== void 0) {\n        this.uniform = uniforms[input];\n      }\n    }\n  }\n  render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest) {\n    if (this.uniform !== null && inputBuffer !== null) {\n      this.uniform.value = inputBuffer.texture;\n    }\n    renderer.setRenderTarget(this.renderToScreen ? null : outputBuffer);\n    renderer.render(this.scene, this.camera);\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    if (frameBufferType !== void 0 && frameBufferType !== UnsignedByteType7) {\n      const material = this.getFullscreenMaterial();\n      material.defines.FRAMEBUFFER_PRECISION_HIGH = \"1\";\n    }\n  }\n};\n\n// src/core/Timer.js\nvar MILLISECONDS_TO_SECONDS = 1 / 1e3;\nvar SECONDS_TO_MILLISECONDS = 1e3;\nvar Timer = class {\n  constructor() {\n    this.previousTime = 0;\n    this.currentTime = 0;\n    this.delta = 0;\n    this.fixedDelta = 1e3 / 60;\n    this.elapsed = 0;\n    this.timescale = 1;\n    this.fixedDeltaEnabled = false;\n  }\n  setFixedDeltaEnabled(enabled) {\n    this.fixedDeltaEnabled = enabled;\n    return this;\n  }\n  setAutoResetEnabled(enabled) {\n    if (typeof document !== \"undefined\" && document.hidden !== void 0) {\n      if (enabled) {\n        document.addEventListener(\"visibilitychange\", this);\n      } else {\n        document.removeEventListener(\"visibilitychange\", this);\n      }\n    }\n    return this;\n  }\n  getDelta() {\n    return this.delta * MILLISECONDS_TO_SECONDS;\n  }\n  getFixedDelta() {\n    return this.fixedDelta * MILLISECONDS_TO_SECONDS;\n  }\n  setFixedDelta(fixedDelta) {\n    this.fixedDelta = fixedDelta * SECONDS_TO_MILLISECONDS;\n    return this;\n  }\n  getElapsed() {\n    return this.elapsed * MILLISECONDS_TO_SECONDS;\n  }\n  getTimescale() {\n    return this.timescale;\n  }\n  setTimescale(timescale) {\n    this.timescale = timescale;\n    return this;\n  }\n  update(timestamp) {\n    if (this.fixedDeltaEnabled) {\n      this.delta = this.fixedDelta;\n    } else {\n      this.previousTime = this.currentTime;\n      this.currentTime = timestamp !== void 0 ? timestamp : performance.now();\n      this.delta = this.currentTime - this.previousTime;\n    }\n    this.delta *= this.timescale;\n    this.elapsed += this.deltaTime;\n    return this;\n  }\n  reset() {\n    this.delta = 0;\n    this.elapsed = 0;\n    this.currentTime = performance.now();\n    return this;\n  }\n  handleEvent(event) {\n    if (!document.hidden) {\n      this.currentTime = performance.now();\n    }\n  }\n  dispose() {\n    if (typeof document !== \"undefined\") {\n      document.removeEventListener(\"visibilitychange\", this);\n    }\n  }\n};\n\n// src/core/EffectComposer.js\nvar EffectComposer = class {\n  constructor(renderer = null, {\n    depthBuffer = true,\n    stencilBuffer = false,\n    alpha = false,\n    multisampling = 0,\n    frameBufferType\n  } = {}) {\n    this.renderer = renderer;\n    this.inputBuffer = null;\n    this.outputBuffer = null;\n    if (this.renderer !== null) {\n      this.renderer.autoClear = false;\n      this.inputBuffer = this.createBuffer(depthBuffer, stencilBuffer, frameBufferType, multisampling);\n      this.outputBuffer = this.inputBuffer.clone();\n    }\n    this.copyPass = new ShaderPass(new CopyMaterial());\n    this.alpha = alpha;\n    this.depthTexture = null;\n    this.passes = [];\n    this.timer = new Timer();\n    this.autoRenderToScreen = true;\n  }\n  get multisampling() {\n    return this.inputBuffer instanceof WebGLMultisampleRenderTarget ? this.inputBuffer.samples : 0;\n  }\n  set multisampling(value) {\n    const buffer = this.inputBuffer;\n    const multisampling = this.multisampling;\n    if (multisampling > 0 && value > 0) {\n      this.inputBuffer.samples = value;\n      this.outputBuffer.samples = value;\n    } else if (multisampling !== value) {\n      this.inputBuffer.dispose();\n      this.outputBuffer.dispose();\n      this.inputBuffer = this.createBuffer(buffer.depthBuffer, buffer.stencilBuffer, buffer.texture.type, value);\n      this.inputBuffer.depthTexture = this.depthTexture;\n      this.outputBuffer = this.inputBuffer.clone();\n    }\n  }\n  getTimer() {\n    return this.timer;\n  }\n  getRenderer() {\n    return this.renderer;\n  }\n  replaceRenderer(renderer, updateDOM = true) {\n    const oldRenderer = this.renderer;\n    if (oldRenderer !== null && oldRenderer !== renderer) {\n      const oldSize = oldRenderer.getSize(new Vector213());\n      const newSize = renderer.getSize(new Vector213());\n      const parent = oldRenderer.domElement.parentNode;\n      this.renderer = renderer;\n      this.renderer.autoClear = false;\n      if (!oldSize.equals(newSize)) {\n        this.setSize();\n      }\n      if (updateDOM && parent !== null) {\n        parent.removeChild(oldRenderer.domElement);\n        parent.appendChild(renderer.domElement);\n      }\n    }\n    return oldRenderer;\n  }\n  createDepthTexture() {\n    const depthTexture = this.depthTexture = new DepthTexture();\n    this.inputBuffer.depthTexture = depthTexture;\n    this.inputBuffer.dispose();\n    if (this.inputBuffer.stencilBuffer) {\n      depthTexture.format = DepthStencilFormat;\n      depthTexture.type = UnsignedInt248Type;\n    } else {\n      depthTexture.type = UnsignedIntType;\n    }\n    return depthTexture;\n  }\n  deleteDepthTexture() {\n    if (this.depthTexture !== null) {\n      this.depthTexture.dispose();\n      this.depthTexture = null;\n      this.inputBuffer.depthTexture = null;\n      this.inputBuffer.dispose();\n      for (const pass of this.passes) {\n        pass.setDepthTexture(null);\n      }\n    }\n  }\n  createBuffer(depthBuffer, stencilBuffer, type, multisampling) {\n    const renderer = this.renderer;\n    const context = renderer.getContext();\n    const size = renderer.getDrawingBufferSize(new Vector213());\n    const alpha = this.alpha || context.getContextAttributes().alpha;\n    const options = {\n      format: !alpha && type === UnsignedByteType8 ? RGBFormat4 : RGBAFormat3,\n      minFilter: LinearFilter4,\n      magFilter: LinearFilter4,\n      stencilBuffer,\n      depthBuffer,\n      type\n    };\n    const renderTarget = multisampling > 0 ? new WebGLMultisampleRenderTarget(size.width, size.height, options) : new WebGLRenderTarget9(size.width, size.height, options);\n    if (multisampling > 0) {\n      renderTarget.samples = multisampling;\n    }\n    renderTarget.texture.name = \"EffectComposer.Buffer\";\n    renderTarget.texture.generateMipmaps = false;\n    return renderTarget;\n  }\n  addPass(pass, index) {\n    const passes = this.passes;\n    const renderer = this.renderer;\n    const drawingBufferSize = renderer.getDrawingBufferSize(new Vector213());\n    const alpha = renderer.getContext().getContextAttributes().alpha;\n    const frameBufferType = this.inputBuffer.texture.type;\n    pass.setSize(drawingBufferSize.width, drawingBufferSize.height);\n    pass.initialize(renderer, alpha, frameBufferType);\n    if (this.autoRenderToScreen) {\n      if (passes.length > 0) {\n        passes[passes.length - 1].renderToScreen = false;\n      }\n      if (pass.renderToScreen) {\n        this.autoRenderToScreen = false;\n      }\n    }\n    if (index !== void 0) {\n      passes.splice(index, 0, pass);\n    } else {\n      passes.push(pass);\n    }\n    if (this.autoRenderToScreen) {\n      passes[passes.length - 1].renderToScreen = true;\n    }\n    if (pass.needsDepthTexture || this.depthTexture !== null) {\n      if (this.depthTexture === null) {\n        const depthTexture = this.createDepthTexture();\n        for (pass of passes) {\n          pass.setDepthTexture(depthTexture);\n        }\n      } else {\n        pass.setDepthTexture(this.depthTexture);\n      }\n    }\n  }\n  removePass(pass) {\n    const passes = this.passes;\n    const index = passes.indexOf(pass);\n    const exists = index !== -1;\n    const removed = exists && passes.splice(index, 1).length > 0;\n    if (removed) {\n      if (this.depthTexture !== null) {\n        const reducer = (a, b) => a || b.needsDepthTexture;\n        const depthTextureRequired = passes.reduce(reducer, false);\n        if (!depthTextureRequired) {\n          if (pass.getDepthTexture() === this.depthTexture) {\n            pass.setDepthTexture(null);\n          }\n          this.deleteDepthTexture();\n        }\n      }\n      if (this.autoRenderToScreen) {\n        if (index === passes.length) {\n          pass.renderToScreen = false;\n          if (passes.length > 0) {\n            passes[passes.length - 1].renderToScreen = true;\n          }\n        }\n      }\n    }\n  }\n  removeAllPasses() {\n    const passes = this.passes;\n    this.deleteDepthTexture();\n    if (passes.length > 0) {\n      if (this.autoRenderToScreen) {\n        passes[passes.length - 1].renderToScreen = false;\n      }\n      this.passes = [];\n    }\n  }\n  render(deltaTime) {\n    const renderer = this.renderer;\n    const copyPass = this.copyPass;\n    let inputBuffer = this.inputBuffer;\n    let outputBuffer = this.outputBuffer;\n    let stencilTest = false;\n    let context, stencil, buffer;\n    if (deltaTime === void 0) {\n      deltaTime = this.timer.update().getDelta();\n    }\n    for (const pass of this.passes) {\n      if (pass.isEnabled()) {\n        pass.render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest);\n        if (pass.needsSwap) {\n          if (stencilTest) {\n            copyPass.renderToScreen = pass.renderToScreen;\n            context = renderer.getContext();\n            stencil = renderer.state.buffers.stencil;\n            stencil.setFunc(context.NOTEQUAL, 1, 4294967295);\n            copyPass.render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest);\n            stencil.setFunc(context.EQUAL, 1, 4294967295);\n          }\n          buffer = inputBuffer;\n          inputBuffer = outputBuffer;\n          outputBuffer = buffer;\n        }\n        if (pass instanceof MaskPass) {\n          stencilTest = true;\n        } else if (pass instanceof ClearMaskPass) {\n          stencilTest = false;\n        }\n      }\n    }\n  }\n  setSize(width, height, updateStyle) {\n    const renderer = this.renderer;\n    if (width === void 0 || height === void 0) {\n      const size = renderer.getSize(new Vector213());\n      width = size.width;\n      height = size.height;\n    } else {\n      renderer.setSize(width, height, updateStyle);\n    }\n    const drawingBufferSize = renderer.getDrawingBufferSize(new Vector213());\n    const inputBuffer = this.inputBuffer;\n    const outputBuffer = this.outputBuffer;\n    inputBuffer.setSize(drawingBufferSize.width, drawingBufferSize.height);\n    outputBuffer.setSize(drawingBufferSize.width, drawingBufferSize.height);\n    for (const pass of this.passes) {\n      pass.setSize(drawingBufferSize.width, drawingBufferSize.height);\n    }\n  }\n  reset() {\n    this.dispose();\n    this.autoRenderToScreen = true;\n  }\n  dispose() {\n    for (const pass of this.passes) {\n      pass.dispose();\n    }\n    this.passes = [];\n    if (this.inputBuffer !== null) {\n      this.inputBuffer.dispose();\n    }\n    if (this.outputBuffer !== null) {\n      this.outputBuffer.dispose();\n    }\n    this.deleteDepthTexture();\n    this.copyPass.dispose();\n    this.timer.dispose();\n  }\n};\n\n// src/core/Initializable.js\nvar Initializable = class {\n  initialize(renderer, alpha, frameBufferType) {\n  }\n};\n\n// src/core/Resizable.js\nvar Resizable = class {\n  setSize(width, height) {\n  }\n};\n\n// src/core/Selection.js\nvar Selection = class extends Set {\n  constructor(iterable, layer = 10) {\n    super();\n    this.currentLayer = layer;\n    this.exclusive = false;\n    if (iterable !== void 0) {\n      this.set(iterable);\n    }\n  }\n  get layer() {\n    return this.currentLayer;\n  }\n  set layer(value) {\n    this.setLayer(value);\n  }\n  getLayer() {\n    return this.currentLayer;\n  }\n  setLayer(value) {\n    const currentLayer = this.currentLayer;\n    for (const object of this) {\n      object.layers.disable(currentLayer);\n      object.layers.enable(value);\n    }\n    this.currentLayer = value;\n  }\n  clear() {\n    const layer = this.layer;\n    for (const object of this) {\n      object.layers.disable(layer);\n    }\n    return super.clear();\n  }\n  set(objects) {\n    this.clear();\n    for (const object of objects) {\n      this.add(object);\n    }\n    return this;\n  }\n  indexOf(object) {\n    return this.has(object) ? 0 : -1;\n  }\n  add(object) {\n    if (this.exclusive) {\n      object.layers.set(this.layer);\n    } else {\n      object.layers.enable(this.layer);\n    }\n    return super.add(object);\n  }\n  delete(object) {\n    if (this.has(object)) {\n      object.layers.disable(this.layer);\n    }\n    return super.delete(object);\n  }\n  setVisible(visible) {\n    for (const object of this) {\n      if (visible) {\n        object.layers.enable(0);\n      } else {\n        object.layers.disable(0);\n      }\n    }\n    return this;\n  }\n};\n\n// src/effects/BloomEffect.js\nimport {\n  LinearFilter as LinearFilter5,\n  RGBFormat as RGBFormat5,\n  Uniform as Uniform20,\n  UnsignedByteType as UnsignedByteType9,\n  WebGLRenderTarget as WebGLRenderTarget10\n} from \"three\";\n\n// src/effects/glsl/bloom/shader.frag\nvar shader_default46 = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D map;\\n#else\\nuniform lowp sampler2D map;\\n#endif\\nuniform float intensity;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=clamp(texture2D(map,uv)*intensity,0.0,1.0);}\";\n\n// src/effects/BloomEffect.js\nvar BloomEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.SCREEN,\n    luminanceThreshold = 0.9,\n    luminanceSmoothing = 0.025,\n    resolutionScale = 0.5,\n    intensity = 1,\n    width = Resizer.AUTO_SIZE,\n    height = Resizer.AUTO_SIZE,\n    kernelSize = KernelSize.LARGE\n  } = {}) {\n    super(\"BloomEffect\", shader_default46, {\n      blendFunction,\n      uniforms: new Map([\n        [\"map\", new Uniform20(null)],\n        [\"intensity\", new Uniform20(intensity)]\n      ])\n    });\n    this.renderTarget = new WebGLRenderTarget10(1, 1, {\n      minFilter: LinearFilter5,\n      magFilter: LinearFilter5,\n      stencilBuffer: false,\n      depthBuffer: false\n    });\n    this.renderTarget.texture.name = \"Bloom.Target\";\n    this.renderTarget.texture.generateMipmaps = false;\n    this.uniforms.get(\"map\").value = this.renderTarget.texture;\n    this.blurPass = new BlurPass({\n      resolutionScale,\n      width,\n      height,\n      kernelSize\n    });\n    this.blurPass.resolution.resizable = this;\n    this.luminancePass = new LuminancePass({\n      renderTarget: this.renderTarget,\n      colorOutput: true\n    });\n    this.luminancePass.resolution = this.resolution;\n    this.luminanceMaterial.threshold = luminanceThreshold;\n    this.luminanceMaterial.smoothing = luminanceSmoothing;\n  }\n  get texture() {\n    return this.renderTarget.texture;\n  }\n  get luminanceMaterial() {\n    return this.luminancePass.getFullscreenMaterial();\n  }\n  get resolution() {\n    return this.blurPass.resolution;\n  }\n  get width() {\n    return this.resolution.width;\n  }\n  set width(value) {\n    this.resolution.width = value;\n  }\n  get height() {\n    return this.resolution.height;\n  }\n  set height(value) {\n    this.resolution.height = value;\n  }\n  get dithering() {\n    return this.blurPass.dithering;\n  }\n  set dithering(value) {\n    this.blurPass.dithering = value;\n  }\n  get kernelSize() {\n    return this.blurPass.kernelSize;\n  }\n  set kernelSize(value) {\n    this.blurPass.kernelSize = value;\n  }\n  get distinction() {\n    console.warn(this.name, \"The distinction field has been removed, use .threshold and .smoothing instead.\");\n    return 1;\n  }\n  set distinction(value) {\n    console.warn(this.name, \"The distinction field has been removed, use .threshold and .smoothing instead.\");\n  }\n  get intensity() {\n    return this.uniforms.get(\"intensity\").value;\n  }\n  set intensity(value) {\n    this.uniforms.get(\"intensity\").value = value;\n  }\n  getResolutionScale() {\n    return this.resolution.scale;\n  }\n  setResolutionScale(scale) {\n    this.resolution.scale = scale;\n  }\n  update(renderer, inputBuffer, deltaTime) {\n    const renderTarget = this.renderTarget;\n    if (this.luminancePass.isEnabled()) {\n      this.luminancePass.render(renderer, inputBuffer, renderTarget);\n      this.blurPass.render(renderer, renderTarget, renderTarget);\n    } else {\n      this.blurPass.render(renderer, inputBuffer, renderTarget);\n    }\n  }\n  setSize(width, height) {\n    this.blurPass.setSize(width, height);\n    this.renderTarget.setSize(this.resolution.width, this.resolution.height);\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    this.blurPass.initialize(renderer, alpha, frameBufferType);\n    if (!alpha && frameBufferType === UnsignedByteType9) {\n      this.renderTarget.texture.format = RGBFormat5;\n    }\n    if (frameBufferType !== void 0) {\n      this.renderTarget.texture.type = frameBufferType;\n    }\n  }\n};\n\n// src/effects/BokehEffect.js\nimport { Uniform as Uniform21 } from \"three\";\n\n// src/effects/glsl/bokeh/shader.frag\nvar shader_default47 = \"uniform float focus;uniform float dof;uniform float aperture;uniform float maxBlur;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec2 aspectCorrection=vec2(1.0,aspect);\\n#ifdef PERSPECTIVE_CAMERA\\nfloat viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);float linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);\\n#else\\nfloat linearDepth=depth;\\n#endif\\nfloat focusNear=clamp(focus-dof,0.0,1.0);float focusFar=clamp(focus+dof,0.0,1.0);float low=step(linearDepth,focusNear);float high=step(focusFar,linearDepth);float factor=(linearDepth-focusNear)*low+(linearDepth-focusFar)*high;vec2 dofBlur=vec2(clamp(factor*aperture,-maxBlur,maxBlur));vec2 dofblur9=dofBlur*0.9;vec2 dofblur7=dofBlur*0.7;vec2 dofblur4=dofBlur*0.4;vec4 color=inputColor;color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.37,0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.40,0.0)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.37,-0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.15,-0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.15,0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.37,0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.37,-0.15)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,-0.37)*aspectCorrection)*dofBlur);color+=texture2D(inputBuffer,uv+(vec2(0.15,0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.37,0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.37,-0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.15,-0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.15,0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.37,0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(-0.37,-0.15)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.15,-0.37)*aspectCorrection)*dofblur9);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.40,0.0)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofblur7);color+=texture2D(inputBuffer,uv+(vec2(0.29,0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.4,0.0)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.29,-0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.0,-0.4)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.29,0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.4,0.0)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(-0.29,-0.29)*aspectCorrection)*dofblur4);color+=texture2D(inputBuffer,uv+(vec2(0.0,0.4)*aspectCorrection)*dofblur4);outputColor=color/41.0;}\";\n\n// src/effects/BokehEffect.js\nvar BokehEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.NORMAL,\n    focus = 0.5,\n    dof = 0.02,\n    aperture = 0.015,\n    maxBlur = 1\n  } = {}) {\n    super(\"BokehEffect\", shader_default47, {\n      blendFunction,\n      attributes: EffectAttribute.CONVOLUTION | EffectAttribute.DEPTH,\n      uniforms: new Map([\n        [\"focus\", new Uniform21(focus)],\n        [\"dof\", new Uniform21(dof)],\n        [\"aperture\", new Uniform21(aperture)],\n        [\"maxBlur\", new Uniform21(maxBlur)]\n      ])\n    });\n  }\n};\n\n// src/effects/BrightnessContrastEffect.js\nimport { Uniform as Uniform22 } from \"three\";\n\n// src/effects/glsl/brightness-contrast/shader.frag\nvar shader_default48 = \"uniform float brightness;uniform float contrast;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=inputColor.rgb+vec3(brightness-0.5);if(contrast>0.0){color/=vec3(1.0-contrast);}else{color*=vec3(1.0+contrast);}outputColor=vec4(min(color+vec3(0.5),1.0),inputColor.a);}\";\n\n// src/effects/BrightnessContrastEffect.js\nvar BrightnessContrastEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.NORMAL,\n    brightness = 0,\n    contrast = 0\n  } = {}) {\n    super(\"BrightnessContrastEffect\", shader_default48, {\n      blendFunction,\n      uniforms: new Map([\n        [\"brightness\", new Uniform22(brightness)],\n        [\"contrast\", new Uniform22(contrast)]\n      ])\n    });\n  }\n};\n\n// src/effects/glsl/color-average/shader.frag\nvar shader_default49 = \"void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float sum=inputColor.r+inputColor.g+inputColor.b;outputColor=vec4(vec3(sum/3.0),inputColor.a);}\";\n\n// src/effects/ColorAverageEffect.js\nvar ColorAverageEffect = class extends Effect {\n  constructor(blendFunction = BlendFunction.NORMAL) {\n    super(\"ColorAverageEffect\", shader_default49, { blendFunction });\n  }\n};\n\n// src/effects/ColorDepthEffect.js\nimport { Uniform as Uniform23 } from \"three\";\n\n// src/effects/glsl/color-depth/shader.frag\nvar shader_default50 = \"uniform float factor;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=vec4(floor(inputColor.rgb*factor+0.5)/factor,inputColor.a);}\";\n\n// src/effects/ColorDepthEffect.js\nvar ColorDepthEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.NORMAL,\n    bits = 16\n  } = {}) {\n    super(\"ColorDepthEffect\", shader_default50, {\n      blendFunction,\n      uniforms: new Map([\n        [\"factor\", new Uniform23(1)]\n      ])\n    });\n    this.bits = 0;\n    this.setBitDepth(bits);\n  }\n  getBitDepth() {\n    return this.bits;\n  }\n  setBitDepth(bits) {\n    this.bits = bits;\n    this.uniforms.get(\"factor\").value = Math.pow(2, bits / 3);\n  }\n};\n\n// src/effects/ChromaticAberrationEffect.js\nimport { Uniform as Uniform24, Vector2 as Vector214 } from \"three\";\n\n// src/effects/glsl/chromatic-aberration/shader.frag\nvar shader_default51 = \"varying vec2 vUvR;varying vec2 vUvB;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 color=inputColor;\\n#ifdef ALPHA\\nvec2 ra=texture2D(inputBuffer,vUvR).ra;vec2 ba=texture2D(inputBuffer,vUvB).ba;color.r=ra.x;color.b=ba.x;color.a=max(max(ra.y,ba.y),inputColor.a);\\n#else\\ncolor.r=texture2D(inputBuffer,vUvR).r;color.b=texture2D(inputBuffer,vUvB).b;\\n#endif\\noutputColor=color;}\";\n\n// src/effects/glsl/chromatic-aberration/shader.vert\nvar shader_default52 = \"uniform vec2 offset;varying vec2 vUvR;varying vec2 vUvB;void mainSupport(const in vec2 uv){vUvR=uv+offset;vUvB=uv-offset;}\";\n\n// src/effects/ChromaticAberrationEffect.js\nvar ChromaticAberrationEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.NORMAL,\n    offset = new Vector214(1e-3, 5e-4)\n  } = {}) {\n    super(\"ChromaticAberrationEffect\", shader_default51, {\n      vertexShader: shader_default52,\n      blendFunction,\n      attributes: EffectAttribute.CONVOLUTION,\n      uniforms: new Map([\n        [\"offset\", new Uniform24(offset)]\n      ])\n    });\n  }\n  get offset() {\n    return this.uniforms.get(\"offset\").value;\n  }\n  set offset(value) {\n    this.uniforms.get(\"offset\").value = value;\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    if (alpha) {\n      this.defines.set(\"ALPHA\", \"1\");\n    } else {\n      this.defines.delete(\"ALPHA\");\n    }\n  }\n};\n\n// src/effects/glsl/depth/shader.frag\nvar shader_default53 = \"void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){\\n#ifdef INVERTED\\nvec3 color=vec3(1.0-depth);\\n#else\\nvec3 color=vec3(depth);\\n#endif\\noutputColor=vec4(color,inputColor.a);}\";\n\n// src/effects/DepthEffect.js\nvar DepthEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.NORMAL,\n    inverted = false\n  } = {}) {\n    super(\"DepthEffect\", shader_default53, {\n      blendFunction,\n      attributes: EffectAttribute.DEPTH\n    });\n    this.inverted = inverted;\n  }\n  get inverted() {\n    return this.defines.has(\"INVERTED\");\n  }\n  set inverted(value) {\n    if (this.inverted !== value) {\n      if (value) {\n        this.defines.set(\"INVERTED\", \"1\");\n      } else {\n        this.defines.delete(\"INVERTED\");\n      }\n      this.setChanged();\n    }\n  }\n};\n\n// src/effects/DepthOfFieldEffect.js\nimport {\n  BasicDepthPacking as BasicDepthPacking4,\n  LinearFilter as LinearFilter6,\n  RGBFormat as RGBFormat6,\n  Uniform as Uniform25,\n  UnsignedByteType as UnsignedByteType10,\n  WebGLRenderTarget as WebGLRenderTarget11\n} from \"three\";\n\n// src/effects/glsl/depth-of-field/shader.frag\nvar shader_default54 = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D nearColorBuffer;uniform mediump sampler2D farColorBuffer;\\n#else\\nuniform lowp sampler2D nearColorBuffer;uniform lowp sampler2D farColorBuffer;\\n#endif\\nuniform lowp sampler2D nearCoCBuffer;uniform float scale;void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){vec4 colorNear=texture2D(nearColorBuffer,uv);vec4 colorFar=texture2D(farColorBuffer,uv);float CoCNear=texture2D(nearCoCBuffer,uv).r;CoCNear=min(CoCNear*scale,1.0);vec4 result=inputColor*(1.0-colorFar.a)+colorFar;result=mix(result,colorNear,CoCNear);outputColor=result;}\";\n\n// src/effects/DepthOfFieldEffect.js\nvar DepthOfFieldEffect = class extends Effect {\n  constructor(camera, {\n    blendFunction = BlendFunction.NORMAL,\n    focusDistance = 0,\n    focalLength = 0.1,\n    bokehScale = 1,\n    width = Resizer.AUTO_SIZE,\n    height = Resizer.AUTO_SIZE\n  } = {}) {\n    super(\"DepthOfFieldEffect\", shader_default54, {\n      blendFunction,\n      attributes: EffectAttribute.DEPTH,\n      uniforms: new Map([\n        [\"nearColorBuffer\", new Uniform25(null)],\n        [\"farColorBuffer\", new Uniform25(null)],\n        [\"nearCoCBuffer\", new Uniform25(null)],\n        [\"scale\", new Uniform25(1)]\n      ])\n    });\n    this.camera = camera;\n    this.renderTarget = new WebGLRenderTarget11(1, 1, {\n      minFilter: LinearFilter6,\n      magFilter: LinearFilter6,\n      stencilBuffer: false,\n      depthBuffer: false\n    });\n    this.renderTarget.texture.name = \"DoF.Intermediate\";\n    this.renderTarget.texture.generateMipmaps = false;\n    this.renderTargetMasked = this.renderTarget.clone();\n    this.renderTargetMasked.texture.name = \"DoF.Masked.Far\";\n    this.renderTargetNear = this.renderTarget.clone();\n    this.renderTargetNear.texture.name = \"DoF.Bokeh.Near\";\n    this.uniforms.get(\"nearColorBuffer\").value = this.renderTargetNear.texture;\n    this.renderTargetFar = this.renderTarget.clone();\n    this.renderTargetFar.texture.name = \"DoF.Bokeh.Far\";\n    this.uniforms.get(\"farColorBuffer\").value = this.renderTargetFar.texture;\n    this.renderTargetCoC = this.renderTarget.clone();\n    this.renderTargetCoC.texture.format = RGBFormat6;\n    this.renderTargetCoC.texture.name = \"DoF.CoC\";\n    this.renderTargetCoCBlurred = this.renderTargetCoC.clone();\n    this.renderTargetCoCBlurred.texture.name = \"DoF.CoC.Blurred\";\n    this.uniforms.get(\"nearCoCBuffer\").value = this.renderTargetCoCBlurred.texture;\n    this.cocPass = new ShaderPass(new CircleOfConfusionMaterial(camera));\n    const cocMaterial = this.circleOfConfusionMaterial;\n    cocMaterial.uniforms.focusDistance.value = focusDistance;\n    cocMaterial.uniforms.focalLength.value = focalLength;\n    this.blurPass = new BlurPass({\n      width,\n      height,\n      kernelSize: KernelSize.MEDIUM\n    });\n    this.blurPass.resolution.resizable = this;\n    this.maskPass = new ShaderPass(new MaskMaterial(this.renderTargetCoC.texture));\n    const maskMaterial = this.maskPass.getFullscreenMaterial();\n    maskMaterial.maskFunction = MaskFunction.MULTIPLY;\n    maskMaterial.colorChannel = ColorChannel.GREEN;\n    this.bokehNearBasePass = new ShaderPass(new BokehMaterial(false, true));\n    this.bokehNearFillPass = new ShaderPass(new BokehMaterial(true, true));\n    this.bokehFarBasePass = new ShaderPass(new BokehMaterial(false, false));\n    this.bokehFarFillPass = new ShaderPass(new BokehMaterial(true, false));\n    this.bokehScale = bokehScale;\n    this.target = null;\n  }\n  get circleOfConfusionMaterial() {\n    return this.cocPass.getFullscreenMaterial();\n  }\n  get resolution() {\n    return this.blurPass.resolution;\n  }\n  get bokehScale() {\n    return this.uniforms.get(\"scale\").value;\n  }\n  set bokehScale(value) {\n    const passes = [\n      this.bokehNearBasePass,\n      this.bokehNearFillPass,\n      this.bokehFarBasePass,\n      this.bokehFarFillPass\n    ];\n    passes.map((p) => p.getFullscreenMaterial().uniforms.scale).forEach((u) => {\n      u.value = value;\n    });\n    this.maskPass.getFullscreenMaterial().uniforms.strength.value = value;\n    this.uniforms.get(\"scale\").value = value;\n  }\n  calculateFocusDistance(target) {\n    const camera = this.camera;\n    const viewDistance = camera.far - camera.near;\n    const distance = camera.position.distanceTo(target);\n    return Math.min(Math.max(distance / viewDistance, 0), 1);\n  }\n  setDepthTexture(depthTexture, depthPacking = BasicDepthPacking4) {\n    const material = this.circleOfConfusionMaterial;\n    material.uniforms.depthBuffer.value = depthTexture;\n    material.depthPacking = depthPacking;\n  }\n  update(renderer, inputBuffer, deltaTime) {\n    const renderTarget = this.renderTarget;\n    const renderTargetCoC = this.renderTargetCoC;\n    const renderTargetCoCBlurred = this.renderTargetCoCBlurred;\n    const renderTargetMasked = this.renderTargetMasked;\n    const bokehFarBasePass = this.bokehFarBasePass;\n    const bokehFarFillPass = this.bokehFarFillPass;\n    const farBaseUniforms = bokehFarBasePass.getFullscreenMaterial().uniforms;\n    const farFillUniforms = bokehFarFillPass.getFullscreenMaterial().uniforms;\n    const bokehNearBasePass = this.bokehNearBasePass;\n    const bokehNearFillPass = this.bokehNearFillPass;\n    const nearBaseUniforms = bokehNearBasePass.getFullscreenMaterial().uniforms;\n    const nearFillUniforms = bokehNearFillPass.getFullscreenMaterial().uniforms;\n    if (this.target !== null) {\n      const distance = this.calculateFocusDistance(this.target);\n      this.circleOfConfusionMaterial.uniforms.focusDistance.value = distance;\n    }\n    this.cocPass.render(renderer, null, renderTargetCoC);\n    this.blurPass.render(renderer, renderTargetCoC, renderTargetCoCBlurred);\n    this.maskPass.render(renderer, inputBuffer, renderTargetMasked);\n    farBaseUniforms.cocBuffer.value = renderTargetCoC.texture;\n    farFillUniforms.cocBuffer.value = renderTargetCoC.texture;\n    bokehFarBasePass.render(renderer, renderTargetMasked, renderTarget);\n    bokehFarFillPass.render(renderer, renderTarget, this.renderTargetFar);\n    nearBaseUniforms.cocBuffer.value = renderTargetCoCBlurred.texture;\n    nearFillUniforms.cocBuffer.value = renderTargetCoCBlurred.texture;\n    bokehNearBasePass.render(renderer, inputBuffer, renderTarget);\n    bokehNearFillPass.render(renderer, renderTarget, this.renderTargetNear);\n  }\n  setSize(width, height) {\n    const resolution = this.resolution;\n    let resizables = [\n      this.cocPass,\n      this.blurPass,\n      this.maskPass,\n      this.bokehNearBasePass,\n      this.bokehNearFillPass,\n      this.bokehFarBasePass,\n      this.bokehFarFillPass\n    ];\n    resizables.push(this.renderTargetCoC, this.renderTargetMasked);\n    resizables.forEach((r) => r.setSize(width, height));\n    const w = resolution.width;\n    const h = resolution.height;\n    resizables = [\n      this.renderTarget,\n      this.renderTargetNear,\n      this.renderTargetFar,\n      this.renderTargetCoCBlurred\n    ];\n    resizables.forEach((r) => r.setSize(w, h));\n    const passes = [\n      this.bokehNearBasePass,\n      this.bokehNearFillPass,\n      this.bokehFarBasePass,\n      this.bokehFarFillPass\n    ];\n    passes.forEach((p) => p.getFullscreenMaterial().setTexelSize(1 / w, 1 / h));\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    const initializables = [\n      this.cocPass,\n      this.maskPass,\n      this.bokehNearBasePass,\n      this.bokehNearFillPass,\n      this.bokehFarBasePass,\n      this.bokehFarFillPass\n    ];\n    initializables.forEach((i) => i.initialize(renderer, alpha, frameBufferType));\n    this.blurPass.initialize(renderer, alpha, UnsignedByteType10);\n    if (!alpha && frameBufferType === UnsignedByteType10) {\n      this.renderTargetNear.texture.type = RGBFormat6;\n    }\n    if (frameBufferType !== void 0) {\n      this.renderTarget.texture.type = frameBufferType;\n      this.renderTargetNear.texture.type = frameBufferType;\n      this.renderTargetFar.texture.type = frameBufferType;\n      this.renderTargetMasked.texture.type = frameBufferType;\n    }\n  }\n};\n\n// src/effects/DotScreenEffect.js\nimport { Uniform as Uniform26, Vector2 as Vector215 } from \"three\";\n\n// src/effects/glsl/dot-screen/shader.frag\nvar shader_default55 = \"uniform vec2 angle;uniform float scale;float pattern(const in vec2 uv){vec2 point=scale*vec2(dot(angle.yx,vec2(uv.x,-uv.y)),dot(angle,uv));return(sin(point.x)*sin(point.y))*4.0;}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(inputColor.rgb*10.0-5.0+pattern(uv*resolution));outputColor=vec4(color,inputColor.a);}\";\n\n// src/effects/DotScreenEffect.js\nvar DotScreenEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.NORMAL,\n    angle = Math.PI * 0.5,\n    scale = 1\n  } = {}) {\n    super(\"DotScreenEffect\", shader_default55, {\n      blendFunction,\n      uniforms: new Map([\n        [\"angle\", new Uniform26(new Vector215())],\n        [\"scale\", new Uniform26(scale)]\n      ])\n    });\n    this.setAngle(angle);\n  }\n  setAngle(angle) {\n    this.uniforms.get(\"angle\").value.set(Math.sin(angle), Math.cos(angle));\n  }\n};\n\n// src/effects/GammaCorrectionEffect.js\nimport { Uniform as Uniform27 } from \"three\";\n\n// src/effects/glsl/gamma-correction/shader.frag\nvar shader_default56 = \"uniform float gamma;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=LinearToGamma(max(inputColor,0.0),gamma);}\";\n\n// src/effects/GammaCorrectionEffect.js\nvar GammaCorrectionEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.NORMAL,\n    gamma = 2\n  } = {}) {\n    super(\"GammaCorrectionEffect\", shader_default56, {\n      blendFunction,\n      uniforms: new Map([\n        [\"gamma\", new Uniform27(gamma)]\n      ])\n    });\n  }\n};\n\n// src/effects/GlitchEffect.js\nimport {\n  NearestFilter as NearestFilter6,\n  RepeatWrapping,\n  RGBFormat as RGBFormat8,\n  Uniform as Uniform28,\n  Vector2 as Vector216\n} from \"three\";\n\n// src/images/textures/NoiseTexture.js\nimport {\n  DataTexture,\n  LuminanceFormat as LuminanceFormat2,\n  RedFormat,\n  RGFormat,\n  RGBFormat as RGBFormat7,\n  RGBAFormat as RGBAFormat4,\n  UnsignedByteType as UnsignedByteType11\n} from \"three\";\nfunction getNoise(size, format, type) {\n  const channels = new Map([\n    [LuminanceFormat2, 1],\n    [RedFormat, 1],\n    [RGFormat, 2],\n    [RGBFormat7, 3],\n    [RGBAFormat4, 4]\n  ]);\n  let data;\n  if (!channels.has(format)) {\n    console.error(\"Invalid noise texture format\");\n  }\n  if (type === UnsignedByteType11) {\n    data = new Uint8Array(size * channels.get(format));\n    for (let i = 0, l = data.length; i < l; ++i) {\n      data[i] = Math.random() * 255;\n    }\n  } else {\n    data = new Float32Array(size * channels.get(format));\n    for (let i = 0, l = data.length; i < l; ++i) {\n      data[i] = Math.random();\n    }\n  }\n  return data;\n}\nvar NoiseTexture = class extends DataTexture {\n  constructor(width, height, format = LuminanceFormat2, type = UnsignedByteType11) {\n    super(getNoise(width * height, format, type), width, height, format, type);\n  }\n};\n\n// src/effects/glsl/glitch/shader.frag\nvar shader_default57 = \"uniform lowp sampler2D perturbationMap;uniform bool active;uniform float columns;uniform float random;uniform vec2 seed;uniform vec2 distortion;void mainUv(inout vec2 uv){if(active){if(uv.y<distortion.x+columns&&uv.y>distortion.x-columns*random){float sx=clamp(ceil(seed.x),0.0,1.0);uv.y=sx*(1.0-(uv.y+distortion.y))+(1.0-sx)*distortion.y;}if(uv.x<distortion.y+columns&&uv.x>distortion.y-columns*random){float sy=clamp(ceil(seed.y),0.0,1.0);uv.x=sy*distortion.x+(1.0-sy)*(1.0-(uv.x+distortion.x));}vec2 normal=texture2D(perturbationMap,uv*random*random).rg;uv+=normal*seed*(random*0.2);}}\";\n\n// src/effects/GlitchEffect.js\nvar tag = \"Glitch.Generated\";\nfunction randomFloat(low, high) {\n  return low + Math.random() * (high - low);\n}\nvar GlitchEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.NORMAL,\n    chromaticAberrationOffset = null,\n    delay = new Vector216(1.5, 3.5),\n    duration = new Vector216(0.6, 1),\n    strength = new Vector216(0.3, 1),\n    columns = 0.05,\n    ratio = 0.85,\n    perturbationMap = null,\n    dtSize = 64\n  } = {}) {\n    super(\"GlitchEffect\", shader_default57, {\n      blendFunction,\n      uniforms: new Map([\n        [\"perturbationMap\", new Uniform28(null)],\n        [\"columns\", new Uniform28(columns)],\n        [\"active\", new Uniform28(false)],\n        [\"random\", new Uniform28(1)],\n        [\"seed\", new Uniform28(new Vector216())],\n        [\"distortion\", new Uniform28(new Vector216())]\n      ])\n    });\n    this.setPerturbationMap(perturbationMap === null ? this.generatePerturbationMap(dtSize) : perturbationMap);\n    this.delay = delay;\n    this.duration = duration;\n    this.breakPoint = new Vector216(randomFloat(this.delay.x, this.delay.y), randomFloat(this.duration.x, this.duration.y));\n    this.time = 0;\n    this.seed = this.uniforms.get(\"seed\").value;\n    this.distortion = this.uniforms.get(\"distortion\").value;\n    this.mode = GlitchMode.SPORADIC;\n    this.strength = strength;\n    this.ratio = ratio;\n    this.chromaticAberrationOffset = chromaticAberrationOffset;\n  }\n  get active() {\n    return this.uniforms.get(\"active\").value;\n  }\n  getPerturbationMap() {\n    return this.uniforms.get(\"perturbationMap\").value;\n  }\n  setPerturbationMap(map) {\n    const currentMap = this.getPerturbationMap();\n    if (currentMap !== null && currentMap.name === tag) {\n      currentMap.dispose();\n    }\n    map.minFilter = map.magFilter = NearestFilter6;\n    map.wrapS = map.wrapT = RepeatWrapping;\n    map.generateMipmaps = false;\n    this.uniforms.get(\"perturbationMap\").value = map;\n  }\n  generatePerturbationMap(size = 64) {\n    const map = new NoiseTexture(size, size, RGBFormat8);\n    map.name = tag;\n    return map;\n  }\n  update(renderer, inputBuffer, deltaTime) {\n    const mode = this.mode;\n    const breakPoint = this.breakPoint;\n    const offset = this.chromaticAberrationOffset;\n    const s = this.strength;\n    let time = this.time;\n    let active = false;\n    let r = 0, a = 0;\n    let trigger;\n    if (mode !== GlitchMode.DISABLED) {\n      if (mode === GlitchMode.SPORADIC) {\n        time += deltaTime;\n        trigger = time > breakPoint.x;\n        if (time >= breakPoint.x + breakPoint.y) {\n          breakPoint.set(randomFloat(this.delay.x, this.delay.y), randomFloat(this.duration.x, this.duration.y));\n          time = 0;\n        }\n      }\n      r = Math.random();\n      this.uniforms.get(\"random\").value = r;\n      if (trigger && r > this.ratio || mode === GlitchMode.CONSTANT_WILD) {\n        active = true;\n        r *= s.y * 0.03;\n        a = randomFloat(-Math.PI, Math.PI);\n        this.seed.set(randomFloat(-s.y, s.y), randomFloat(-s.y, s.y));\n        this.distortion.set(randomFloat(0, 1), randomFloat(0, 1));\n      } else if (trigger || mode === GlitchMode.CONSTANT_MILD) {\n        active = true;\n        r *= s.x * 0.03;\n        a = randomFloat(-Math.PI, Math.PI);\n        this.seed.set(randomFloat(-s.x, s.x), randomFloat(-s.x, s.x));\n        this.distortion.set(randomFloat(0, 1), randomFloat(0, 1));\n      }\n      this.time = time;\n    }\n    if (offset !== null) {\n      if (active) {\n        offset.set(Math.cos(a), Math.sin(a)).multiplyScalar(r);\n      } else {\n        offset.set(0, 0);\n      }\n    }\n    this.uniforms.get(\"active\").value = active;\n  }\n};\nvar GlitchMode = {\n  DISABLED: 0,\n  SPORADIC: 1,\n  CONSTANT_MILD: 2,\n  CONSTANT_WILD: 3\n};\n\n// src/effects/GodRaysEffect.js\nimport {\n  BasicDepthPacking as BasicDepthPacking5,\n  Color as Color4,\n  DepthTexture as DepthTexture2,\n  LinearFilter as LinearFilter7,\n  Matrix4 as Matrix42,\n  RGBFormat as RGBFormat9,\n  Scene as Scene3,\n  Uniform as Uniform29,\n  Vector2 as Vector217,\n  Vector3,\n  UnsignedByteType as UnsignedByteType12,\n  WebGLRenderTarget as WebGLRenderTarget12\n} from \"three\";\n\n// src/effects/glsl/god-rays/shader.frag\nvar shader_default58 = \"#ifdef FRAMEBUFFER_PRECISION_HIGH\\nuniform mediump sampler2D map;\\n#else\\nuniform lowp sampler2D map;\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){outputColor=texture2D(map,uv);}\";\n\n// src/effects/GodRaysEffect.js\nvar v = new Vector3();\nvar m = new Matrix42();\nvar GodRaysEffect = class extends Effect {\n  constructor(camera, lightSource, {\n    blendFunction = BlendFunction.SCREEN,\n    samples = 60,\n    density = 0.96,\n    decay = 0.9,\n    weight = 0.4,\n    exposure = 0.6,\n    clampMax = 1,\n    resolutionScale = 0.5,\n    width = Resizer.AUTO_SIZE,\n    height = Resizer.AUTO_SIZE,\n    kernelSize = KernelSize.SMALL,\n    blur = true\n  } = {}) {\n    super(\"GodRaysEffect\", shader_default58, {\n      blendFunction,\n      attributes: EffectAttribute.DEPTH,\n      uniforms: new Map([\n        [\"map\", new Uniform29(null)]\n      ])\n    });\n    this.camera = camera;\n    this.lightSource = lightSource;\n    this.lightSource.material.depthWrite = false;\n    this.lightSource.material.transparent = true;\n    this.lightScene = new Scene3();\n    this.screenPosition = new Vector217();\n    this.renderTargetA = new WebGLRenderTarget12(1, 1, {\n      minFilter: LinearFilter7,\n      magFilter: LinearFilter7,\n      stencilBuffer: false,\n      depthBuffer: false\n    });\n    this.renderTargetA.texture.name = \"GodRays.Target.A\";\n    this.renderTargetB = this.renderTargetA.clone();\n    this.renderTargetB.texture.name = \"GodRays.Target.B\";\n    this.uniforms.get(\"map\").value = this.renderTargetB.texture;\n    this.renderTargetLight = this.renderTargetA.clone();\n    this.renderTargetLight.texture.name = \"GodRays.Light\";\n    this.renderTargetLight.depthBuffer = true;\n    this.renderTargetLight.depthTexture = new DepthTexture2();\n    this.renderPassLight = new RenderPass(this.lightScene, camera);\n    this.renderPassLight.getClearPass().overrideClearColor = new Color4(0);\n    this.clearPass = new ClearPass(true, false, false);\n    this.clearPass.overrideClearColor = new Color4(0);\n    this.blurPass = new BlurPass({\n      resolutionScale,\n      width,\n      height,\n      kernelSize\n    });\n    this.blurPass.resolution.resizable = this;\n    this.depthMaskPass = new ShaderPass(new DepthMaskMaterial());\n    const depthMaskMaterial = this.depthMaskPass.getFullscreenMaterial();\n    depthMaskMaterial.uniforms.depthBuffer1.value = this.renderTargetLight.depthTexture;\n    this.godRaysPass = new ShaderPass(new GodRaysMaterial(this.screenPosition));\n    const godRaysMaterial = this.godRaysPass.getFullscreenMaterial();\n    godRaysMaterial.uniforms.density.value = density;\n    godRaysMaterial.uniforms.decay.value = decay;\n    godRaysMaterial.uniforms.weight.value = weight;\n    godRaysMaterial.uniforms.exposure.value = exposure;\n    godRaysMaterial.uniforms.clampMax.value = clampMax;\n    this.samples = samples;\n    this.blur = blur;\n  }\n  get texture() {\n    return this.renderTargetB.texture;\n  }\n  get godRaysMaterial() {\n    return this.godRaysPass.getFullscreenMaterial();\n  }\n  get resolution() {\n    return this.blurPass.resolution;\n  }\n  get width() {\n    return this.resolution.width;\n  }\n  set width(value) {\n    this.resolution.width = value;\n  }\n  get height() {\n    return this.resolution.height;\n  }\n  set height(value) {\n    this.resolution.height = value;\n  }\n  get dithering() {\n    return this.godRaysMaterial.dithering;\n  }\n  set dithering(value) {\n    const material = this.godRaysMaterial;\n    material.dithering = value;\n    material.needsUpdate = true;\n  }\n  get blur() {\n    return this.blurPass.isEnabled();\n  }\n  set blur(value) {\n    this.blurPass.setEnabled(value);\n  }\n  get kernelSize() {\n    return this.blurPass.kernelSize;\n  }\n  set kernelSize(value) {\n    this.blurPass.kernelSize = value;\n  }\n  getResolutionScale() {\n    return this.resolution.scale;\n  }\n  setResolutionScale(scale) {\n    this.resolution.scale = scale;\n  }\n  get samples() {\n    return this.godRaysMaterial.samples;\n  }\n  set samples(value) {\n    this.godRaysMaterial.samples = value;\n  }\n  setDepthTexture(depthTexture, depthPacking = BasicDepthPacking5) {\n    const material = this.depthMaskPass.getFullscreenMaterial();\n    material.uniforms.depthBuffer0.value = depthTexture;\n    material.defines.DEPTH_PACKING_0 = depthPacking.toFixed(0);\n    material.needsUpdate = true;\n  }\n  update(renderer, inputBuffer, deltaTime) {\n    const lightSource = this.lightSource;\n    const parent = lightSource.parent;\n    const matrixAutoUpdate = lightSource.matrixAutoUpdate;\n    const renderTargetA = this.renderTargetA;\n    const renderTargetLight = this.renderTargetLight;\n    lightSource.material.depthWrite = true;\n    lightSource.matrixAutoUpdate = false;\n    lightSource.updateWorldMatrix(true, false);\n    if (parent !== null) {\n      if (!matrixAutoUpdate) {\n        m.copy(lightSource.matrix);\n      }\n      lightSource.matrix.copy(lightSource.matrixWorld);\n    }\n    this.lightScene.add(lightSource);\n    this.renderPassLight.render(renderer, renderTargetLight);\n    this.clearPass.render(renderer, renderTargetA);\n    this.depthMaskPass.render(renderer, renderTargetLight, renderTargetA);\n    lightSource.material.depthWrite = false;\n    lightSource.matrixAutoUpdate = matrixAutoUpdate;\n    if (parent !== null) {\n      if (!matrixAutoUpdate) {\n        lightSource.matrix.copy(m);\n      }\n      parent.add(lightSource);\n    }\n    v.setFromMatrixPosition(lightSource.matrixWorld).project(this.camera);\n    this.screenPosition.set(Math.min(Math.max((v.x + 1) * 0.5, -1), 2), Math.min(Math.max((v.y + 1) * 0.5, -1), 2));\n    if (this.blur) {\n      this.blurPass.render(renderer, renderTargetA, renderTargetA);\n    }\n    this.godRaysPass.render(renderer, renderTargetA, this.renderTargetB);\n  }\n  setSize(width, height) {\n    this.blurPass.setSize(width, height);\n    this.renderPassLight.setSize(width, height);\n    this.depthMaskPass.setSize(width, height);\n    this.godRaysPass.setSize(width, height);\n    const w = this.resolution.width;\n    const h = this.resolution.height;\n    this.renderTargetA.setSize(w, h);\n    this.renderTargetB.setSize(w, h);\n    this.renderTargetLight.setSize(w, h);\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    this.blurPass.initialize(renderer, alpha, frameBufferType);\n    this.renderPassLight.initialize(renderer, alpha, frameBufferType);\n    this.depthMaskPass.initialize(renderer, alpha, frameBufferType);\n    this.godRaysPass.initialize(renderer, alpha, frameBufferType);\n    if (!alpha && frameBufferType === UnsignedByteType12) {\n      this.renderTargetA.texture.format = RGBFormat9;\n      this.renderTargetB.texture.format = RGBFormat9;\n      this.renderTargetLight.texture.format = RGBFormat9;\n    }\n    if (frameBufferType !== void 0) {\n      this.renderTargetA.texture.type = frameBufferType;\n      this.renderTargetB.texture.type = frameBufferType;\n      this.renderTargetLight.texture.type = frameBufferType;\n    }\n  }\n};\n\n// src/effects/GridEffect.js\nimport { Uniform as Uniform30, Vector2 as Vector218 } from \"three\";\n\n// src/effects/glsl/grid/shader.frag\nvar shader_default59 = \"uniform vec2 scale;uniform float lineWidth;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){float grid=0.5-max(abs(mod(uv.x*scale.x,1.0)-0.5),abs(mod(uv.y*scale.y,1.0)-0.5));outputColor=vec4(vec3(smoothstep(0.0,lineWidth,grid)),inputColor.a);}\";\n\n// src/effects/GridEffect.js\nvar GridEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.OVERLAY,\n    scale = 1,\n    lineWidth = 0\n  } = {}) {\n    super(\"GridEffect\", shader_default59, {\n      blendFunction,\n      uniforms: new Map([\n        [\"scale\", new Uniform30(new Vector218())],\n        [\"lineWidth\", new Uniform30(lineWidth)]\n      ])\n    });\n    this.resolution = new Vector218();\n    this.scale = Math.max(scale, 1e-6);\n    this.lineWidth = Math.max(lineWidth, 0);\n  }\n  getScale() {\n    return this.scale;\n  }\n  setScale(scale) {\n    this.scale = scale;\n    this.setSize(this.resolution.x, this.resolution.y);\n  }\n  getLineWidth() {\n    return this.lineWidth;\n  }\n  setLineWidth(lineWidth) {\n    this.lineWidth = lineWidth;\n    this.setSize(this.resolution.x, this.resolution.y);\n  }\n  setSize(width, height) {\n    this.resolution.set(width, height);\n    const aspect = width / height;\n    const scale = this.scale * (height * 0.125);\n    this.uniforms.get(\"scale\").value.set(aspect * scale, scale);\n    this.uniforms.get(\"lineWidth\").value = scale / height + this.lineWidth;\n  }\n};\n\n// src/effects/HueSaturationEffect.js\nimport { Uniform as Uniform31, Vector3 as Vector32 } from \"three\";\n\n// src/effects/glsl/hue-saturation/shader.frag\nvar shader_default60 = \"uniform vec3 hue;uniform float saturation;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,hue.xyz),dot(inputColor.rgb,hue.zxy),dot(inputColor.rgb,hue.yzx));float average=(color.r+color.g+color.b)/3.0;vec3 diff=average-color;if(saturation>0.0){color+=diff*(1.0-1.0/(1.001-saturation));}else{color+=diff*-saturation;}outputColor=vec4(min(color,1.0),inputColor.a);}\";\n\n// src/effects/HueSaturationEffect.js\nvar HueSaturationEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.NORMAL,\n    hue = 0,\n    saturation = 0\n  } = {}) {\n    super(\"HueSaturationEffect\", shader_default60, {\n      blendFunction,\n      uniforms: new Map([\n        [\"hue\", new Uniform31(new Vector32())],\n        [\"saturation\", new Uniform31(saturation)]\n      ])\n    });\n    this.setHue(hue);\n  }\n  setHue(hue) {\n    const s = Math.sin(hue), c2 = Math.cos(hue);\n    this.uniforms.get(\"hue\").value.set(2 * c2, -Math.sqrt(3) * s - c2, Math.sqrt(3) * s - c2).addScalar(1).divideScalar(3);\n  }\n};\n\n// src/effects/LUTEffect.js\nimport {\n  DataTexture3D as DataTexture3D2,\n  FloatType as FloatType5,\n  HalfFloatType as HalfFloatType2,\n  LinearEncoding as LinearEncoding2,\n  LinearFilter as LinearFilter9,\n  NearestFilter as NearestFilter7,\n  sRGBEncoding as sRGBEncoding2,\n  Uniform as Uniform32,\n  Vector3 as Vector34\n} from \"three\";\n\n// src/images/textures/LookupTexture3D.js\nimport {\n  Color as Color5,\n  ClampToEdgeWrapping,\n  DataTexture as DataTexture2,\n  DataTexture3D,\n  FloatType as FloatType4,\n  LinearFilter as LinearFilter8,\n  LinearEncoding,\n  RGBFormat as RGBFormat10,\n  RGBAFormat as RGBAFormat5,\n  sRGBEncoding,\n  UnsignedByteType as UnsignedByteType13,\n  Vector3 as Vector33\n} from \"three\";\n\n// src/images/RawImageData.js\nfunction createCanvas(width, height, data) {\n  const canvas = document.createElementNS(\"http://www.w3.org/1999/xhtml\", \"canvas\");\n  const context = canvas.getContext(\"2d\");\n  canvas.width = width;\n  canvas.height = height;\n  if (data instanceof Image) {\n    context.drawImage(data, 0, 0);\n  } else {\n    const imageData = context.createImageData(width, height);\n    imageData.data.set(data);\n    context.putImageData(imageData, 0, 0);\n  }\n  return canvas;\n}\nvar RawImageData = class {\n  constructor(width = 0, height = 0, data = null) {\n    this.width = width;\n    this.height = height;\n    this.data = data;\n  }\n  toCanvas() {\n    return typeof document === \"undefined\" ? null : createCanvas(this.width, this.height, this.data);\n  }\n  static from(image) {\n    const { width, height } = image;\n    let data;\n    if (image instanceof Image) {\n      const canvas = createCanvas(width, height, image);\n      if (canvas !== null) {\n        const context = canvas.getContext(\"2d\");\n        data = context.getImageData(0, 0, width, height).data;\n      }\n    } else {\n      data = image.data;\n    }\n    return new RawImageData(width, height, data);\n  }\n};\n\n// src/images/lut/LUTOperation.js\nvar LUTOperation = {\n  SCALE_UP: \"lut.scaleup\"\n};\n\n// tmp/lut/worker.txt\nvar worker_default = '(()=>{var q=Math.pow;var _={SCALE_UP:\"lut.scaleup\"};var k=[new Float32Array(3),new Float32Array(3)],t=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],U=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function L(a,n,r,m){let h=r[0]-n[0],e=r[1]-n[1],s=r[2]-n[2],l=a[0]-n[0],w=a[1]-n[1],c=a[2]-n[2],y=e*c-s*w,A=s*l-h*c,g=h*w-e*l,p=Math.sqrt(y*y+A*A+g*g),V=p*.5,F=y/p,f=A/p,i=g/p,u=-(a[0]*F+a[1]*f+a[2]*i),M=m[0]*F+m[1]*f+m[2]*i;return Math.abs(M+u)*V/3}function X(a,n,r,m,h,e){let s=(r+m*n+h*n*n)*3;e[0]=a[s+0],e[1]=a[s+1],e[2]=a[s+2]}function j(a,n,r,m,h,e){let s=r*(n-1),l=m*(n-1),w=h*(n-1),c=Math.floor(s),y=Math.floor(l),A=Math.floor(w),g=Math.ceil(s),p=Math.ceil(l),V=Math.ceil(w),F=s-c,f=l-y,i=w-A;if(c===s&&y===l&&A===w)X(a,n,s,l,w,e);else{let u;F>=f&&f>=i?u=U[0]:F>=i&&i>=f?u=U[1]:i>=F&&F>=f?u=U[2]:f>=F&&F>=i?u=U[3]:f>=i&&i>=F?u=U[4]:i>=f&&f>=F&&(u=U[5]);let[M,x,P,T]=u,d=k[0];d[0]=F,d[1]=f,d[2]=i;let o=k[1],Y=g-c,Z=p-y,b=V-A;o[0]=Y*M[0]+c,o[1]=Z*M[1]+y,o[2]=b*M[2]+A,X(a,n,o[0],o[1],o[2],t[0]),o[0]=Y*x[0]+c,o[1]=Z*x[1]+y,o[2]=b*x[2]+A,X(a,n,o[0],o[1],o[2],t[1]),o[0]=Y*P[0]+c,o[1]=Z*P[1]+y,o[2]=b*P[2]+A,X(a,n,o[0],o[1],o[2],t[2]),o[0]=Y*T[0]+c,o[1]=Z*T[1]+y,o[2]=b*T[2]+A,X(a,n,o[0],o[1],o[2],t[3]);let v=L(x,P,T,d)*6,S=L(M,P,T,d)*6,C=L(M,x,T,d)*6,E=L(M,x,P,d)*6;t[0][0]*=v,t[0][1]*=v,t[0][2]*=v,t[1][0]*=S,t[1][1]*=S,t[1][2]*=S,t[2][0]*=C,t[2][1]*=C,t[2][2]*=C,t[3][0]*=E,t[3][1]*=E,t[3][2]*=E,e[0]=t[0][0]+t[1][0]+t[2][0]+t[3][0],e[1]=t[0][1]+t[1][1]+t[2][1]+t[3][1],e[2]=t[0][2]+t[1][2]+t[2][2]+t[3][2]}}var O=class{static expand(n,r){let m=Math.cbrt(n.length/3),h=new Float32Array(3),e=new n.constructor(q(r,3)*3),s=1/(r-1);for(let l=0;l<r;++l)for(let w=0;w<r;++w)for(let c=0;c<r;++c){let y=c*s,A=w*s,g=l*s,p=Math.round(c+w*r+l*r*r)*3;j(n,m,y,A,g,h),e[p+0]=h[0],e[p+1]=h[1],e[p+2]=h[2]}return e}};self.addEventListener(\"message\",a=>{let n=a.data,r=n.data;switch(n.operation){case _.SCALE_UP:r=O.expand(r,n.size);break}postMessage(r,[r.buffer]),close()});})();\\n';\n\n// src/images/textures/LookupTexture3D.js\nvar c = new Color5();\nvar LookupTexture3D = class extends DataTexture3D {\n  constructor(data, size) {\n    super(data, size, size, size);\n    this.type = FloatType4;\n    this.format = RGBFormat10;\n    this.encoding = LinearEncoding;\n    this.minFilter = LinearFilter8;\n    this.magFilter = LinearFilter8;\n    this.wrapS = ClampToEdgeWrapping;\n    this.wrapT = ClampToEdgeWrapping;\n    this.wrapR = ClampToEdgeWrapping;\n    this.unpackAlignment = 1;\n    this.domainMin = new Vector33(0, 0, 0);\n    this.domainMax = new Vector33(1, 1, 1);\n  }\n  get isLookupTexture3D() {\n    return true;\n  }\n  scaleUp(size, transferData = true) {\n    const image = this.image;\n    let promise;\n    if (size <= image.width) {\n      promise = Promise.reject(new Error(\"The target size must be greater than the current size\"));\n    } else {\n      const workerURL = URL.createObjectURL(new Blob([worker_default], {\n        type: \"text/javascript\"\n      }));\n      const worker = new Worker(workerURL);\n      promise = new Promise((resolve, reject) => {\n        worker.addEventListener(\"error\", (event) => reject(event.error));\n        worker.addEventListener(\"message\", (event) => {\n          const lut = new LookupTexture3D(event.data, size);\n          lut.encoding = this.encoding;\n          lut.type = this.type;\n          lut.name = this.name;\n          URL.revokeObjectURL(workerURL);\n          resolve(lut);\n        });\n        const transferList = transferData ? [image.data.buffer] : [];\n        worker.postMessage({\n          operation: LUTOperation.SCALE_UP,\n          data: image.data,\n          size\n        }, transferList);\n      });\n    }\n    return promise;\n  }\n  applyLUT(lut) {\n    const img0 = this.image;\n    const img1 = lut.image;\n    const size0 = Math.min(img0.width, img0.height, img0.depth);\n    const size1 = Math.min(img1.width, img1.height, img1.depth);\n    if (size0 !== size1) {\n      console.error(\"Size mismatch\");\n    } else if (lut.type !== FloatType4 || this.type !== FloatType4) {\n      console.error(\"Both LUTs must be FloatType textures\");\n    } else if (lut.format !== RGBFormat10 || this.format !== RGBFormat10) {\n      console.error(\"Both LUTs must be RGB textures\");\n    } else {\n      const data0 = img0.data;\n      const data1 = img1.data;\n      const size = size0;\n      const s = size - 1;\n      for (let i = 0, l = size ** 3; i < l; ++i) {\n        const i3 = i * 3;\n        const r = data0[i3 + 0] * s;\n        const g = data0[i3 + 1] * s;\n        const b = data0[i3 + 2] * s;\n        const iRGB = Math.round(r + g * size + b * size * size) * 3;\n        data0[i3 + 0] = data1[iRGB + 0];\n        data0[i3 + 1] = data1[iRGB + 1];\n        data0[i3 + 2] = data1[iRGB + 2];\n      }\n      this.needsUpdate = true;\n    }\n    return this;\n  }\n  convertToUint8() {\n    if (this.type === FloatType4) {\n      const floatData = this.image.data;\n      const uint8Data = new Uint8Array(floatData.length);\n      for (let i = 0, l = floatData.length; i < l; ++i) {\n        uint8Data[i] = floatData[i] * 255;\n      }\n      this.image.data = uint8Data;\n      this.type = UnsignedByteType13;\n      this.needsUpdate = true;\n    }\n    return this;\n  }\n  convertToFloat() {\n    if (this.type === UnsignedByteType13) {\n      const uint8Data = this.image.data;\n      const floatData = new Float32Array(uint8Data.length);\n      for (let i = 0, l = uint8Data.length; i < l; ++i) {\n        floatData[i] = uint8Data[i] / 255;\n      }\n      this.image.data = floatData;\n      this.type = FloatType4;\n      this.needsUpdate = true;\n    }\n    return this;\n  }\n  convertLinearToSRGB() {\n    const data = this.image.data;\n    if (this.type === FloatType4) {\n      const stride = this.format === RGBAFormat5 ? 4 : 3;\n      for (let i = 0, l = data.length; i < l; i += stride) {\n        c.fromArray(data, i).convertLinearToSRGB().toArray(data, i);\n      }\n      this.encoding = sRGBEncoding;\n      this.needsUpdate = true;\n    } else {\n      console.error(\"Color space conversion requires FloatType data\");\n    }\n    return this;\n  }\n  convertSRGBToLinear() {\n    const data = this.image.data;\n    if (this.type === FloatType4) {\n      const stride = this.format === RGBAFormat5 ? 4 : 3;\n      for (let i = 0, l = data.length; i < l; i += stride) {\n        c.fromArray(data, i).convertSRGBToLinear().toArray(data, i);\n      }\n      this.encoding = LinearEncoding;\n      this.needsUpdate = true;\n    } else {\n      console.error(\"Color space conversion requires FloatType data\");\n    }\n    return this;\n  }\n  convertToRGBA() {\n    if (this.format === RGBFormat10) {\n      const size = this.image.width;\n      const rgbData = this.image.data;\n      const rgbaData = new rgbData.constructor(size ** 3 * 4);\n      const maxValue = this.type === FloatType4 ? 1 : 255;\n      for (let i = 0, j = 0, l = rgbData.length; i < l; i += 3, j += 4) {\n        rgbaData[j + 0] = rgbData[i + 0];\n        rgbaData[j + 1] = rgbData[i + 1];\n        rgbaData[j + 2] = rgbData[i + 2];\n        rgbaData[j + 3] = maxValue;\n      }\n      this.image.data = rgbaData;\n      this.format = RGBAFormat5;\n      this.needsUpdate = true;\n    }\n    return this;\n  }\n  toDataTexture() {\n    const width = this.image.width;\n    const height = this.image.height * this.image.depth;\n    const texture = new DataTexture2(this.image.data, width, height);\n    texture.name = this.name;\n    texture.type = this.type;\n    texture.format = this.format;\n    texture.encoding = this.encoding;\n    texture.minFilter = LinearFilter8;\n    texture.magFilter = LinearFilter8;\n    texture.wrapS = this.wrapS;\n    texture.wrapT = this.wrapT;\n    texture.generateMipmaps = false;\n    return texture;\n  }\n  static from(texture) {\n    const image = texture.image;\n    const { width, height } = image;\n    const size = Math.min(width, height);\n    let data;\n    if (image instanceof Image) {\n      const rawImageData = RawImageData.from(image);\n      data = rawImageData.data;\n      const rearrangedData = new Uint8Array(size ** 3 * 3);\n      if (width > height) {\n        for (let z = 0; z < size; ++z) {\n          for (let y = 0; y < size; ++y) {\n            for (let x = 0; x < size; ++x) {\n              const i4 = (x + z * size + y * size * size) * 4;\n              const i3 = (x + y * size + z * size * size) * 3;\n              rearrangedData[i3 + 0] = data[i4 + 0];\n              rearrangedData[i3 + 1] = data[i4 + 1];\n              rearrangedData[i3 + 2] = data[i4 + 2];\n            }\n          }\n        }\n      } else {\n        for (let i = 0, l = size ** 3; i < l; ++i) {\n          const i4 = i * 4;\n          const i3 = i * 3;\n          rearrangedData[i3 + 0] = data[i4 + 0];\n          rearrangedData[i3 + 1] = data[i4 + 1];\n          rearrangedData[i3 + 2] = data[i4 + 2];\n        }\n      }\n      data = rearrangedData;\n    } else {\n      data = image.data.slice();\n    }\n    const lut = new LookupTexture3D(data, size);\n    lut.type = texture.type;\n    lut.encoding = texture.encoding;\n    lut.name = texture.name;\n    return lut;\n  }\n  static createNeutral(size) {\n    const data = new Float32Array(size ** 3 * 3);\n    const s = 1 / (size - 1);\n    for (let r = 0; r < size; ++r) {\n      for (let g = 0; g < size; ++g) {\n        for (let b = 0; b < size; ++b) {\n          const i3 = (r + g * size + b * size * size) * 3;\n          data[i3 + 0] = r * s;\n          data[i3 + 1] = g * s;\n          data[i3 + 2] = b * s;\n        }\n      }\n    }\n    const lut = new LookupTexture3D(data, size);\n    lut.name = \"neutral\";\n    return lut;\n  }\n};\n\n// src/effects/glsl/lut/shader.frag\nvar shader_default61 = \"uniform vec3 scale;uniform vec3 offset;\\n#ifdef CUSTOM_INPUT_DOMAIN\\nuniform vec3 domainMin;uniform vec3 domainMax;\\n#endif\\n#ifdef LUT_3D\\n#ifdef LUT_PRECISION_HIGH\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler3D lut;\\n#else\\nuniform mediump sampler3D lut;\\n#endif\\n#else\\nuniform lowp sampler3D lut;\\n#endif\\nvec4 applyLUT(const in vec3 rgb){\\n#ifdef TETRAHEDRAL_INTERPOLATION\\nvec3 p=floor(rgb);vec3 f=rgb-p;vec3 v1=(p+0.5)*LUT_TEXEL_WIDTH;vec3 v4=(p+1.5)*LUT_TEXEL_WIDTH;vec3 v2,v3;vec3 frac;if(f.r>=f.g){if(f.g>f.b){frac=f.rgb;v2=vec3(v4.x,v1.y,v1.z);v3=vec3(v4.x,v4.y,v1.z);}else if(f.r>=f.b){frac=f.rbg;v2=vec3(v4.x,v1.y,v1.z);v3=vec3(v4.x,v1.y,v4.z);}else{frac=f.brg;v2=vec3(v1.x,v1.y,v4.z);v3=vec3(v4.x,v1.y,v4.z);}}else{if(f.b>f.g){frac=f.bgr;v2=vec3(v1.x,v1.y,v4.z);v3=vec3(v1.x,v4.y,v4.z);}else if(f.r>=f.b){frac=f.grb;v2=vec3(v1.x,v4.y,v1.z);v3=vec3(v4.x,v4.y,v1.z);}else{frac=f.gbr;v2=vec3(v1.x,v4.y,v1.z);v3=vec3(v1.x,v4.y,v4.z);}}vec4 n1=texture(lut,v1);vec4 n2=texture(lut,v2);vec4 n3=texture(lut,v3);vec4 n4=texture(lut,v4);vec4 weights=vec4(1.0-frac.x,frac.x-frac.y,frac.y-frac.z,frac.z);vec4 result=weights*mat4(vec4(n1.r,n2.r,n3.r,n4.r),vec4(n1.g,n2.g,n3.g,n4.g),vec4(n1.b,n2.b,n3.b,n4.b),vec4(1.0));return vec4(result.rgb,1.0);\\n#else\\nreturn texture(lut,rgb);\\n#endif\\n}\\n#else\\n#ifdef LUT_PRECISION_HIGH\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D lut;\\n#else\\nuniform mediump sampler2D lut;\\n#endif\\n#else\\nuniform lowp sampler2D lut;\\n#endif\\nvec4 applyLUT(const in vec3 rgb){float slice=rgb.b*LUT_SIZE;float slice0=floor(slice);float interp=slice-slice0;float centeredInterp=interp-0.5;float slice1=slice0+sign(centeredInterp);\\n#ifdef LUT_STRIP_HORIZONTAL\\nfloat xOffset=clamp(rgb.r*LUT_TEXEL_HEIGHT,LUT_TEXEL_WIDTH*0.5,LUT_TEXEL_HEIGHT-LUT_TEXEL_WIDTH*0.5);vec2 uv0=vec2(slice0*LUT_TEXEL_HEIGHT+xOffset,rgb.g);vec2 uv1=vec2(slice1*LUT_TEXEL_HEIGHT+xOffset,rgb.g);\\n#else\\nfloat yOffset=clamp(rgb.g*LUT_TEXEL_WIDTH,LUT_TEXEL_HEIGHT*0.5,LUT_TEXEL_WIDTH-LUT_TEXEL_HEIGHT*0.5);vec2 uv0=vec2(rgb.r,slice0*LUT_TEXEL_WIDTH+yOffset);vec2 uv1=vec2(rgb.r,slice1*LUT_TEXEL_WIDTH+yOffset);\\n#endif\\nvec4 sample0=texture2D(lut,uv0);vec4 sample1=texture2D(lut,uv1);return mix(sample0,sample1,abs(centeredInterp));}\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 c=linearToInputTexel(inputColor).rgb;\\n#ifdef CUSTOM_INPUT_DOMAIN\\nif(c.r>=domainMin.r&&c.g>=domainMin.g&&c.b>=domainMin.b&&c.r<=domainMax.r&&c.g<=domainMax.g&&c.b<=domainMax.b){c=texelToLinear(applyLUT(scale*c+offset)).rgb;}else{c=inputColor.rgb;}\\n#else\\n#if !defined(LUT_3D) || defined(TETRAHEDRAL_INTERPOLATION)\\nc=clamp(c,0.0,1.0);\\n#endif\\nc=texelToLinear(applyLUT(scale*c+offset)).rgb;\\n#endif\\noutputColor=vec4(c,inputColor.a);}\";\n\n// src/effects/LUTEffect.js\nvar LUTEffect = class extends Effect {\n  constructor(lut, {\n    blendFunction = BlendFunction.NORMAL,\n    tetrahedralInterpolation = false\n  } = {}) {\n    super(\"LUTEffect\", shader_default61, {\n      blendFunction,\n      uniforms: new Map([\n        [\"lut\", new Uniform32(null)],\n        [\"scale\", new Uniform32(new Vector34())],\n        [\"offset\", new Uniform32(new Vector34())],\n        [\"domainMin\", new Uniform32(null)],\n        [\"domainMax\", new Uniform32(null)]\n      ])\n    });\n    this.tetrahedralInterpolation = tetrahedralInterpolation;\n    this.inputEncoding = sRGBEncoding2;\n    this.outputEncoding = this.inputEncoding;\n    this.setInputEncoding(sRGBEncoding2);\n    this.setLUT(lut);\n  }\n  getOutputEncoding() {\n    return this.outputEncoding;\n  }\n  getInputEncoding() {\n    return this.inputEncoding;\n  }\n  setInputEncoding(value) {\n    const defines = this.defines;\n    const lut = this.getLUT();\n    switch (value) {\n      case sRGBEncoding2:\n        defines.set(\"linearToInputTexel(texel)\", \"LinearTosRGB(texel)\");\n        break;\n      case LinearEncoding2:\n        defines.set(\"linearToInputTexel(texel)\", \"texel\");\n        break;\n      default:\n        console.error(\"Unsupported input encoding:\", value);\n        break;\n    }\n    if (lut !== null) {\n      this.outputEncoding = lut.encoding === LinearEncoding2 ? value : lut.encoding;\n      switch (this.outputEncoding) {\n        case sRGBEncoding2:\n          defines.set(\"texelToLinear(texel)\", \"sRGBToLinear(texel)\");\n          break;\n        case LinearEncoding2:\n          defines.set(\"texelToLinear(texel)\", \"texel\");\n          break;\n        default:\n          console.error(\"Unsupported LUT encoding:\", lut.encoding);\n          break;\n      }\n    }\n    if (this.inputEncoding !== value) {\n      this.inputEncoding = value;\n      this.setChanged();\n    }\n  }\n  getLUT() {\n    return this.uniforms.get(\"lut\").value;\n  }\n  setLUT(lut) {\n    const defines = this.defines;\n    const uniforms = this.uniforms;\n    if (this.getLUT() !== lut) {\n      const image = lut.image;\n      defines.clear();\n      defines.set(\"LUT_SIZE\", Math.min(image.width, image.height).toFixed(16));\n      defines.set(\"LUT_TEXEL_WIDTH\", (1 / image.width).toFixed(16));\n      defines.set(\"LUT_TEXEL_HEIGHT\", (1 / image.height).toFixed(16));\n      uniforms.get(\"lut\").value = lut;\n      uniforms.get(\"domainMin\").value = null;\n      uniforms.get(\"domainMax\").value = null;\n      if (lut.type === FloatType5 || lut.type === HalfFloatType2) {\n        defines.set(\"LUT_PRECISION_HIGH\", \"1\");\n      }\n      if (image.width > image.height) {\n        defines.set(\"LUT_STRIP_HORIZONTAL\", \"1\");\n      } else if (lut instanceof DataTexture3D2) {\n        defines.set(\"LUT_3D\", \"1\");\n      }\n      if (lut instanceof LookupTexture3D) {\n        const min = lut.domainMin;\n        const max = lut.domainMax;\n        if (min.x !== 0 || min.y !== 0 || min.z !== 0 || max.x !== 1 || max.y !== 1 || max.z !== 1) {\n          defines.set(\"CUSTOM_INPUT_DOMAIN\", \"1\");\n          uniforms.get(\"domainMin\").value = min.clone();\n          uniforms.get(\"domainMax\").value = max.clone();\n        }\n      }\n      this.configureTetrahedralInterpolation();\n      this.updateScaleOffset();\n      this.setInputEncoding(this.inputEncoding);\n      this.setChanged();\n    }\n  }\n  updateScaleOffset() {\n    const lut = this.getLUT();\n    const size = Math.min(lut.image.width, lut.image.height);\n    const scale = this.uniforms.get(\"scale\").value;\n    const offset = this.uniforms.get(\"offset\").value;\n    if (this.defines.has(\"TETRAHEDRAL_INTERPOLATION\")) {\n      if (this.defines.has(\"CUSTOM_INPUT_DOMAIN\")) {\n        const domainScale = lut.domainMax.clone().sub(lut.domainMin);\n        scale.setScalar(size - 1).divide(domainScale);\n        offset.copy(lut.domainMin).negate().multiply(scale);\n      } else {\n        scale.setScalar(size - 1);\n        offset.setScalar(0);\n      }\n    } else {\n      if (this.defines.has(\"CUSTOM_INPUT_DOMAIN\")) {\n        const domainScale = lut.domainMax.clone().sub(lut.domainMin).multiplyScalar(size);\n        scale.setScalar(size - 1).divide(domainScale);\n        offset.copy(lut.domainMin).negate().multiply(scale).addScalar(1 / (2 * size));\n      } else {\n        scale.setScalar((size - 1) / size);\n        offset.setScalar(1 / (2 * size));\n      }\n    }\n  }\n  configureTetrahedralInterpolation() {\n    const lut = this.getLUT();\n    lut.minFilter = LinearFilter9;\n    lut.magFilter = LinearFilter9;\n    this.defines.delete(\"TETRAHEDRAL_INTERPOLATION\");\n    if (this.tetrahedralInterpolation && lut !== null) {\n      if (lut instanceof DataTexture3D2) {\n        this.defines.set(\"TETRAHEDRAL_INTERPOLATION\", \"1\");\n        lut.minFilter = NearestFilter7;\n        lut.magFilter = NearestFilter7;\n      } else {\n        console.warn(\"Tetrahedral interpolation requires a 3D texture\");\n      }\n    }\n    lut.needsUpdate = true;\n  }\n  setTetrahedralInterpolationEnabled(enabled) {\n    this.tetrahedralInterpolation = enabled;\n    this.configureTetrahedralInterpolation();\n    this.updateScaleOffset();\n    this.setChanged();\n  }\n};\n\n// src/effects/glsl/noise/shader.frag\nvar shader_default62 = \"void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 noise=vec3(rand(uv*time));\\n#ifdef PREMULTIPLY\\noutputColor=vec4(min(inputColor.rgb*noise,vec3(1.0)),inputColor.a);\\n#else\\noutputColor=vec4(noise,inputColor.a);\\n#endif\\n}\";\n\n// src/effects/NoiseEffect.js\nvar NoiseEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.SCREEN,\n    premultiply = false\n  } = {}) {\n    super(\"NoiseEffect\", shader_default62, { blendFunction });\n    this.premultiply = premultiply;\n  }\n  get premultiply() {\n    return this.defines.has(\"PREMULTIPLY\");\n  }\n  set premultiply(value) {\n    if (this.premultiply !== value) {\n      if (value) {\n        this.defines.set(\"PREMULTIPLY\", \"1\");\n      } else {\n        this.defines.delete(\"PREMULTIPLY\");\n      }\n      this.setChanged();\n    }\n  }\n};\n\n// src/effects/OutlineEffect.js\nimport {\n  Color as Color6,\n  LinearFilter as LinearFilter10,\n  RepeatWrapping as RepeatWrapping2,\n  RGBFormat as RGBFormat11,\n  Uniform as Uniform33,\n  UnsignedByteType as UnsignedByteType14,\n  WebGLRenderTarget as WebGLRenderTarget13\n} from \"three\";\n\n// src/effects/glsl/outline/shader.frag\nvar shader_default63 = \"uniform lowp sampler2D edgeTexture;uniform lowp sampler2D maskTexture;uniform vec3 visibleEdgeColor;uniform vec3 hiddenEdgeColor;uniform float pulse;uniform float edgeStrength;\\n#ifdef USE_PATTERN\\nuniform lowp sampler2D patternTexture;varying vec2 vUvPattern;\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 edge=texture2D(edgeTexture,uv).rg;vec2 mask=texture2D(maskTexture,uv).rg;\\n#ifndef X_RAY\\nedge.y=0.0;\\n#endif\\nedge*=(edgeStrength*mask.x*pulse);vec3 color=edge.x*visibleEdgeColor+edge.y*hiddenEdgeColor;float visibilityFactor=0.0;\\n#ifdef USE_PATTERN\\nvec4 patternColor=texture2D(patternTexture,vUvPattern);\\n#ifdef X_RAY\\nfloat hiddenFactor=0.5;\\n#else\\nfloat hiddenFactor=0.0;\\n#endif\\nvisibilityFactor=(1.0-mask.y>0.0)? 1.0 : hiddenFactor;visibilityFactor*=(1.0-mask.x)*patternColor.a;color+=visibilityFactor*patternColor.rgb;\\n#endif\\nfloat alpha=max(max(edge.x,edge.y),visibilityFactor);\\n#ifdef ALPHA\\noutputColor=vec4(color,alpha);\\n#else\\noutputColor=vec4(color,max(alpha,inputColor.a));\\n#endif\\n}\";\n\n// src/effects/glsl/outline/shader.vert\nvar shader_default64 = \"uniform float patternScale;varying vec2 vUvPattern;void mainSupport(const in vec2 uv){vUvPattern=uv*vec2(aspect,1.0)*patternScale;}\";\n\n// src/effects/OutlineEffect.js\nvar OutlineEffect = class extends Effect {\n  constructor(scene, camera, {\n    blendFunction = BlendFunction.SCREEN,\n    patternTexture = null,\n    edgeStrength = 1,\n    pulseSpeed = 0,\n    visibleEdgeColor = 16777215,\n    hiddenEdgeColor = 2230538,\n    resolutionScale = 0.5,\n    width = Resizer.AUTO_SIZE,\n    height = Resizer.AUTO_SIZE,\n    kernelSize = KernelSize.VERY_SMALL,\n    blur = false,\n    xRay = true\n  } = {}) {\n    super(\"OutlineEffect\", shader_default63, {\n      uniforms: new Map([\n        [\"maskTexture\", new Uniform33(null)],\n        [\"edgeTexture\", new Uniform33(null)],\n        [\"edgeStrength\", new Uniform33(edgeStrength)],\n        [\"visibleEdgeColor\", new Uniform33(new Color6(visibleEdgeColor))],\n        [\"hiddenEdgeColor\", new Uniform33(new Color6(hiddenEdgeColor))],\n        [\"pulse\", new Uniform33(1)],\n        [\"patternScale\", new Uniform33(1)],\n        [\"patternTexture\", new Uniform33(null)]\n      ])\n    });\n    this.blendMode.addEventListener(\"change\", (event) => {\n      if (this.blendMode.getBlendFunction() === BlendFunction.ALPHA) {\n        this.defines.set(\"ALPHA\", \"1\");\n      } else {\n        this.defines.delete(\"ALPHA\");\n      }\n      this.setChanged();\n    });\n    this.blendMode.setBlendFunction(blendFunction);\n    this.setPatternTexture(patternTexture);\n    this.xRay = xRay;\n    this.scene = scene;\n    this.camera = camera;\n    this.renderTargetMask = new WebGLRenderTarget13(1, 1, {\n      minFilter: LinearFilter10,\n      magFilter: LinearFilter10,\n      stencilBuffer: false,\n      format: RGBFormat11\n    });\n    this.renderTargetMask.texture.name = \"Outline.Mask\";\n    this.uniforms.get(\"maskTexture\").value = this.renderTargetMask.texture;\n    this.renderTargetOutline = this.renderTargetMask.clone();\n    this.renderTargetOutline.texture.name = \"Outline.Edges\";\n    this.renderTargetOutline.depthBuffer = false;\n    this.renderTargetBlurredOutline = this.renderTargetOutline.clone();\n    this.renderTargetBlurredOutline.texture.name = \"Outline.BlurredEdges\";\n    this.clearPass = new ClearPass();\n    this.clearPass.overrideClearColor = new Color6(0);\n    this.clearPass.overrideClearAlpha = 1;\n    this.depthPass = new DepthPass(scene, camera);\n    this.maskPass = new RenderPass(scene, camera, new DepthComparisonMaterial(this.depthPass.texture, camera));\n    const clearPass = this.maskPass.getClearPass();\n    clearPass.overrideClearColor = new Color6(16777215);\n    clearPass.overrideClearAlpha = 1;\n    this.blurPass = new BlurPass({ resolutionScale, width, height, kernelSize });\n    this.blurPass.resolution.resizable = this;\n    this.blur = blur;\n    this.outlinePass = new ShaderPass(new OutlineMaterial());\n    const outlineMaterial = this.outlinePass.getFullscreenMaterial();\n    outlineMaterial.uniforms.inputBuffer.value = this.renderTargetMask.texture;\n    this.time = 0;\n    this.selection = new Selection();\n    this.selection.setLayer(10);\n    this.pulseSpeed = pulseSpeed;\n  }\n  get resolution() {\n    return this.blurPass.resolution;\n  }\n  get width() {\n    return this.resolution.width;\n  }\n  set width(value) {\n    this.resolution.width = value;\n  }\n  get height() {\n    return this.resolution.height;\n  }\n  set height(value) {\n    this.resolution.height = value;\n  }\n  get selectionLayer() {\n    return this.selection.layer;\n  }\n  set selectionLayer(value) {\n    this.selection.layer = value;\n  }\n  get dithering() {\n    return this.blurPass.dithering;\n  }\n  set dithering(value) {\n    this.blurPass.dithering = value;\n  }\n  get kernelSize() {\n    return this.blurPass.kernelSize;\n  }\n  set kernelSize(value) {\n    this.blurPass.kernelSize = value;\n  }\n  get blur() {\n    return this.blurPass.isEnabled();\n  }\n  set blur(value) {\n    this.blurPass.setEnabled(value);\n    this.uniforms.get(\"edgeTexture\").value = value ? this.renderTargetBlurredOutline.texture : this.renderTargetOutline.texture;\n  }\n  get xRay() {\n    return this.defines.has(\"X_RAY\");\n  }\n  set xRay(value) {\n    if (this.xRay !== value) {\n      if (value) {\n        this.defines.set(\"X_RAY\", \"1\");\n      } else {\n        this.defines.delete(\"X_RAY\");\n      }\n      this.setChanged();\n    }\n  }\n  setPatternTexture(texture) {\n    if (texture !== null) {\n      texture.wrapS = texture.wrapT = RepeatWrapping2;\n      this.defines.set(\"USE_PATTERN\", \"1\");\n      this.uniforms.get(\"patternTexture\").value = texture;\n      this.setVertexShader(shader_default64);\n    } else {\n      this.defines.delete(\"USE_PATTERN\");\n      this.uniforms.get(\"patternTexture\").value = null;\n      this.setVertexShader(null);\n    }\n    this.setChanged();\n  }\n  getResolutionScale() {\n    return this.resolution.scale;\n  }\n  setResolutionScale(scale) {\n    this.resolution.scale = scale;\n  }\n  setSelection(objects) {\n    this.selection.set(objects);\n    return this;\n  }\n  clearSelection() {\n    this.selection.clear();\n    return this;\n  }\n  selectObject(object) {\n    this.selection.add(object);\n    return this;\n  }\n  deselectObject(object) {\n    this.selection.delete(object);\n    return this;\n  }\n  update(renderer, inputBuffer, deltaTime) {\n    const scene = this.scene;\n    const camera = this.camera;\n    const selection = this.selection;\n    const pulse = this.uniforms.get(\"pulse\");\n    const background = scene.background;\n    const mask = camera.layers.mask;\n    if (selection.size > 0) {\n      scene.background = null;\n      pulse.value = 1;\n      if (this.pulseSpeed > 0) {\n        pulse.value = Math.cos(this.time * this.pulseSpeed * 10) * 0.375 + 0.625;\n      }\n      this.time += deltaTime;\n      selection.setVisible(false);\n      this.depthPass.render(renderer);\n      selection.setVisible(true);\n      camera.layers.set(selection.getLayer());\n      this.maskPass.render(renderer, this.renderTargetMask);\n      camera.layers.mask = mask;\n      scene.background = background;\n      this.outlinePass.render(renderer, null, this.renderTargetOutline);\n      if (this.blur) {\n        this.blurPass.render(renderer, this.renderTargetOutline, this.renderTargetBlurredOutline);\n      }\n    } else if (this.time > 0) {\n      this.clearPass.render(renderer, this.renderTargetMask);\n      this.time = 0;\n    }\n  }\n  setSize(width, height) {\n    this.blurPass.setSize(width, height);\n    this.renderTargetMask.setSize(width, height);\n    const w = this.resolution.width;\n    const h = this.resolution.height;\n    this.depthPass.setSize(w, h);\n    this.renderTargetOutline.setSize(w, h);\n    this.renderTargetBlurredOutline.setSize(w, h);\n    this.outlinePass.getFullscreenMaterial().setTexelSize(1 / w, 1 / h);\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    this.blurPass.initialize(renderer, alpha, UnsignedByteType14);\n    if (frameBufferType !== void 0) {\n      this.depthPass.initialize(renderer, alpha, frameBufferType);\n      this.maskPass.initialize(renderer, alpha, frameBufferType);\n      this.outlinePass.initialize(renderer, alpha, frameBufferType);\n    }\n  }\n};\n\n// src/effects/PixelationEffect.js\nimport { Uniform as Uniform34, Vector2 as Vector219 } from \"three\";\n\n// src/effects/glsl/pixelation/shader.frag\nvar shader_default65 = \"uniform bool active;uniform vec2 d;void mainUv(inout vec2 uv){if(active){uv=vec2(d.x*(floor(uv.x/d.x)+0.5),d.y*(floor(uv.y/d.y)+0.5));}}\";\n\n// src/effects/PixelationEffect.js\nvar PixelationEffect = class extends Effect {\n  constructor(granularity = 30) {\n    super(\"PixelationEffect\", shader_default65, {\n      uniforms: new Map([\n        [\"active\", new Uniform34(false)],\n        [\"d\", new Uniform34(new Vector219())]\n      ])\n    });\n    this.resolution = new Vector219();\n    this.granularity = granularity;\n  }\n  getGranularity() {\n    return this.granularity;\n  }\n  setGranularity(granularity) {\n    granularity = Math.floor(granularity);\n    if (granularity % 2 > 0) {\n      granularity += 1;\n    }\n    const uniforms = this.uniforms;\n    uniforms.get(\"active\").value = granularity > 0;\n    uniforms.get(\"d\").value.set(granularity, granularity).divide(this.resolution);\n    this.granularity = granularity;\n  }\n  setSize(width, height) {\n    this.resolution.set(width, height);\n    this.setGranularity(this.granularity);\n  }\n};\n\n// src/effects/RealisticBokehEffect.js\nimport { Uniform as Uniform35, Vector4 as Vector42 } from \"three\";\n\n// src/effects/glsl/realistic-bokeh/shader.frag\nvar shader_default66 = \"uniform float focus;uniform float focalLength;uniform float fStop;uniform float maxBlur;uniform float luminanceThreshold;uniform float luminanceGain;uniform float bias;uniform float fringe;\\n#ifdef MANUAL_DOF\\nuniform vec4 dof;\\n#endif\\n#ifdef PENTAGON\\nfloat pentagon(const in vec2 coords){const vec4 HS0=vec4(1.0,0.0,0.0,1.0);const vec4 HS1=vec4(0.309016994,0.951056516,0.0,1.0);const vec4 HS2=vec4(-0.809016994,0.587785252,0.0,1.0);const vec4 HS3=vec4(-0.809016994,-0.587785252,0.0,1.0);const vec4 HS4=vec4(0.309016994,-0.951056516,0.0,1.0);const vec4 HS5=vec4(0.0,0.0,1.0,1.0);const vec4 ONE=vec4(1.0);const float P_FEATHER=0.4;const float N_FEATHER=-P_FEATHER;float inOrOut=-4.0;vec4 P=vec4(coords,vec2(RINGS_FLOAT-1.3));vec4 dist=vec4(dot(P,HS0),dot(P,HS1),dot(P,HS2),dot(P,HS3));dist=smoothstep(N_FEATHER,P_FEATHER,dist);inOrOut+=dot(dist,ONE);dist.x=dot(P,HS4);dist.y=HS5.w-abs(P.z);dist=smoothstep(N_FEATHER,P_FEATHER,dist);inOrOut+=dist.x;return clamp(inOrOut,0.0,1.0);}\\n#endif\\nvec3 processTexel(const in vec2 coords,const in float blur){vec2 scale=texelSize*fringe*blur;vec3 c=vec3(texture2D(inputBuffer,coords+vec2(0.0,1.0)*scale).r,texture2D(inputBuffer,coords+vec2(-0.866,-0.5)*scale).g,texture2D(inputBuffer,coords+vec2(0.866,-0.5)*scale).b);float luminance=linearToRelativeLuminance(c);float threshold=max((luminance-luminanceThreshold)*luminanceGain,0.0);return c+mix(vec3(0.0),c,threshold*blur);}float gather(const in float i,const in float j,const in float ringSamples,const in vec2 uv,const in vec2 blurFactor,const in float blur,inout vec3 color){float step=PI2/ringSamples;vec2 wh=vec2(cos(j*step)*i,sin(j*step)*i);\\n#ifdef PENTAGON\\nfloat p=pentagon(wh);\\n#else\\nfloat p=1.0;\\n#endif\\ncolor+=processTexel(wh*blurFactor+uv,blur)*mix(1.0,i/RINGS_FLOAT,bias)*p;return mix(1.0,i/RINGS_FLOAT,bias)*p;}void mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){\\n#ifdef PERSPECTIVE_CAMERA\\nfloat viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);float linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);\\n#else\\nfloat linearDepth=depth;\\n#endif\\n#ifdef MANUAL_DOF\\nfloat focalPlane=linearDepth-focus;float farDoF=(focalPlane-dof.z)/dof.w;float nearDoF=(-focalPlane-dof.x)/dof.y;float blur=(focalPlane>0.0)? farDoF : nearDoF;\\n#else\\nconst float CIRCLE_OF_CONFUSION=0.03;float focalPlaneMM=focus*1000.0;float depthMM=linearDepth*1000.0;float focalPlane=(depthMM*focalLength)/(depthMM-focalLength);float farDoF=(focalPlaneMM*focalLength)/(focalPlaneMM-focalLength);float nearDoF=(focalPlaneMM-focalLength)/(focalPlaneMM*fStop*CIRCLE_OF_CONFUSION);float blur=abs(focalPlane-farDoF)*nearDoF;\\n#endif\\nconst int MAX_RING_SAMPLES=RINGS_INT*SAMPLES_INT;blur=clamp(blur,0.0,1.0);vec3 color=inputColor.rgb;if(blur>=0.05){vec2 blurFactor=blur*maxBlur*texelSize;float s=1.0;int ringSamples;for(int i=1;i<=RINGS_INT;i++){ringSamples=i*SAMPLES_INT;for(int j=0;j<MAX_RING_SAMPLES;j++){if(j>=ringSamples){break;}s+=gather(float(i),float(j),float(ringSamples),uv,blurFactor,blur,color);}}color/=s;}\\n#ifdef SHOW_FOCUS\\nfloat edge=0.002*linearDepth;float m=clamp(smoothstep(0.0,edge,blur),0.0,1.0);float e=clamp(smoothstep(1.0-edge,1.0,blur),0.0,1.0);color=mix(color,vec3(1.0,0.5,0.0),(1.0-m)*0.6);color=mix(color,vec3(0.0,0.5,1.0),((1.0-e)-(1.0-m))*0.2);\\n#endif\\noutputColor=vec4(color,inputColor.a);}\";\n\n// src/effects/RealisticBokehEffect.js\nvar RealisticBokehEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.NORMAL,\n    focus = 1,\n    focalLength = 24,\n    fStop = 0.9,\n    luminanceThreshold = 0.5,\n    luminanceGain = 2,\n    bias = 0.5,\n    fringe = 0.7,\n    maxBlur = 1,\n    rings = 3,\n    samples = 2,\n    showFocus = false,\n    manualDoF = false,\n    pentagon = false\n  } = {}) {\n    super(\"RealisticBokehEffect\", shader_default66, {\n      blendFunction,\n      attributes: EffectAttribute.CONVOLUTION | EffectAttribute.DEPTH,\n      uniforms: new Map([\n        [\"focus\", new Uniform35(focus)],\n        [\"focalLength\", new Uniform35(focalLength)],\n        [\"fStop\", new Uniform35(fStop)],\n        [\"luminanceThreshold\", new Uniform35(luminanceThreshold)],\n        [\"luminanceGain\", new Uniform35(luminanceGain)],\n        [\"bias\", new Uniform35(bias)],\n        [\"fringe\", new Uniform35(fringe)],\n        [\"maxBlur\", new Uniform35(maxBlur)],\n        [\"dof\", new Uniform35(null)]\n      ])\n    });\n    this.rings = rings;\n    this.samples = samples;\n    this.showFocus = showFocus;\n    this.manualDoF = manualDoF;\n    this.pentagon = pentagon;\n  }\n  get rings() {\n    return Number.parseInt(this.defines.get(\"RINGS_INT\"));\n  }\n  set rings(value) {\n    const r = Math.floor(value);\n    this.defines.set(\"RINGS_INT\", r.toFixed(0));\n    this.defines.set(\"RINGS_FLOAT\", r.toFixed(1));\n    this.setChanged();\n  }\n  get samples() {\n    return Number.parseInt(this.defines.get(\"SAMPLES_INT\"));\n  }\n  set samples(value) {\n    const s = Math.floor(value);\n    this.defines.set(\"SAMPLES_INT\", s.toFixed(0));\n    this.defines.set(\"SAMPLES_FLOAT\", s.toFixed(1));\n    this.setChanged();\n  }\n  get showFocus() {\n    return this.defines.has(\"SHOW_FOCUS\");\n  }\n  set showFocus(value) {\n    if (this.showFocus !== value) {\n      if (value) {\n        this.defines.set(\"SHOW_FOCUS\", \"1\");\n      } else {\n        this.defines.delete(\"SHOW_FOCUS\");\n      }\n      this.setChanged();\n    }\n  }\n  get manualDoF() {\n    return this.defines.has(\"MANUAL_DOF\");\n  }\n  set manualDoF(value) {\n    if (this.manualDoF !== value) {\n      if (value) {\n        this.defines.set(\"MANUAL_DOF\", \"1\");\n        this.uniforms.get(\"dof\").value = new Vector42(0.2, 1, 0.2, 2);\n      } else {\n        this.defines.delete(\"MANUAL_DOF\");\n        this.uniforms.get(\"dof\").value = null;\n      }\n      this.setChanged();\n    }\n  }\n  get pentagon() {\n    return this.defines.has(\"PENTAGON\");\n  }\n  set pentagon(value) {\n    if (this.pentagon !== value) {\n      if (value) {\n        this.defines.set(\"PENTAGON\", \"1\");\n      } else {\n        this.defines.delete(\"PENTAGON\");\n      }\n      this.setChanged();\n    }\n  }\n};\n\n// src/effects/ScanlineEffect.js\nimport { Uniform as Uniform36, Vector2 as Vector220 } from \"three\";\n\n// src/effects/glsl/scanlines/shader.frag\nvar shader_default67 = \"uniform float count;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec2 sl=vec2(sin(uv.y*count),cos(uv.y*count));vec3 scanlines=vec3(sl.x,sl.y,sl.x);outputColor=vec4(scanlines,inputColor.a);}\";\n\n// src/effects/ScanlineEffect.js\nvar ScanlineEffect = class extends Effect {\n  constructor({ blendFunction = BlendFunction.OVERLAY, density = 1.25 } = {}) {\n    super(\"ScanlineEffect\", shader_default67, {\n      blendFunction,\n      uniforms: new Map([\n        [\"count\", new Uniform36(0)]\n      ])\n    });\n    this.resolution = new Vector220();\n    this.density = density;\n  }\n  getDensity() {\n    return this.density;\n  }\n  setDensity(density) {\n    this.density = density;\n    this.setSize(this.resolution.x, this.resolution.y);\n  }\n  setSize(width, height) {\n    this.resolution.set(width, height);\n    this.uniforms.get(\"count\").value = Math.round(height * this.density);\n  }\n};\n\n// src/effects/ShockWaveEffect.js\nimport { Uniform as Uniform37, Vector2 as Vector221, Vector3 as Vector35 } from \"three\";\n\n// src/effects/glsl/shock-wave/shader.frag\nvar shader_default68 = \"uniform bool active;uniform vec2 center;uniform float waveSize;uniform float radius;uniform float maxRadius;uniform float amplitude;varying float vSize;void mainUv(inout vec2 uv){if(active){vec2 aspectCorrection=vec2(aspect,1.0);vec2 difference=uv*aspectCorrection-center*aspectCorrection;float distance=sqrt(dot(difference,difference))*vSize;if(distance>radius){if(distance<radius+waveSize){float angle=(distance-radius)*PI2/waveSize;float cosSin=(1.0-cos(angle))*0.5;float extent=maxRadius+waveSize;float decay=max(extent-distance*distance,0.0)/extent;uv-=((cosSin*amplitude*difference)/distance)*decay;}}}}\";\n\n// src/effects/glsl/shock-wave/shader.vert\nvar shader_default69 = \"uniform float size;uniform float cameraDistance;varying float vSize;void mainSupport(){vSize=(0.1*cameraDistance)/size;}\";\n\n// src/effects/ShockWaveEffect.js\nvar HALF_PI = Math.PI * 0.5;\nvar v2 = new Vector35();\nvar ab = new Vector35();\nvar ShockWaveEffect = class extends Effect {\n  constructor(camera, epicenter = new Vector35(), {\n    speed = 2,\n    maxRadius = 1,\n    waveSize = 0.2,\n    amplitude = 0.05\n  } = {}) {\n    super(\"ShockWaveEffect\", shader_default68, {\n      vertexShader: shader_default69,\n      uniforms: new Map([\n        [\"active\", new Uniform37(false)],\n        [\"center\", new Uniform37(new Vector221(0.5, 0.5))],\n        [\"cameraDistance\", new Uniform37(1)],\n        [\"size\", new Uniform37(1)],\n        [\"radius\", new Uniform37(-waveSize)],\n        [\"maxRadius\", new Uniform37(maxRadius)],\n        [\"waveSize\", new Uniform37(waveSize)],\n        [\"amplitude\", new Uniform37(amplitude)]\n      ])\n    });\n    this.camera = camera;\n    this.epicenter = epicenter;\n    this.screenPosition = this.uniforms.get(\"center\").value;\n    this.speed = speed;\n    this.time = 0;\n    this.active = false;\n  }\n  explode() {\n    this.time = 0;\n    this.active = true;\n    this.uniforms.get(\"active\").value = true;\n  }\n  update(renderer, inputBuffer, delta) {\n    const epicenter = this.epicenter;\n    const camera = this.camera;\n    const uniforms = this.uniforms;\n    const uniformActive = uniforms.get(\"active\");\n    if (this.active) {\n      const waveSize = uniforms.get(\"waveSize\").value;\n      camera.getWorldDirection(v2);\n      ab.copy(camera.position).sub(epicenter);\n      uniformActive.value = v2.angleTo(ab) > HALF_PI;\n      if (uniformActive.value) {\n        uniforms.get(\"cameraDistance\").value = camera.position.distanceTo(epicenter);\n        v2.copy(epicenter).project(camera);\n        this.screenPosition.set((v2.x + 1) * 0.5, (v2.y + 1) * 0.5);\n      }\n      this.time += delta * this.speed;\n      const radius = this.time - waveSize;\n      uniforms.get(\"radius\").value = radius;\n      if (radius >= (uniforms.get(\"maxRadius\").value + waveSize) * 2) {\n        this.active = false;\n        uniformActive.value = false;\n      }\n    }\n  }\n};\n\n// src/effects/SelectiveBloomEffect.js\nimport {\n  BasicDepthPacking as BasicDepthPacking6,\n  Color as Color7,\n  LinearFilter as LinearFilter11,\n  NotEqualDepth as NotEqualDepth2,\n  EqualDepth as EqualDepth2,\n  RGBADepthPacking as RGBADepthPacking4,\n  RGBFormat as RGBFormat12,\n  UnsignedByteType as UnsignedByteType15,\n  WebGLRenderTarget as WebGLRenderTarget14\n} from \"three\";\nvar SelectiveBloomEffect = class extends BloomEffect {\n  constructor(scene, camera, options) {\n    super(options);\n    this.setAttributes(this.getAttributes() | EffectAttribute.DEPTH);\n    this.camera = camera;\n    this.depthPass = new DepthPass(scene, camera);\n    this.clearPass = new ClearPass(true, false, false);\n    this.clearPass.overrideClearColor = new Color7(0);\n    this.depthMaskPass = new ShaderPass(new DepthMaskMaterial());\n    const depthMaskMaterial = this.depthMaskMaterial;\n    depthMaskMaterial.uniforms.depthBuffer1.value = this.depthPass.texture;\n    depthMaskMaterial.defines.DEPTH_PACKING_1 = RGBADepthPacking4.toFixed(0);\n    depthMaskMaterial.setDepthMode(EqualDepth2);\n    this.renderTargetMasked = new WebGLRenderTarget14(1, 1, {\n      minFilter: LinearFilter11,\n      magFilter: LinearFilter11,\n      stencilBuffer: false,\n      depthBuffer: false\n    });\n    this.renderTargetMasked.texture.name = \"Bloom.Masked\";\n    this.renderTargetMasked.texture.generateMipmaps = false;\n    this.selection = new Selection();\n    this.selection.setLayer(11);\n  }\n  get depthMaskMaterial() {\n    return this.depthMaskPass.getFullscreenMaterial();\n  }\n  get inverted() {\n    return this.depthMaskMaterial.getDepthMode() === NotEqualDepth2;\n  }\n  set inverted(value) {\n    this.depthMaskMaterial.setDepthMode(value ? NotEqualDepth2 : EqualDepth2);\n  }\n  get ignoreBackground() {\n    return !this.depthMaskMaterial.keepFar;\n  }\n  set ignoreBackground(value) {\n    this.depthMaskMaterial.keepFar = !value;\n  }\n  setDepthTexture(depthTexture, depthPacking = BasicDepthPacking6) {\n    const material = this.depthMaskPass.getFullscreenMaterial();\n    material.uniforms.depthBuffer0.value = depthTexture;\n    material.defines.DEPTH_PACKING_0 = depthPacking.toFixed(0);\n    material.needsUpdate = true;\n  }\n  update(renderer, inputBuffer, deltaTime) {\n    const camera = this.camera;\n    const selection = this.selection;\n    const renderTarget = this.renderTargetMasked;\n    const mask = camera.layers.mask;\n    camera.layers.set(selection.getLayer());\n    this.depthPass.render(renderer);\n    camera.layers.mask = mask;\n    this.clearPass.render(renderer, renderTarget);\n    this.depthMaskPass.render(renderer, inputBuffer, renderTarget);\n    super.update(renderer, renderTarget, deltaTime);\n  }\n  setSize(width, height) {\n    super.setSize(width, height);\n    this.clearPass.setSize(width, height);\n    this.depthPass.setSize(width, height);\n    this.depthMaskPass.setSize(width, height);\n    this.renderTargetMasked.setSize(width, height);\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    super.initialize(renderer, alpha, frameBufferType);\n    this.clearPass.initialize(renderer, alpha, frameBufferType);\n    this.depthPass.initialize(renderer, alpha, frameBufferType);\n    this.depthMaskPass.initialize(renderer, alpha, frameBufferType);\n    if (!alpha && frameBufferType === UnsignedByteType15) {\n      this.renderTargetMasked.texture.format = RGBFormat12;\n    }\n    if (frameBufferType !== void 0) {\n      this.renderTargetMasked.texture.type = frameBufferType;\n    }\n  }\n};\n\n// src/effects/SepiaEffect.js\nimport { Uniform as Uniform38 } from \"three\";\n\n// src/effects/glsl/sepia/shader.frag\nvar shader_default70 = \"uniform float intensity;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec3 color=vec3(dot(inputColor.rgb,vec3(1.0-0.607*intensity,0.769*intensity,0.189*intensity)),dot(inputColor.rgb,vec3(0.349*intensity,1.0-0.314*intensity,0.168*intensity)),dot(inputColor.rgb,vec3(0.272*intensity,0.534*intensity,1.0-0.869*intensity)));outputColor=vec4(color,inputColor.a);}\";\n\n// src/effects/SepiaEffect.js\nvar SepiaEffect = class extends Effect {\n  constructor({ blendFunction = BlendFunction.NORMAL, intensity = 1 } = {}) {\n    super(\"SepiaEffect\", shader_default70, {\n      blendFunction,\n      uniforms: new Map([\n        [\"intensity\", new Uniform38(intensity)]\n      ])\n    });\n  }\n};\n\n// src/effects/SMAAEffect.js\nimport {\n  BasicDepthPacking as BasicDepthPacking7,\n  Color as Color8,\n  LinearFilter as LinearFilter12,\n  NearestFilter as NearestFilter8,\n  RGBAFormat as RGBAFormat6,\n  RGBFormat as RGBFormat13,\n  Texture,\n  Uniform as Uniform39,\n  Vector2 as Vector222,\n  WebGLRenderTarget as WebGLRenderTarget15\n} from \"three\";\n\n// src/images/smaa/searchImageDataURL.js\nvar searchImageDataURL_default = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAYAAACm53kpAAAAeElEQVRYR+2XSwqAMAxEJ168ePEqwRSKhIIiuHjJqiU0gWE+1CQdApcVAMUAuARaMGCX1MIL/Ow13++9lW2s3mW9MWvsnWc/2fvGygwPAN4E8QzAA4CXAB6AHjG4JTHYI1ey3pcx6FHnEfhLDOIBKAmUBK6/ANUDTlROXAHd9EC1AAAAAElFTkSuQmCC\";\n\n// src/images/smaa/areaImageDataURL.js\nvar areaImageDataURL_default = \"data:image/png;base64,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\";\n\n// src/effects/glsl/smaa/shader.frag\nvar shader_default71 = \"uniform sampler2D weightMap;varying vec2 vOffset0;varying vec2 vOffset1;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 a;a.x=texture2D(weightMap,vOffset0).a;a.y=texture2D(weightMap,vOffset1).g;a.wz=texture2D(weightMap,uv).rb;vec4 color=inputColor;if(dot(a,vec4(1.0))>=1e-5){bool h=max(a.x,a.z)>max(a.y,a.w);vec4 blendingOffset=vec4(0.0,a.y,0.0,a.w);vec2 blendingWeight=a.yw;movec(bvec4(h),blendingOffset,vec4(a.x,0.0,a.z,0.0));movec(bvec2(h),blendingWeight,a.xz);blendingWeight/=dot(blendingWeight,vec2(1.0));vec4 blendingCoord=blendingOffset*vec4(texelSize,-texelSize)+uv.xyxy;color=blendingWeight.x*texture2D(inputBuffer,blendingCoord.xy);color+=blendingWeight.y*texture2D(inputBuffer,blendingCoord.zw);}outputColor=color;}\";\n\n// src/effects/glsl/smaa/shader.vert\nvar shader_default72 = \"varying vec2 vOffset0;varying vec2 vOffset1;void mainSupport(const in vec2 uv){vOffset0=uv+texelSize*vec2(1.0,0.0);vOffset1=uv+texelSize*vec2(0.0,1.0);}\";\n\n// src/effects/SMAAEffect.js\nvar SMAAEffect = class extends Effect {\n  constructor(searchImage, areaImage, preset = SMAAPreset.HIGH, edgeDetectionMode = EdgeDetectionMode.COLOR) {\n    super(\"SMAAEffect\", shader_default71, {\n      vertexShader: shader_default72,\n      blendFunction: BlendFunction.NORMAL,\n      attributes: EffectAttribute.CONVOLUTION | EffectAttribute.DEPTH,\n      uniforms: new Map([\n        [\"weightMap\", new Uniform39(null)]\n      ])\n    });\n    this.renderTargetEdges = new WebGLRenderTarget15(1, 1, {\n      minFilter: LinearFilter12,\n      stencilBuffer: false,\n      depthBuffer: false,\n      format: RGBFormat13\n    });\n    this.renderTargetEdges.texture.name = \"SMAA.Edges\";\n    this.renderTargetWeights = this.renderTargetEdges.clone();\n    this.renderTargetWeights.texture.name = \"SMAA.Weights\";\n    this.renderTargetWeights.texture.format = RGBAFormat6;\n    this.uniforms.get(\"weightMap\").value = this.renderTargetWeights.texture;\n    this.clearPass = new ClearPass(true, false, false);\n    this.clearPass.overrideClearColor = new Color8(0);\n    this.clearPass.overrideClearAlpha = 1;\n    this.edgeDetectionPass = new ShaderPass(new EdgeDetectionMaterial(new Vector222(), edgeDetectionMode));\n    this.weightsPass = new ShaderPass(new SMAAWeightsMaterial());\n    const searchTexture = new Texture(searchImage);\n    searchTexture.name = \"SMAA.Search\";\n    searchTexture.magFilter = NearestFilter8;\n    searchTexture.minFilter = NearestFilter8;\n    searchTexture.format = RGBAFormat6;\n    searchTexture.generateMipmaps = false;\n    searchTexture.needsUpdate = true;\n    searchTexture.flipY = true;\n    const areaTexture = new Texture(areaImage);\n    areaTexture.name = \"SMAA.Area\";\n    areaTexture.magFilter = LinearFilter12;\n    areaTexture.minFilter = LinearFilter12;\n    areaTexture.format = RGBAFormat6;\n    areaTexture.generateMipmaps = false;\n    areaTexture.needsUpdate = true;\n    areaTexture.flipY = false;\n    const weightsMaterial = this.weightsPass.getFullscreenMaterial();\n    weightsMaterial.uniforms.searchTexture.value = searchTexture;\n    weightsMaterial.uniforms.areaTexture.value = areaTexture;\n    this.applyPreset(preset);\n  }\n  get edgeDetectionMaterial() {\n    return this.edgeDetectionPass.getFullscreenMaterial();\n  }\n  get colorEdgesMaterial() {\n    return this.edgeDetectionMaterial;\n  }\n  get weightsMaterial() {\n    return this.weightsPass.getFullscreenMaterial();\n  }\n  setEdgeDetectionThreshold(threshold) {\n    this.edgeDetectionPass.getFullscreenMaterial().setEdgeDetectionThreshold(threshold);\n  }\n  setOrthogonalSearchSteps(steps) {\n    this.weightsPass.getFullscreenMaterial().setOrthogonalSearchSteps(steps);\n  }\n  applyPreset(preset) {\n    const edgeDetectionMaterial = this.edgeDetectionMaterial;\n    const weightsMaterial = this.weightsMaterial;\n    switch (preset) {\n      case SMAAPreset.LOW:\n        edgeDetectionMaterial.setEdgeDetectionThreshold(0.15);\n        weightsMaterial.setOrthogonalSearchSteps(4);\n        weightsMaterial.diagonalDetection = false;\n        weightsMaterial.cornerRounding = false;\n        break;\n      case SMAAPreset.MEDIUM:\n        edgeDetectionMaterial.setEdgeDetectionThreshold(0.1);\n        weightsMaterial.setOrthogonalSearchSteps(8);\n        weightsMaterial.diagonalDetection = false;\n        weightsMaterial.cornerRounding = false;\n        break;\n      case SMAAPreset.HIGH:\n        edgeDetectionMaterial.setEdgeDetectionThreshold(0.1);\n        weightsMaterial.setOrthogonalSearchSteps(16);\n        weightsMaterial.setDiagonalSearchSteps(8);\n        weightsMaterial.setCornerRounding(25);\n        weightsMaterial.diagonalDetection = true;\n        weightsMaterial.cornerRounding = true;\n        break;\n      case SMAAPreset.ULTRA:\n        edgeDetectionMaterial.setEdgeDetectionThreshold(0.05);\n        weightsMaterial.setOrthogonalSearchSteps(32);\n        weightsMaterial.setDiagonalSearchSteps(16);\n        weightsMaterial.setCornerRounding(25);\n        weightsMaterial.diagonalDetection = true;\n        weightsMaterial.cornerRounding = true;\n        break;\n    }\n  }\n  setDepthTexture(depthTexture, depthPacking = BasicDepthPacking7) {\n    const material = this.edgeDetectionMaterial;\n    material.uniforms.depthBuffer.value = depthTexture;\n    material.depthPacking = depthPacking;\n  }\n  update(renderer, inputBuffer, deltaTime) {\n    this.clearPass.render(renderer, this.renderTargetEdges);\n    this.edgeDetectionPass.render(renderer, inputBuffer, this.renderTargetEdges);\n    this.weightsPass.render(renderer, this.renderTargetEdges, this.renderTargetWeights);\n  }\n  setSize(width, height) {\n    const weightsMaterial = this.weightsPass.getFullscreenMaterial();\n    const edgeDetectionMaterial = this.edgeDetectionPass.getFullscreenMaterial();\n    this.renderTargetEdges.setSize(width, height);\n    this.renderTargetWeights.setSize(width, height);\n    weightsMaterial.uniforms.resolution.value.set(width, height);\n    weightsMaterial.uniforms.texelSize.value.set(1 / width, 1 / height);\n    edgeDetectionMaterial.uniforms.texelSize.value.copy(weightsMaterial.uniforms.texelSize.value);\n  }\n  dispose() {\n    const uniforms = this.weightsPass.getFullscreenMaterial().uniforms;\n    uniforms.searchTexture.value.dispose();\n    uniforms.areaTexture.value.dispose();\n    super.dispose();\n  }\n  static get searchImageDataURL() {\n    return searchImageDataURL_default;\n  }\n  static get areaImageDataURL() {\n    return areaImageDataURL_default;\n  }\n};\nvar SMAAPreset = {\n  LOW: 0,\n  MEDIUM: 1,\n  HIGH: 2,\n  ULTRA: 3\n};\n\n// src/effects/SSAOEffect.js\nimport {\n  BasicDepthPacking as BasicDepthPacking8,\n  Color as Color9,\n  LinearFilter as LinearFilter13,\n  RepeatWrapping as RepeatWrapping3,\n  RGBFormat as RGBFormat14,\n  Uniform as Uniform40,\n  WebGLRenderTarget as WebGLRenderTarget16\n} from \"three\";\n\n// src/effects/glsl/ssao/shader.frag\nvar shader_default73 = \"uniform lowp sampler2D aoBuffer;uniform float luminanceInfluence;\\n#ifdef DEPTH_AWARE_UPSAMPLING\\n#ifdef GL_FRAGMENT_PRECISION_HIGH\\nuniform highp sampler2D normalDepthBuffer;\\n#else\\nuniform mediump sampler2D normalDepthBuffer;\\n#endif\\n#endif\\n#ifdef COLORIZE\\nuniform vec3 color;\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,const in float depth,out vec4 outputColor){float aoLinear=texture2D(aoBuffer,uv).r;\\n#if defined(DEPTH_AWARE_UPSAMPLING) && __VERSION__ == 300\\nvec4 normalDepth[4];normalDepth[0]=textureOffset(normalDepthBuffer,uv,ivec2(0,0));normalDepth[1]=textureOffset(normalDepthBuffer,uv,ivec2(0,1));normalDepth[2]=textureOffset(normalDepthBuffer,uv,ivec2(1,0));normalDepth[3]=textureOffset(normalDepthBuffer,uv,ivec2(1,1));float dot01=dot(normalDepth[0].rgb,normalDepth[1].rgb);float dot02=dot(normalDepth[0].rgb,normalDepth[2].rgb);float dot03=dot(normalDepth[0].rgb,normalDepth[3].rgb);float minDot=min(dot01,min(dot02,dot03));float s=step(THRESHOLD,minDot);float smallestDistance=1.0;int index;for(int i=0;i<4;++i){float distance=abs(depth-normalDepth[i].a);if(distance<smallestDistance){smallestDistance=distance;index=i;}}ivec2 offsets[4];offsets[0]=ivec2(0,0);offsets[1]=ivec2(0,1);offsets[2]=ivec2(1,0);offsets[3]=ivec2(1,1);ivec2 coord=ivec2(uv*vec2(textureSize(aoBuffer,0)))+offsets[index];float aoNearest=texelFetch(aoBuffer,coord,0).r;float ao=mix(aoNearest,aoLinear,s);\\n#else\\nfloat ao=aoLinear;\\n#endif\\nfloat l=linearToRelativeLuminance(inputColor.rgb);ao=mix(ao,1.0,l*luminanceInfluence);\\n#ifdef COLORIZE\\noutputColor=vec4(1.0-(1.0-ao)*(1.0-color),inputColor.a);\\n#else\\noutputColor=vec4(vec3(ao),inputColor.a);\\n#endif\\n}\";\n\n// src/effects/SSAOEffect.js\nvar NOISE_TEXTURE_SIZE = 64;\nvar SSAOEffect = class extends Effect {\n  constructor(camera, normalBuffer, {\n    blendFunction = BlendFunction.MULTIPLY,\n    distanceScaling = true,\n    depthAwareUpsampling = true,\n    normalDepthBuffer = null,\n    samples = 9,\n    rings = 7,\n    distanceThreshold = 0.97,\n    distanceFalloff = 0.03,\n    rangeThreshold = 5e-4,\n    rangeFalloff = 1e-3,\n    minRadiusScale = 0.33,\n    luminanceInfluence = 0.7,\n    radius = 0.1825,\n    intensity = 1,\n    bias = 0.025,\n    fade = 0.01,\n    color: color2 = null,\n    resolutionScale = 1,\n    width = Resizer.AUTO_SIZE,\n    height = Resizer.AUTO_SIZE\n  } = {}) {\n    super(\"SSAOEffect\", shader_default73, {\n      blendFunction,\n      attributes: EffectAttribute.DEPTH,\n      defines: new Map([\n        [\"THRESHOLD\", \"0.997\"]\n      ]),\n      uniforms: new Map([\n        [\"aoBuffer\", new Uniform40(null)],\n        [\"normalDepthBuffer\", new Uniform40(null)],\n        [\"luminanceInfluence\", new Uniform40(luminanceInfluence)],\n        [\"color\", new Uniform40(null)],\n        [\"scale\", new Uniform40(0)]\n      ])\n    });\n    this.renderTargetAO = new WebGLRenderTarget16(1, 1, {\n      minFilter: LinearFilter13,\n      magFilter: LinearFilter13,\n      stencilBuffer: false,\n      depthBuffer: false,\n      format: RGBFormat14\n    });\n    this.renderTargetAO.texture.name = \"AO.Target\";\n    this.renderTargetAO.texture.generateMipmaps = false;\n    this.uniforms.get(\"aoBuffer\").value = this.renderTargetAO.texture;\n    this.resolution = new Resizer(this, width, height, resolutionScale);\n    this.r = 1;\n    this.camera = camera;\n    this.ssaoPass = new ShaderPass((() => {\n      const noiseTexture = new NoiseTexture(NOISE_TEXTURE_SIZE, NOISE_TEXTURE_SIZE);\n      noiseTexture.wrapS = noiseTexture.wrapT = RepeatWrapping3;\n      const material = new SSAOMaterial(camera);\n      material.uniforms.noiseTexture.value = noiseTexture;\n      material.uniforms.intensity.value = intensity;\n      material.uniforms.minRadiusScale.value = minRadiusScale;\n      material.uniforms.fade.value = fade;\n      material.uniforms.bias.value = bias;\n      if (normalDepthBuffer !== null) {\n        material.uniforms.normalDepthBuffer.value = normalDepthBuffer;\n        material.defines.NORMAL_DEPTH = \"1\";\n        if (depthAwareUpsampling) {\n          this.depthAwareUpsampling = depthAwareUpsampling;\n          this.uniforms.get(\"normalDepthBuffer\").value = normalDepthBuffer;\n        }\n      } else {\n        material.uniforms.normalBuffer.value = normalBuffer;\n      }\n      return material;\n    })());\n    this.distanceScaling = distanceScaling;\n    this.samples = samples;\n    this.rings = rings;\n    this.color = color2;\n    this.radius = radius > 1 ? radius / 100 : radius;\n    this.setDistanceCutoff(distanceThreshold, distanceFalloff);\n    this.setProximityCutoff(rangeThreshold, rangeFalloff);\n  }\n  get ssaoMaterial() {\n    return this.ssaoPass.getFullscreenMaterial();\n  }\n  get samples() {\n    return Number(this.ssaoMaterial.defines.SAMPLES_INT);\n  }\n  set samples(value) {\n    const material = this.ssaoMaterial;\n    material.defines.SAMPLES_INT = value.toFixed(0);\n    material.defines.SAMPLES_FLOAT = value.toFixed(1);\n    material.needsUpdate = true;\n  }\n  get rings() {\n    return Number(this.ssaoMaterial.defines.SPIRAL_TURNS);\n  }\n  set rings(value) {\n    const material = this.ssaoMaterial;\n    material.defines.SPIRAL_TURNS = value.toFixed(1);\n    material.needsUpdate = true;\n  }\n  get radius() {\n    return this.r;\n  }\n  set radius(value) {\n    this.r = Math.min(Math.max(value, 1e-6), 1);\n    const radius = this.r * this.resolution.height;\n    const material = this.ssaoMaterial;\n    material.defines.RADIUS = radius.toFixed(11);\n    material.defines.RADIUS_SQ = (radius * radius).toFixed(11);\n    material.needsUpdate = true;\n  }\n  get depthAwareUpsampling() {\n    return this.defines.has(\"DEPTH_AWARE_UPSAMPLING\");\n  }\n  set depthAwareUpsampling(value) {\n    if (this.depthAwareUpsampling !== value) {\n      if (value) {\n        this.defines.set(\"DEPTH_AWARE_UPSAMPLING\", \"1\");\n      } else {\n        this.defines.delete(\"DEPTH_AWARE_UPSAMPLING\");\n      }\n      this.setChanged();\n    }\n  }\n  get distanceScaling() {\n    return this.ssaoMaterial.defines.DISTANCE_SCALING !== void 0;\n  }\n  set distanceScaling(value) {\n    if (this.distanceScaling !== value) {\n      const material = this.ssaoMaterial;\n      if (value) {\n        material.defines.DISTANCE_SCALING = \"1\";\n      } else {\n        delete material.defines.DISTANCE_SCALING;\n      }\n      material.needsUpdate = true;\n    }\n  }\n  get color() {\n    return this.uniforms.get(\"color\").value;\n  }\n  set color(value) {\n    const uniforms = this.uniforms;\n    const defines = this.defines;\n    if (value !== null) {\n      if (defines.has(\"COLORIZE\")) {\n        uniforms.get(\"color\").value.set(value);\n      } else {\n        defines.set(\"COLORIZE\", \"1\");\n        uniforms.get(\"color\").value = new Color9(value);\n        this.setChanged();\n      }\n    } else if (defines.has(\"COLORIZE\")) {\n      defines.delete(\"COLORIZE\");\n      uniforms.get(\"color\").value = null;\n      this.setChanged();\n    }\n  }\n  setDistanceCutoff(threshold, falloff) {\n    this.ssaoMaterial.uniforms.distanceCutoff.value.set(Math.min(Math.max(threshold, 0), 1), Math.min(Math.max(threshold + falloff, 0), 1));\n  }\n  setProximityCutoff(threshold, falloff) {\n    this.ssaoMaterial.uniforms.proximityCutoff.value.set(Math.min(Math.max(threshold, 0), 1), Math.min(Math.max(threshold + falloff, 0), 1));\n  }\n  setDepthTexture(depthTexture, depthPacking = BasicDepthPacking8) {\n    const material = this.ssaoMaterial;\n    if (material.defines.NORMAL_DEPTH === void 0) {\n      material.uniforms.normalDepthBuffer.value = depthTexture;\n      material.depthPacking = depthPacking;\n    }\n  }\n  update(renderer, inputBuffer, deltaTime) {\n    this.ssaoPass.render(renderer, null, this.renderTargetAO);\n  }\n  setSize(width, height) {\n    const resolution = this.resolution;\n    resolution.base.set(width, height);\n    const w = resolution.width;\n    const h = resolution.height;\n    this.renderTargetAO.setSize(w, h);\n    this.ssaoMaterial.setTexelSize(1 / w, 1 / h);\n    const camera = this.camera;\n    const uniforms = this.ssaoMaterial.uniforms;\n    uniforms.noiseScale.value.set(w, h).divideScalar(NOISE_TEXTURE_SIZE);\n    uniforms.projectionMatrix.value.copy(camera.projectionMatrix);\n    uniforms.inverseProjectionMatrix.value.copy(camera.projectionMatrix).invert();\n    this.radius = this.r;\n  }\n};\n\n// src/effects/TextureEffect.js\nimport {\n  LinearEncoding as LinearEncoding3,\n  Matrix3,\n  sRGBEncoding as sRGBEncoding3,\n  Uniform as Uniform41,\n  UnsignedByteType as UnsignedByteType16\n} from \"three\";\n\n// src/effects/glsl/texture/shader.frag\nvar shader_default74 = \"#ifdef TEXTURE_PRECISION_HIGH\\nuniform mediump sampler2D map;\\n#else\\nuniform lowp sampler2D map;\\n#endif\\n#if defined(ASPECT_CORRECTION) || defined(UV_TRANSFORM)\\nvarying vec2 vUv2;\\n#endif\\nvoid mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){\\n#if defined(ASPECT_CORRECTION) || defined(UV_TRANSFORM)\\nvec4 texel=texelToLinear(texture2D(map,vUv2));\\n#else\\nvec4 texel=texelToLinear(texture2D(map,uv));\\n#endif\\noutputColor=TEXEL;}\";\n\n// src/effects/glsl/texture/shader.vert\nvar shader_default75 = \"#ifdef ASPECT_CORRECTION\\nuniform float scale;\\n#else\\nuniform mat3 uvTransform;\\n#endif\\nvarying vec2 vUv2;void mainSupport(const in vec2 uv){\\n#ifdef ASPECT_CORRECTION\\nvUv2=uv*vec2(aspect,1.0)*scale;\\n#else\\nvUv2=(uvTransform*vec3(uv,1.0)).xy;\\n#endif\\n}\";\n\n// src/effects/TextureEffect.js\nvar TextureEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.NORMAL,\n    texture = null,\n    aspectCorrection = false\n  } = {}) {\n    super(\"TextureEffect\", shader_default74, {\n      blendFunction,\n      defines: new Map([\n        [\"TEXEL\", \"texel\"]\n      ]),\n      uniforms: new Map([\n        [\"map\", new Uniform41(null)],\n        [\"scale\", new Uniform41(1)],\n        [\"uvTransform\", new Uniform41(null)]\n      ])\n    });\n    this.texture = texture;\n    this.aspectCorrection = aspectCorrection;\n  }\n  get texture() {\n    return this.uniforms.get(\"map\").value;\n  }\n  set texture(value) {\n    const currentTexture = this.texture;\n    if (currentTexture !== value) {\n      this.uniforms.get(\"map\").value = value;\n      this.defines.delete(\"TEXTURE_PRECISION_HIGH\");\n      if (value !== null) {\n        switch (value.encoding) {\n          case sRGBEncoding3:\n            this.defines.set(\"texelToLinear(texel)\", \"sRGBToLinear(texel)\");\n            break;\n          case LinearEncoding3:\n            this.defines.set(\"texelToLinear(texel)\", \"texel\");\n            break;\n          default:\n            console.error(\"Unsupported encoding:\", value.encoding);\n            break;\n        }\n        if (value.type !== UnsignedByteType16) {\n          this.defines.set(\"TEXTURE_PRECISION_HIGH\", \"1\");\n        }\n        if (currentTexture === null || currentTexture.type !== value.type || currentTexture.encoding !== value.encoding) {\n          this.setChanged();\n        }\n      }\n    }\n  }\n  get aspectCorrection() {\n    return this.defines.has(\"ASPECT_CORRECTION\");\n  }\n  set aspectCorrection(value) {\n    if (this.aspectCorrection !== value) {\n      if (value) {\n        if (this.uvTransform) {\n          this.uvTransform = false;\n        }\n        this.defines.set(\"ASPECT_CORRECTION\", \"1\");\n        this.setVertexShader(shader_default75);\n      } else {\n        this.defines.delete(\"ASPECT_CORRECTION\");\n        this.setVertexShader(null);\n      }\n      this.setChanged();\n    }\n  }\n  get uvTransform() {\n    return this.defines.has(\"UV_TRANSFORM\");\n  }\n  set uvTransform(value) {\n    if (this.uvTransform !== value) {\n      if (value) {\n        if (this.aspectCorrection) {\n          this.aspectCorrection = false;\n        }\n        this.defines.set(\"UV_TRANSFORM\", \"1\");\n        this.uniforms.get(\"uvTransform\").value = new Matrix3();\n        this.setVertexShader(shader_default75);\n      } else {\n        this.defines.delete(\"UV_TRANSFORM\");\n        this.uniforms.get(\"uvTransform\").value = null;\n        this.setVertexShader(null);\n      }\n      this.setChanged();\n    }\n  }\n  setTextureSwizzleRGBA(r, g = r, b = r, a = r) {\n    const rgba = \"rgba\";\n    let swizzle = \"\";\n    if (r !== ColorChannel.RED || g !== ColorChannel.GREEN || b !== ColorChannel.BLUE || a !== ColorChannel.ALPHA) {\n      swizzle = [\".\", rgba[r], rgba[g], rgba[b], rgba[a]].join(\"\");\n    }\n    this.defines.set(\"TEXEL\", \"texel\" + swizzle);\n    this.setChanged();\n  }\n  update(renderer, inputBuffer, deltaTime) {\n    const texture = this.uniforms.get(\"map\").value;\n    if (this.uvTransform && texture.matrixAutoUpdate) {\n      texture.updateMatrix();\n      this.uniforms.get(\"uvTransform\").value.copy(texture.matrix);\n    }\n  }\n};\n\n// src/effects/ToneMappingEffect.js\nimport {\n  LinearFilter as LinearFilter14,\n  LinearMipMapLinearFilter,\n  LinearMipmapLinearFilter,\n  RGBFormat as RGBFormat15,\n  Uniform as Uniform42,\n  WebGLRenderTarget as WebGLRenderTarget17\n} from \"three\";\n\n// src/effects/glsl/tone-mapping/shader.frag\nvar shader_default76 = \"#include <tonemapping_pars_fragment>\\nuniform lowp sampler2D luminanceBuffer;uniform float whitePoint;uniform float middleGrey;\\n#ifndef ADAPTIVE\\nuniform float averageLuminance;\\n#endif\\nvec3 Reinhard2ToneMapping(vec3 color){color*=toneMappingExposure;float l=linearToRelativeLuminance(color);\\n#ifdef ADAPTIVE\\nfloat lumAvg=texture2D(luminanceBuffer,vec2(0.5)).r;\\n#else\\nfloat lumAvg=averageLuminance;\\n#endif\\nfloat lumScaled=(l*middleGrey)/max(lumAvg,1e-6);float lumCompressed=lumScaled*(1.0+lumScaled/(whitePoint*whitePoint));lumCompressed/=(1.0+lumScaled);return clamp(lumCompressed*color,0.0,1.0);}void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){\\n#ifdef REINHARD2\\noutputColor=vec4(Reinhard2ToneMapping(inputColor.rgb),inputColor.a);\\n#else\\noutputColor=vec4(toneMapping(inputColor.rgb),inputColor.a);\\n#endif\\n}\";\n\n// src/effects/ToneMappingEffect.js\nvar ToneMappingEffect = class extends Effect {\n  constructor({\n    blendFunction = BlendFunction.NORMAL,\n    adaptive = true,\n    mode = adaptive ? ToneMappingMode.REINHARD2_ADAPTIVE : ToneMappingMode.REINHARD2,\n    resolution = 256,\n    maxLuminance = 16,\n    whitePoint = maxLuminance,\n    middleGrey = 0.6,\n    minLuminance = 0.01,\n    averageLuminance = 1,\n    adaptationRate = 1\n  } = {}) {\n    super(\"ToneMappingEffect\", shader_default76, {\n      blendFunction,\n      uniforms: new Map([\n        [\"luminanceBuffer\", new Uniform42(null)],\n        [\"maxLuminance\", new Uniform42(maxLuminance)],\n        [\"whitePoint\", new Uniform42(whitePoint)],\n        [\"middleGrey\", new Uniform42(middleGrey)],\n        [\"averageLuminance\", new Uniform42(averageLuminance)]\n      ])\n    });\n    this.renderTargetLuminance = new WebGLRenderTarget17(1, 1, {\n      minFilter: LinearMipmapLinearFilter !== void 0 ? LinearMipmapLinearFilter : LinearMipMapLinearFilter,\n      magFilter: LinearFilter14,\n      stencilBuffer: false,\n      depthBuffer: false,\n      format: RGBFormat15\n    });\n    this.renderTargetLuminance.texture.name = \"Luminance\";\n    this.renderTargetLuminance.texture.generateMipmaps = true;\n    this.luminancePass = new LuminancePass({\n      renderTarget: this.renderTargetLuminance\n    });\n    this.adaptiveLuminancePass = new AdaptiveLuminancePass(this.luminancePass.texture, {\n      minLuminance,\n      adaptationRate\n    });\n    this.uniforms.get(\"luminanceBuffer\").value = this.adaptiveLuminancePass.texture;\n    this.mode = null;\n    this.setMode(mode);\n    this.resolution = resolution;\n  }\n  getMode() {\n    return this.mode;\n  }\n  setMode(value) {\n    const currentMode = this.mode;\n    if (currentMode !== value) {\n      this.defines.clear();\n      switch (value) {\n        case ToneMappingMode.REINHARD:\n          this.defines.set(\"toneMapping(texel)\", \"ReinhardToneMapping(texel)\");\n          break;\n        case ToneMappingMode.OPTIMIZED_CINEON:\n          this.defines.set(\"toneMapping(texel)\", \"OptimizedCineonToneMapping(texel)\");\n          break;\n        case ToneMappingMode.ACES_FILMIC:\n          this.defines.set(\"toneMapping(texel)\", \"ACESFilmicToneMapping(texel)\");\n          break;\n        default:\n          this.defines.set(\"toneMapping(texel)\", \"texel\");\n          break;\n      }\n      if (value === ToneMappingMode.REINHARD2) {\n        this.defines.set(\"REINHARD2\", \"1\");\n      } else if (value === ToneMappingMode.REINHARD2_ADAPTIVE) {\n        this.defines.set(\"REINHARD2\", \"1\");\n        this.defines.set(\"ADAPTIVE\", \"1\");\n      }\n      this.mode = value;\n      this.setChanged();\n    }\n  }\n  get resolution() {\n    return this.luminancePass.resolution.width;\n  }\n  set resolution(value) {\n    const exponent = Math.max(0, Math.ceil(Math.log2(value)));\n    const size = Math.pow(2, exponent);\n    this.luminancePass.resolution.width = size;\n    this.luminancePass.resolution.height = size;\n    this.adaptiveLuminancePass.mipLevel1x1 = exponent;\n  }\n  get adaptive() {\n    return this.defines.has(\"ADAPTIVE\");\n  }\n  set adaptive(value) {\n    this.mode = value ? ToneMappingMode.REINHARD2_ADAPTIVE : ToneMappingMode.REINHARD2;\n  }\n  get adaptationRate() {\n    return this.adaptiveLuminancePass.adaptationRate;\n  }\n  set adaptationRate(value) {\n    this.adaptiveLuminancePass.adaptationRate = value;\n  }\n  get distinction() {\n    console.warn(this.name, \"The distinction field has been removed.\");\n    return 1;\n  }\n  set distinction(value) {\n    console.warn(this.name, \"The distinction field has been removed.\");\n  }\n  update(renderer, inputBuffer, deltaTime) {\n    if (this.mode === ToneMappingMode.REINHARD2_ADAPTIVE) {\n      this.luminancePass.render(renderer, inputBuffer);\n      this.adaptiveLuminancePass.render(renderer, null, null, deltaTime);\n    }\n  }\n  initialize(renderer, alpha, frameBufferType) {\n    this.adaptiveLuminancePass.initialize(renderer, alpha, frameBufferType);\n  }\n};\nvar ToneMappingMode = {\n  REINHARD: 0,\n  REINHARD2: 1,\n  REINHARD2_ADAPTIVE: 2,\n  OPTIMIZED_CINEON: 3,\n  ACES_FILMIC: 4\n};\n\n// src/effects/VignetteEffect.js\nimport { Uniform as Uniform43 } from \"three\";\n\n// src/effects/glsl/vignette/shader.frag\nvar shader_default77 = \"uniform float offset;uniform float darkness;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){const vec2 center=vec2(0.5);vec3 color=inputColor.rgb;\\n#ifdef ESKIL\\nvec2 coord=(uv-center)*vec2(offset);color=mix(color,vec3(1.0-darkness),dot(coord,coord));\\n#else\\nfloat d=distance(uv,center);color*=smoothstep(0.8,offset*0.799,d*(darkness+offset));\\n#endif\\noutputColor=vec4(color,inputColor.a);}\";\n\n// src/effects/VignetteEffect.js\nvar VignetteEffect = class extends Effect {\n  constructor(options = {}) {\n    const settings = Object.assign({\n      blendFunction: BlendFunction.NORMAL,\n      eskil: false,\n      offset: 0.5,\n      darkness: 0.5\n    }, options);\n    super(\"VignetteEffect\", shader_default77, {\n      blendFunction: settings.blendFunction,\n      uniforms: new Map([\n        [\"offset\", new Uniform43(settings.offset)],\n        [\"darkness\", new Uniform43(settings.darkness)]\n      ])\n    });\n    this.eskil = settings.eskil;\n  }\n  get eskil() {\n    return this.defines.has(\"ESKIL\");\n  }\n  set eskil(value) {\n    if (this.eskil !== value) {\n      if (value) {\n        this.defines.set(\"ESKIL\", \"1\");\n      } else {\n        this.defines.delete(\"ESKIL\");\n      }\n      this.setChanged();\n    }\n  }\n};\n\n// src/images/lut/TetrahedralUpscaler.js\nvar P = [\n  new Float32Array(3),\n  new Float32Array(3)\n];\nvar C = [\n  new Float32Array(3),\n  new Float32Array(3),\n  new Float32Array(3),\n  new Float32Array(3)\n];\nvar T = [\n  [\n    new Float32Array([0, 0, 0]),\n    new Float32Array([1, 0, 0]),\n    new Float32Array([1, 1, 0]),\n    new Float32Array([1, 1, 1])\n  ],\n  [\n    new Float32Array([0, 0, 0]),\n    new Float32Array([1, 0, 0]),\n    new Float32Array([1, 0, 1]),\n    new Float32Array([1, 1, 1])\n  ],\n  [\n    new Float32Array([0, 0, 0]),\n    new Float32Array([0, 0, 1]),\n    new Float32Array([1, 0, 1]),\n    new Float32Array([1, 1, 1])\n  ],\n  [\n    new Float32Array([0, 0, 0]),\n    new Float32Array([0, 1, 0]),\n    new Float32Array([1, 1, 0]),\n    new Float32Array([1, 1, 1])\n  ],\n  [\n    new Float32Array([0, 0, 0]),\n    new Float32Array([0, 1, 0]),\n    new Float32Array([0, 1, 1]),\n    new Float32Array([1, 1, 1])\n  ],\n  [\n    new Float32Array([0, 0, 0]),\n    new Float32Array([0, 0, 1]),\n    new Float32Array([0, 1, 1]),\n    new Float32Array([1, 1, 1])\n  ]\n];\nfunction calculateTetrahedronVolume(a, b, c2, d) {\n  const bcX = c2[0] - b[0];\n  const bcY = c2[1] - b[1];\n  const bcZ = c2[2] - b[2];\n  const baX = a[0] - b[0];\n  const baY = a[1] - b[1];\n  const baZ = a[2] - b[2];\n  const crossX = bcY * baZ - bcZ * baY;\n  const crossY = bcZ * baX - bcX * baZ;\n  const crossZ = bcX * baY - bcY * baX;\n  const length = Math.sqrt(crossX * crossX + crossY * crossY + crossZ * crossZ);\n  const triangleArea = length * 0.5;\n  const normalX = crossX / length;\n  const normalY = crossY / length;\n  const normalZ = crossZ / length;\n  const constant = -(a[0] * normalX + a[1] * normalY + a[2] * normalZ);\n  const dot = d[0] * normalX + d[1] * normalY + d[2] * normalZ;\n  const height = Math.abs(dot + constant);\n  return height * triangleArea / 3;\n}\nfunction sample(data, size, x, y, z, color2) {\n  const i3 = (x + y * size + z * size * size) * 3;\n  color2[0] = data[i3 + 0];\n  color2[1] = data[i3 + 1];\n  color2[2] = data[i3 + 2];\n}\nfunction tetrahedralSample(data, size, u, v3, w, color2) {\n  const px = u * (size - 1);\n  const py = v3 * (size - 1);\n  const pz = w * (size - 1);\n  const minX = Math.floor(px);\n  const minY = Math.floor(py);\n  const minZ = Math.floor(pz);\n  const maxX = Math.ceil(px);\n  const maxY = Math.ceil(py);\n  const maxZ = Math.ceil(pz);\n  const su = px - minX;\n  const sv = py - minY;\n  const sw = pz - minZ;\n  if (minX === px && minY === py && minZ === pz) {\n    sample(data, size, px, py, pz, color2);\n  } else {\n    let vertices;\n    if (su >= sv && sv >= sw) {\n      vertices = T[0];\n    } else if (su >= sw && sw >= sv) {\n      vertices = T[1];\n    } else if (sw >= su && su >= sv) {\n      vertices = T[2];\n    } else if (sv >= su && su >= sw) {\n      vertices = T[3];\n    } else if (sv >= sw && sw >= su) {\n      vertices = T[4];\n    } else if (sw >= sv && sv >= su) {\n      vertices = T[5];\n    }\n    const [P0, P1, P2, P3] = vertices;\n    const coords = P[0];\n    coords[0] = su;\n    coords[1] = sv;\n    coords[2] = sw;\n    const tmp = P[1];\n    const diffX = maxX - minX;\n    const diffY = maxY - minY;\n    const diffZ = maxZ - minZ;\n    tmp[0] = diffX * P0[0] + minX;\n    tmp[1] = diffY * P0[1] + minY;\n    tmp[2] = diffZ * P0[2] + minZ;\n    sample(data, size, tmp[0], tmp[1], tmp[2], C[0]);\n    tmp[0] = diffX * P1[0] + minX;\n    tmp[1] = diffY * P1[1] + minY;\n    tmp[2] = diffZ * P1[2] + minZ;\n    sample(data, size, tmp[0], tmp[1], tmp[2], C[1]);\n    tmp[0] = diffX * P2[0] + minX;\n    tmp[1] = diffY * P2[1] + minY;\n    tmp[2] = diffZ * P2[2] + minZ;\n    sample(data, size, tmp[0], tmp[1], tmp[2], C[2]);\n    tmp[0] = diffX * P3[0] + minX;\n    tmp[1] = diffY * P3[1] + minY;\n    tmp[2] = diffZ * P3[2] + minZ;\n    sample(data, size, tmp[0], tmp[1], tmp[2], C[3]);\n    const V0 = calculateTetrahedronVolume(P1, P2, P3, coords) * 6;\n    const V1 = calculateTetrahedronVolume(P0, P2, P3, coords) * 6;\n    const V2 = calculateTetrahedronVolume(P0, P1, P3, coords) * 6;\n    const V3 = calculateTetrahedronVolume(P0, P1, P2, coords) * 6;\n    C[0][0] *= V0;\n    C[0][1] *= V0;\n    C[0][2] *= V0;\n    C[1][0] *= V1;\n    C[1][1] *= V1;\n    C[1][2] *= V1;\n    C[2][0] *= V2;\n    C[2][1] *= V2;\n    C[2][2] *= V2;\n    C[3][0] *= V3;\n    C[3][1] *= V3;\n    C[3][2] *= V3;\n    color2[0] = C[0][0] + C[1][0] + C[2][0] + C[3][0];\n    color2[1] = C[0][1] + C[1][1] + C[2][1] + C[3][1];\n    color2[2] = C[0][2] + C[1][2] + C[2][2] + C[3][2];\n  }\n}\nvar TetrahedralUpscaler = class {\n  static expand(data, size) {\n    const originalSize = Math.cbrt(data.length / 3);\n    const rgb = new Float32Array(3);\n    const array = new data.constructor(size ** 3 * 3);\n    const s = 1 / (size - 1);\n    for (let z = 0; z < size; ++z) {\n      for (let y = 0; y < size; ++y) {\n        for (let x = 0; x < size; ++x) {\n          const u = x * s;\n          const v3 = y * s;\n          const w = z * s;\n          const i3 = Math.round(x + y * size + z * size * size) * 3;\n          tetrahedralSample(data, originalSize, u, v3, w, rgb);\n          array[i3 + 0] = rgb[0];\n          array[i3 + 1] = rgb[1];\n          array[i3 + 2] = rgb[2];\n        }\n      }\n    }\n    return array;\n  }\n};\n\n// src/images/smaa/SMAAAreaImageData.js\nvar area = [\n  new Float32Array(2),\n  new Float32Array(2)\n];\nvar ORTHOGONAL_SIZE = 16;\nvar DIAGONAL_SIZE = 20;\nvar DIAGONAL_SAMPLES = 30;\nvar SMOOTH_MAX_DISTANCE = 32;\nvar orthogonalSubsamplingOffsets = new Float32Array([\n  0,\n  -0.25,\n  0.25,\n  -0.125,\n  0.125,\n  -0.375,\n  0.375\n]);\nvar diagonalSubsamplingOffsets = [\n  new Float32Array([0, 0]),\n  new Float32Array([0.25, -0.25]),\n  new Float32Array([-0.25, 0.25]),\n  new Float32Array([0.125, -0.125]),\n  new Float32Array([-0.125, 0.125])\n];\nvar orthogonalEdges = [\n  new Uint8Array([0, 0]),\n  new Uint8Array([3, 0]),\n  new Uint8Array([0, 3]),\n  new Uint8Array([3, 3]),\n  new Uint8Array([1, 0]),\n  new Uint8Array([4, 0]),\n  new Uint8Array([1, 3]),\n  new Uint8Array([4, 3]),\n  new Uint8Array([0, 1]),\n  new Uint8Array([3, 1]),\n  new Uint8Array([0, 4]),\n  new Uint8Array([3, 4]),\n  new Uint8Array([1, 1]),\n  new Uint8Array([4, 1]),\n  new Uint8Array([1, 4]),\n  new Uint8Array([4, 4])\n];\nvar diagonalEdges = [\n  new Uint8Array([0, 0]),\n  new Uint8Array([1, 0]),\n  new Uint8Array([0, 2]),\n  new Uint8Array([1, 2]),\n  new Uint8Array([2, 0]),\n  new Uint8Array([3, 0]),\n  new Uint8Array([2, 2]),\n  new Uint8Array([3, 2]),\n  new Uint8Array([0, 1]),\n  new Uint8Array([1, 1]),\n  new Uint8Array([0, 3]),\n  new Uint8Array([1, 3]),\n  new Uint8Array([2, 1]),\n  new Uint8Array([3, 1]),\n  new Uint8Array([2, 3]),\n  new Uint8Array([3, 3])\n];\nfunction lerp(a, b, p) {\n  return a + (b - a) * p;\n}\nfunction saturate(a) {\n  return Math.min(Math.max(a, 0), 1);\n}\nfunction smoothArea(d) {\n  const a1 = area[0];\n  const a2 = area[1];\n  const b1X = Math.sqrt(a1[0] * 2) * 0.5;\n  const b1Y = Math.sqrt(a1[1] * 2) * 0.5;\n  const b2X = Math.sqrt(a2[0] * 2) * 0.5;\n  const b2Y = Math.sqrt(a2[1] * 2) * 0.5;\n  const p = saturate(d / SMOOTH_MAX_DISTANCE);\n  a1[0] = lerp(b1X, a1[0], p);\n  a1[1] = lerp(b1Y, a1[1], p);\n  a2[0] = lerp(b2X, a2[0], p);\n  a2[1] = lerp(b2Y, a2[1], p);\n}\nfunction getOrthArea(p1X, p1Y, p2X, p2Y, x, result) {\n  const dX = p2X - p1X;\n  const dY = p2Y - p1Y;\n  const x1 = x;\n  const x2 = x + 1;\n  const y1 = p1Y + dY * (x1 - p1X) / dX;\n  const y2 = p1Y + dY * (x2 - p1X) / dX;\n  if (x1 >= p1X && x1 < p2X || x2 > p1X && x2 <= p2X) {\n    if (Math.sign(y1) === Math.sign(y2) || Math.abs(y1) < 1e-4 || Math.abs(y2) < 1e-4) {\n      const a = (y1 + y2) / 2;\n      if (a < 0) {\n        result[0] = Math.abs(a);\n        result[1] = 0;\n      } else {\n        result[0] = 0;\n        result[1] = Math.abs(a);\n      }\n    } else {\n      const t = -p1Y * dX / dY + p1X;\n      const tInt = Math.trunc(t);\n      const a1 = t > p1X ? y1 * (t - tInt) / 2 : 0;\n      const a2 = t < p2X ? y2 * (1 - (t - tInt)) / 2 : 0;\n      const a = Math.abs(a1) > Math.abs(a2) ? a1 : -a2;\n      if (a < 0) {\n        result[0] = Math.abs(a1);\n        result[1] = Math.abs(a2);\n      } else {\n        result[0] = Math.abs(a2);\n        result[1] = Math.abs(a1);\n      }\n    }\n  } else {\n    result[0] = 0;\n    result[1] = 0;\n  }\n  return result;\n}\nfunction getOrthAreaForPattern(pattern, left, right, offset, result) {\n  const a1 = area[0];\n  const a2 = area[1];\n  const o1 = 0.5 + offset;\n  const o2 = 0.5 + offset - 1;\n  const d = left + right + 1;\n  switch (pattern) {\n    case 0: {\n      result[0] = 0;\n      result[1] = 0;\n      break;\n    }\n    case 1: {\n      if (left <= right) {\n        getOrthArea(0, o2, d / 2, 0, left, result);\n      } else {\n        result[0] = 0;\n        result[1] = 0;\n      }\n      break;\n    }\n    case 2: {\n      if (left >= right) {\n        getOrthArea(d / 2, 0, d, o2, left, result);\n      } else {\n        result[0] = 0;\n        result[1] = 0;\n      }\n      break;\n    }\n    case 3: {\n      getOrthArea(0, o2, d / 2, 0, left, a1);\n      getOrthArea(d / 2, 0, d, o2, left, a2);\n      smoothArea(d, area);\n      result[0] = a1[0] + a2[0];\n      result[1] = a1[1] + a2[1];\n      break;\n    }\n    case 4: {\n      if (left <= right) {\n        getOrthArea(0, o1, d / 2, 0, left, result);\n      } else {\n        result[0] = 0;\n        result[1] = 0;\n      }\n      break;\n    }\n    case 5: {\n      result[0] = 0;\n      result[1] = 0;\n      break;\n    }\n    case 6: {\n      if (Math.abs(offset) > 0) {\n        getOrthArea(0, o1, d, o2, left, a1);\n        getOrthArea(0, o1, d / 2, 0, left, a2);\n        getOrthArea(d / 2, 0, d, o2, left, result);\n        a2[0] = a2[0] + result[0];\n        a2[1] = a2[1] + result[1];\n        result[0] = (a1[0] + a2[0]) / 2;\n        result[1] = (a1[1] + a2[1]) / 2;\n      } else {\n        getOrthArea(0, o1, d, o2, left, result);\n      }\n      break;\n    }\n    case 7: {\n      getOrthArea(0, o1, d, o2, left, result);\n      break;\n    }\n    case 8: {\n      if (left >= right) {\n        getOrthArea(d / 2, 0, d, o1, left, result);\n      } else {\n        result[0] = 0;\n        result[1] = 0;\n      }\n      break;\n    }\n    case 9: {\n      if (Math.abs(offset) > 0) {\n        getOrthArea(0, o2, d, o1, left, a1);\n        getOrthArea(0, o2, d / 2, 0, left, a2);\n        getOrthArea(d / 2, 0, d, o1, left, result);\n        a2[0] = a2[0] + result[0];\n        a2[1] = a2[1] + result[1];\n        result[0] = (a1[0] + a2[0]) / 2;\n        result[1] = (a1[1] + a2[1]) / 2;\n      } else {\n        getOrthArea(0, o2, d, o1, left, result);\n      }\n      break;\n    }\n    case 10: {\n      result[0] = 0;\n      result[1] = 0;\n      break;\n    }\n    case 11: {\n      getOrthArea(0, o2, d, o1, left, result);\n      break;\n    }\n    case 12: {\n      getOrthArea(0, o1, d / 2, 0, left, a1);\n      getOrthArea(d / 2, 0, d, o1, left, a2);\n      smoothArea(d, area);\n      result[0] = a1[0] + a2[0];\n      result[1] = a1[1] + a2[1];\n      break;\n    }\n    case 13: {\n      getOrthArea(0, o2, d, o1, left, result);\n      break;\n    }\n    case 14: {\n      getOrthArea(0, o1, d, o2, left, result);\n      break;\n    }\n    case 15: {\n      result[0] = 0;\n      result[1] = 0;\n      break;\n    }\n  }\n  return result;\n}\nfunction isInsideArea(a1X, a1Y, a2X, a2Y, x, y) {\n  let result = a1X === a2X && a1Y === a2Y;\n  if (!result) {\n    const xm = (a1X + a2X) / 2;\n    const ym = (a1Y + a2Y) / 2;\n    const a = a2Y - a1Y;\n    const b = a1X - a2X;\n    const c2 = a * (x - xm) + b * (y - ym);\n    result = c2 > 0;\n  }\n  return result;\n}\nfunction getDiagAreaForPixel(a1X, a1Y, a2X, a2Y, pX, pY) {\n  let n = 0;\n  for (let y = 0; y < DIAGONAL_SAMPLES; ++y) {\n    for (let x = 0; x < DIAGONAL_SAMPLES; ++x) {\n      const offsetX = x / (DIAGONAL_SAMPLES - 1);\n      const offsetY = y / (DIAGONAL_SAMPLES - 1);\n      if (isInsideArea(a1X, a1Y, a2X, a2Y, pX + offsetX, pY + offsetY)) {\n        ++n;\n      }\n    }\n  }\n  return n / (DIAGONAL_SAMPLES * DIAGONAL_SAMPLES);\n}\nfunction getDiagArea(pattern, a1X, a1Y, a2X, a2Y, left, offset, result) {\n  const e = diagonalEdges[pattern];\n  const e1 = e[0];\n  const e2 = e[1];\n  if (e1 > 0) {\n    a1X += offset[0];\n    a1Y += offset[1];\n  }\n  if (e2 > 0) {\n    a2X += offset[0];\n    a2Y += offset[1];\n  }\n  result[0] = 1 - getDiagAreaForPixel(a1X, a1Y, a2X, a2Y, 1 + left, 0 + left);\n  result[1] = getDiagAreaForPixel(a1X, a1Y, a2X, a2Y, 1 + left, 1 + left);\n  return result;\n}\nfunction getDiagAreaForPattern(pattern, left, right, offset, result) {\n  const a1 = area[0];\n  const a2 = area[1];\n  const d = left + right + 1;\n  switch (pattern) {\n    case 0: {\n      getDiagArea(pattern, 1, 1, 1 + d, 1 + d, left, offset, a1);\n      getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n      result[0] = (a1[0] + a2[0]) / 2;\n      result[1] = (a1[1] + a2[1]) / 2;\n      break;\n    }\n    case 1: {\n      getDiagArea(pattern, 1, 0, 0 + d, 0 + d, left, offset, a1);\n      getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n      result[0] = (a1[0] + a2[0]) / 2;\n      result[1] = (a1[1] + a2[1]) / 2;\n      break;\n    }\n    case 2: {\n      getDiagArea(pattern, 0, 0, 1 + d, 0 + d, left, offset, a1);\n      getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n      result[0] = (a1[0] + a2[0]) / 2;\n      result[1] = (a1[1] + a2[1]) / 2;\n      break;\n    }\n    case 3: {\n      getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, result);\n      break;\n    }\n    case 4: {\n      getDiagArea(pattern, 1, 1, 0 + d, 0 + d, left, offset, a1);\n      getDiagArea(pattern, 1, 1, 1 + d, 0 + d, left, offset, a2);\n      result[0] = (a1[0] + a2[0]) / 2;\n      result[1] = (a1[1] + a2[1]) / 2;\n      break;\n    }\n    case 5: {\n      getDiagArea(pattern, 1, 1, 0 + d, 0 + d, left, offset, a1);\n      getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n      result[0] = (a1[0] + a2[0]) / 2;\n      result[1] = (a1[1] + a2[1]) / 2;\n      break;\n    }\n    case 6: {\n      getDiagArea(pattern, 1, 1, 1 + d, 0 + d, left, offset, result);\n      break;\n    }\n    case 7: {\n      getDiagArea(pattern, 1, 1, 1 + d, 0 + d, left, offset, a1);\n      getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n      result[0] = (a1[0] + a2[0]) / 2;\n      result[1] = (a1[1] + a2[1]) / 2;\n      break;\n    }\n    case 8: {\n      getDiagArea(pattern, 0, 0, 1 + d, 1 + d, left, offset, a1);\n      getDiagArea(pattern, 1, 0, 1 + d, 1 + d, left, offset, a2);\n      result[0] = (a1[0] + a2[0]) / 2;\n      result[1] = (a1[1] + a2[1]) / 2;\n      break;\n    }\n    case 9: {\n      getDiagArea(pattern, 1, 0, 1 + d, 1 + d, left, offset, result);\n      getDiagArea(pattern, 1, 0, 1 + d, 1 + d, left, offset, result);\n      break;\n    }\n    case 10: {\n      getDiagArea(pattern, 0, 0, 1 + d, 1 + d, left, offset, a1);\n      getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n      result[0] = (a1[0] + a2[0]) / 2;\n      result[1] = (a1[1] + a2[1]) / 2;\n      break;\n    }\n    case 11: {\n      getDiagArea(pattern, 1, 0, 1 + d, 1 + d, left, offset, a1);\n      getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n      result[0] = (a1[0] + a2[0]) / 2;\n      result[1] = (a1[1] + a2[1]) / 2;\n      break;\n    }\n    case 12: {\n      getDiagArea(pattern, 1, 1, 1 + d, 1 + d, left, offset, result);\n      break;\n    }\n    case 13: {\n      getDiagArea(pattern, 1, 1, 1 + d, 1 + d, left, offset, a1);\n      getDiagArea(pattern, 1, 0, 1 + d, 1 + d, left, offset, a2);\n      result[0] = (a1[0] + a2[0]) / 2;\n      result[1] = (a1[1] + a2[1]) / 2;\n      break;\n    }\n    case 14: {\n      getDiagArea(pattern, 1, 1, 1 + d, 1 + d, left, offset, a1);\n      getDiagArea(pattern, 1, 1, 1 + d, 0 + d, left, offset, a2);\n      result[0] = (a1[0] + a2[0]) / 2;\n      result[1] = (a1[1] + a2[1]) / 2;\n      break;\n    }\n    case 15: {\n      getDiagArea(pattern, 1, 1, 1 + d, 1 + d, left, offset, a1);\n      getDiagArea(pattern, 1, 0, 1 + d, 0 + d, left, offset, a2);\n      result[0] = (a1[0] + a2[0]) / 2;\n      result[1] = (a1[1] + a2[1]) / 2;\n      break;\n    }\n  }\n  return result;\n}\nfunction generatePatterns(patterns, offset, orthogonal) {\n  const result = new Float32Array(2);\n  for (let i = 0, l = patterns.length; i < l; ++i) {\n    const pattern = patterns[i];\n    const data = pattern.data;\n    const size = pattern.width;\n    for (let y = 0; y < size; ++y) {\n      for (let x = 0; x < size; ++x) {\n        if (orthogonal) {\n          getOrthAreaForPattern(i, x, y, offset, result);\n        } else {\n          getDiagAreaForPattern(i, x, y, offset, result);\n        }\n        const c2 = (y * size + x) * 2;\n        data[c2] = result[0] * 255;\n        data[c2 + 1] = result[1] * 255;\n      }\n    }\n  }\n}\nfunction assemble(baseX, baseY, patterns, edges2, size, orthogonal, target) {\n  const dstData = target.data;\n  const dstWidth = target.width;\n  for (let i = 0, l = patterns.length; i < l; ++i) {\n    const edge = edges2[i];\n    const pattern = patterns[i];\n    const srcData = pattern.data;\n    const srcWidth = pattern.width;\n    for (let y = 0; y < size; ++y) {\n      for (let x = 0; x < size; ++x) {\n        const pX = edge[0] * size + baseX + x;\n        const pY = edge[1] * size + baseY + y;\n        const c2 = (pY * dstWidth + pX) * 4;\n        const d = orthogonal ? (y * y * srcWidth + x * x) * 2 : (y * srcWidth + x) * 2;\n        dstData[c2] = srcData[d];\n        dstData[c2 + 1] = srcData[d + 1];\n        dstData[c2 + 2] = 0;\n        dstData[c2 + 3] = 255;\n      }\n    }\n  }\n}\nvar SMAAAreaImageData = class {\n  static generate() {\n    const width = 2 * 5 * ORTHOGONAL_SIZE;\n    const height = orthogonalSubsamplingOffsets.length * 5 * ORTHOGONAL_SIZE;\n    const data = new Uint8ClampedArray(width * height * 4);\n    const result = new RawImageData(width, height, data);\n    const orthPatternSize = Math.pow(ORTHOGONAL_SIZE - 1, 2) + 1;\n    const diagPatternSize = DIAGONAL_SIZE;\n    const orthogonalPatterns = [];\n    const diagonalPatterns = [];\n    for (let i = 3, l = data.length; i < l; i += 4) {\n      data[i] = 255;\n    }\n    for (let i = 0; i < 16; ++i) {\n      orthogonalPatterns.push(new RawImageData(orthPatternSize, orthPatternSize, new Uint8ClampedArray(orthPatternSize * orthPatternSize * 2), 2));\n      diagonalPatterns.push(new RawImageData(diagPatternSize, diagPatternSize, new Uint8ClampedArray(diagPatternSize * diagPatternSize * 2), 2));\n    }\n    for (let i = 0, l = orthogonalSubsamplingOffsets.length; i < l; ++i) {\n      generatePatterns(orthogonalPatterns, orthogonalSubsamplingOffsets[i], true);\n      assemble(0, 5 * ORTHOGONAL_SIZE * i, orthogonalPatterns, orthogonalEdges, ORTHOGONAL_SIZE, true, result);\n    }\n    for (let i = 0, l = diagonalSubsamplingOffsets.length; i < l; ++i) {\n      generatePatterns(diagonalPatterns, diagonalSubsamplingOffsets[i], false);\n      assemble(5 * ORTHOGONAL_SIZE, 4 * DIAGONAL_SIZE * i, diagonalPatterns, diagonalEdges, DIAGONAL_SIZE, false, result);\n    }\n    return result;\n  }\n};\n\n// src/images/smaa/SMAAImageGenerator.js\nimport { LoadingManager } from \"three\";\n\n// tmp/smaa/worker.txt\nvar worker_default2 = '(()=>{function q(t,a,s){let i=document.createElementNS(\"http://www.w3.org/1999/xhtml\",\"canvas\"),n=i.getContext(\"2d\");if(i.width=t,i.height=a,s instanceof Image)n.drawImage(s,0,0);else{let r=n.createImageData(t,a);r.data.set(s),n.putImageData(r,0,0)}return i}var k=class{constructor(a=0,s=0,i=null){this.width=a,this.height=s,this.data=i}toCanvas(){return typeof document==\"undefined\"?null:q(this.width,this.height,this.data)}static from(a){let{width:s,height:i}=a,n;if(a instanceof Image){let r=q(s,i,a);r!==null&&(n=r.getContext(\"2d\").getImageData(0,0,s,i).data)}else n=a.data;return new k(s,i,n)}};var F=[new Float32Array(2),new Float32Array(2)],I=16,P=20,x=30,z=32,E=new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),W=[new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125])],B=[new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4])],_=[new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3])];function O(t,a,s){return t+(a-t)*s}function J(t){return Math.min(Math.max(t,0),1)}function G(t){let a=F[0],s=F[1],i=Math.sqrt(a[0]*2)*.5,n=Math.sqrt(a[1]*2)*.5,r=Math.sqrt(s[0]*2)*.5,o=Math.sqrt(s[1]*2)*.5,c=J(t/z);a[0]=O(i,a[0],c),a[1]=O(n,a[1],c),s[0]=O(r,s[0],c),s[1]=O(o,s[1],c)}function y(t,a,s,i,n,r){let o=s-t,c=i-a,w=n,e=n+1,A=a+c*(w-t)/o,b=a+c*(e-t)/o;if(w>=t&&w<s||e>t&&e<=s)if(Math.sign(A)===Math.sign(b)||Math.abs(A)<1e-4||Math.abs(b)<1e-4){let g=(A+b)/2;g<0?(r[0]=Math.abs(g),r[1]=0):(r[0]=0,r[1]=Math.abs(g))}else{let g=-a*o/c+t,M=Math.trunc(g),U=g>t?A*(g-M)/2:0,m=g<s?b*(1-(g-M))/2:0;(Math.abs(U)>Math.abs(m)?U:-m)<0?(r[0]=Math.abs(U),r[1]=Math.abs(m)):(r[0]=Math.abs(m),r[1]=Math.abs(U))}else r[0]=0,r[1]=0;return r}function K(t,a,s,i,n){let r=F[0],o=F[1],c=.5+i,w=.5+i-1,e=a+s+1;switch(t){case 0:{n[0]=0,n[1]=0;break}case 1:{a<=s?y(0,w,e/2,0,a,n):(n[0]=0,n[1]=0);break}case 2:{a>=s?y(e/2,0,e,w,a,n):(n[0]=0,n[1]=0);break}case 3:{y(0,w,e/2,0,a,r),y(e/2,0,e,w,a,o),G(e,F),n[0]=r[0]+o[0],n[1]=r[1]+o[1];break}case 4:{a<=s?y(0,c,e/2,0,a,n):(n[0]=0,n[1]=0);break}case 5:{n[0]=0,n[1]=0;break}case 6:{Math.abs(i)>0?(y(0,c,e,w,a,r),y(0,c,e/2,0,a,o),y(e/2,0,e,w,a,n),o[0]=o[0]+n[0],o[1]=o[1]+n[1],n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2):y(0,c,e,w,a,n);break}case 7:{y(0,c,e,w,a,n);break}case 8:{a>=s?y(e/2,0,e,c,a,n):(n[0]=0,n[1]=0);break}case 9:{Math.abs(i)>0?(y(0,w,e,c,a,r),y(0,w,e/2,0,a,o),y(e/2,0,e,c,a,n),o[0]=o[0]+n[0],o[1]=o[1]+n[1],n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2):y(0,w,e,c,a,n);break}case 10:{n[0]=0,n[1]=0;break}case 11:{y(0,w,e,c,a,n);break}case 12:{y(0,c,e/2,0,a,r),y(e/2,0,e,c,a,o),G(e,F),n[0]=r[0]+o[0],n[1]=r[1]+o[1];break}case 13:{y(0,w,e,c,a,n);break}case 14:{y(0,c,e,w,a,n);break}case 15:{n[0]=0,n[1]=0;break}}return n}function Q(t,a,s,i,n,r){let o=t===s&&a===i;if(!o){let c=(t+s)/2,w=(a+i)/2,e=i-a,A=t-s;o=e*(n-c)+A*(r-w)>0}return o}function H(t,a,s,i,n,r){let o=0;for(let c=0;c<x;++c)for(let w=0;w<x;++w){let e=w/(x-1),A=c/(x-1);Q(t,a,s,i,n+e,r+A)&&++o}return o/(x*x)}function h(t,a,s,i,n,r,o,c){let w=_[t],e=w[0],A=w[1];return e>0&&(a+=o[0],s+=o[1]),A>0&&(i+=o[0],n+=o[1]),c[0]=1-H(a,s,i,n,1+r,0+r),c[1]=H(a,s,i,n,1+r,1+r),c}function V(t,a,s,i,n){let r=F[0],o=F[1],c=a+s+1;switch(t){case 0:{h(t,1,1,1+c,1+c,a,i,r),h(t,1,0,1+c,0+c,a,i,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 1:{h(t,1,0,0+c,0+c,a,i,r),h(t,1,0,1+c,0+c,a,i,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 2:{h(t,0,0,1+c,0+c,a,i,r),h(t,1,0,1+c,0+c,a,i,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 3:{h(t,1,0,1+c,0+c,a,i,n);break}case 4:{h(t,1,1,0+c,0+c,a,i,r),h(t,1,1,1+c,0+c,a,i,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 5:{h(t,1,1,0+c,0+c,a,i,r),h(t,1,0,1+c,0+c,a,i,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 6:{h(t,1,1,1+c,0+c,a,i,n);break}case 7:{h(t,1,1,1+c,0+c,a,i,r),h(t,1,0,1+c,0+c,a,i,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 8:{h(t,0,0,1+c,1+c,a,i,r),h(t,1,0,1+c,1+c,a,i,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 9:{h(t,1,0,1+c,1+c,a,i,n),h(t,1,0,1+c,1+c,a,i,n);break}case 10:{h(t,0,0,1+c,1+c,a,i,r),h(t,1,0,1+c,0+c,a,i,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 11:{h(t,1,0,1+c,1+c,a,i,r),h(t,1,0,1+c,0+c,a,i,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 12:{h(t,1,1,1+c,1+c,a,i,n);break}case 13:{h(t,1,1,1+c,1+c,a,i,r),h(t,1,0,1+c,1+c,a,i,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 14:{h(t,1,1,1+c,1+c,a,i,r),h(t,1,1,1+c,0+c,a,i,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}case 15:{h(t,1,1,1+c,1+c,a,i,r),h(t,1,0,1+c,0+c,a,i,o),n[0]=(r[0]+o[0])/2,n[1]=(r[1]+o[1])/2;break}}return n}function T(t,a,s){let i=new Float32Array(2);for(let n=0,r=t.length;n<r;++n){let o=t[n],c=o.data,w=o.width;for(let e=0;e<w;++e)for(let A=0;A<w;++A){s?K(n,A,e,a,i):V(n,A,e,a,i);let b=(e*w+A)*2;c[b]=i[0]*255,c[b+1]=i[1]*255}}}function Z(t,a,s,i,n,r,o){let c=o.data,w=o.width;for(let e=0,A=s.length;e<A;++e){let b=i[e],g=s[e],M=g.data,U=g.width;for(let m=0;m<n;++m)for(let D=0;D<n;++D){let j=b[0]*n+t+D,S=((b[1]*n+a+m)*w+j)*4,R=r?(m*m*U+D*D)*2:(m*U+D)*2;c[S]=M[R],c[S+1]=M[R+1],c[S+2]=0,c[S+3]=255}}}var v=class{static generate(){let a=2*5*I,s=E.length*5*I,i=new Uint8ClampedArray(a*s*4),n=new k(a,s,i),r=Math.pow(I-1,2)+1,o=P,c=[],w=[];for(let e=3,A=i.length;e<A;e+=4)i[e]=255;for(let e=0;e<16;++e)c.push(new k(r,r,new Uint8ClampedArray(r*r*2),2)),w.push(new k(o,o,new Uint8ClampedArray(o*o*2),2));for(let e=0,A=E.length;e<A;++e)T(c,E[e],!0),Z(0,5*I*e,c,B,I,!0,n);for(let e=0,A=W.length;e<A;++e)T(w,W[e],!1),Z(5*I,4*P*e,w,_,P,!1,n);return n}};var C=new Map([[d(0,0,0,0),new Float32Array([0,0,0,0])],[d(0,0,0,1),new Float32Array([0,0,0,1])],[d(0,0,1,0),new Float32Array([0,0,1,0])],[d(0,0,1,1),new Float32Array([0,0,1,1])],[d(0,1,0,0),new Float32Array([0,1,0,0])],[d(0,1,0,1),new Float32Array([0,1,0,1])],[d(0,1,1,0),new Float32Array([0,1,1,0])],[d(0,1,1,1),new Float32Array([0,1,1,1])],[d(1,0,0,0),new Float32Array([1,0,0,0])],[d(1,0,0,1),new Float32Array([1,0,0,1])],[d(1,0,1,0),new Float32Array([1,0,1,0])],[d(1,0,1,1),new Float32Array([1,0,1,1])],[d(1,1,0,0),new Float32Array([1,1,0,0])],[d(1,1,0,1),new Float32Array([1,1,0,1])],[d(1,1,1,0),new Float32Array([1,1,1,0])],[d(1,1,1,1),new Float32Array([1,1,1,1])]]);function L(t,a,s){return t+(a-t)*s}function d(t,a,s,i){let n=L(t,a,1-.25),r=L(s,i,1-.25);return L(n,r,1-.125)}function $(t,a){let s=0;return a[3]===1&&(s+=1),s===1&&a[2]===1&&t[1]!==1&&t[3]!==1&&(s+=1),s}function Y(t,a){let s=0;return a[3]===1&&t[1]!==1&&t[3]!==1&&(s+=1),s===1&&a[2]===1&&t[0]!==1&&t[2]!==1&&(s+=1),s}var N=class{static generate(){let a=66,s=33,i=a/2,n=64,r=16,o=new Uint8ClampedArray(a*s),c=new Uint8ClampedArray(n*r*4);for(let w=0;w<s;++w)for(let e=0;e<a;++e){let A=.03125*e,b=.03125*w;if(C.has(A)&&C.has(b)){let g=C.get(A),M=C.get(b),U=w*a+e;o[U]=127*$(g,M),o[U+i]=127*Y(g,M)}}for(let w=0,e=s-r;e<s;++e)for(let A=0;A<n;++A,w+=4)c[w]=o[e*a+A],c[w+3]=255;return new k(n,r,c)}};self.addEventListener(\"message\",t=>{let a=v.generate(),s=N.generate();postMessage({areaImageData:a,searchImageData:s},[a.data.buffer,s.data.buffer]),close()});})();\\n';\n\n// src/images/smaa/SMAAImageGenerator.js\nfunction generate(useCache = true) {\n  const workerURL = URL.createObjectURL(new Blob([worker_default2], {\n    type: \"text/javascript\"\n  }));\n  const worker = new Worker(workerURL);\n  URL.revokeObjectURL(workerURL);\n  return new Promise((resolve, reject) => {\n    worker.addEventListener(\"error\", (event) => reject(event.error));\n    worker.addEventListener(\"message\", (event) => {\n      const searchImageData = RawImageData.from(event.data.searchImageData);\n      const areaImageData = RawImageData.from(event.data.areaImageData);\n      const urls = [\n        searchImageData.toCanvas().toDataURL(\"image/png\", 1),\n        areaImageData.toCanvas().toDataURL(\"image/png\", 1)\n      ];\n      if (useCache) {\n        localStorage.setItem(\"smaa-search\", urls[0]);\n        localStorage.setItem(\"smaa-area\", urls[1]);\n      }\n      resolve(urls);\n    });\n    worker.postMessage(null);\n  });\n}\nvar SMAAImageGenerator = class {\n  constructor() {\n    this.disableCache = false;\n  }\n  generate() {\n    const useCache = !this.disableCache && window.localStorage !== void 0;\n    const cachedURLs = useCache ? [\n      localStorage.getItem(\"smaa-search\"),\n      localStorage.getItem(\"smaa-area\")\n    ] : [null, null];\n    const promise = cachedURLs[0] !== null && cachedURLs[1] !== null ? Promise.resolve(cachedURLs) : generate(useCache);\n    return promise.then((urls) => {\n      return new Promise((resolve, reject) => {\n        const searchImage = new Image();\n        const areaImage = new Image();\n        const manager = new LoadingManager();\n        manager.onLoad = () => resolve([searchImage, areaImage]);\n        manager.onError = reject;\n        searchImage.addEventListener(\"error\", (e) => manager.itemError(\"smaa-search\"));\n        areaImage.addEventListener(\"error\", (e) => manager.itemError(\"smaa-area\"));\n        searchImage.addEventListener(\"load\", () => manager.itemEnd(\"smaa-search\"));\n        areaImage.addEventListener(\"load\", () => manager.itemEnd(\"smaa-area\"));\n        manager.itemStart(\"smaa-search\");\n        manager.itemStart(\"smaa-area\");\n        searchImage.src = urls[0];\n        areaImage.src = urls[1];\n      });\n    });\n  }\n};\n\n// src/images/smaa/SMAASearchImageData.js\nvar edges = new Map([\n  [bilinear(0, 0, 0, 0), new Float32Array([0, 0, 0, 0])],\n  [bilinear(0, 0, 0, 1), new Float32Array([0, 0, 0, 1])],\n  [bilinear(0, 0, 1, 0), new Float32Array([0, 0, 1, 0])],\n  [bilinear(0, 0, 1, 1), new Float32Array([0, 0, 1, 1])],\n  [bilinear(0, 1, 0, 0), new Float32Array([0, 1, 0, 0])],\n  [bilinear(0, 1, 0, 1), new Float32Array([0, 1, 0, 1])],\n  [bilinear(0, 1, 1, 0), new Float32Array([0, 1, 1, 0])],\n  [bilinear(0, 1, 1, 1), new Float32Array([0, 1, 1, 1])],\n  [bilinear(1, 0, 0, 0), new Float32Array([1, 0, 0, 0])],\n  [bilinear(1, 0, 0, 1), new Float32Array([1, 0, 0, 1])],\n  [bilinear(1, 0, 1, 0), new Float32Array([1, 0, 1, 0])],\n  [bilinear(1, 0, 1, 1), new Float32Array([1, 0, 1, 1])],\n  [bilinear(1, 1, 0, 0), new Float32Array([1, 1, 0, 0])],\n  [bilinear(1, 1, 0, 1), new Float32Array([1, 1, 0, 1])],\n  [bilinear(1, 1, 1, 0), new Float32Array([1, 1, 1, 0])],\n  [bilinear(1, 1, 1, 1), new Float32Array([1, 1, 1, 1])]\n]);\nfunction lerp2(a, b, p) {\n  return a + (b - a) * p;\n}\nfunction bilinear(e0, e1, e2, e3) {\n  const a = lerp2(e0, e1, 1 - 0.25);\n  const b = lerp2(e2, e3, 1 - 0.25);\n  return lerp2(a, b, 1 - 0.125);\n}\nfunction deltaLeft(left, top) {\n  let d = 0;\n  if (top[3] === 1) {\n    d += 1;\n  }\n  if (d === 1 && top[2] === 1 && left[1] !== 1 && left[3] !== 1) {\n    d += 1;\n  }\n  return d;\n}\nfunction deltaRight(left, top) {\n  let d = 0;\n  if (top[3] === 1 && left[1] !== 1 && left[3] !== 1) {\n    d += 1;\n  }\n  if (d === 1 && top[2] === 1 && left[0] !== 1 && left[2] !== 1) {\n    d += 1;\n  }\n  return d;\n}\nvar SMAASearchImageData = class {\n  static generate() {\n    const width = 66;\n    const height = 33;\n    const halfWidth = width / 2;\n    const croppedWidth = 64;\n    const croppedHeight = 16;\n    const data = new Uint8ClampedArray(width * height);\n    const croppedData = new Uint8ClampedArray(croppedWidth * croppedHeight * 4);\n    for (let y = 0; y < height; ++y) {\n      for (let x = 0; x < width; ++x) {\n        const s = 0.03125 * x;\n        const t = 0.03125 * y;\n        if (edges.has(s) && edges.has(t)) {\n          const e1 = edges.get(s);\n          const e2 = edges.get(t);\n          const i = y * width + x;\n          data[i] = 127 * deltaLeft(e1, e2);\n          data[i + halfWidth] = 127 * deltaRight(e1, e2);\n        }\n      }\n    }\n    for (let i = 0, y = height - croppedHeight; y < height; ++y) {\n      for (let x = 0; x < croppedWidth; ++x, i += 4) {\n        croppedData[i] = data[y * width + x];\n        croppedData[i + 3] = 255;\n      }\n    }\n    return new RawImageData(croppedWidth, croppedHeight, croppedData);\n  }\n};\n\n// src/loaders/LUT3dlLoader.js\nimport { FileLoader, Loader, LoadingManager as LoadingManager2, sRGBEncoding as sRGBEncoding4 } from \"three\";\nvar LUT3dlLoader = class extends Loader {\n  load(url, onLoad = () => {\n  }, onProgress = () => {\n  }, onError = null) {\n    const externalManager = this.manager;\n    const internalManager = new LoadingManager2();\n    const loader = new FileLoader(internalManager);\n    loader.setPath(this.path);\n    loader.setResponseType(\"text\");\n    return new Promise((resolve, reject) => {\n      internalManager.onError = (url2) => {\n        externalManager.itemError(url2);\n        if (onError !== null) {\n          onError(`Failed to load ${url2}`);\n          resolve();\n        } else {\n          reject(`Failed to load ${url2}`);\n        }\n      };\n      externalManager.itemStart(url);\n      loader.load(url, (data) => {\n        try {\n          const result = this.parse(data);\n          externalManager.itemEnd(url);\n          onLoad(result);\n          resolve(result);\n        } catch (e) {\n          console.error(e);\n          internalManager.onError(url);\n        }\n      }, onProgress);\n    });\n  }\n  parse(input) {\n    const regExpGridInfo = /^[\\d ]+$/m;\n    const regExpDataPoints = /^([\\d.]+) +([\\d.]+) +([\\d.]+) *$/gm;\n    let result = regExpGridInfo.exec(input);\n    if (result === null) {\n      throw new Error(\"Missing grid information\");\n    }\n    const gridLines = result[0].trim().split(/\\s+/g).map((n) => Number(n));\n    const gridStep = gridLines[1] - gridLines[0];\n    const size = gridLines.length;\n    for (let i = 1, l = gridLines.length; i < l; ++i) {\n      if (gridStep !== gridLines[i] - gridLines[i - 1]) {\n        throw new Error(\"Inconsistent grid size\");\n      }\n    }\n    const data = new Float32Array(size ** 3 * 3);\n    let maxValue = 0;\n    let index = 0;\n    while ((result = regExpDataPoints.exec(input)) !== null) {\n      const r = Number(result[1]);\n      const g = Number(result[2]);\n      const b = Number(result[3]);\n      maxValue = Math.max(maxValue, r, g, b);\n      const bLayer = index % size;\n      const gLayer = Math.floor(index / size) % size;\n      const rLayer = Math.floor(index / (size * size)) % size;\n      const d3 = (bLayer * size * size + gLayer * size + rLayer) * 3;\n      data[d3 + 0] = r;\n      data[d3 + 1] = g;\n      data[d3 + 2] = b;\n      ++index;\n    }\n    const bits = Math.ceil(Math.log2(maxValue));\n    const maxBitValue = Math.pow(2, bits);\n    for (let i = 0, l = data.length; i < l; ++i) {\n      data[i] /= maxBitValue;\n    }\n    const lut = new LookupTexture3D(data, size, size, size);\n    lut.encoding = sRGBEncoding4;\n    return lut;\n  }\n};\n\n// src/loaders/LUTCubeLoader.js\nimport { FileLoader as FileLoader2, Loader as Loader2, LoadingManager as LoadingManager3, sRGBEncoding as sRGBEncoding5, Vector3 as Vector36 } from \"three\";\nvar LUTCubeLoader = class extends Loader2 {\n  load(url, onLoad = () => {\n  }, onProgress = () => {\n  }, onError = null) {\n    const externalManager = this.manager;\n    const internalManager = new LoadingManager3();\n    const loader = new FileLoader2(internalManager);\n    loader.setPath(this.path);\n    loader.setResponseType(\"text\");\n    return new Promise((resolve, reject) => {\n      internalManager.onError = (url2) => {\n        externalManager.itemError(url2);\n        if (onError !== null) {\n          onError(`Failed to load ${url2}`);\n          resolve();\n        } else {\n          reject(`Failed to load ${url2}`);\n        }\n      };\n      externalManager.itemStart(url);\n      loader.load(url, (data) => {\n        try {\n          const result = this.parse(data);\n          externalManager.itemEnd(url);\n          onLoad(result);\n          resolve(result);\n        } catch (e) {\n          console.error(e);\n          internalManager.onError(url);\n        }\n      }, onProgress);\n    });\n  }\n  parse(input) {\n    const regExpTitle = /TITLE +\"([^\"]*)\"/;\n    const regExpSize = /LUT_3D_SIZE +(\\d+)/;\n    const regExpDomainMin = /DOMAIN_MIN +([\\d.]+) +([\\d.]+) +([\\d.]+)/;\n    const regExpDomainMax = /DOMAIN_MAX +([\\d.]+) +([\\d.]+) +([\\d.]+)/;\n    const regExpDataPoints = /^([\\d.]+) +([\\d.]+) +([\\d.]+) *$/gm;\n    let result = regExpTitle.exec(input);\n    const title = result !== null ? result[1] : null;\n    result = regExpSize.exec(input);\n    if (result === null) {\n      throw new Error(\"Missing LUT_3D_SIZE information\");\n    }\n    const size = Number(result[1]);\n    const data = new Float32Array(size ** 3 * 3);\n    const domainMin = new Vector36(0, 0, 0);\n    const domainMax = new Vector36(1, 1, 1);\n    result = regExpDomainMin.exec(input);\n    if (result !== null) {\n      domainMin.set(Number(result[1]), Number(result[2]), Number(result[3]));\n    }\n    result = regExpDomainMax.exec(input);\n    if (result !== null) {\n      domainMax.set(Number(result[1]), Number(result[2]), Number(result[3]));\n    }\n    if (domainMin.x > domainMax.x || domainMin.y > domainMax.y || domainMin.z > domainMax.z) {\n      domainMin.set(0, 0, 0);\n      domainMax.set(1, 1, 1);\n      throw new Error(\"Invalid input domain\");\n    }\n    let i = 0;\n    while ((result = regExpDataPoints.exec(input)) !== null) {\n      data[i++] = Number(result[1]);\n      data[i++] = Number(result[2]);\n      data[i++] = Number(result[3]);\n    }\n    const lut = new LookupTexture3D(data, size, size, size);\n    lut.encoding = sRGBEncoding5;\n    lut.domainMin.copy(domainMin);\n    lut.domainMax.copy(domainMax);\n    if (title !== null) {\n      lut.name = title;\n    }\n    return lut;\n  }\n};\n\n// src/loaders/SMAAImageLoader.js\nimport { Loader as Loader3, LoadingManager as LoadingManager4 } from \"three\";\nvar SMAAImageLoader = class extends Loader3 {\n  load(onLoad = () => {\n  }, onError = null) {\n    if (arguments.length === 4) {\n      onLoad = arguments[1];\n      onError = arguments[3];\n    } else if (arguments.length === 3 || typeof arguments[0] !== \"function\") {\n      onLoad = arguments[1];\n      onError = null;\n    }\n    const externalManager = this.manager;\n    const internalManager = new LoadingManager4();\n    return new Promise((resolve, reject) => {\n      const searchImage = new Image();\n      const areaImage = new Image();\n      internalManager.onError = (url) => {\n        externalManager.itemError(url);\n        if (onError !== null) {\n          onError(`Failed to load ${url}`);\n          resolve();\n        } else {\n          reject(`Failed to load ${url}`);\n        }\n      };\n      internalManager.onLoad = () => {\n        const result = [searchImage, areaImage];\n        onLoad(result);\n        resolve(result);\n      };\n      searchImage.addEventListener(\"error\", (e) => {\n        internalManager.itemError(\"smaa-search\");\n      });\n      areaImage.addEventListener(\"error\", (e) => {\n        internalManager.itemError(\"smaa-area\");\n      });\n      searchImage.addEventListener(\"load\", () => {\n        externalManager.itemEnd(\"smaa-search\");\n        internalManager.itemEnd(\"smaa-search\");\n      });\n      areaImage.addEventListener(\"load\", () => {\n        externalManager.itemEnd(\"smaa-area\");\n        internalManager.itemEnd(\"smaa-area\");\n      });\n      externalManager.itemStart(\"smaa-search\");\n      externalManager.itemStart(\"smaa-area\");\n      internalManager.itemStart(\"smaa-search\");\n      internalManager.itemStart(\"smaa-area\");\n      searchImage.src = searchImageDataURL_default;\n      areaImage.src = areaImageDataURL_default;\n    });\n  }\n};\nexport {\n  AdaptiveLuminanceMaterial,\n  AdaptiveLuminancePass,\n  BlendFunction,\n  BlendMode,\n  BloomEffect,\n  BlurPass,\n  BokehEffect,\n  BokehMaterial,\n  BrightnessContrastEffect,\n  ChromaticAberrationEffect,\n  CircleOfConfusionMaterial,\n  ClearMaskPass,\n  ClearPass,\n  ColorAverageEffect,\n  ColorChannel,\n  ColorDepthEffect,\n  ColorEdgesMaterial,\n  ConvolutionMaterial,\n  CopyMaterial,\n  DepthComparisonMaterial,\n  DepthCopyMaterial,\n  DepthCopyMode,\n  DepthDownsamplingMaterial,\n  DepthDownsamplingPass,\n  DepthEffect,\n  DepthMaskMaterial,\n  DepthOfFieldEffect,\n  DepthPass,\n  DepthPickingPass,\n  DepthSavePass,\n  Disposable,\n  DotScreenEffect,\n  EdgeDetectionMaterial,\n  EdgeDetectionMode,\n  Effect,\n  EffectAttribute,\n  EffectComposer,\n  EffectMaterial,\n  EffectPass,\n  GammaCorrectionEffect,\n  GlitchEffect,\n  GlitchMode,\n  GodRaysEffect,\n  GodRaysMaterial,\n  GridEffect,\n  HueSaturationEffect,\n  Initializable,\n  KernelSize,\n  LUT3dlLoader,\n  LUTCubeLoader,\n  LUTEffect,\n  LUTOperation,\n  LambdaPass,\n  LookupTexture3D,\n  LuminanceMaterial,\n  LuminancePass,\n  MaskFunction,\n  MaskMaterial,\n  MaskPass,\n  NoiseEffect,\n  NoiseTexture,\n  NormalPass,\n  OutlineEdgesMaterial,\n  OutlineEffect,\n  OutlineMaterial,\n  OverrideMaterialManager,\n  Pass,\n  PixelationEffect,\n  PredicationMode,\n  RawImageData,\n  RealisticBokehEffect,\n  RenderPass,\n  Resizable,\n  Resizer,\n  SMAAAreaImageData,\n  SMAAEffect,\n  SMAAImageGenerator,\n  SMAAImageLoader,\n  SMAAPreset,\n  SMAASearchImageData,\n  SMAAWeightsMaterial,\n  SSAOEffect,\n  SSAOMaterial,\n  SavePass,\n  ScanlineEffect,\n  Section,\n  Selection,\n  SelectiveBloomEffect,\n  SepiaEffect,\n  ShaderPass,\n  ShockWaveEffect,\n  TetrahedralUpscaler,\n  TextureEffect,\n  ToneMappingEffect,\n  ToneMappingMode,\n  VignetteEffect,\n  WebGLExtension\n};\n"]}