{"version":3,"mappings":"ipDAAA,MAAMA,EAAO,CACX,YAAYC,EAAK,CACf,KAAK,KAAOA,EACZ,KAAK,WAAa,EACnB,CAED,KAAKC,EAAU,CACb,GAAI,KAAK,OAAQ,CAGfA,EAAS,KAAK,IAAI,EAClB,MACD,CAEI,KAAK,UACR,MAAM,KAAK,KAAM,CACf,YAAa,aACrB,CAAO,EACE,KAAMC,GAAaA,EAAS,KAAI,CAAE,EAClC,KAAMC,GAAS,KAAK,iBAAiBA,CAAI,CAAC,EAG/C,KAAK,YAAYF,CAAQ,CAC1B,CAED,IAAI,MAAO,CACT,OAAO,KAAK,OAAS,EACtB,CAED,IAAI,KAAKE,EAAM,CACb,KAAK,MAAQA,CACd,CAED,IAAI,QAAS,CACX,MAAO,CAAC,CAAC,KAAK,KACf,CAED,IAAI,UAAW,CACb,OAAO,KAAK,WAAW,OAAS,CACjC,CAED,YAAYF,EAAU,CACpB,KAAK,WAAW,KAAKA,CAAQ,CAC9B,CAED,iBAAiBE,EAAM,CACrB,KAAK,KAAOA,EAEZ,KAAK,WACF,OAAQF,GAAa,OAAOA,GAAa,UAAU,EACnD,QAASA,GAAaA,EAASE,CAAI,CAAC,EAEvC,KAAK,WAAa,EACnB,CACH,CAGA,MAAAC,GAAe,IAAIL,GAAO,sBAAsB,ECvD1CM,GACJC,GAAAC,EAAA,cAAC,UACC,UAAU,kBACV,aAAW,OACX,QAASD,EAAM,aAEfC,EAAA,cAAC,IAAE,WAAU,wBAAyB,EACxC,ECHF,MAAMC,WAAsBD,EAAM,SAAU,CAC1C,YAAYD,EAAO,CACX,QACN,KAAK,YAAcA,EAAM,YACzB,KAAK,MAAQA,EAAM,KACrB,CAEA,mBAAoB,CAClBG,GAAgB,SAAS,CACvB,KAAMC,GAAQ,qBACd,QAAS,GACV,CACH,CAEA,sBAAuB,CACrBD,GAAgB,SAAS,CACvB,KAAMC,GAAQ,qBACd,QAAS,GACV,CACH,CAEA,QAAS,CACA,OAAAH,EAAA,cAAC,OAAI,UAAU,4GACnBI,GAAW,aAAa,KAAK,WAAa,mBAC1C,MAAI,WAAU,gBACZJ,EAAA,sBAAK,UAAU,eAAiB,OAAK,KAAM,CAC9C,CACF,CACF,CACF,CAEAC,GAAc,UAAY,CACxB,YAAaI,GAAU,KAAK,WAC5B,MAAOA,GAAU,OAAO,UAC1B,ECtCA,MAAMC,GAAc,GAEdC,GAAuB,CAC3B,OAAQ,CAACC,EAA2B,EAEpC,eAAeC,EAAUC,EAAM,CAC7BD,EAAS,OAAO,MAAOC,EAAK,GAAG,EAC/BD,EAAS,OAAO,OAAQC,EAAK,UAAYA,EAAK,KAAK,EAC/CA,EAAK,eACPD,EAAS,OAAO,kBAAmBC,EAAK,aAAa,CAExD,EAED,WAAWC,EAASC,EAAc,CAC5BA,EAAe,KAAOA,EAAe,MACnCA,IAAiB,MACnBN,GAAY,gBAAkBK,GAGhCL,GAAYK,CAAO,EAAIL,GAAYK,CAAO,GAAKL,GAAYK,CAAO,EAAI,EAAIL,GAAYK,CAAO,EAAI,EAAI,EAExG,EAED,kBAAkBA,EAAS,CACzB,OAAOL,GAAYK,CAAO,EAAI,GAC/B,EAED,qBAAqBA,EAAS,CAC5B,OAAOL,GAAY,kBAAoBK,CACxC,CACH,EC7BME,GAAUd,GACbC,EAAA,qBAAI,UAAU,4BACbA,EAAA,cAAC,IAAE,WAAWc,GAAW,2DAA4Df,EAAM,OAAO,EAAG,CACvG,ECLIgB,GAAW,CACf,QAAS,CACP,EAAG,CAAE,QAAS,EAAG,gBAAiB,GAAO,kBAAmB,EAAO,EACnE,EAAG,CAAE,QAAS,EAAG,gBAAiB,GAAO,kBAAmB,EAAM,EAClE,EAAG,CAAE,QAAS,IAAK,gBAAiB,GAAO,kBAAmB,EAAO,EACrE,EAAG,CAAE,QAAS,EAAG,gBAAiB,GAAM,kBAAmB,EAAO,EAClE,EAAG,CAAE,QAAS,IAAK,gBAAiB,GAAO,kBAAmB,EAAM,EACpE,EAAG,CAAE,QAAS,GAAI,gBAAiB,GAAO,kBAAmB,EAAO,EACpE,EAAG,CAAE,QAAS,GAAI,gBAAiB,GAAO,kBAAmB,EAAM,EACnE,EAAG,CAAE,QAAS,IAAK,gBAAiB,GAAO,kBAAmB,EAAO,CACtE,EAED,YAAYC,EAAY,CACtB,MAAMC,EAAU,IAAI,SAASD,CAAU,EACvC,IAAIE,EAAc,EAElB,GAAID,EAAQ,UAAU,CAAC,IAAM,MAAQ,CACnC,IAAIE,EAAM,EACNC,EAAWH,EAAQ,WAEvB,KAAOE,EAAMC,EAAW,GAAG,CACzB,MAAMC,EAASJ,EAAQ,UAAUE,CAAG,EAGpC,OAFAA,GAAO,EAECE,EAAM,CACZ,IAAK,OAEHD,EADmBH,EAAQ,UAAUE,CAAG,EAChBA,EACxBA,GAAO,EACP,MACF,IAAK,KACHD,EAAcD,EAAQ,UAAUE,EAAM,EAAG,EAAK,EAC9CC,EAAW,EACX,KACH,CACF,CACF,CACD,OAAOF,CACR,CACH,EClCMI,GAAmB,GAEzB,MAAMC,WAAgBvB,EAAM,SAAU,CACpC,YAAYD,EAAO,CACjB,MAAMA,CAAK,EACX,KAAK,MAAQ,CACX,OAAQ,GACR,MAAO,GAEX,CAEA,mBAAoB,CAClB,KAAK,WAAa,GAClB,KAAK,YAAY,CACnB,CAEA,sBAAuB,CACrB,KAAK,WAAa,EACpB,CAEA,QAAS,CACP,MAAMyB,EAAW,CACf,MAAOF,GACP,OAAQA,EAAA,EAIR,OAAAtB,EAAA,cAAC,OACC,aAAY,KAAK,MAAM,MAAQ,QAAU,KAAK,MAAM,KAAK,KACzD,UAAU,kBACV,KAAM,KAAK,MAAM,MAAQ,SAAW,OACpC,SAAS,IACT,QAAS,KAAK,MAAM,MAAQ,IAAM,KAAK,MAAM,mBAAqB,KAClE,WAAY,KAAK,MAAM,MAAQ,IAAM,KAAK,MAAM,mBAAqB,MAEpE,KAAK,MAAM,wBACT,MACE,UAAK,MAAM,MACRA,EAAA,cAAC,OACD,UAAU,QACV,MAAOwB,CAAA,EAENxB,EAAA,sBAAK,UAAU,YACbA,EAAA,mBAAE,UAAU,uCAAuC,EACpDA,EAAA,cAAC,IAAE,WAAU,4CAA4C,CAC3D,CACF,EACGA,EAAA,yBAAKA,EAAA,wBAAO,OAAQsB,GAAkB,IAAI,QAAS,GACnDtB,EAAA,mBAAE,IAAI,eAAe,UAAU,iCAC7B,OAAK,MAAM,KAAK,MAAQ,KAAK,MAAM,KAAK,IAAK,CAClD,CAEJ,EAGD,CAAC,KAAK,MAAM,QACXA,EAAA,cAAC,OAAI,MAAOwB,CAAA,EACTxB,EAAA,cAAAyB,GAAA,IAAQ,CACX,EAIR,CAGA,aAAc,CACZ,IAAIC,EAAY,KACZhB,EAAO,KAAK,MAAM,KAClBiB,EAAS,IAAI,WAEjBA,EAAO,OAASC,EAChBD,EAAO,cAAcjB,CAAI,EAEzB,SAASkB,EAAeC,EAAO,CAC7B,GAAKH,EAAU,WAGX,KAAAI,EAAQ,IAAI,MACVA,EAAA,IAAMD,EAAM,OAAO,OAEzBC,EAAM,OAASC,EACfD,EAAM,QAAUE,EAClB,CAEA,SAASA,GAAe,CACZN,EAAA,MAAM,oBAAoBhB,CAAI,EACxCgB,EAAU,SAAS,CACjB,OAAQ,GACR,MAAO,GACR,CACH,CAEA,SAASO,EAA2BC,EAAQ,CACpC,MAAAC,EAAS,OAAO,KAAKD,EAAO,MAAM,SAAS,EAAE,CAAC,CAAC,EAC/CE,EAASD,EAAO,OAClB,IAAAE,EAAQ,IAAI,WAAWD,CAAM,EAEjC,QAASE,EAAI,EAAGA,EAAIF,EAAQE,IAC1BD,EAAMC,CAAC,EAAIH,EAAO,WAAWG,CAAC,EAGhC,OAAOD,EAAM,MACf,CAEA,SAASN,EAAcF,EAAO,CAC5B,MAAMU,EAASN,EAA2BJ,EAAM,OAAO,GAAG,EAG1D,IAFC,OAAO,KAAO,OAAO,WAAW,gBAAgB,KAAK,GAAG,EAErD,CAACH,EAAU,WACb,OAEFA,EAAU,SAAS,CACjB,OAAQ,GACT,EAEK,MAAE,QAAAc,EAAS,gBAAAC,EAAiB,kBAAAC,GAAsB3B,GAAS,QAAQA,GAAS,YAAYwB,CAAM,CAAC,GAAKxB,GAAS,QAAQ,CAAC,EAC1H4B,EAAuBH,GAAW,IAAMA,GAAW,IACnDI,EAASlB,EAAU,KAAK,OAE1B,IAAImB,EACFC,EACAC,EAEEJ,GACFI,EAAS,KAAK,MAAQ,EAAMzB,GAAmB,KAAK,MAAS,EACtDsB,EAAA,MAAQ,KAAK,OAASG,EACtBH,EAAA,OAAS,KAAK,MAAQG,EACpBF,EAAAD,EAAO,OAAS,KAAK,MACrBE,EAAAF,EAAO,MAAQ,KAAK,SAE7BG,EAAS,KAAK,OAAS,EAAMzB,GAAmB,KAAK,OAAU,EACxDsB,EAAA,MAAQ,KAAK,MAAQG,EACrBH,EAAA,OAAS,KAAK,OAASG,EACrBF,EAAAD,EAAO,OAAS,KAAK,OACrBE,EAAAF,EAAO,MAAQ,KAAK,OAGvBG,EAAA,KAAK,IAAIF,EAAQC,CAAM,EAC/B,MAAME,GAAiBJ,EAAO,MAAQ,KAAK,MAAQG,GAAS,EAC1DE,GAAiBL,EAAO,OAAS,KAAK,OAASG,GAAS,EAEpDG,EAAMN,EAAO,WAAW,IAAI,EAClCM,EAAI,UAAU,EAAG,EAAGN,EAAO,MAAOA,EAAO,MAAM,EAGzC,MAAAO,EAAUzB,EAAU,KAAK,aAC/ByB,EAAQ,MAAM,MAAQ,GAAGP,EAAO,KAAK,KAErCM,EAAI,UAAUN,EAAO,MAAQ,EAAGA,EAAO,OAAS,CAAC,EACjDM,EAAI,OAAOV,GAAW,KAAK,GAAK,IAAI,EAEhCE,EACEQ,EAAA,MAAM,GAAI,CAAC,EACNT,GACLS,EAAA,MAAM,EAAG,EAAE,EAGbA,EAAA,UAAU,CAACN,EAAO,MAAQ,EAAG,CAACA,EAAO,OAAS,CAAC,EAE/CM,EAAA,UACF,KAAM,EAAG,EACT,KAAK,MAAO,KAAK,OACjBF,EAAeC,EAAe,KAAK,MAAQF,EAAO,KAAK,OAASA,CAAA,CAEpE,CACF,CACF,CC1KA,MAAMK,GACJrD,GAAAC,EAAA,cAAC,UACC,aAAW,SACX,UAAU,sBACV,UAAWD,EAAM,cACjB,QAASA,EAAM,cAEdC,EAAA,sBAAK,UAAU,mEACbA,EAAA,mBAAE,UAAU,4BAA4B,EACzCA,EAAA,cAAC,IAAE,WAAU,sCAAsC,CACrD,CACF,ECRIqD,GAAyBtD,mBAE1B,MAAI,WAAU,UACZC,EAAA,cAAAuB,GAAA,CAAS,GAAGxB,CAAO,GACnBC,EAAA,cAAAsD,GAAA,CAAa,aAAc,IAAMvD,EAAM,kBAAkBA,EAAM,IAAI,EAAG,CACzE,EAIJsD,GAAc,UAAY,CACxB,KAAMhD,GAAU,OAAO,WACvB,kBAAmBA,GAAU,KAC7B,gBAAiBA,GAAU,IAC7B,ECTA,IAAIkD,GAAgBC,GAAiB,CACnC,iBAAkB,CACT,OACJ,OAAQ,GAEb,EACA,mBAAoB,CAClB,IAAIC,EAA0BC,GAAe,SAAS,KAAK,cAAc,EACzE,EAAEC,GAAS,YAAY,IAAI,CAAC,EAAE,QAAQ,aAAa,EACrB,GAAG,SAAUF,CAAuB,EACpC,GAAG,SAAUA,CAAuB,EAElE,KAAK,eAAe,CACtB,EACA,sBAAuB,CACrB,EAAEE,GAAS,YAAY,IAAI,CAAC,EAAE,QAAQ,aAAa,EAAE,IAAI,QAAQ,EACrB,IAAI,QAAQ,CAC1D,EACA,gBAAiB,CACX,IAAAC,EAAY,KAAK,MAAM,WAAa,IAEpCC,EAAYF,GAAS,YAAY,IAAI,EAAE,sBAAsB,EAC7DG,EAAY,OAAO,YACnBC,EAAYF,EAAO,IAAMC,EACzBE,EAAYH,EAAO,OAASA,EAAO,IAEnCI,EAAaF,IAAQ,GAAMA,GAAQD,EAAY,OAAO,YAAcF,GAClDG,EAAMC,EAAWF,EAAYF,EAEnD,KAAK,SAAS,CACZ,OAAQK,CAAA,CACT,CACH,EAEA,QAAS,CACH,OAAC,KAAK,MAAM,OASdjE,EAAA,cAAC,KAAK,MAAM,cAAX,CACC,KAAM,KAAK,MAAM,KACjB,SAAU,KAAK,MAAM,SACrB,SAAU,KAAK,MAAM,SACrB,gBAAiB,KAAK,MAAM,gBAC5B,iBAAkB,KAAK,MAAM,iBAC7B,oBAAqB,KAAK,MAAM,oBAChC,kBAAmB,KAAK,MAAM,kBAC9B,SAAU,KAAK,MAAM,SACrB,WAAY,KAAK,MAAM,WACvB,eAAgB,KAAK,MAAM,iCAjB1B,MAAI,WAAU,0BACbA,EAAA,cAACyB,OAAQ,CACX,CAkBN,CACF,CAAC,EC7DD,MAAMyC,WAAqBlE,EAAM,SAAU,CACzC,YAAYD,EAAO,CACjB,MAAMA,CAAK,EAKboE,GAAA,iBAAY,CAAC,CAAE,OAAQC,KAAU,CAC/B,KAAK,SAAS,CACZ,WAAY,CACV,OAAQA,EAAI,aACZ,MAAOA,EAAI,WACb,EACD,IAEHD,GAAA,oBAAe,IAAM,CACf,KAAK,MAAM,UAAY,KAAK,MAAM,KAAK,QACzC,KAAK,MAAM,SAAS,KAAK,MAAM,IAAI,CACrC,GAGFA,GAAA,sBAAiB,IAAM,CACjB,KAAK,MAAM,YAAc,KAAK,MAAM,KAAK,QAC3C,KAAK,MAAM,WAAW,KAAK,MAAM,IAAI,CACvC,GArBA,KAAK,MAAQ,CAAE,WAAY,CAAG,GAC9B,KAAK,UAAY,KAAK,UAAU,KAAK,IAAI,CAC3C,CAsBA,QAAS,CACP,MAAM1E,EAAM,CAAC,QAAS,YAAa,KAAK,EAAE,OACxC,CAAC4E,EAAMC,IAAQD,GAAQ,KAAK,MAAM,KAAKC,CAAG,EAC1C,MAEIC,EAAe,KAAK,MAAM,KAAK,SAAW,KAAK,MAAM,KAAK,SAAW,KAAK,MAAM,KAAK,MACrF,CAAE,MAAAC,EAAO,OAAAR,CAAO,EAAI,KAAK,MAAM,WAE/BS,EAAe,IAAM,CACzB,GAAI,KAAK,MAAM,kBAEX,OAAAzE,EAAA,cAACsD,GAAA,CACC,aAAc,IAAM,KAAK,MAAM,kBAAkB,KAAK,MAAM,IAAI,IAItE,GAAI,KAAK,MAAM,SACb,uBACG,OAAK,WAAU,iBAAiB,QAAS,KAAK,cAC7C,EAAAtD,EAAA,cAAC,IAAE,WAAU,2BAA4B,GACzCA,EAAA,cAAC,IAAE,WAAU,sCAAsC,CACrD,GAIF,OAAAA,EAAA,cAAC,OACC,UAAWc,GACT,kBACA,CAAE,SAAU,KAAK,MAAM,QAAS,EAChC,CAAE,OAAQ,KAAK,MAAM,iBAAkB,CACzC,GACAd,EAAA,cAAC,UACC,aAAY,KAAK,MAAM,KAAK,MAC5B,eAAc,KAAK,MAAM,SACzB,UAAWc,GAAW,gBAAgB,EACtC,KAAM,KAAK,MAAM,kBAAoB,OAAS,WAC9C,MAAO,CACL,gBAAiB,CAAC,KAAK,MAAM,iBAAmB,OAAOrB,CAAG,GAC5D,EACA,QAAS,KAAK,MAAM,SAAW,KAAK,eAAiB,KAAK,cACzD,KAAK,MAAM,iBACTO,EAAA,qBAAI,IAAKP,EAAK,OAAQ,KAAK,UAAW,IAAK8E,CAAc,EAE9D,EACE,KAAK,MAAM,gBAAmBvE,EAAA,mBAAE,MAAO,CAAE,MAAAwE,CAAa,EAAG,UAAU,gBAChED,CACH,EACDE,EAAa,EAGtB,CACF,CAEAP,GAAa,UAAY,CACvB,KAAM7D,GAAU,OAAO,WACvB,kBAAmBA,GAAU,KAC7B,SAAUA,GAAU,KACpB,WAAYA,GAAU,KACtB,SAAUA,GAAU,KACpB,gBAAiBA,GAAU,KAC3B,eAAgBA,GAAU,IAC5B,ECzFA,MAAMqE,GACJ3E,GAAAC,EAAA,cAAC,UACC,UAAU,yBACV,QAAS,IAAMD,EAAM,SAASA,EAAM,KAAK,KAAK,EAC9C,MAAO,CAAC,gBAAiB,QAAQA,EAAM,KAAK,MAAM,KAAK,IAAI,EAC3D,aAAYA,EAAM,KAAK,MAAM,uBAE5B,MAAI,WAAU,yBACZA,EAAM,KAAK,MAAM,KACpB,CACF,EAGF2E,GAAoB,UAAY,CAC9B,KAAMrE,GAAU,OAAO,WACvB,SAAUA,GAAU,KAAK,UAC3B,ECTA,MAAMsE,GAAsB5E,GAAA,CACpB,MAAA6E,EAAQ7E,EAAM,OAAS,GAE7B,OACGC,EAAA,qBAAI,UAAWc,GAAW,aAAcf,EAAM,OAAO,GACnD6E,EAAM,IAAIC,EAAY,MAAI,CAC7B,EAIO,SAAAA,EAAWnE,EAAM4B,EAAG,CACvB,IAAAwC,EAEJ,OAAQpE,EAAK,OAAQ,CACnB,IAAK,MACaoE,EAAAZ,GAChB,MACF,IAAK,QACaY,EAAAC,GAChB,MACF,IAAK,SACL,QACkBD,EAAAzB,GAChB,KACJ,CAGE,OAAArD,EAAA,cAACuD,GAAA,CACC,KAAA7C,EACA,IAAK,GAAK4B,GAAK5B,EAAK,MAAQA,EAAK,KACjC,SAAUX,EAAM,WAAaA,EAAM,WAAWW,CAAI,EAAI,GACtD,cAAAoE,EACA,gBAAiB/E,EAAM,gBACvB,oBAAqBA,EAAM,oBAC3B,iBAAkBA,EAAM,iBACxB,kBAAmBA,EAAM,kBACzB,SAAUA,EAAM,aAChB,WAAYA,EAAM,eAClB,eAAgBA,EAAM,gBAG5B,CACF,EClDMiF,GAAe,IAAM,CACzB,MAAMC,EAAc,IAAM,CACxB,OAAO,iBAAmB,GACTC,IAAA,EAIjB,OAAAlF,EAAA,cAAC,MAAI,WAAU,aACb,EAAAA,EAAA,cAAC,IAAE,WAAU,qBAAsB,GAClCA,EAAA,oBAAG,UAAU,kCAAiC,MAAImF,GAAM,KAAK,SAAO,EACpEnF,EAAA,uBAAM,UAAU,WAAU,uBAAqBmF,GAAM,KAAK,iBAAe,EAC1EnF,EAAA,cAAC,UACC,aAAW,SACX,UAAU,yCACV,QAASiF,CAAA,EACV,UAEDjF,EAAA,cAAC,QAAM,WAAU,2BAA0B,yCACzCA,EAAA,cAAC,KACC,aAAW,UACX,UAAU,UACV,KAAM,OAAO,KAAK,WAClB,KAAK,OACL,SAAS,IACT,MAAM,0BACP,UAGH,EACF,CAEJ,EC7BMoF,GAA+BrF,GAAA,CAEnC,MAAMsF,EAAU,+LAGd,OAAArF,EAAA,cAAC,MAAI,WAAWc,GAAW,eAAgBf,EAAM,QAASA,EAAM,OAAS,8BAAgC,QAAQ,CAC/G,EAAAC,EAAA,cAAC,UACC,KAAK,SACL,UAAU,QACV,aAAW,QACX,QAASD,EAAM,SAEfC,EAAA,cAAC,IAAE,WAAU,cAAe,EAC9B,kBACC,IAAE,WAAU,2BAA0B,sBAAoB,kBAC1D,IAAE,WAAU,kBACVA,EAAA,sBAAK,UAAU,cAAcD,EAAM,UAAU,GAAM,EACnDsF,CACH,CACF,CAEJ,EACAD,GAAoB,UAAY,CAC9B,OAAQ/E,GAAU,KAClB,QAASA,GAAU,KACnB,UAAWA,GAAU,OACrB,QAASA,GAAU,MACrB,ECxBA,MAAMiF,GACJvF,GAAAC,EAAA,cAAC,OAAI,UAAU,yBACZuF,GAAa,MACbvF,EAAA,qBAAI,UAAWc,GAAW,CAAC,gBAAiBf,EAAM,UAAU,CAC3D,EAAAC,EAAA,cAACwF,GAAA,CACC,OAAQzF,EAAM,UACd,QAASA,EAAM,iBACf,UAAWA,EAAM,UAAY,OAC/B,EACCC,EAAA,qBAAI,UAAWc,GAAW,+CAAgDf,EAAM,UAAY,SAAW,QAAQ,GAC7GC,EAAA,uBAAE,QACDA,EAAA,cAAC,KACC,aAAY,QAAQD,EAAM,SAAS,wBACnC,UAAU,UACV,KAAK,IACL,KAAK,OACL,QAAU0F,GAAM1F,EAAM,gBAAgB0F,CAAC,GAEtC,GAAG1F,EAAM,SAAS,uBACrB,CACF,CACF,CACF,CACF,EAGFuF,GAAY,UAAY,CACtB,UAAWjF,GAAU,KAAK,WAC1B,iBAAkBA,GAAU,KAC5B,UAAWA,GAAU,OACrB,gBAAiBA,GAAU,IAC7B,ECpCA,MAAMqF,GACJ3F,GAAAC,EAAA,cAAC,MAAI,WAAU,cACZA,EAAA,wBAAID,EAAM,KAAM,EACjBC,EAAA,cAAC,UACC,aAAYD,EAAM,MAClB,eAAcA,EAAM,YACpB,UAAWe,GAAW,eAAgB,CAAC,SAAUf,EAAM,YAAY,EACnE,SAAU,CAACA,EAAM,QACjB,KAAK,WACL,QAASA,EAAM,YAAcA,EAAM,WAAaA,EAAM,WACvD,cAECC,EAAA,cAAC,KAAE,UAAWc,GAAW,WAAYf,EAAM,YAAc,sBAAwB,eAAe,CAAG,EACrG,CACF,EAGF2F,GAAiB,UAAY,CAC3B,QAASrF,GAAU,KACnB,MAAOA,GAAU,OACjB,UAAWA,GAAU,KAAK,WAC1B,YAAaA,GAAU,KAAK,WAC5B,WAAYA,GAAU,KAAK,WAC3B,MAAOA,GAAU,MACnB,ECzBA,MAAMsF,GAAa5F,GAChBC,EAAA,qBAAI,UAAU,iCACbA,EAAA,cAAC,UACC,UAAWc,GAAW,mCAAmC,EACzD,GAAIf,EAAM,GACV,QAASA,EAAM,mBAChB,WAED,CACF,ECLI6F,GAAwB7F,GACvBA,EAAM,OAAO,OAKhBC,EAAA,cAAC,OAAI,GAAG,YAAY,MAAO,CAAE,OAAQD,EAAM,OAAQ,SAAU,MAC3D,GAAAC,EAAA,cAAC,OAAI,UAAU,cAEXD,EAAM,OAAO,IAAI,CAAC8F,EAAOvD,IACvBtC,EAAA,cAACkE,GAAA,CACC,KAAM2B,EACN,SAAU9F,EAAM,WAAW8F,CAAK,EAChC,IAAK,UAAUA,EAAM,EAAE,IAAIvD,CAAC,GAC5B,SAAUvC,EAAM,SAChB,WAAYA,EAAM,WAClB,gBAAe,GAElB,GAGD,CAAC,CAACA,EAAM,eACRC,EAAA,cAAC8F,GAAA,CACC,GAAG,mBACH,kBAAmB/F,EAAM,kBAG/B,EACF,kBA1BQ0B,GAAQ,MA8BpBmE,GAAa,UAAY,CACvB,cAAevF,GAAU,KACzB,OAAQA,GAAU,OAAO,WACzB,WAAYA,GAAU,KAAK,WAC3B,SAAUA,GAAU,KAAK,WACzB,WAAYA,GAAU,KAAK,WAC3B,OAAQA,GAAU,MAAM,WACxB,MAAOA,GAAU,OAAO,UAC1B,EC7CA,MAAM0F,GAAuBhG,GAC1BC,EAAA,qBAAI,UAAU,+DACbA,EAAA,cAAC,UACC,UAAU,yBACV,MAAO,CAAE,gBAAiB,OAAOD,EAAM,aAAa,GAAI,EACxD,aAAW,YACX,QAASA,EAAM,iBAEdC,EAAA,qBAAI,UAAU,yBAAwB,WAAS,CAClD,EACAA,EAAA,cAAC,UACC,UAAU,yBACV,MAAO,CAAE,gBAAiB,OAAOD,EAAM,cAAc,GAAI,EACzD,aAAW,YACX,QAASA,EAAM,kBAEdC,EAAA,qBAAI,UAAU,yBAAwB,WAAS,CAClD,CACF,EClBIgG,GAAkB,IACtBhG,EAAA,cAAC,MAAI,WAAU,aAAY,oBAAkB,ECkCzCiG,GAAuB,IACvBC,GAA4B,GAE5BC,GAAiB3C,GAAiB,CACtC,OAAQ,CAACjD,GAAsB6F,GAAmBC,EAAiB,EAEnE,YAAa,mBAEb,iBAAkB,CACV,MAAE,IAAAC,CAAQ,SAET,OACL,cAAe,KACf,KAAM,SACN,MAAO,KACP,OAAQ,CAAC,EACT,WAAY,EACZ,UAAW,CAAC,EACZ,cAAe,EACf,SAAUA,GAAOA,EAAI,MAAM,UAAU,EACrC,UAAW,GAEf,EAEA,mBAAoB,CACb,WAAS,KAAK,OAAS,GAC5B,KAAK,cAAgB,KAAK,MAAM,SAAW,GAAK,GAChD,KAAK,iBAAmB,KAAK,MAAM,SAAW,GAAK,GAE9C,0BAAuBpG,GAAgB,SAAoBqG,GAAA,CAC1DA,EAAQ,OAASC,GAAM,OACzB,KAAK,SAAS,CACZ,SAAU,IACT,IAAM,CACP,KAAK,WAAW,EAChB,KAAK,UAAU,SAAU,KAAK,MAAM,WAAY,KAAK,aAAa,EAClE,KAAK,UAAU,YAAa,KAAK,MAAM,cAAe,KAAK,gBAAgB,EAC5E,CACH,CACD,EAED,KAAK,eAAiB,GAElB,KAAK,MAAM,WACb,KAAK,WAAW,EAChB,KAAK,UAAU,SAAU,KAAK,MAAM,WAAY,KAAK,aAAa,EAClE,KAAK,UAAU,YAAa,KAAK,MAAM,cAAe,KAAK,gBAAgB,EAE/E,EAEA,sBAAuB,CACLtG,GAAA,WAAW,KAAK,oBAAoB,CACtD,EAEA,QAAS,CACP,MAAMuG,GAAS,IAAM,CACf,QAAK,MAAM,SAAU,CACnB,QAAK,MAAM,MAAQ,SACrB,OAAO,KAAK,eAGV,QAAK,MAAM,MAAQ,YACrB,OAAO,KAAK,kBAGd,GAAI,KAAK,MAAM,eAAiB,KAAK,MAAM,MAAQ,eACjD,OAAO,KAAK,qBAGV,QAAK,MAAM,MAAQ,YACrB,OAAO,KAAK,iBAEhB,CAGE,OAAAzG,EAAA,cAAC0G,GAAA,CACC,UAAWvB,GAAM,KACjB,UAAW,KAAK,MAAM,UACtB,iBAAkB,KAAK,iBACvB,gBAAiB,KAAK,uBACxB,KAIF,OAAAnF,EAAA,cAAC,OACC,GAAI,wBAA0B,KAAK,MAAM,QACzC,MAAO,CAAE,OAAQ,KAAK,MAAM,MAAO,EACnC,UAAWc,GAAW,uBACpB,KAAK,MAAM,QACX,KAAK,MAAM,SAAW,KAAK,MAAM,KAAO,QACxC,CAAE,SAAU,CAAC,KAAK,MAAM,QAAS,CAAC,GACnC2F,CAAA,CAGP,EAEA,cAAe,CACP,MAAE,MAAAE,EAAO,OAAAC,CAAW,OAAK,MAC7BC,EAAe,EAAE,wBAAwB,EAAE,YAAY,GAAKZ,GAC5Da,EAAkB,EAAE,4BAA4B,EAAE,YAAY,GAAKZ,GACnEa,EAAmB,KAAK,MAAM,OAASF,EAAeC,EAEpD,OAAC,KAAK,MAAM,aAIZF,EAAO,SAAW,kBACZI,GAAgB,MAIxBhH,EAAA,cAAC,MAAI,WAAU,aACb,EAAAA,EAAA,cAAC+F,GAAA,CACC,cAAe,KAAK,SAAS,QAAQ,EACrC,eAAgB,KAAK,SAAS,WAAW,EACzC,gBAAiB,IAAM,KAAK,iBAAiB,WAAW,EACxD,iBAAkB,IAAM,KAAK,iBAAiB,WAAW,EAE3D,EAAA/F,EAAA,cAAC0F,GAAA,CACC,QAAO,GACP,MAAM,oBACN,MAAM,aACN,YAAa,KAAK,kBAAkBkB,CAAM,EAC1C,UAAW,IAAM,KAAK,gBAAgBA,CAAM,EAC5C,WAAY,IAAM,KAAK,iBAAiBA,CAAM,EAEhD,EAAA5G,EAAA,cAACiH,GAAA,CACC,cAAeN,EAAQC,EAAO,OAC9B,OAAQG,EACR,WAAY,KAAK,WACjB,OAAQH,EACR,MAAOD,GAAS,EAChB,kBAAmB,IAAM,KAAK,0BAA0B,QAAQ,EAChE,SAAU,KAAK,aACf,WAAY,KAAK,eAGjB,GAAC,CAAC,OAAO,SAAS,UAClB3G,EAAA,cAACwF,GAAA,CACC,OAAQ,KAAK,MAAM,UACnB,UAAWL,GAAM,KAAO,OACxB,QAAQ,mBACR,QAAS,KAAK,kBAGpB,EA1COnF,EAAA,cAACyB,GAAQ,WAAU,OAAQ,EA4CtC,EAEA,iBAAkB,CACZ,IAAC,KAAK,MAAM,aAAqB,OAAAzB,EAAA,cAACyB,GAAQ,WAAU,OAAQ,GAEhE,MAAMyF,EAAarH,GAAO,KAAK,IAAasH,IACnC,CACL,OAAQ,QACR,MAAAA,CAAA,EAEH,EAAE,KAAK,CAACC,EAAGC,IAAMA,EAAE,MAAM,GAAKD,EAAE,MAAM,EAAE,EAEzC,OACGpH,EAAA,qBAAI,IAAI,cAAc,UAAU,oBAC/BA,EAAA,cAACC,GAAA,CACC,MAAM,YACN,YAAa,IAAM,KAAK,iBAAiB,SAAU,EAAK,IAGxDiH,EAAW,OACTlH,EAAA,cAAC2E,GAAA,CACC,MAAOuC,EACP,WAAY,KAAK,WACjB,eAAe,OACf,aAAc,KAAK,oBACnB,eAAgB,GAChB,gBAAe,GACjB,EAEClH,EAAA,cAAAgH,GAAA,IAAgB,CAEvB,CAEJ,EAEA,oBAAqB,CACb,MAAE,cAAAM,CAAc,EAAI,KAAK,MACzBC,EAAe,KAAK,eAAeD,EAAc,EAAE,EAEzD,GAAI,CAACC,EAED,OAAAvH,EAAA,cAAC,OACC,UAAU,2BACV,IAAI,gBAEJA,EAAA,cAACC,GAAA,CACC,MAAOqH,EAAc,MACrB,YAAa,IAAM,KAAK,iBAAiB,WAAW,EACtD,EACAtH,EAAA,cAACyB,GAAQ,WAAU,OAAQ,IAK7B,GAAA8F,EAAa,OAAO,OACtB,OACGvH,EAAA,qBAAI,IAAI,eAAe,UAAU,sBAChCA,EAAA,cAACC,GAAA,CACC,MAAOqH,EAAc,MACrB,YAAa,IAAM,KAAK,iBAAiB,WAAW,EACtD,EACC,KAAK,MAAM,eACVtH,EAAA,cAAC0F,GAAA,CACC,QAAO,GACP,MAAM,oBACN,MAAO8B,GAAWD,EAAa,OAAO,OAAQ,OAAO,EACrD,YAAa,KAAK,kBAAkBA,EAAa,MAAM,EACvD,UAAW,IAAM,KAAK,gBAAgBA,EAAa,MAAM,EACzD,WAAY,IAAM,KAAK,iBAAiBA,EAAa,MAAM,EAI/D,EAAAvH,EAAA,cAAC2E,GAAA,CACC,MAAO4C,EAAa,OACpB,WAAY,KAAK,WACjB,eAAe,MACf,aAAc,KAAK,aACnB,eAAgB,KAAK,eACrB,gBAAe,IAEnB,CAGN,EAEA,iBAAkB,CAChB,KAAM,CAAE,UAAAE,EAAW,MAAAd,GAAU,KAAK,MAE5Be,EAAkBD,EAAU,OAAO,CAACpD,EAAMwB,IAAU,CAClD,MAAA8B,EAAiBC,GAAgB/B,EAAM,UAAU,EACvD,OAAAxB,EAAKsD,CAAc,EAAItD,EAAKsD,CAAc,GAAK,GAC1CtD,EAAAsD,CAAc,EAAE,KAAK9B,CAAK,EACxBxB,CACT,EAAG,CAAE,GAGH,OAAArE,EAAA,cAAC,MAAI,WAAU,gBACb,EAAAA,EAAA,cAACC,GAAA,CACC,MAAM,YACN,YAAa,IAAM,KAAK,iBAAiB,SAAU,EAAK,EAE1D,EAAAD,EAAA,cAAC,OAAI,GAAG,eACN,MAAO,CACL,OAAQ,KAAK,MAAM,OACnB,SAAU,MACZ,mBAEC,MAAI,WAAU,cAEX,OAAO,KAAK0H,CAAe,EAAE,IAAI,CAACG,EAAMvF,oBACrC,MAAI,KAAK,aAAaA,CAAC,GAAI,UAAU,gBACpC,EAAAtC,EAAA,cAAC0F,GAAA,CACC,QAAO,GACP,IAAKmC,EACL,MAAO,GAAGA,CAAI,qBACd,MAAOA,EACP,YAAa,KAAK,kBAAkBH,EAAgBG,CAAI,CAAC,EACzD,UAAW,IAAM,KAAK,gBAAgBH,EAAgBG,CAAI,CAAC,EAC3D,WAAY,IAAM,KAAK,iBAAiBH,EAAgBG,CAAI,CAAC,EAC/D,kBACC,MAAI,WAAU,cAEXH,EAAgBG,CAAI,EAAE,IACpBhC,GAAA7F,EAAA,cAACkE,GAAA,CACC,KAAM2B,EACN,IAAK,UAAUA,EAAM,EAAE,GACvB,SAAU,KAAK,WAAWA,CAAK,EAC/B,SAAU,KAAK,aACf,WAAY,KAAK,eACjB,gBAAe,IAElB,CAEL,CACF,CACD,EAGDc,EAAQc,EAAU,QAClBzH,EAAA,cAAC8F,GAAA,CACC,GAAG,sBACH,kBAAmB,IAAM,KAAK,0BAA0B,WAAW,GAGzE,EAEJ,CAEJ,EAEA,YAAa,CACP,KAAK,MAAM,UACbjG,GAAO,KAAK,IAAM,CAChB,KAAK,SAAS,CACZ,aAAc,GACf,EACF,CAEL,EAEA,WAAWiI,EAAMC,EAAMC,EAAS,CAC9B,MAAMC,EAAS,CACb,KAAAF,EACA,SAAUC,EACV,UAAWF,IAAS,YAAc,GAAO,QAGpC,wCAAoCI,GAAW,cAAcD,CAAM,CAC5E,EAEA,UAAUH,EAAMC,EAAMC,EAAS,CAC7B,MAAM,KAAK,WAAWF,EAAMC,EAAMC,CAAO,EAAG,CAC1C,YAAa,cACd,EACE,KAAKrI,GAAYA,EAAS,MAAM,EAChC,KAAaC,GAAA,CACPA,EAAA,OAAO,QAAiBiG,GAAA,CAC3BA,EAAM,OAAS,MAChB,EAEK,MAAAsC,EAAW,GAAGL,CAAI,OAExB,KAAK,SAAS,CACZ,CAACA,CAAI,EAAG,KAAK,MAAMA,CAAI,EAAE,OAAOlI,EAAK,MAAM,EAC3C,CAACuI,CAAQ,EAAG,EAAE,KAAK,MAAMA,CAAQ,EACjC,MAAOvI,EAAK,MACZ,CAACkI,EAAO,QAAQ,EAAG,EAClB,MAAM,KAAK,eAAeA,CAAI,CAAC,EACnC,EACA,MAAeM,GAAA,CACN,cAAM,SAAUA,CAAK,EAC7B,KAAK,SAAS,CAAE,CAACN,EAAO,QAAQ,EAAG,GAAM,EAC1C,CACL,EAEA,iBAAiBO,EAAMC,EAAW,GAAM,CACjC,WAAM,WAAWA,CAAQ,EAC9B,KAAK,SAAS,CAAE,KAAAD,EAAY,cAAe,IAAM,EACnD,EAEA,SAASA,EAAM,CACb,GAAI,KAAK,MAAMA,CAAI,EAAE,OACnB,OAAO,KAAK,MAAMA,CAAI,EAAE,CAAC,EAAE,GAE/B,EAEA,aAAaxC,EAAO,CACd,KAAK,MAAM,KAAKnF,GAAQA,EAAK,KAAOmF,EAAM,EAAE,IAKhD,KAAK,MAAM,KAAK,CAAE,GAAGA,CAAO,GAE5B,KAAK,MAAM,kBACb,EAEA,eAAeA,EAAO,CACf,WAAQ,KAAK,MAAM,UAAY0C,EAAE,KAAO1C,EAAM,EAAE,EACrD,KAAK,MAAM,iBACb,EAEA,gBAAgB2C,EAAQ,CACtB,MAAMC,EAAkB,KAAK,MAAM,OAAO,CAACC,EAAKhI,KAC1CgI,EAAAhI,EAAK,EAAE,EAAI,GACRgI,GACN,CAAE,GAECC,EAAcH,EAAO,OAAQI,GAAMA,EAAE,QAAU,CAACH,EAAgBG,EAAE,EAAE,CAAC,EAAE,IAAKA,IAAO,CAAE,GAAGA,CAAI,IAClG,KAAK,MAAQ,KAAK,MAAM,OAAOD,CAAW,EAE1C,KAAK,MAAM,iBACb,EAEA,iBAAiBH,EAAQ,CACvB,KAAK,MAAQ,KAAK,MAAM,OAAYD,GAAA,CAACC,EAAO,KAAUI,GAAAL,EAAE,KAAOK,EAAE,EAAE,CAAC,EAEpE,KAAK,MAAM,iBACb,EAEA,WAAW/C,EAAO,CAET,OADK,KAAK,MAAM,IAAInF,GAAQA,EAAK,EAAE,EAC/B,SAASmF,EAAM,EAAE,CAC9B,EAEA,wBAAyB,CACvBgD,GAAsB,YAAY,QAAQ,CAC5C,EAEA,kBAAkBL,EAAQ,CACxB,GAAI,CAACA,EAAO,OAAe,SAE3B,KAAK,uBAAuB,EAE5B,MAAMM,EAAU,KAAK,MAAM,OAAO,CAACzE,EAAMkE,KAClClE,EAAAkE,EAAE,EAAE,EAAI,GACNlE,GACN,CAAE,GAEL,OAAOmE,EAAO,MAAMI,GAAKE,EAAQF,EAAE,EAAE,CAAC,CACxC,EAEA,oBAAoBnD,EAAG,CACrBA,EAAE,eAAe,EAEjB,KAAK,SAAS,CACZ,cAAe,KAChB,EAEG,OAAO,KAAK,MAAM,YAAe,YACnC,KAAK,MAAM,aAGT,OAAO,KAAK,MAAM,qBAAwB,YAC5C,KAAK,MAAM,qBAEf,EAEA,oBAAoB0B,EAAO,CAczB,GAbA,KAAK,SAAS,CACZ,cAAeA,EACf,KAAM,eACP,EAEG,OAAO,KAAK,MAAM,YAAe,YAC9B,WAAM,WAAW,EAAI,EAGxB,OAAO,KAAK,MAAM,qBAAuB,YAC3C,KAAK,MAAM,sBAGT,KAAK,eAAeA,EAAM,EAAE,EAC9B,OAGF,MAAM4B,EAAO,KAEb,MAAM5B,EAAM,KAAM,CAChB,YAAa,aACd,GACC,KAAKxH,GAAYA,EAAS,MAAM,EAChC,KAAKC,GAAQoJ,EAAcpJ,CAAI,CAAC,EAElC,SAASoJ,EAAcpJ,EAAM,CACtBA,EAAA,OAAO,QAAiBiG,GAAA,CAC3BA,EAAM,OAAS,MAChB,EAEGkD,EAAK,eAAe5B,EAAM,EAAE,EAC9B4B,EAAK,eAAe5B,EAAM,EAAE,EAAE,OAAS4B,EAAK,eAAe5B,EAAM,EAAE,EAAE,OAAO,OAAOvH,EAAK,MAAM,EAEzFmJ,EAAA,eAAe5B,EAAM,EAAE,EAAIvH,EAGlCmJ,EAAK,YAAY,CACnB,CACF,EAEA,sBAAsBtD,EAAG,CACvBA,EAAE,eAAe,EACX,MAAAwD,EAAqB,KAAK,MAAM,UACtC,KAAK,SAAS,CAAE,UAAW,CAACA,CAAoB,EAClD,EAEA,kBAAmB,CACjB,KAAK,SAAS,CAAE,UAAW,EAAO,EACpC,EAEA,QAAS,CACP,KAAK,SAAS,CACZ,cAAe,KACf,KAAM,SACP,CACH,EAEA,0BAA0BC,EAAQ,CAChC,EAAE,IAAIA,CAAM,sBAAsB,EAAE,SAAS,MAAM,EACnD,KAAK,UAAUA,EAAQ,KAAK,MAAM,GAAGA,CAAM,MAAM,EAAG,KAAK,GAAGA,CAAM,SAAS,CAAC,CAC9E,EAEA,eAAeA,EAAQ,CACrB,MAAMC,EAAU,EAAE,IAAID,CAAM,iCAAiC,EAAE,CAAC,EACrDC,KAAQ,eAAe,CAAE,SAAU,SAAU,MAAO,QAAS,OAAQ,MAAO,CACzF,CACF,CAAC,ECjhBD,IAAIC,IAAmB,SAASC,EAAU,CACxC,IAAIC,EAAoBC,EAAaC,EAA0BC,EAAuBC,EAAUC,EAA8BC,EAE9H,OAAAF,EAAW,CACT,QAAS,UACT,SAAU,WACV,OAAQ,SACR,UAAW,YACX,OAAQ,SACR,SAAU,UACd,EAEEF,EAA2B,GAE3BC,EAAwB,GAExBE,EAA+B,GAE/BC,EAA2B,GAE1B,UAAW,CACV,IAAIC,EAAgBC,EAAiBC,EAAiBC,EAAmBC,EAAwBC,EAAoBC,EACrH,OAAAN,EAAkB,UAAW,CAC3B,SAASA,EAAeO,EAAQC,EAAY,CAC1C,KAAK,OAASD,EACd,KAAK,WAAaC,CACnB,CAED,OAAAR,EAAe,UAAU,GAAK,SAASxE,EAAS,CAC9C,OAAOA,EAAQ,MAAM,KAAK,MAAM,CACxC,EAEMwE,EAAe,UAAU,MAAQ,SAASxE,EAAS,CACjD,OAAOA,EAAQ,QAAQ,KAAK,OAAQ,EAAE,CAC9C,EAEMwE,EAAe,UAAU,OAAS,SAASxE,EAAS,CAClD,GAAI,OAAOA,GAAY,UAAY,KAAK,GAAGA,CAAO,EAChD,OAAO,KAAK,WAAW,KAAK,MAAMA,CAAO,CAAC,CAEpD,EAEawE,CACb,IACII,EAAyB,SAASrK,EAAM,CACtC,IAAI0C,EAAGgI,EAAyBC,EAUhC,IATA3K,EAAQ,UAAW,CACjB,GAAI,CACF,OAAO,KAAK,MAAMA,CAAI,CACvB,MAAe,CACd,MAAO,CACL,IAAKA,CACjB,CACS,CACT,IACW0C,EAAI,EAAGiI,EAAMf,EAAyB,OAAQlH,EAAIiI,EAAKjI,IAC1DgI,EAA0Bd,EAAyBlH,CAAC,EACpDgI,EAAwB,CAAE,IAAK1K,EAAK,IAAK,MAAOA,EAAK,MAAO,SAAUA,EAAK,YAAa,YAAaA,EAAK,YAAa,cAAeA,EAAK,EAAE,CAAE,CAGvJ,EACIoK,EAAoB,UAAW,CAC7B,IAAI1H,EAAGiI,EAAKC,EACZ,IAAKlI,EAAI,EAAGiI,EAAMd,EAAsB,OAAQnH,EAAIiI,EAAKjI,IACvDkI,EAAuBf,EAAsBnH,CAAC,EAC9CkI,GAGR,EAEIN,EAAqB,SAAStK,EAAM,CAClCA,EAAQ,UAAW,CACjB,GAAI,CACF,OAAO,KAAK,MAAMA,CAAI,CACvB,MAAe,CACd,MAAO,CACL,IAAKA,CACjB,CACS,CACT,IACM,IAAI0C,EAAGiI,EAAKE,EACZ,IAAKnI,EAAI,EAAGiI,EAAMZ,EAA6B,OAAQrH,EAAIiI,EAAKjI,IAC9DmI,EAA8Bd,EAA6BrH,CAAC,EAC5DmI,EAA4B7K,CAAI,CAGxC,EAEIuK,EAAe,SAASvK,EAAM,CAC5BA,EAAQ,UAAW,CACjB,GAAI,CACF,OAAOA,CACR,MAAe,CACd,MAAO,CACL,IAAKA,CACjB,CACS,CACT,IACM,IAAI0C,EAAGiI,EAAKG,EACZ,IAAKpI,EAAI,EAAGiI,EAAMX,EAAyB,OAAQtH,EAAIiI,EAAKjI,IAC1DoI,EAA0Bd,EAAyBtH,CAAC,EACpDoI,EAAwB9K,CAAI,CAGpC,EAEIkK,EAAkB,CAAC,IAAID,EAAe,mBAAoBI,CAAsB,EAAG,IAAIJ,EAAe,aAAcG,CAAiB,EAAG,IAAIH,EAAe,uBAAwBK,CAAkB,EAAG,IAAIL,EAAe,mBAAoBM,CAAY,CAAC,EAC5PJ,EAAkB,SAAStE,EAAG,CAC5B,IAAInD,EAAGiI,EAAKI,EACZ,GAAIlF,EAAE,SAAW4D,EACf,IAAK/G,EAAI,EAAGiI,EAAMT,EAAgB,OAAQxH,EAAIiI,EAAKjI,IACjDqI,EAAiBb,EAAgBxH,CAAC,EAClCqI,EAAe,OAAOlF,EAAE,IAAI,CAItC,EACW,OAAO,iBAAiB,UAAWsE,EAAiB,EAAK,CACpE,IAEET,EAAqB,SAAS3I,EAASsH,EAAQ2C,EAAqB,CAC/D,IAACC,EAIJ,GAHID,GAAuB,OACzBA,EAAsB,IAEpB,EAAClB,EAAS/I,CAAO,EAGrB,OAAAkK,EAAc,SAASpL,EAAKwI,EAAQ,CAClC,IAAI6C,EAAOC,EACX,OAAI9C,GAAU,OACZA,EAAS,IAEHxI,EAAM,IAAS,UAAW,CAChC,IAAIuL,EACJA,EAAU,GACV,IAAKF,KAAS7C,EACZ8C,EAAQ9C,EAAO6C,CAAK,EAChBC,GACFC,EAAQ,KAAKF,EAAQ,KAAOA,IAAU,WAAaC,EAAQ,mBAAmBA,CAAK,EAAE,EAGzF,OAAOC,CACf,IAAY,KAAK,GAAG,CACpB,EACI/C,EAAO,QAAUtH,EACjBsH,EAAO,WAAa,OAAO,SAAS,KAAK,QAAQ,OAAQ,EAAE,EAC3DA,EAAO,oBAAsB2C,EAC7B3C,EAAO,YAAc,GACR4C,EAAYxB,EAAW,SAAUpB,CAAM,CACxD,EAEEsB,EAAc,SAAS0B,EAAQ5F,EAAS,CACtC4F,EAAO,cAAc,YAAY5F,EAAS4F,EAAO,GAAG,CACxD,EAES,CACL,SAAUvB,EACV,mBAAoBJ,EACpB,YAAaC,EACb,gBAAiB,SAAS7J,EAAU,CAClC,OAAO8J,EAAyB,KAAK9J,CAAQ,CAC9C,EACD,WAAY,SAASA,EAAU,CAC7B,OAAO+J,EAAsB,KAAK/J,CAAQ,CAC3C,EACD,mBAAoB,SAASA,EAAU,CACrC,OAAOiK,EAA6B,KAAKjK,CAAQ,CAClD,EACD,aAAc,SAASA,EAAU,CAC/B,OAAOkK,EAAyB,KAAKlK,CAAQ,CAC9C,CACL,CAEA,GAAG,KAAKwL,WAAM,OAAO,eAAe,ECtKpC,MAAMC,WAA0BnL,EAAM,SAAU,CAC9C,YAAYD,EAAOqL,EAAS,CAC1B,MAAMrL,EAAOqL,CAAO,EAmCtBjH,GAAA,wBAA8BkH,GAAA,CAC5B,KAAK,SAAS,CACZ,aAAcA,CAAA,CACf,EAEDnL,GAAgB,SAAS,CACvB,KAAMoL,GAAe,YACrB,QAAAD,CAAA,CACD,IAzCD,KAAK,MAAQ,CACX,aAAc,OAElB,CAEA,mBAAoB,CACb,0BAAuBnL,GAAgB,SAAoBqG,GAAA,CAC9D,OAAQA,EAAQ,KAAM,CACpB,KAAKC,GAAM,eACT,KAAK,SAAS,CAAE,aAAc,MAAW,GACzC,KACJ,EACD,CACH,CAEA,sBAAuB,CACLtG,GAAA,WAAW,KAAK,oBAAoB,CACtD,CAEA,IAAI,OAAQ,CACJ,MAAE,kBAAAqL,CAAkB,EAAI,KAAK,QAEnC,OAAOA,EAAkBC,GAAwB,WAAW,GAAK,EACnE,CAEA,IAAI,YAAa,CACR,YAAK,MAAM,SAAW,CAC/B,CAEA,sBAAuB,CACb,YAAK,MAAM,KAAKC,GAAQA,EAAK,QAAQ,GAAK,CAAI,MACxD,CAaA,QAAS,CACP,GAAI,KAAK,WACA,YAGH,MAAE,aAAAC,CAAa,EAAI,KAAK,MACxBC,EAAc,KAAK,MAAM,IAAYF,IAClC,CACL,MAAOA,EAAK,IACZ,MAAOA,EAAK,OAEf,EAGC,OAAAzL,EAAA,cAAC,MAAI,WAAU,yFACb,EAAAA,EAAA,cAAC,SACC,QAAQ,oBACR,UAAU,6EAA4E,aAGxF,EAAAA,EAAA,cAAC4L,GAAA,CACC,UAAU,mEACV,GAAG,oBACH,MAAM,aACN,KAAK,qBACL,QAASD,EACT,MAAOD,GAAgB,KAAK,qBAAqB,EACjD,SAAU,KAAK,kBAEnB,CAEJ,CACF,CAEAP,GAAkB,aAAe,CAC/B,kBAAmB9K,GAAU,MAC/B,EC3EA,MAAMwL,IAAa,IAAM,CACnB,IAAC1G,GAAM,YACF,OAAAA,GAAM,KAAK,aAEtB,KAEM2G,GAActI,GAAiB,CACnC,OAAQ,CAACjD,GAAsB6F,GAAmBC,EAAiB,EACnE,YAAa,eAEb,iBAAkB,CACT,OACL,UAAW,KAEf,EAEA,mBAAoB,CACb,mBAAgBnG,GAAgB,SAAoBqG,GAAA,CACvD,OAAQA,EAAQ,KAAM,CACpB,KAAMC,GAAM,+BACV,KAAK,mBAAmBD,EAAQ,IAAKA,EAAQ,OAAO,EACpD,MACF,KAAMC,GAAM,oCACV,KAAK,uBAAuB,EAC5B,KACJ,EACD,CACH,EAEA,2BAA4B,CAC1B,KAAK,aAAa,EACF4C,GAAA,gBAAgB,CAAC,CAAE,IAAA3J,EAAK,MAAAsM,EAAO,SAAAC,EAAU,YAAAC,EAAa,cAAAC,EAAgB,QAAY,CAC5F,QAAK,MAAM,SAAU,CASvB,GARIzM,IAAQ,UAAUA,CAAG,IACvBA,EAAM,UAAUA,CAAG,GAEPwM,EAAA,OAAOA,GAAexM,CAAG,EAElC,WAAS,KAAK,OAAS,GAGxB,KAAK,MAAM,QAAaiB,EAAK,cAAgBuL,CAAW,EAC1D,OAGF,KAAK,MAAM,KAAK,CACd,IAAAxM,EACA,MAAAsM,EACA,SAAAC,EACA,OAAQ,MACR,YAAAC,EACA,cAAAC,CAAA,CACD,CACH,EACD,EAED9C,GAAgB,WAAW,IAAM,CAC3B,KAAK,MAAM,UACb,KAAK,MAAM,iBACb,CACD,EAEeA,GAAA,mBAAoBxJ,GAAS,CAC3C,MAAMuM,EAAU,OAAOvM,EAAK,KAAOA,CAAI,EACnC,KAAK,MAAM,WACR,WAAS,KAAK,OAAS,GAC5B,KAAK,MAAQ,KAAK,MAAM,OAAec,KAAK,cAAgByL,CAAO,EACnE,KAAK,MAAM,kBACb,CACD,EAEe/C,GAAA,aAAcxJ,GAAS,CACjC,KAAK,MAAM,UAAYA,IAAS,SAClC,KAAK,SAAS,CACZ,UAAWA,CAAA,CACZ,EACI,WAAM,WAAW,EAAI,GAGxB,KAAK,MAAM,UAAYA,IAAS,QAClC,KAAK,iBAAiB,MAAM,CAC9B,CACD,CACH,EAEA,QAAS,CACP,IAAIwM,EAAY,KAAK,UAAY,KAAK,UAAY,cAElD,MAAI,CAAC,KAAK,YAAc,KAAK,eAAiB,KAAK,MAAM,YAC3CA,EAAAhD,GAAgB,mBAAmB,KAAK,MAAM,QAAS,CAAE,MAAOyC,IAAa,EAAK,EAC9F,KAAK,cAAgB,oBAIpB,MACE,UAAK,MAAM,UAAY,KAAK,MAAM,WACjC7L,EAAA,cAACC,GAAA,CACC,MAAO,KAAK,MAAM,UAClB,YAAa,IAAM,CAAE,KAAK,iBAAiB,aAAa,CAAE,EAG9D,EAAAD,EAAA,cAAC,OAAI,GAAI,wBAAwB,KAAK,MAAM,OAAO,GACjD,UAAWc,GAAW,uBAAwB,QAAS,CAAE,cAAe,KAAK,MAAM,SAAU,EAAG,CAAE,SAAU,CAAC,KAAK,MAAM,UAAY,KAAK,MAAM,QAAS,CAAE,yBAA0B,KAAK,QAAQ,kBAAkB0K,GAAwB,WAAW,EAAG,EACzP,MAAO,CAAE,OAAQ,KAAK,MAAM,MAAO,GACnCxL,EAAA,cAAC,MAAI,WAAU,kBACb,EAAAA,EAAA,cAAC,UACC,aAAY,GAAG,KAAK,MAAM,KAAK,iBAC/B,UAAU,sBACV,YAAY,IACZ,GAAI,uBAAuB,KAAK,MAAM,OAAO,GAC7C,IAAYqM,GAAA,KAAK,OAASA,EAC1B,IAAKD,EACL,MAAO,GAAG,KAAK,MAAM,KAAK,kBAE9B,EAEJ,CAEJ,EAEA,mBAAmB9H,EAAK3D,EAAS,CAC3B,GAAAA,IAAY,KAAK,MAAM,QAAS,CAC5B,MAAA0E,EAAU,sBAAsBf,CAAG,GACzB8E,GAAA,YAAY,KAAK,OAAQ/D,CAAO,CAClD,CACF,EAEA,wBAAyB,EACtB,KAAK,OAAS,IAAI,QAAQ3E,GAAQ,KAAK,mBAAmBA,EAAK,aAAeA,EAAK,GAAG,CAAC,CAC1F,EAEA,iBAAiB4L,EAAY,CACvB,QAAK,MAAM,SAAU,CAClB,WAAM,WAAW,EAAK,EAC3B,KAAK,SAAS,CACZ,UAAW,KACZ,EACD,MAAMjH,EAAU,kBAAoBiH,EACpBlD,GAAA,YAAY,KAAK,OAAQ/D,CAAO,CAClD,CACF,EAEA,cAAe,CAEP,MAAAkH,GADS,OAAO,MAAQ,IACV,eAAiB,GAErC,KAAK,UAAYA,EAAK,KAAK,MAAM,OAAO,CAC1C,CACF,CAAC,EAEDT,GAAY,aAAe,CACzB,kBAAmBzL,GAAU,MAC/B,ECtKK,kBAAkB,UAAU,QAC/B,OAAO,eAAe,kBAAkB,UAAW,SAAU,CAC3D,MAAMX,EAAU8M,EAAMC,EAAS,CAC7B,MAAMC,EAAS,KAAK,KAAK,UAAUF,EAAMC,CAAO,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC,EACzDlC,EAAMmC,EAAO,OACbC,EAAM,IAAI,WAAWpC,CAAG,EAS9B,GARImC,EAAO,SAAW,GAIlBA,EAAO,SAAW,GAIlBA,EAAO,SAAW,EACpB,KAAM,8BAGR,QAASpK,EAAI,EAAGA,EAAIiI,EAAKjI,IACvBqK,EAAIrK,CAAC,EAAIoK,EAAO,WAAWpK,CAAC,EAG9B5C,EAAS,IAAI,KAAK,CAACiN,CAAG,EAAG,CAAE,KAAMH,GAAQ,WAAa,EAAC,CACxD,CACL,CAAG,ECxBH,MAAMI,WAAqB5M,EAAM,SAAU,CAA3C,kCAEEmE,GAAA,UAAK,eAAe0I,GAAA,CAAU,IAE9B1I,GAAA,qBAAyBtC,GAAA,CACnBA,EAAM,UAAY,IAAIA,EAAM,OAAO,OAAM,GAG/C,QAAS,CAEL,OAAA7B,EAAA,cAAC,SACC,aAAY,KAAK,MAAM,UACvB,UAAU,wDACV,SAAS,IACT,QAAS,KAAK,GACd,KAAK,SACL,UAAW,KAAK,eAEf,KAAK,MAAM,MAEZA,EAAA,cAAC,SACC,GAAI,KAAK,GACT,KAAK,OACL,UAAU,SACV,SAAQ,GACR,OAAQ,KAAK,MAAM,cAAc,qBACjC,SAAU,KAAK,MAAM,SACvB,EAGN,CACF,CChCA,MAAM8M,GAA2B/M,GAC/BC,EAAA,cAAC,SACC,GAAID,EAAM,MACV,UAAU,wBACV,KAAK,QACL,KAAK,SACL,MAAOA,EAAM,MACb,QAASA,EAAM,cAAgBA,EAAM,MACrC,SAAUA,EAAM,aAClB,ECXIgN,GAAa,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UAAU,EAErI,SAASC,IAAuB,CACrC,MAAMC,EAAM,IAAI,KAEhB,MAAO,eAAeF,GAAWE,EAAI,SAAU,EAAC,IAAIA,EAAI,QAAS,MAAKA,EAAI,YAAW,CAAE,EACzF,CCCA,MAAMC,WAAsBlN,EAAM,SAAS,CACzC,aAAc,CACN,QACN,KAAK,wBAAiC,KAAK,wBAAwB,KAAK,IAAI,EAC5E,KAAK,0BAAiC,KAAK,0BAA0B,KAAK,IAAI,EAC9E,KAAK,+BAAiC,KAAK,+BAA+B,KAAK,IAAI,EACnF,KAAK,4BAAiC,KAAK,4BAA4B,KAAK,IAAI,EAChF,KAAK,sBAAiC,KAAK,sBAAsB,KAAK,IAAI,EAE1E,KAAK,MAAQ,CACX,OAAQ,GACR,YAAa,MAEjB,CACA,2BAA4B,CAC1BH,GAAO,KAAK,IAAM,CAChB,KAAK,SAAS,CACZ,OAAQ,GACT,EACF,CACH,CACA,mBAAoB,CACb,KAAK,MAAM,aACd,KAAK,MAAM,gBAAgB,CACzB,MAAOmN,GAAqB,EAC7B,CAEL,CACA,QAAS,CACP,MAAMG,EAAYtN,GAAO,KAAK,IAAasH,IAClC,CACL,MAAOA,EAAM,GACb,MAAOA,EAAM,OAEhB,EAED,IAAIiG,EAAU,mBACVD,EAAU,SACDC,GAAA,6BAEb,MAAMC,EAAgBL,KAGpB,OAAAhN,EAAA,cAAC,YAAS,kBAAgB,sBAAsB,UAAU,gBACxD,EAAAA,EAAA,cAAC,IAAE,IAAG,uBAAwBoN,CAAS,EACpCpN,EAAA,qBAAI,UAAU,uBACZA,EAAA,qBAAI,UAAU,OACb,EAAAA,EAAA,cAAC,MAAI,WAAU,sBACb,EAAAA,EAAA,cAACsN,GAAA,CAAwB,MAAM,MACN,YAAa,KAAK,MAAM,YACxB,aAAc,KAAK,0BAC5CtN,EAAA,cAAC,QAAM,WAAU,mBAAmB,QAAQ,OAAM,YAElD,CACF,CACF,EACCA,EAAA,qBAAI,UAAU,OACb,EAAAA,EAAA,cAAC,SAAM,IAAI,iBACJ,UAAU,+BACV,KAAK,OACL,YAAcqN,EACd,aAAeA,EACf,SAAW,KAAK,sBAChB,QAAW,KAAK,0BACzB,EACF,EACArN,EAAA,cAAC,OAAI,UAAYc,GAAW,sBAAuB,CAAE,SAAUqM,EAAU,QAAU,CAAE,CAAC,GACnFnN,EAAA,qBAAI,UAAU,OACb,EAAAA,EAAA,cAAC,MAAI,WAAU,sBACb,EAAAA,EAAA,cAACsN,GAAA,CAAwB,MAAM,WACN,YAAa,KAAK,MAAM,YACxB,aAAc,KAAK,0BAC5CtN,EAAA,cAAC,QAAM,SAAQ,WAAW,UAAU,oBAAmB,iBAEvD,CACF,CACF,EACCA,EAAA,qBAAI,UAAU,OACb,EAAAA,EAAA,cAAC4L,GAAA,CAAO,KAAK,SACL,MAAO,KAAK,MAAM,aAAe,KAAK,MAAM,YAAY,IAAMuB,EAAU,CAAC,GAAKA,EAAU,CAAC,EAAE,MAC3F,QAASA,EACT,QAAS,KAAK,+BACd,SAAU,KAAK,4BACzB,EACF,CACJ,CAEJ,CACA,2BAA4B,CAC1B,KAAK,SAAS,CACZ,YAAa,MACd,CACH,CACA,gCAAiC,CAC/B,KAAK,SAAS,CACZ,YAAa,WACd,CACH,CACA,wBAAwB1H,EAAG,CACnB,MAAAsF,EAAQtF,EAAE,OAAO,MAEvB,KAAK,SAAS,CACZ,YAAasF,CAAA,CACd,EAEGA,GAAS,YAAc,CAAC,KAAK,MAAM,YAAY,IAAMlL,GAAO,KAAK,CAAC,GACpE,KAAK,4BAA4BA,GAAO,KAAK,CAAC,EAAE,EAAE,EAEhDkL,GAAS,OAAS,CAAC,KAAK,MAAM,YAAY,OAC5C,KAAK,sBAAsB,CAE/B,CACA,uBAAwB,CACtB,KAAK,MAAM,gBAAgB,CACzB,MAAO,KAAK,KAAK,gBAAgB,EAAE,MACpC,CACH,CACA,4BAA4BwC,EAAS,CAC/BA,GACF,KAAK,MAAM,gBAAgB,CACzB,GAAIA,CAAA,CACL,CAEL,CACF,CChIA,MAAMC,GAAa,CAAC,CAAE,QAAAC,EAAS,UAAAC,KAAgB,CAC7C,MAAMC,GAAQ,OAAO,YAAc,IAAIF,CAAO,EAE9C,OAAKE,kBAIG,IAAE,WAAAD,EAAsB,wBAAyB,CAAE,OAAQC,CAAQ,IAHlE,IAIX,EAEAH,GAAW,UAAY,CACrB,QAASnN,GAAU,OAAO,WAC1B,UAAWA,GAAU,MACvB,EAEAmN,GAAW,aAAe,CACxB,UAAW,IACb,ECOA,MAAMI,GAAwBpK,GAAiB,CAC7C,OAAQ,CAAChD,GAA6B4F,GAAmBC,EAAiB,EAC1E,YAAa,2BAEf,CAACmF,GAAwB,uBAAuB,EAAG,GAEjD,iBAAkB,CACV,MAAE,IAAAlF,CAAQ,SACX,kBAAQ,KAAK,OAAS,GAEpB,CACL,SAAUA,GAAOA,EAAI,MAAM,UAAU,EAEzC,EACA,mBAAoB,CACb,0BAAuBpG,GAAgB,SAAoBqG,GAAA,CAC1DA,EAAQ,OAASC,GAAM,OACzB,KAAK,SAAS,CACZ,SAAU,GACX,CACH,CACD,EACK,MAAA9E,EAAYiC,GAAS,YAAY,IAAI,EAC3CjC,EAAU,iBAAiB,WAAY,KAAK,eAAgB,EAAK,EACjEA,EAAU,iBAAiB,YAAa,KAAK,gBAAiB,EAAK,EACnEA,EAAU,iBAAiB,YAAa,KAAK,gBAAiB,EAAK,EACnEA,EAAU,iBAAiB,OAAQ,KAAK,WAAY,EAAK,CAC3D,EACA,sBAAuB,CACf,MAAAA,EAAYiC,GAAS,YAAY,IAAI,EAC3CjC,EAAU,oBAAoB,WAAY,KAAK,eAAgB,EAAK,EACpEA,EAAU,oBAAoB,YAAa,KAAK,gBAAiB,EAAK,EACtEA,EAAU,oBAAoB,YAAa,KAAK,gBAAiB,EAAK,EACtEA,EAAU,oBAAoB,OAAQ,KAAK,WAAY,EAAK,CAC9D,EACA,cAAcmM,EAAe,CAC3B,MAAMC,EAAaC,GAAgB,WACjC,KAAK,MAAM,IAAIxF,GAAKA,EAAE,eAAe,GAGjChC,EAAU,CACd,KAAMC,GAAM,UAAU,KACtB,cAAAqH,EACA,YAAa,SACb,WAAAC,EACA,WAAY,KAAK,MAAM,QAGzBE,GAAiB,qBAAqBzH,CAAO,CAC/C,EAEA,QAAS,CAEL,OAAAvG,EAAA,cAAC,OACC,GAAI,wBAA0B,KAAK,MAAM,QACzC,MAAO,CAAE,OAAQ,KAAK,MAAM,MAAO,EACnC,UAAWc,GACT,mCACA,KAAK,MAAM,QACX,CAAE,SAAU,CAAC,KAAK,MAAM,QAAS,CACnC,EACA,SAAS,KACTd,EAAA,cAAC,MAAI,WAAU,6DACbA,EAAA,cAAC,IAAE,WAAU,uCAAwC,GACpDA,EAAA,mBAAE,UAAU,4CAA4C,EACzDA,EAAA,cAAC,KAAG,WAAU,sCAAuC,YAAQ,EAC7DA,EAAA,cAAC,QAAM,qCAA8B,EACrCA,EAAA,cAAC,MAAI,WAAU,0BACbA,EAAA,cAAC4M,GAAA,CACC,MAAM,SACN,UAAU,SACV,SAAU,KAAK,sBACf,cAAe,KAAK,MAAM,eAE9B,EACA5M,EAAA,cAACwN,GAAA,CACC,QAAQ,uCACR,UAAU,iEAEd,EACAxN,EAAA,cAAC,MAAI,IAAG,UAAW,GACnBA,EAAA,cAAC,OACC,GAAG,WACH,UAAU,gFACTA,EAAA,qBAAI,UAAU,6BACZA,EAAA,qBAAI,UAAU,8BACZ,CAAC,CAAC,KAAK,MAAM,UACZA,EAAA,cAACkN,GAAA,CACC,YAAa,KAAK,MAAM,YACxB,gBAAiB,KAAK,0BAG1B,EAAAlN,EAAA,cAACmL,GAAkB,KACrB,CACF,EACAnL,EAAA,cAAC,OAAI,UAAU,0BACZ,IAAE,WAAU,+BAAgC,GAC7CA,EAAA,cAAC,MAAG,UAAU,0BAAyB,kBAAoB,EAC3DA,EAAA,cAAC,SAAM,UAAU,WAAU,2BAAyB,EACpDA,EAAA,cAAC4M,GAAA,CACC,MAAM,gBACN,UAAU,SACV,SAAU,KAAK,sBACf,cAAe,KAAK,MAAM,eAE9B,EAEA5M,EAAA,cAACwN,GAAA,CACC,QAAQ,uCACR,UAAU,gEACZ,CACF,EAGN,EAEA,0BAA0BrG,EAAO,CAC3B,KAAK,MAAM,uBACR,WAAM,sBAAsBA,CAAK,CAC1C,EAEA,WAAY,CACV,MACE,cAAe,SAAS,cAAc,MAAM,GAAK,CAAC,KAAK,MAAM,QAEjE,EAEA,eAAe1B,EAAG,CAChBA,EAAE,gBAAgB,EAClBA,EAAE,eAAe,CACnB,EAEA,YAAa,EACb,gBAAgBA,EAAG,CACjBA,EAAE,eAAe,EAEb,KAAK,gBAAkB,GAAK,aAAW,EAAE,SAAS,UAAU,CAClE,EAEA,gBAAgBA,EAAG,CACb,EAAE,KAAK,cAAgB,GAAK,aAAW,EAAE,YAAY,UAAU,CACrE,EAEA,WAAWA,EAAG,CACZA,EAAE,eAAe,EAEjB,KAAK,YAAc,EACjB,aAAW,EAAE,YAAY,UAAU,EAErC,MAAMb,EAAQ,MAAM,UAAU,MAAM,MAAMa,EAAE,aAAa,KAAK,EAC9D,YAAK,SAASb,CAAK,EAEZ,EACT,EAEA,wBAAyB,CACvBiE,GAAsB,eAAgB,EAAE,CAC1C,EAGA,sBAAsBpD,EAAG,CACvB,KAAK,uBAAuB,EAC5B,MAAMwI,EAAaxI,EAAE,OACfb,EAAQ,MAAM,KAAKqJ,EAAW,KAAK,EAEpCrJ,EAAM,SAEX,KAAK,SAASA,CAAK,EACnBqJ,EAAW,MAAQ,GACrB,EAEA,SAASrJ,EAAO,CACd,MAAMsJ,EAAgBtJ,EAAM,OAC1B,KAAK,MAAM,cAAc,oBAGrBsJ,EAAc,SAClB,KAAK,MAAQ,KAAK,MAAM,OAAOA,CAAa,EAC5C,KAAK,MAAM,kBAEf,EAEA,eAAezN,EAAUC,EAAM,CACzB,IAAAyN,EAAW,EAAE,WAER,OAAA1N,EAAA,OAAO,OAAQC,EAAK,IAAI,EAQ/B0N,EAAW1N,CAAI,EAGVyN,EAAS,UAEhB,SAASC,EAAW1N,EAAM,CACfD,EAAA,OAAO,OAAQC,CAAI,EAC5ByN,EAAS,QAAQ1N,CAAQ,CAC3B,CACF,CACF,CAAC,EAEDmN,GAAsB,aAAe,CACnC,cAAe,IAAIS,EACrB;;;;;;mBClOC,SAA0CC,EAAMC,EAAS,CAExDC,EAAA,QAAiBD,GAOlB,GAAE,OAAQ,UAAW,CACtB,OAAiB,SAASE,EAAS,CAEzB,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,EAAU,CAGtC,GAAGF,EAAiBE,CAAQ,EAC3B,OAAOF,EAAiBE,CAAQ,EAAE,QAGnC,IAAIJ,EAASE,EAAiBE,CAAQ,EAAI,CACzC,EAAGA,EACH,EAAG,GACH,QAAS,CAAE,CACvB,EAGW,OAAAH,EAAQG,CAAQ,EAAE,KAAKJ,EAAO,QAASA,EAAQA,EAAO,QAASG,CAAmB,EAGlFH,EAAO,EAAI,GAGJA,EAAO,OACd,CAID,OAAAG,EAAoB,EAAIF,EAGxBE,EAAoB,EAAID,EAGxBC,EAAoB,EAAI,SAASE,EAASC,EAAMC,EAAQ,CACnDJ,EAAoB,EAAEE,EAASC,CAAI,GACtC,OAAO,eAAeD,EAASC,EAAM,CAAE,WAAY,GAAM,IAAKC,CAAM,CAAE,CAElF,EAGUJ,EAAoB,EAAI,SAASE,EAAS,CACtC,OAAO,OAAW,KAAe,OAAO,aAC1C,OAAO,eAAeA,EAAS,OAAO,YAAa,CAAE,MAAO,QAAQ,CAAE,EAEvE,OAAO,eAAeA,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,CACvE,EAOUF,EAAoB,EAAI,SAAS5D,EAAOiE,EAAM,CAG7C,GAFGA,EAAO,IAAGjE,EAAQ4D,EAAoB5D,CAAK,GAC3CiE,EAAO,GACNA,EAAO,GAAM,OAAOjE,GAAU,UAAYA,GAASA,EAAM,WAAY,OAAOA,EAChF,IAAIkE,EAAK,OAAO,OAAO,IAAI,EAG3B,GAFAN,EAAoB,EAAEM,CAAE,EACxB,OAAO,eAAeA,EAAI,UAAW,CAAE,WAAY,GAAM,MAAOlE,CAAK,CAAE,EACpEiE,EAAO,GAAK,OAAOjE,GAAS,SAAU,QAAQzG,KAAOyG,EAAO4D,EAAoB,EAAEM,EAAI3K,GAAK,SAASA,EAAK,CAAE,OAAOyG,EAAMzG,CAAG,CAAI,GAAC,KAAK,KAAMA,CAAG,CAAC,EAClJ,OAAO2K,CAClB,EAGUN,EAAoB,EAAI,SAASH,EAAQ,CACxC,IAAIO,EAASP,GAAUA,EAAO,WAC7B,UAAsB,CAAE,OAAOA,EAAO,OAAa,EACnD,UAA4B,CAAE,OAAOA,GACtC,OAAAG,EAAoB,EAAEI,EAAQ,IAAKA,CAAM,EAClCA,CAClB,EAGUJ,EAAoB,EAAI,SAASO,EAAQC,EAAU,CAAE,OAAO,OAAO,UAAU,eAAe,KAAKD,EAAQC,CAAQ,CAAE,EAGnHR,EAAoB,EAAI,GAIjBA,EAAoBA,EAAoB,EAAI,CAAC,CACpD,EAEA,CAEH,SAASH,EAAQK,EAASF,EAAqB,CAMtD,IAAIS,EAAa,MAAQ,KAAK,WAAe,UAAY,CACrD,IAAIC,EAAgB,SAAUC,EAAGjI,EAAG,CAChC,OAAAgI,EAAgB,OAAO,gBAClB,CAAE,UAAW,cAAgB,OAAS,SAAUC,EAAGjI,EAAG,CAAEiI,EAAE,UAAYjI,CAAE,GACzE,SAAUiI,EAAGjI,EAAG,CAAE,QAASuB,KAAKvB,EAAOA,EAAE,eAAeuB,CAAC,IAAG0G,EAAE1G,CAAC,EAAIvB,EAAEuB,CAAC,IACnEyG,EAAcC,EAAGjI,CAAC,CACjC,EACI,OAAO,SAAUiI,EAAGjI,EAAG,CACnBgI,EAAcC,EAAGjI,CAAC,EAClB,SAASkI,GAAK,CAAE,KAAK,YAAcD,CAAI,CACvCA,EAAE,UAAYjI,IAAM,KAAO,OAAO,OAAOA,CAAC,GAAKkI,EAAG,UAAYlI,EAAE,UAAW,IAAIkI,EACvF,CACA,IACA,OAAO,eAAeV,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAO5D,IAAIW,EAAe,IAMfC,EAAuB,UAAY,CAEnC,SAASA,EAAMC,EAAmB,CAC1BA,IAAsB,SAAUA,EAAoB,KACxD,KAAK,kBAAoBA,CAC5B,CACD,OAAAD,EAAM,UAAU,cAAgB,SAAUrN,EAAQ,CAC9C,OAAK,KAAK,mBAGFA,EAAS,GAAK,EAAI,EAAI,GAFlBA,EAAS,EAAI,GAAK,EAAI,CAG1C,EACIqN,EAAM,UAAU,OAAS,SAAU7P,EAAM,CAGrC,QAFI+P,EAAM,GACNrN,EAAI,EACDA,EAAI1C,EAAK,OAAS,EAAG0C,GAAK,EAAG,CAChC,IAAIsN,EAAKhQ,EAAK0C,CAAC,GAAK,GAAO1C,EAAK0C,EAAI,CAAC,GAAK,EAAM1C,EAAK0C,EAAI,CAAC,EAC1DqN,GAAO,KAAK,YAAaC,IAAM,EAAI,EAAK,EAAE,EAC1CD,GAAO,KAAK,YAAaC,IAAM,EAAI,EAAK,EAAE,EAC1CD,GAAO,KAAK,YAAaC,IAAM,EAAI,EAAK,EAAE,EAC1CD,GAAO,KAAK,YAAaC,IAAM,EAAI,EAAK,EAAE,CAC7C,CACD,IAAIC,EAAOjQ,EAAK,OAAS0C,EACzB,GAAIuN,EAAO,EAAG,CACV,IAAID,EAAKhQ,EAAK0C,CAAC,GAAK,IAAOuN,IAAS,EAAIjQ,EAAK0C,EAAI,CAAC,GAAK,EAAI,GAC3DqN,GAAO,KAAK,YAAaC,IAAM,EAAI,EAAK,EAAE,EAC1CD,GAAO,KAAK,YAAaC,IAAM,EAAI,EAAK,EAAE,EACtCC,IAAS,EACTF,GAAO,KAAK,YAAaC,IAAM,EAAI,EAAK,EAAE,EAG1CD,GAAO,KAAK,mBAAqB,GAErCA,GAAO,KAAK,mBAAqB,EACpC,CACD,OAAOA,CACf,EACIF,EAAM,UAAU,iBAAmB,SAAUrN,EAAQ,CACjD,OAAK,KAAK,kBAGHA,EAAS,EAAI,EAAI,GAFZA,EAAS,EAAI,GAAK,EAAI,CAG1C,EACIqN,EAAM,UAAU,cAAgB,SAAUK,EAAG,CACzC,OAAO,KAAK,iBAAiBA,EAAE,OAAS,KAAK,kBAAkBA,CAAC,CAAC,CACzE,EACIL,EAAM,UAAU,OAAS,SAAUK,EAAG,CAClC,GAAIA,EAAE,SAAW,EACb,OAAO,IAAI,WAAW,CAAC,EAS3B,QAPIC,EAAgB,KAAK,kBAAkBD,CAAC,EACxC1N,EAAS0N,EAAE,OAASC,EACpBJ,EAAM,IAAI,WAAW,KAAK,iBAAiBvN,CAAM,CAAC,EAClD4N,EAAK,EACL1N,EAAI,EACJ2N,EAAU,EACVC,EAAK,EAAGC,GAAK,EAAGC,GAAK,EAAGC,GAAK,EAC1B/N,EAAIF,EAAS,EAAGE,GAAK,EACxB4N,EAAK,KAAK,YAAYJ,EAAE,WAAWxN,EAAI,CAAC,CAAC,EACzC6N,GAAK,KAAK,YAAYL,EAAE,WAAWxN,EAAI,CAAC,CAAC,EACzC8N,GAAK,KAAK,YAAYN,EAAE,WAAWxN,EAAI,CAAC,CAAC,EACzC+N,GAAK,KAAK,YAAYP,EAAE,WAAWxN,EAAI,CAAC,CAAC,EACzCqN,EAAIK,GAAI,EAAKE,GAAM,EAAMC,KAAO,EAChCR,EAAIK,GAAI,EAAKG,IAAM,EAAMC,KAAO,EAChCT,EAAIK,GAAI,EAAKI,IAAM,EAAKC,GACxBJ,GAAWC,EAAKV,EAChBS,GAAWE,GAAKX,EAChBS,GAAWG,GAAKZ,EAChBS,GAAWI,GAAKb,EAmBpB,GAjBIlN,EAAIF,EAAS,IACb8N,EAAK,KAAK,YAAYJ,EAAE,WAAWxN,CAAC,CAAC,EACrC6N,GAAK,KAAK,YAAYL,EAAE,WAAWxN,EAAI,CAAC,CAAC,EACzCqN,EAAIK,GAAI,EAAKE,GAAM,EAAMC,KAAO,EAChCF,GAAWC,EAAKV,EAChBS,GAAWE,GAAKX,GAEhBlN,EAAIF,EAAS,IACbgO,GAAK,KAAK,YAAYN,EAAE,WAAWxN,EAAI,CAAC,CAAC,EACzCqN,EAAIK,GAAI,EAAKG,IAAM,EAAMC,KAAO,EAChCH,GAAWG,GAAKZ,GAEhBlN,EAAIF,EAAS,IACbiO,GAAK,KAAK,YAAYP,EAAE,WAAWxN,EAAI,CAAC,CAAC,EACzCqN,EAAIK,GAAI,EAAKI,IAAM,EAAKC,GACxBJ,GAAWI,GAAKb,GAEhBS,IAAY,EACZ,MAAM,IAAI,MAAM,gDAAgD,EAEpE,OAAON,CACf,EASIF,EAAM,UAAU,YAAc,SAAUpI,EAAG,CAqBvC,IAAIiJ,EAASjJ,EAEb,OAAAiJ,GAAU,GAEVA,GAAY,GAAKjJ,IAAO,EAAO,EAAI,GAAM,GAAK,GAE9CiJ,GAAY,GAAKjJ,IAAO,EAAO,GAAK,GAAM,GAAK,GAE/CiJ,GAAY,GAAKjJ,IAAO,EAAO,GAAK,GAAM,GAAK,GAE/CiJ,GAAY,GAAKjJ,IAAO,EAAO,GAAK,GAAM,GAAK,GACxC,OAAO,aAAaiJ,CAAM,CACzC,EAGIb,EAAM,UAAU,YAAc,SAAUG,EAAG,CAUvC,IAAIU,EAASd,EAEb,OAAAc,IAAa,GAAKV,EAAMA,EAAI,MAAS,EAAM,CAACJ,EAAeI,EAAI,GAAK,GAEpEU,IAAa,GAAKV,EAAMA,EAAI,MAAS,EAAM,CAACJ,EAAeI,EAAI,GAAK,GAEpEU,IAAa,GAAKV,EAAMA,EAAI,MAAS,EAAM,CAACJ,EAAeI,EAAI,GAAK,GAEpEU,IAAa,GAAKV,EAAMA,EAAI,MAAS,EAAM,CAACJ,EAAeI,EAAI,GAAK,EAEpEU,IAAa,GAAKV,EAAMA,EAAI,OAAU,EAAM,CAACJ,EAAeI,EAAI,GAAK,GAC9DU,CACf,EACIb,EAAM,UAAU,kBAAoB,SAAUK,EAAG,CAC7C,IAAIC,EAAgB,EACpB,GAAI,KAAK,kBAAmB,CACxB,QAASzN,EAAIwN,EAAE,OAAS,EAAGxN,GAAK,GACxBwN,EAAExN,CAAC,IAAM,KAAK,kBADaA,IAI/ByN,IAEJ,GAAID,EAAE,OAAS,GAAKC,EAAgB,EAChC,MAAM,IAAI,MAAM,gCAAgC,CAEvD,CACD,OAAOA,CACf,EACWN,CACV,IACDZ,EAAQ,MAAQY,EAChB,IAAIc,EAAW,IAAId,EACnB,SAASe,EAAO5Q,EAAM,CAClB,OAAO2Q,EAAS,OAAO3Q,CAAI,CAC9B,CACDiP,EAAQ,OAAS2B,EACjB,SAASC,EAAOX,EAAG,CACf,OAAOS,EAAS,OAAOT,CAAC,CAC3B,CACDjB,EAAQ,OAAS4B,EAOjB,IAAIC,EAA8B,SAAUC,EAAQ,CAChDvB,EAAUsB,EAAcC,CAAM,EAC9B,SAASD,GAAe,CACpB,OAAOC,IAAW,MAAQA,EAAO,MAAM,KAAM,SAAS,GAAK,IAC9D,CAOD,OAAAD,EAAa,UAAU,YAAc,SAAUrJ,EAAG,CAC9C,IAAIiJ,EAASjJ,EAEb,OAAAiJ,GAAU,GAEVA,GAAY,GAAKjJ,IAAO,EAAO,EAAI,GAAM,GAAK,GAE9CiJ,GAAY,GAAKjJ,IAAO,EAAO,GAAK,GAAM,GAAK,GAE/CiJ,GAAY,GAAKjJ,IAAO,EAAO,GAAK,GAAM,GAAK,GAE/CiJ,GAAY,GAAKjJ,IAAO,EAAO,GAAK,GAAM,GAAK,GACxC,OAAO,aAAaiJ,CAAM,CACzC,EACII,EAAa,UAAU,YAAc,SAAUd,EAAG,CAC9C,IAAIU,EAASd,EAEb,OAAAc,IAAa,GAAKV,EAAMA,EAAI,MAAS,EAAM,CAACJ,EAAeI,EAAI,GAAK,GAEpEU,IAAa,GAAKV,EAAMA,EAAI,MAAS,EAAM,CAACJ,EAAeI,EAAI,GAAK,GAEpEU,IAAa,GAAKV,EAAMA,EAAI,MAAS,EAAM,CAACJ,EAAeI,EAAI,GAAK,GAEpEU,IAAa,GAAKV,EAAMA,EAAI,MAAS,EAAM,CAACJ,EAAeI,EAAI,GAAK,EAEpEU,IAAa,GAAKV,EAAMA,EAAI,OAAU,EAAM,CAACJ,EAAeI,EAAI,GAAK,GAC9DU,CACf,EACWI,CACX,EAAEjB,CAAK,EACPZ,EAAQ,aAAe6B,EACvB,IAAIE,EAAe,IAAIF,EACvB,SAASG,EAAcjR,EAAM,CACzB,OAAOgR,EAAa,OAAOhR,CAAI,CAClC,CACDiP,EAAQ,cAAgBgC,EACxB,SAASC,EAAchB,EAAG,CACtB,OAAOc,EAAa,OAAOd,CAAC,CAC/B,CACDjB,EAAQ,cAAgBiC,EACxBjC,EAAQ,cAAgB,SAAUzM,EAAQ,CACtC,OAAOmO,EAAS,cAAcnO,CAAM,CACxC,EACAyM,EAAQ,iBAAmB,SAAUzM,EAAQ,CACzC,OAAOmO,EAAS,iBAAiBnO,CAAM,CAC3C,EACAyM,EAAQ,cAAgB,SAAUiB,EAAG,CACjC,OAAOS,EAAS,cAAcT,CAAC,CACnC,CAGO,EAEA,SAAStB,EAAQK,EAASF,EAAqB,CAMtD,OAAO,eAAeE,EAAS,aAAc,CAAE,MAAO,EAAI,CAAE,EAI5D,IAAIkC,EAAgB,uBAChBC,EAAe,gCAKnB,SAASR,EAAOV,EAAG,CAMf,QAFInD,EAAM,IAAI,WAAWsE,EAAcnB,CAAC,CAAC,EACrCoB,EAAM,EACD5O,EAAI,EAAGA,EAAIwN,EAAE,OAAQxN,IAAK,CAC/B,IAAIsN,EAAIE,EAAE,WAAWxN,CAAC,EAClBsN,EAAI,IACJjD,EAAIuE,GAAK,EAAItB,EAERA,EAAI,MACTjD,EAAIuE,GAAK,EAAI,IAAOtB,GAAK,EACzBjD,EAAIuE,GAAK,EAAI,IAAOtB,EAAI,IAEnBA,EAAI,OACTjD,EAAIuE,GAAK,EAAI,IAAOtB,GAAK,GACzBjD,EAAIuE,GAAK,EAAI,IAAQtB,GAAK,EAAK,GAC/BjD,EAAIuE,GAAK,EAAI,IAAOtB,EAAI,KAGxBtN,IACAsN,GAAKA,EAAI,OAAU,GACnBA,GAAKE,EAAE,WAAWxN,CAAC,EAAI,KACvBsN,GAAK,MACLjD,EAAIuE,GAAK,EAAI,IAAOtB,GAAK,GACzBjD,EAAIuE,GAAK,EAAI,IAAQtB,GAAK,GAAM,GAChCjD,EAAIuE,GAAK,EAAI,IAAQtB,GAAK,EAAK,GAC/BjD,EAAIuE,GAAK,EAAI,IAAOtB,EAAI,GAE/B,CACD,OAAOjD,CACV,CACDkC,EAAQ,OAAS2B,EAKjB,SAASS,EAAcnB,EAAG,CAEtB,QADIQ,EAAS,EACJhO,EAAI,EAAGA,EAAIwN,EAAE,OAAQxN,IAAK,CAC/B,IAAIsN,EAAIE,EAAE,WAAWxN,CAAC,EACtB,GAAIsN,EAAI,IACJU,GAAU,UAELV,EAAI,KACTU,GAAU,UAELV,EAAI,MACTU,GAAU,UAELV,GAAK,MAAQ,CAClB,GAAItN,GAAKwN,EAAE,OAAS,EAChB,MAAM,IAAI,MAAMiB,CAAa,EAEjCzO,IACAgO,GAAU,CACb,KAEG,OAAM,IAAI,MAAMS,CAAa,CAEpC,CACD,OAAOT,CACV,CACDzB,EAAQ,cAAgBoC,EAKxB,SAASR,EAAO9D,EAAK,CAEjB,QADIwE,EAAQ,GACH7O,EAAI,EAAGA,EAAIqK,EAAI,OAAQrK,IAAK,CACjC,IAAI,EAAIqK,EAAIrK,CAAC,EACb,GAAI,EAAI,IAAM,CACV,IAAI8O,EAAM,OACV,GAAI,EAAI,IAAM,CAEV,GAAI9O,GAAKqK,EAAI,OACT,MAAM,IAAI,MAAMqE,CAAY,EAEhC,IAAIK,EAAK1E,EAAI,EAAErK,CAAC,EAChB,IAAK+O,EAAK,OAAU,IAChB,MAAM,IAAI,MAAML,CAAY,EAEhC,GAAK,EAAI,KAAS,EAAKK,EAAK,GAC5BD,EAAM,GACT,SACQ,EAAI,IAAM,CAEf,GAAI9O,GAAKqK,EAAI,OAAS,EAClB,MAAM,IAAI,MAAMqE,CAAY,EAEhC,IAAIK,EAAK1E,EAAI,EAAErK,CAAC,EACZgP,EAAK3E,EAAI,EAAErK,CAAC,EAChB,IAAK+O,EAAK,OAAU,MAASC,EAAK,OAAU,IACxC,MAAM,IAAI,MAAMN,CAAY,EAEhC,GAAK,EAAI,KAAS,IAAMK,EAAK,KAAS,EAAKC,EAAK,GAChDF,EAAM,IACT,SACQ,EAAI,IAAM,CAEf,GAAI9O,GAAKqK,EAAI,OAAS,EAClB,MAAM,IAAI,MAAMqE,CAAY,EAEhC,IAAIK,EAAK1E,EAAI,EAAErK,CAAC,EACZgP,EAAK3E,EAAI,EAAErK,CAAC,EACZiP,EAAK5E,EAAI,EAAErK,CAAC,EAChB,IAAK+O,EAAK,OAAU,MAASC,EAAK,OAAU,MAASC,EAAK,OAAU,IAChE,MAAM,IAAI,MAAMP,CAAY,EAEhC,GAAK,EAAI,KAAS,IAAMK,EAAK,KAAS,IAAMC,EAAK,KAAS,EAAKC,EAAK,GACpEH,EAAM,KACT,KAEG,OAAM,IAAI,MAAMJ,CAAY,EAEhC,GAAI,EAAII,GAAQ,GAAK,OAAU,GAAK,MAChC,MAAM,IAAI,MAAMJ,CAAY,EAEhC,GAAI,GAAK,MAAS,CAEd,GAAI,EAAI,QACJ,MAAM,IAAI,MAAMA,CAAY,EAEhC,GAAK,MACLG,EAAM,KAAK,OAAO,aAAa,MAAU,GAAK,EAAG,CAAC,EAClD,EAAI,MAAU,EAAI,IACrB,CACJ,CACDA,EAAM,KAAK,OAAO,aAAa,CAAC,CAAC,CACpC,CACD,OAAOA,EAAM,KAAK,EAAE,CACvB,CACDtC,EAAQ,OAAS4B,CAGV,EAEA,SAASjC,EAAQK,EAASF,EAAqB,CAGtDH,EAAO,QAAUG,EAAoB,CAAC,EAAE,OAGjC,EAEA,SAASH,EAAQgD,EAAqB7C,EAAqB,CAIlEA,EAAoB,EAAE6C,CAAmB,EAGzC,MAAMC,CAAsB,CACxB,YAAYrH,EAAQ0E,EAAM,CACtB,KAAK,OAAS,EACd,KAAK,OAAS1E,EACd,KAAK,KAAO0E,CACf,CACD,OAAOpP,EAAU,CACb,KAAK,SACL,IAAIgS,EAAS,KAAK,OACdC,EAAK,KAAK,OAASD,EACnB5C,EAAO,KAAK,KAAO,IAAM4C,EAAS,IAClCE,EAAS,GACTC,GAAkB,UAAY,CACzBD,IACDlS,EAAS,MAAM,KAAM,SAAS,EAC9BkS,EAAS,GAEzB,EACQ,YAAKF,CAAM,EAAIG,GACR,CAAE,OAAQH,EAAQ,GAAIC,EAAI,KAAM7C,EAAM,SAAU+C,GAC1D,CACD,OAAOC,EAAU,CACb,OAAO,KAAKA,EAAS,MAAM,CAC9B,CACJ,CACD,IAAIC,EAAkB,IAAIN,EAAsB,kBAAmB,wBAAwB,EAGvFO,EAAW,CACX,QAAS,QACT,SAAU,EACV,OAAQ,GACR,QAAS,IACT,OAAQ,GACR,SAAU,oBACV,SAAU,GACV,UAAW,IACX,SAAU,UACV,WAAY,mBACZ,aAAc,eACd,cAAe,OACf,gBAAiB,KACjB,YAAa,IACb,mBAAoB,IACpB,mBAAoB,CAChB,SAAU,oBACV,UAAW,MACd,EACD,qBAAsB,CAClB,SAAU,eACV,UAAW,MACd,EACD,SAAU,uBACV,UAAW,wBACX,kBAAmB,EACvB,EACiCC,EAAYD,EAK7C,MAAME,CAAmC,CACrC,YAAYC,EAAS,CACjB,KAAK,QAAUA,EACf,KAAK,UAAYA,EAAQ,WAAaJ,EACtC,KAAK,QAAU,EAClB,CACD,KAAKjD,EAAMqD,EAASzS,EAAU,CAC1B,IAAI0S,EAAO,KACX,GAAIA,EAAK,QAAQtD,CAAI,GAAKsD,EAAK,QAAQtD,CAAI,EAAE,OAAS,EAClDsD,EAAK,QAAQtD,CAAI,EAAE,KAAKpP,CAAQ,MAE/B,CACD0S,EAAK,QAAQtD,CAAI,EAAI,CAACpP,CAAQ,EAC9B,IAAI2S,EAAUC,GAAQ,oBAAoBF,EAAK,QAAQtD,EAAMqD,CAAO,CAAC,EACjEL,GAAWM,EAAK,UAAU,OAAO,SAAUhK,GAAO,CAElD,GADAgK,EAAK,UAAU,OAAON,EAAQ,EAC1BM,EAAK,QAAQtD,CAAI,EAAG,CACpB,IAAIyD,GAAYH,EAAK,QAAQtD,CAAI,EACjC,OAAOsD,EAAK,QAAQtD,CAAI,EAMxB,QALI0D,GAAkB,SAAUC,GAAe,CACtCA,IACDJ,EAAQ,QAAO,CAE3C,EAC6B/P,GAAI,EAAGA,GAAIiQ,GAAU,OAAQjQ,KAClCiQ,GAAUjQ,EAAC,EAAE8F,GAAOoK,EAAe,CAE1C,CACjB,CAAa,EACDH,EAAQ,KAAKP,EAAQ,CACxB,CACJ,CACD,QAAQK,EAAS,CACb,IAAIO,EACAC,EAAWL,GAAQ,YAAW,EAAG,SAAS,SAC9C,OAAKH,GAAWA,EAAQ,QAAWQ,IAAa,SAC5CD,EAAM,KAAK,QAAQ,UAGnBA,EAAM,KAAK,QAAQ,SAEhBA,EAAI,QAAQ,OAAQ,EAAE,EAAI,IAAM,KAAK,QAAQ,OACvD,CACD,QAAQ5D,EAAMqD,EAAS,CACnB,OAAO,KAAK,QAAQA,CAAO,EAAI,IAAMrD,EAAO,KAAK,QAAQ,OAAS,KACrE,CACJ,CAMD,IAAI8D,EAAwB,IAAInB,EAAsB,uBAAwB,8BAA8B,EACxGoB,EAAe,IAAIX,EAAmC,CACtD,SAAUD,EAAS,SACnB,UAAWA,EAAS,UACpB,QAASA,EAAS,QAClB,OAAQA,EAAS,kBACjB,UAAWW,CACf,CAAC,EAGD,MAAME,EAAW,CACb,QAAS,qBACT,KAAM,CACF,uBAAwB,CACpB,KAAM,gDACT,EACD,sBAAuB,CACnB,KAAM,8CACT,EACD,qBAAsB,CAClB,KAAM,8BACT,EACD,uBAAwB,CACpB,KAAM,qDACT,EACD,wBAAyB,CACrB,QAAS,6GACZ,CACJ,CACL,EAiB6B,IAAIC,EAAa,CAAE,eAhBzB,SAAUzO,EAAK,CAClC,MAAM0O,EAAY,OACZC,EAASH,EAAS,KAAKxO,CAAG,EAChC,GAAI,CAAC2O,EACD,MAAO,GACX,IAAIxT,EAOJ,OANIwT,EAAO,QACPxT,EAAMwT,EAAO,QAERA,EAAO,OACZxT,EAAMqT,EAAS,QAAUG,EAAO,MAE/BxT,EAEE,GAAGuT,CAAS,IAAIvT,CAAG,GADf,EAEf,CAC8D,EAG1DyT,GACH,SAAUA,EAAiB,CACxBA,EAAgB,mBAAwB,sBACxCA,EAAgB,qBAA0B,uBAC7C,GAAEA,IAAoBA,EAAkB,CAAE,EAAC,EAG5C,MAAMC,UAAqB,KAAM,CAC7B,YAAYC,EAAK,CACb,MAAMA,CAAG,EACT,OAAO,eAAe,KAAM,WAAW,SAAS,CACnD,CACJ,CACD,MAAMC,UAAuB,KAAM,CAC/B,YAAYD,EAAK,CACb,MAAMA,CAAG,EACT,OAAO,eAAe,KAAM,WAAW,SAAS,CACnD,CACJ,CACD,MAAME,UAAwB,KAAM,CAChC,YAAYF,EAAK,CACb,MAAMA,CAAG,EACT,OAAO,eAAe,KAAM,WAAW,SAAS,CACnD,CACJ,CACD,MAAMG,UAAgC,KAAM,CACxC,YAAYH,EAAK,CACb,MAAMA,CAAG,EACT,OAAO,eAAe,KAAM,WAAW,SAAS,CACnD,CACJ,CACD,MAAMI,UAAwB,KAAM,CAChC,YAAYJ,EAAK,CACb,MAAMA,CAAG,EACT,OAAO,eAAe,KAAM,WAAW,SAAS,CACnD,CACJ,CACD,MAAMK,UAA2B,KAAM,CACnC,YAAYL,EAAK,CACb,MAAMA,CAAG,EACT,OAAO,eAAe,KAAM,WAAW,SAAS,CACnD,CACJ,CACD,MAAMM,UAA6B,KAAM,CACrC,YAAYN,EAAK,CACb,MAAMA,CAAG,EACT,OAAO,eAAe,KAAM,WAAW,SAAS,CACnD,CACJ,CACD,MAAMO,UAA4B,KAAM,CACpC,YAAYP,EAAK,CACb,MAAMA,CAAG,EACT,OAAO,eAAe,KAAM,WAAW,SAAS,CACnD,CACJ,CACD,MAAMQ,WAAsB,KAAM,CAC9B,YAAYC,EAAQT,EAAK,CACrB,MAAMA,CAAG,EACT,KAAK,OAASS,EACd,OAAO,eAAe,KAAM,WAAW,SAAS,CACnD,CACJ,CAsD4B,IAAIC,GA/CpB,SAAU1I,EAAS2I,EAAOC,EAAaC,EAAiBvU,EAAU,CAC3E,MAAMwU,EAAM5B,GAAQ,YACpB4B,EAAI,KAAK,OAAQF,EAAY,SAAU,EAAI,EAC3CE,EAAI,iBAAiB,eAAgB,mCAAmC,EACxE,QAASC,MAAcH,EAAY,QAC/BE,EAAI,iBAAiBC,GAAYH,EAAY,QAAQG,EAAU,CAAC,EAEpE,GAAIH,EAAY,iBAAmB,KAAM,CACrC,IAAII,GAAiBJ,EAAY,kBACjC,QAASG,MAAcC,GACnBF,EAAI,iBAAiBC,GAAYC,GAAeD,EAAU,CAAC,CAElE,CACD,OAAAD,EAAI,mBAAqB,UAAY,CACjC,GAAIA,EAAI,aAAe,EACnB,GAAIA,EAAI,SAAW,IAAK,CACpB,IAAItU,GACAyU,GAAS,GACb,GAAI,CACAzU,GAAO,KAAK,MAAMsU,EAAI,YAAY,EAClCG,GAAS,EACZ,MACS,CACN3U,EAAS,IAAIkU,GAAc,IAAK,sBAAsBK,EAAgB,UAAU,6DAA6DC,EAAI,YAAY,EAAE,EAAG,IAAI,CACzK,CACGG,IACA3U,EAAS,KAAME,EAAI,CAE1B,KACI,CACD,IAAI0U,GAAS,GACb,OAAQL,EAAe,CACnB,KAAKf,EAAgB,mBACjBoB,GAASvB,EAAU,eAAe,wBAAwB,EAC1D,MACJ,KAAKG,EAAgB,qBACjBoB,GAAS,oEAAoEvB,EAAU,eAAe,uBAAuB,CAAC,GAC9H,KACP,CACDrT,EAAS,IAAIkU,GAAcM,EAAI,OAAQ,uCAAuCD,EAAgB,SAAU,iCAChFC,EAAI,MAAM,SAASF,EAAY,QAAQ,KAAKM,EAAM,EAAE,EAAG,IAAI,CACtF,CAEb,EACIJ,EAAI,KAAKH,CAAK,EACPG,CACX,EAIA,SAAS1D,GAAOV,EAAG,CACf,OAAOyE,EAAKC,EAAK1E,CAAC,CAAC,CACtB,CACD,IAAI2E,GAAe,OAAO,aACtBC,EAAW,mEAKXC,EAAU,SAAU/E,EAAG,CACvB,IAAIgF,EAAKhF,EAAE,WAAW,CAAC,EACvB,OAAOgF,EAAK,IACNhF,EACAgF,EAAK,KACDH,GAAa,IAAQG,IAAO,CAAE,EAAIH,GAAa,IAAQG,EAAK,EAAK,EACjEH,GAAa,IAASG,IAAO,GAAM,EAAK,EACtCH,GAAa,IAASG,IAAO,EAAK,EAAK,EACvCH,GAAa,IAAQG,EAAK,EAAK,CAC/C,EACIJ,EAAO,SAAUK,EAAG,CACpB,OAAOA,EAAE,QAAQ,gBAAiBF,CAAO,CAC7C,EACIG,EAAY,SAAUC,EAAK,CAC3B,IAAIC,EAAS,CAAC,EAAG,EAAG,CAAC,EAAED,EAAI,OAAS,CAAC,EACjCE,EAAOF,EAAI,WAAW,CAAC,GAAK,IAC1BA,EAAI,OAAS,EAAIA,EAAI,WAAW,CAAC,EAAI,IAAM,GAC5CA,EAAI,OAAS,EAAIA,EAAI,WAAW,CAAC,EAAI,GACtC5D,EAAQ,CACRuD,EAAS,OAAOO,IAAQ,EAAE,EAC1BP,EAAS,OAAQO,IAAQ,GAAM,EAAE,EACjCD,GAAU,EAAI,IAAMN,EAAS,OAAQO,IAAQ,EAAK,EAAE,EACpDD,GAAU,EAAI,IAAMN,EAAS,OAAOO,EAAM,EAAE,CACpD,EACI,OAAO9D,EAAM,KAAK,EAAE,CACxB,EACIoD,EAAO,OAAO,MACd,SAAUlN,EAAG,CACT,OAAOA,EAAE,QAAQ,eAAgByN,CAAS,CAClD,EAGA,MAAMI,EAAM,CACR,YAAYC,EAAKC,EAAOC,EAAO3V,EAAU,CACrC,KAAK,MAAQ0V,EACb,KAAK,MAAQD,EAAI,IAAM,CACf,KAAK,QACL,KAAK,MAAQzV,EAAS,KAAK,KAAK,EAEvC,EAAE2V,CAAK,CACX,CACD,WAAY,CACR,OAAO,KAAK,QAAU,IACzB,CACD,eAAgB,CACR,KAAK,QACL,KAAK,MAAM,KAAK,KAAK,EACrB,KAAK,MAAQ,KAEpB,CACJ,CAC4B,IAAIC,GAAkBJ,GAInD,SAASK,GAAoBC,EAAO,CAChC,OAAO,aAAaA,CAAK,CAC5B,CACD,SAASC,GAAqBD,EAAO,CACjC,OAAO,cAAcA,CAAK,CAC7B,CACD,MAAME,WAA2BJ,EAAe,CAC5C,YAAYD,EAAO3V,EAAU,CACzB,MAAM,WAAY6V,GAAqBF,EAAO,SAAUG,EAAO,CAC3D,OAAA9V,IACO,IACnB,CAAS,CACJ,CACJ,CACD,MAAMiW,UAA6BL,EAAe,CAC9C,YAAYD,EAAO3V,EAAU,CACzB,MAAM,YAAa+V,GAAsBJ,EAAO,SAAUG,EAAO,CAC7D,OAAA9V,IACO8V,CACnB,CAAS,CACJ,CACJ,CAID,IAAII,EAAO,CACP,KAAM,CACF,OAAI,KAAK,IACE,KAAK,MAGL,IAAI,OAAO,SAEzB,EACD,MAAMlW,EAAU,CACZ,OAAO,IAAIgW,GAAmB,EAAGhW,CAAQ,CAC5C,EACD,OAAOoP,KAAS+G,EAAM,CAClB,IAAIC,EAAiB,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,EAC5D,OAAO,SAAU5G,EAAQ,CACrB,OAAOA,EAAOJ,CAAI,EAAE,MAAMI,EAAQ4G,EAAe,OAAO,SAAS,CAAC,CAC9E,CACK,CACL,EACiCC,EAAQH,EAKzC,SAASI,EAAOC,KAAWC,EAAS,CAChC,QAAS5T,EAAI,EAAGA,EAAI4T,EAAQ,OAAQ5T,IAAK,CACrC,IAAI6T,EAAaD,EAAQ5T,CAAC,EAC1B,QAAS6M,KAAYgH,EACbA,EAAWhH,CAAQ,GACnBgH,EAAWhH,CAAQ,EAAE,aACrBgH,EAAWhH,CAAQ,EAAE,cAAgB,OACrC8G,EAAO9G,CAAQ,EAAI6G,EAAOC,EAAO9G,CAAQ,GAAK,GAAIgH,EAAWhH,CAAQ,CAAC,EAGtE8G,EAAO9G,CAAQ,EAAIgH,EAAWhH,CAAQ,CAGjD,CACD,OAAO8G,CACV,CACD,SAASG,GAAY,CAEjB,QADIC,EAAI,CAAC,QAAQ,EACR/T,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAC9B,OAAO,UAAUA,CAAC,GAAM,SACxB+T,EAAE,KAAK,UAAU/T,CAAC,CAAC,EAGnB+T,EAAE,KAAKC,GAAkB,UAAUhU,CAAC,CAAC,CAAC,EAG9C,OAAO+T,EAAE,KAAK,KAAK,CACtB,CACD,SAASE,EAAaC,EAAOC,EAAM,CAC/B,IAAIC,EAAgB,MAAM,UAAU,QACpC,GAAIF,IAAU,KACV,MAAO,GAEX,GAAIE,GAAiBF,EAAM,UAAYE,EACnC,OAAOF,EAAM,QAAQC,CAAI,EAE7B,QAASnU,EAAI,EAAGqU,EAAIH,EAAM,OAAQlU,EAAIqU,EAAGrU,IACrC,GAAIkU,EAAMlU,CAAC,IAAMmU,EACb,OAAOnU,EAGf,MAAO,EACV,CACD,SAASsU,EAAY1H,EAAQ3G,EAAG,CAC5B,QAASjE,KAAO4K,EACR,OAAO,UAAU,eAAe,KAAKA,EAAQ5K,CAAG,GAChDiE,EAAE2G,EAAO5K,CAAG,EAAGA,EAAK4K,CAAM,CAGrC,CACD,SAAS2H,EAAK3H,EAAQ,CAClB,IAAI2H,EAAO,GACX,OAAAD,EAAY1H,EAAQ,SAAU4H,EAAGxS,EAAK,CAClCuS,EAAK,KAAKvS,CAAG,CACrB,CAAK,EACMuS,CACV,CACD,SAASE,EAAO7H,EAAQ,CACpB,IAAI6H,EAAS,GACb,OAAAH,EAAY1H,EAAQ,SAAUnE,EAAO,CACjCgM,EAAO,KAAKhM,CAAK,CACzB,CAAK,EACMgM,CACV,CACD,SAASC,EAAMR,EAAOjO,EAAG6C,EAAS,CAC9B,QAAS9I,EAAI,EAAGA,EAAIkU,EAAM,OAAQlU,IAC9BiG,EAAE,KAAK6C,GAAW,OAAQoL,EAAMlU,CAAC,EAAGA,EAAGkU,CAAK,CAEnD,CACD,SAASS,EAAIT,EAAOjO,EAAG,CAEnB,QADI+H,EAAS,GACJhO,EAAI,EAAGA,EAAIkU,EAAM,OAAQlU,IAC9BgO,EAAO,KAAK/H,EAAEiO,EAAMlU,CAAC,EAAGA,EAAGkU,EAAOlG,CAAM,CAAC,EAE7C,OAAOA,CACV,CACD,SAAS4G,EAAUhI,EAAQ3G,EAAG,CAC1B,IAAI+H,EAAS,GACb,OAAAsG,EAAY1H,EAAQ,SAAUnE,EAAOzG,EAAK,CACtCgM,EAAOhM,CAAG,EAAIiE,EAAEwC,CAAK,CAC7B,CAAK,EACMuF,CACV,CACD,SAAS6G,EAAOX,EAAOY,EAAM,CACzBA,EACIA,GACI,SAAUrM,EAAO,CACb,MAAO,CAAC,CAACA,CACzB,EAEI,QADIuF,EAAS,GACJhO,EAAI,EAAGA,EAAIkU,EAAM,OAAQlU,IAC1B8U,EAAKZ,EAAMlU,CAAC,EAAGA,EAAGkU,EAAOlG,CAAM,GAC/BA,EAAO,KAAKkG,EAAMlU,CAAC,CAAC,EAG5B,OAAOgO,CACV,CACD,SAAS+G,GAAanI,EAAQkI,EAAM,CAChC,IAAI9G,EAAS,GACb,OAAAsG,EAAY1H,EAAQ,SAAUnE,EAAOzG,EAAK,EACjC8S,GAAQA,EAAKrM,EAAOzG,EAAK4K,EAAQoB,CAAM,GAAcvF,KACtDuF,EAAOhM,CAAG,EAAIyG,EAE1B,CAAK,EACMuF,CACV,CACD,SAASgH,GAAQpI,EAAQ,CACrB,IAAIoB,EAAS,GACb,OAAAsG,EAAY1H,EAAQ,SAAUnE,EAAOzG,EAAK,CACtCgM,EAAO,KAAK,CAAChM,EAAKyG,CAAK,CAAC,CAChC,CAAK,EACMuF,CACV,CACD,SAASiH,GAAIf,EAAOY,EAAM,CACtB,QAAS9U,EAAI,EAAGA,EAAIkU,EAAM,OAAQlU,IAC9B,GAAI8U,EAAKZ,EAAMlU,CAAC,EAAGA,EAAGkU,CAAK,EACvB,MAAO,GAGf,MAAO,EACV,CACD,SAASgB,GAAgBhB,EAAOY,EAAM,CAClC,QAAS9U,EAAI,EAAGA,EAAIkU,EAAM,OAAQlU,IAC9B,GAAI,CAAC8U,EAAKZ,EAAMlU,CAAC,EAAGA,EAAGkU,CAAK,EACxB,MAAO,GAGf,MAAO,EACV,CACD,SAASiB,GAAmB7X,EAAM,CAC9B,OAAOsX,EAAUtX,EAAM,SAAUmL,EAAO,CACpC,OAAI,OAAOA,GAAU,WACjBA,EAAQuL,GAAkBvL,CAAK,GAE5B,mBAAmByF,GAAOzF,EAAM,SAAQ,CAAE,CAAC,CAC1D,CAAK,CACJ,CACD,SAAS2M,GAAiB9X,EAAM,CAC5B,IAAIqI,EAASoP,GAAazX,EAAM,SAAUmL,EAAO,CAC7C,OAAOA,IAAU,MACzB,CAAK,EACGgJ,EAAQkD,EAAIK,GAAQG,GAAmBxP,CAAM,CAAC,EAAG8N,EAAK,OAAO,OAAQ,GAAG,CAAC,EAAE,KAAK,GAAG,EACvF,OAAOhC,CACV,CACD,SAAS4D,GAAczI,EAAQ,CAC3B,IAAI0I,EAAU,GAAIC,EAAQ,GAC1B,OAAQ,SAASC,EAAM/M,EAAOgN,EAAM,CAChC,IAAIzV,GAAGwM,GAAMkJ,GACb,OAAQ,OAAOjN,EAAK,CAChB,IAAK,SACD,GAAI,CAACA,EACD,OAAO,KAEX,IAAKzI,GAAI,EAAGA,GAAIsV,EAAQ,OAAQtV,IAAK,EACjC,GAAIsV,EAAQtV,EAAC,IAAMyI,EACf,MAAO,CAAE,KAAM8M,EAAMvV,EAAC,CAAC,EAK/B,GAFAsV,EAAQ,KAAK7M,CAAK,EAClB8M,EAAM,KAAKE,CAAI,EACX,OAAO,UAAU,SAAS,MAAMhN,CAAK,IAAM,iBAE3C,IADAiN,GAAK,GACA1V,GAAI,EAAGA,GAAIyI,EAAM,OAAQzI,IAAK,EAC/B0V,GAAG1V,EAAC,EAAIwV,EAAM/M,EAAMzI,EAAC,EAAGyV,EAAO,IAAMzV,GAAI,GAAG,MAG/C,CACD0V,GAAK,GACL,IAAKlJ,MAAQ/D,EACL,OAAO,UAAU,eAAe,KAAKA,EAAO+D,EAAI,IAChDkJ,GAAGlJ,EAAI,EAAIgJ,EAAM/M,EAAM+D,EAAI,EAAGiJ,EAAO,IAAM,KAAK,UAAUjJ,EAAI,EAAI,GAAG,EAGhF,CACD,OAAOkJ,GACX,IAAK,SACL,IAAK,SACL,IAAK,UACD,OAAOjN,CACd,CACT,EAAOmE,EAAQ,GAAG,CACjB,CACD,SAASoH,GAAkBpN,EAAQ,CAC/B,GAAI,CACA,OAAO,KAAK,UAAUA,CAAM,CAC/B,MACS,CACN,OAAO,KAAK,UAAUyO,GAAczO,CAAM,CAAC,CAC9C,CACJ,CAKD,MAAM+O,EAAc,CAChB,aAAc,CACV,KAAK,UAAa5S,GAAY,CACtB,OAAO,SAAW,OAAO,QAAQ,KACjC,OAAO,QAAQ,IAAIA,CAAO,CAE1C,CACK,CACD,SAASwQ,EAAM,CACX,KAAK,IAAI,KAAK,UAAWA,CAAI,CAChC,CACD,QAAQA,EAAM,CACV,KAAK,IAAI,KAAK,cAAeA,CAAI,CACpC,CACD,SAASA,EAAM,CACX,KAAK,IAAI,KAAK,eAAgBA,CAAI,CACrC,CACD,cAAcxQ,EAAS,CACf,OAAO,SAAW,OAAO,QAAQ,KACjC,OAAO,QAAQ,KAAKA,CAAO,EAG3B,KAAK,UAAUA,CAAO,CAE7B,CACD,eAAeA,EAAS,CAChB,OAAO,SAAW,OAAO,QAAQ,MACjC,OAAO,QAAQ,MAAMA,CAAO,EAG5B,KAAK,cAAcA,CAAO,CAEjC,CACD,IAAI6S,KAA2BrC,EAAM,CACjC,IAAIxQ,EAAU+Q,EAAU,MAAM,KAAM,SAAS,EACzC+B,GAAY,IACZA,GAAY,IAAI9S,CAAO,EAElB8S,GAAY,cACLD,EAAuB,KAAK,IAAI,EACxC7S,CAAO,CAElB,CACJ,CAC4B,IAAI+S,GAAU,IAAIH,GAI3CI,GAAQ,SAAUjN,EAAS2I,EAAOC,EAAaC,EAAiBvU,EAAU,EACtEsU,EAAY,UAAY,QACxBA,EAAY,iBAAmB,OAC/BoE,GAAO,KAAK,4BAA4BnE,EAAgB,SAAU,kDAAiD,EAEvH,IAAIqE,EAAelN,EAAQ,mBAAmB,SAAQ,EACtDA,EAAQ,qBACR,IAAImN,GAAWnN,EAAQ,cACnBoN,GAASD,GAAS,cAAc,QAAQ,EAC5CnN,EAAQ,eAAekN,CAAY,EAAI,SAAU1Y,GAAM,CACnDF,EAAS,KAAME,EAAI,CAC3B,EACI,IAAI6Y,GAAgB,0BAA4BH,EAAe,KAC/DE,GAAO,IACHxE,EAAY,SACR,aACA,mBAAmByE,EAAa,EAChC,IACA1E,EACR,IAAI2E,GAAOH,GAAS,qBAAqB,MAAM,EAAE,CAAC,GAAKA,GAAS,gBAChEG,GAAK,aAAaF,GAAQE,GAAK,UAAU,CAC7C,EACiCC,GAAcN,GAG/C,MAAMO,EAAc,CAChB,YAAYC,EAAK,CACb,KAAK,IAAMA,CACd,CACD,KAAK/G,EAAU,CACX,IAAIM,EAAO,KACP0G,EAAc,iBAAmB1G,EAAK,IAC1CA,EAAK,OAAS,SAAS,cAAc,QAAQ,EAC7CA,EAAK,OAAO,GAAKN,EAAS,GAC1BM,EAAK,OAAO,IAAMA,EAAK,IACvBA,EAAK,OAAO,KAAO,kBACnBA,EAAK,OAAO,QAAU,QAClBA,EAAK,OAAO,kBACZA,EAAK,OAAO,QAAU,UAAY,CAC9BN,EAAS,SAASgH,CAAW,CAC7C,EACY1G,EAAK,OAAO,OAAS,UAAY,CAC7BN,EAAS,SAAS,IAAI,CACtC,GAGYM,EAAK,OAAO,mBAAqB,UAAY,EACrCA,EAAK,OAAO,aAAe,UAC3BA,EAAK,OAAO,aAAe,aAC3BN,EAAS,SAAS,IAAI,CAE1C,EAEYM,EAAK,OAAO,QAAU,QACtB,SAAS,aACT,SAAS,KAAK,UAAU,SAAS,GACjCA,EAAK,YAAc,SAAS,cAAc,QAAQ,EAClDA,EAAK,YAAY,GAAKN,EAAS,GAAK,SACpCM,EAAK,YAAY,KAAON,EAAS,KAAO,KAAOgH,EAAc,MAC7D1G,EAAK,OAAO,MAAQA,EAAK,YAAY,MAAQ,IAG7CA,EAAK,OAAO,MAAQ,GAExB,IAAIsG,EAAO,SAAS,qBAAqB,MAAM,EAAE,CAAC,EAClDA,EAAK,aAAatG,EAAK,OAAQsG,EAAK,UAAU,EAC1CtG,EAAK,aACLsG,EAAK,aAAatG,EAAK,YAAaA,EAAK,OAAO,WAAW,CAElE,CACD,SAAU,CACF,KAAK,SACL,KAAK,OAAO,OAAS,KAAK,OAAO,QAAU,KAC3C,KAAK,OAAO,mBAAqB,MAEjC,KAAK,QAAU,KAAK,OAAO,YAC3B,KAAK,OAAO,WAAW,YAAY,KAAK,MAAM,EAE9C,KAAK,aAAe,KAAK,YAAY,YACrC,KAAK,YAAY,WAAW,YAAY,KAAK,WAAW,EAE5D,KAAK,OAAS,KACd,KAAK,YAAc,IACtB,CACJ,CAKD,MAAM2G,EAA2B,CAC7B,YAAYtZ,EAAKG,EAAM,CACnB,KAAK,IAAMH,EACX,KAAK,KAAOG,CACf,CACD,KAAKkS,EAAU,CACX,GAAI,MAAK,QAGT,KAAIiC,EAAQ2D,GAAiB,KAAK,IAAI,EAClCjY,EAAM,KAAK,IAAM,IAAMqS,EAAS,OAAS,IAAMiC,EACnD,KAAK,QAAUzB,GAAQ,oBAAoB7S,CAAG,EAC9C,KAAK,QAAQ,KAAKqS,CAAQ,EAC7B,CACD,SAAU,CACF,KAAK,SACL,KAAK,QAAQ,SAEpB,CACJ,CAKD,IAAIkH,GAAW,SAAUC,EAAQC,EAAQ,CACrC,OAAO,SAAUtZ,EAAMF,EAAU,CAC7B,IAAIyZ,EAAS,QAAUD,EAAS,IAAM,IAAM,MACxCzZ,EAAM0Z,GAAUF,EAAO,MAAQA,EAAO,QAAQ,MAAQA,EAAO,QAAQ,KACrE5G,GAAUC,GAAQ,mBAAmB7S,EAAKG,CAAI,EAC9CkS,GAAWQ,GAAQ,gBAAgB,OAAO,SAAUlK,GAAOkI,GAAQ,CACnEyB,EAAgB,OAAOD,EAAQ,EAC/BO,GAAQ,QAAO,EACX/B,IAAUA,GAAO,OACjB2I,EAAO,KAAO3I,GAAO,MAErB5Q,GACAA,EAAS0I,GAAOkI,EAAM,CAEtC,CAAS,EACD+B,GAAQ,KAAKP,EAAQ,CAC7B,CACA,EACIsH,GAAuB,CACvB,KAAM,QACN,SAAAJ,EACJ,EACiCK,GAAkBD,GAInD,SAASE,GAAcC,EAAYtR,EAAQ8P,EAAM,CAC7C,IAAIoB,EAASI,GAActR,EAAO,OAAS,IAAM,IAC7CuR,EAAOvR,EAAO,OAASA,EAAO,QAAUA,EAAO,WACnD,OAAOkR,EAAS,MAAQK,EAAOzB,CAClC,CACD,SAAS0B,GAAenV,EAAKoV,EAAa,CACtC,IAAI3B,EAAO,QAAUzT,EACjByP,EAAQ,aACR9B,EAAS,SACT,sBAEAA,EAAS,SACRyH,EAAc,IAAMA,EAAc,IACvC,OAAO3B,EAAOhE,CACjB,CACD,IAAI4F,GAAK,CACL,WAAY,SAAUrV,EAAK2D,EAAQ,CAC/B,IAAI8P,GAAQ9P,EAAO,UAAY,IAAMwR,GAAenV,EAAK,aAAa,EACtE,OAAOgV,GAAc,KAAMrR,EAAQ8P,CAAI,CAC1C,CACL,EACI6B,GAAO,CACP,WAAY,SAAUtV,EAAK2D,EAAQ,CAC/B,IAAI8P,GAAQ9P,EAAO,UAAY,WAAawR,GAAenV,CAAG,EAC9D,OAAOgV,GAAc,OAAQrR,EAAQ8P,CAAI,CAC5C,CACL,EACI8B,GAAS,CACT,WAAY,SAAUvV,EAAK2D,EAAQ,CAC/B,OAAOqR,GAAc,OAAQrR,EAAQA,EAAO,UAAY,SAAS,CACpE,EACD,QAAS,SAAU3D,EAAK2D,EAAQ,CAC5B,OAAOwR,GAAenV,CAAG,CAC5B,CACL,EAIA,MAAMwV,EAAmC,CACrC,aAAc,CACV,KAAK,WAAa,EACrB,CACD,IAAIhL,EAAM,CACN,OAAO,KAAK,WAAW1E,GAAO0E,CAAI,CAAC,CACtC,CACD,IAAIA,EAAMpP,EAAU0L,EAAS,CACzB,IAAI2O,EAAoB3P,GAAO0E,CAAI,EACnC,KAAK,WAAWiL,CAAiB,EAC7B,KAAK,WAAWA,CAAiB,GAAK,GAC1C,KAAK,WAAWA,CAAiB,EAAE,KAAK,CACpC,GAAIra,EACJ,QAAS0L,CACrB,CAAS,CACJ,CACD,OAAO0D,EAAMpP,EAAU0L,EAAS,CAC5B,GAAI,CAAC0D,GAAQ,CAACpP,GAAY,CAAC0L,EAAS,CAChC,KAAK,WAAa,GAClB,MACH,CACD,IAAI4O,EAAQlL,EAAO,CAAC1E,GAAO0E,CAAI,CAAC,EAAI+H,EAAK,KAAK,UAAU,EACpDnX,GAAY0L,EACZ,KAAK,eAAe4O,EAAOta,EAAU0L,CAAO,EAG5C,KAAK,mBAAmB4O,CAAK,CAEpC,CACD,eAAeA,EAAOta,EAAU0L,EAAS,CACrC4L,EAAMgD,EAAO,SAAUlL,EAAM,CACzB,KAAK,WAAWA,CAAI,EAAIqI,EAAO,KAAK,WAAWrI,CAAI,GAAK,GAAI,SAAUmL,EAAS,CAC3E,OAASva,GAAYA,IAAaua,EAAQ,IACrC7O,GAAWA,IAAY6O,EAAQ,OACpD,CAAa,EACG,KAAK,WAAWnL,CAAI,EAAE,SAAW,GACjC,OAAO,KAAK,WAAWA,CAAI,CAElC,EAAE,IAAI,CACV,CACD,mBAAmBkL,EAAO,CACtBhD,EAAMgD,EAAO,SAAUlL,EAAM,CACzB,OAAO,KAAK,WAAWA,CAAI,CAC9B,EAAE,IAAI,CACV,CACJ,CACD,SAAS1E,GAAO0E,EAAM,CAClB,MAAO,IAAMA,CAChB,CAKD,MAAMoL,EAAsB,CACxB,YAAYC,EAAa,CACrB,KAAK,UAAY,IAAIL,GACrB,KAAK,iBAAmB,GACxB,KAAK,YAAcK,CACtB,CACD,KAAKC,EAAW1a,EAAU0L,EAAS,CAC/B,YAAK,UAAU,IAAIgP,EAAW1a,EAAU0L,CAAO,EACxC,IACV,CACD,YAAY1L,EAAU,CAClB,YAAK,iBAAiB,KAAKA,CAAQ,EAC5B,IACV,CACD,OAAO0a,EAAW1a,EAAU0L,EAAS,CACjC,YAAK,UAAU,OAAOgP,EAAW1a,EAAU0L,CAAO,EAC3C,IACV,CACD,cAAc1L,EAAU,CACpB,OAAKA,GAIL,KAAK,iBAAmByX,EAAO,KAAK,kBAAoB,GAAIvH,GAAKA,IAAMlQ,CAAQ,EACxE,OAJH,KAAK,iBAAmB,GACjB,KAId,CACD,YAAa,CACT,YAAK,OAAM,EACX,KAAK,cAAa,EACX,IACV,CACD,KAAK0a,EAAWxa,EAAMya,EAAU,CAC5B,QAAS/X,EAAI,EAAGA,EAAI,KAAK,iBAAiB,OAAQA,IAC9C,KAAK,iBAAiBA,CAAC,EAAE8X,EAAWxa,CAAI,EAE5C,IAAI2S,EAAY,KAAK,UAAU,IAAI6H,CAAS,EACxCvE,GAAO,GAOX,GANIwE,EACAxE,GAAK,KAAKjW,EAAMya,CAAQ,EAEnBza,GACLiW,GAAK,KAAKjW,CAAI,EAEd2S,GAAaA,EAAU,OAAS,EAChC,QAASjQ,EAAI,EAAGA,EAAIiQ,EAAU,OAAQjQ,IAClCiQ,EAAUjQ,CAAC,EAAE,GAAG,MAAMiQ,EAAUjQ,CAAC,EAAE,SAAW,OAAQuT,EAAI,OAGzD,KAAK,aACV,KAAK,YAAYuE,EAAWxa,CAAI,EAEpC,OAAO,IACV,CACJ,CAQD,MAAM0a,WAAiDJ,EAAsB,CACzE,YAAYK,EAAOzL,EAAM0L,EAAUlW,EAAK6N,EAAS,CAC7C,QACA,KAAK,WAAaG,GAAQ,+BAC1B,KAAK,MAAQiI,EACb,KAAK,KAAOzL,EACZ,KAAK,SAAW0L,EAChB,KAAK,IAAMlW,EACX,KAAK,QAAU6N,EACf,KAAK,MAAQ,MACb,KAAK,SAAWA,EAAQ,SACxB,KAAK,gBAAkBA,EAAQ,gBAC/B,KAAK,GAAK,KAAK,SAAS,iBAAgB,CAC3C,CACD,uBAAwB,CACpB,MAAO,EAAQ,KAAK,MAAM,qBAC7B,CACD,cAAe,CACX,MAAO,EAAQ,KAAK,MAAM,YAC7B,CACD,SAAU,CACN,GAAI,KAAK,QAAU,KAAK,QAAU,cAC9B,MAAO,GAEX,IAAI1S,EAAM,KAAK,MAAM,KAAK,WAAW,KAAK,IAAK,KAAK,OAAO,EAC3D,GAAI,CACA,KAAK,OAAS,KAAK,MAAM,UAAUA,EAAK,KAAK,OAAO,CACvD,OACMgG,EAAG,CACN,OAAAsQ,EAAK,MAAM,IAAM,CACb,KAAK,QAAQtQ,CAAC,EACd,KAAK,YAAY,QAAQ,CACzC,CAAa,EACM,EACV,CACD,YAAK,cAAa,EAClB2S,GAAO,MAAM,aAAc,CAAE,UAAW,KAAK,KAAM,IAAA3Y,CAAG,CAAE,EACxD,KAAK,YAAY,YAAY,EACtB,EACV,CACD,OAAQ,CACJ,OAAI,KAAK,QACL,KAAK,OAAO,QACL,IAGA,EAEd,CACD,KAAKG,EAAM,CACP,OAAI,KAAK,QAAU,QACfmW,EAAK,MAAM,IAAM,CACT,KAAK,QACL,KAAK,OAAO,KAAKnW,CAAI,CAEzC,CAAa,EACM,IAGA,EAEd,CACD,MAAO,CACC,KAAK,QAAU,QAAU,KAAK,aAAY,GAC1C,KAAK,OAAO,MAEnB,CACD,QAAS,CACD,KAAK,MAAM,YACX,KAAK,MAAM,WAAW,KAAK,OAAQ,KAAK,MAAM,KAAK,QAAQ,KAAK,IAAK,KAAK,OAAO,CAAC,EAEtF,KAAK,YAAY,MAAM,EACvB,KAAK,OAAO,OAAS,MACxB,CACD,QAAQwI,EAAO,CACX,KAAK,KAAK,QAAS,CAAE,KAAM,iBAAkB,MAAOA,CAAK,CAAE,EAC3D,KAAK,SAAS,MAAM,KAAK,qBAAqB,CAAE,MAAOA,EAAM,UAAY,EAAC,CAC7E,CACD,QAAQqS,EAAY,CACZA,EACA,KAAK,YAAY,SAAU,CACvB,KAAMA,EAAW,KACjB,OAAQA,EAAW,OACnB,SAAUA,EAAW,QACrC,CAAa,EAGD,KAAK,YAAY,QAAQ,EAE7B,KAAK,gBAAe,EACpB,KAAK,OAAS,MACjB,CACD,UAAUpV,EAAS,CACf,KAAK,KAAK,UAAWA,CAAO,CAC/B,CACD,YAAa,CACT,KAAK,KAAK,UAAU,CACvB,CACD,eAAgB,CACZ,KAAK,OAAO,OAAS,IAAM,CACvB,KAAK,OAAM,CACvB,EACQ,KAAK,OAAO,QAAU+C,GAAS,CAC3B,KAAK,QAAQA,CAAK,CAC9B,EACQ,KAAK,OAAO,QAAUqS,GAAc,CAChC,KAAK,QAAQA,CAAU,CACnC,EACQ,KAAK,OAAO,UAAYpV,GAAW,CAC/B,KAAK,UAAUA,CAAO,CAClC,EACY,KAAK,iBACL,KAAK,OAAO,WAAa,IAAM,CAC3B,KAAK,WAAU,CAC/B,EAEK,CACD,iBAAkB,CACV,KAAK,SACL,KAAK,OAAO,OAAS,OACrB,KAAK,OAAO,QAAU,OACtB,KAAK,OAAO,QAAU,OACtB,KAAK,OAAO,UAAY,OACpB,KAAK,iBACL,KAAK,OAAO,WAAa,QAGpC,CACD,YAAYqV,EAAOzS,EAAQ,CACvB,KAAK,MAAQyS,EACb,KAAK,SAAS,KAAK,KAAK,qBAAqB,CACzC,MAAOA,EACP,OAAQzS,CACX,EAAC,EACF,KAAK,KAAKyS,EAAOzS,CAAM,CAC1B,CACD,qBAAqB5C,EAAS,CAC1B,OAAO2Q,EAAO,CAAE,IAAK,KAAK,EAAE,EAAI3Q,CAAO,CAC1C,CACJ,CAID,MAAMsV,EAAoB,CACtB,YAAYJ,EAAO,CACf,KAAK,MAAQA,CAChB,CACD,YAAYK,EAAa,CACrB,OAAO,KAAK,MAAM,YAAYA,CAAW,CAC5C,CACD,iBAAiB9L,EAAM0L,EAAUlW,EAAK6N,EAAS,CAC3C,OAAO,IAAImI,GAAyC,KAAK,MAAOxL,EAAM0L,EAAUlW,EAAK6N,CAAO,CAC/F,CACJ,CAOD,IAAI0I,GAAc,IAAIF,GAAoB,CACtC,KAAMhB,GACN,sBAAuB,GACvB,aAAc,GACd,cAAe,UAAY,CACvB,MAAO,EAAQrH,GAAQ,gBAAe,CACzC,EACD,YAAa,UAAY,CACrB,MAAO,EAAQA,GAAQ,gBAAe,CACzC,EACD,UAAW,SAAU7S,EAAK,CACtB,OAAO6S,GAAQ,gBAAgB7S,CAAG,CACrC,CACL,CAAC,EACGqb,GAAoB,CACpB,KAAMlB,GACN,sBAAuB,GACvB,aAAc,GACd,cAAe,UAAY,CACvB,MAAO,EACV,CACL,EACImB,GAAyB/E,EAAO,CAChC,UAAW,SAAUvW,EAAK,CACtB,OAAO6S,GAAQ,YAAY,sBAAsB7S,CAAG,CACvD,CACJ,EAAEqb,EAAiB,EAChBE,GAAuBhF,EAAO,CAC9B,UAAW,SAAUvW,EAAK,CACtB,OAAO6S,GAAQ,YAAY,oBAAoB7S,CAAG,CACrD,CACJ,EAAEqb,EAAiB,EAChBG,GAAmB,CACnB,YAAa,UAAY,CACrB,OAAO3I,GAAQ,gBAClB,CACL,EACI4I,GAAwB,IAAIP,GAAqB3E,EAAO,GAAI+E,GAAwBE,EAAgB,GACpGE,GAAsB,IAAIR,GAAoB3E,EAAO,GAAIgF,GAAsBC,EAAgB,CAAC,EAChGG,GAAa,CACb,GAAIP,GACJ,cAAeK,GACf,YAAaC,EACjB,EACiCE,GAAcD,GAS3CE,GAAkB,IAAIX,GAAoB,CAC1C,KAAM,SACN,KAAMd,GACN,sBAAuB,GACvB,aAAc,GACd,YAAa,UAAY,CACrB,MAAO,EACV,EACD,cAAe,UAAY,CACvB,OAAO,OAAO,SAAW,MAC5B,EACD,UAAW,SAAUpa,EAAK0S,EAAS,CAC/B,OAAO,IAAI,OAAO,OAAO1S,EAAK,KAAM,CAChC,QAASoT,EAAa,QAAQ,SAAU,CACpC,OAAQV,EAAQ,MAChC,CAAa,EACD,mBAAoBA,EAAQ,gBACxC,CAAS,CACJ,EACD,WAAY,SAAUoJ,EAAQxD,EAAM,CAChCwD,EAAO,KAAK,KAAK,UAAU,CACvB,KAAMxD,CACT,EAAC,CACL,CACL,CAAC,EACGyD,GAAmB,CACnB,YAAa,SAAUZ,EAAa,CAChC,IAAIa,EAAMnJ,GAAQ,eAAesI,EAAY,MAAM,EACnD,OAAOa,CACV,CACL,EACIC,GAAwB,IAAIf,GAAqB3E,EAAO,GAAI+E,GAAwBS,EAAgB,GACpGG,GAAsB,IAAIhB,GAAoB3E,EAAO,GAAIgF,GAAsBQ,EAAgB,CAAC,EACpGH,GAAW,cAAgBK,GAC3BL,GAAW,YAAcM,GACzBN,GAAW,OAASC,GACS,IAAIM,GAAyBP,GAI1D,MAAMQ,WAAyB3B,EAAsB,CACjD,aAAc,CACV,QACA,IAAI9H,EAAO,KACP,OAAO,mBAAqB,SAC5B,OAAO,iBAAiB,SAAU,UAAY,CAC1CA,EAAK,KAAK,QAAQ,CACrB,EAAE,EAAK,EACR,OAAO,iBAAiB,UAAW,UAAY,CAC3CA,EAAK,KAAK,SAAS,CACtB,EAAE,EAAK,EAEf,CACD,UAAW,CACP,OAAI,OAAO,UAAU,SAAW,OACrB,GAGA,OAAO,UAAU,MAE/B,CACJ,CACD,IAAI0J,GAAmB,IAAID,GAK3B,MAAME,EAAkE,CACpE,YAAYC,EAASC,EAAW9J,EAAS,CACrC,KAAK,QAAU6J,EACf,KAAK,UAAYC,EACjB,KAAK,aAAe9J,EAAQ,aAC5B,KAAK,aAAeA,EAAQ,aAC5B,KAAK,UAAY,MACpB,CACD,iBAAiBrD,EAAM0L,EAAUlW,EAAK6N,EAAS,CAC3CA,EAAU6D,EAAO,CAAE,EAAE7D,EAAS,CAC1B,gBAAiB,KAAK,SAClC,CAAS,EACD,IAAI+J,EAAa,KAAK,UAAU,iBAAiBpN,EAAM0L,EAAUlW,EAAK6N,CAAO,EACzEgK,GAAgB,KAChBC,GAAS,UAAY,CACrBF,EAAW,OAAO,OAAQE,EAAM,EAChCF,EAAW,KAAK,SAAUG,EAAQ,EAClCF,GAAgBpG,EAAK,KACjC,EACYsG,GAAW5B,IAAc,CAEzB,GADAyB,EAAW,OAAO,SAAUG,EAAQ,EAChC5B,GAAW,OAAS,MAAQA,GAAW,OAAS,KAChD,KAAK,QAAQ,sBAER,CAACA,GAAW,UAAY0B,GAAe,CAC5C,IAAIG,GAAWvG,EAAK,IAAG,EAAKoG,GACxBG,GAAW,EAAI,KAAK,eACpB,KAAK,QAAQ,cACb,KAAK,UAAY,KAAK,IAAIA,GAAW,EAAG,KAAK,YAAY,EAEhE,CACb,EACQ,OAAAJ,EAAW,KAAK,OAAQE,EAAM,EACvBF,CACV,CACD,YAAYtB,EAAa,CACrB,OAAO,KAAK,QAAQ,QAAS,GAAI,KAAK,UAAU,YAAYA,CAAW,CAC1E,CACJ,CAGD,MAAM2B,GAAW,CACb,cAAe,SAAUC,EAAc,CACnC,GAAI,CACA,IAAIC,EAAc,KAAK,MAAMD,EAAa,IAAI,EAC1CE,EAAkBD,EAAY,KAClC,GAAI,OAAOC,GAAoB,SAC3B,GAAI,CACAA,EAAkB,KAAK,MAAMD,EAAY,IAAI,CAChD,MACS,CAAG,CAEjB,IAAIE,EAAc,CACd,MAAOF,EAAY,MACnB,QAASA,EAAY,QACrB,KAAMC,CACtB,EACY,OAAID,EAAY,UACZE,EAAY,QAAUF,EAAY,SAE/BE,CACV,OACMlX,EAAG,CACN,KAAM,CAAE,KAAM,oBAAqB,MAAOA,EAAG,KAAM+W,EAAa,KACnE,CACJ,EACD,cAAe,SAAU3a,EAAO,CAC5B,OAAO,KAAK,UAAUA,CAAK,CAC9B,EACD,iBAAkB,SAAU2a,EAAc,CACtC,IAAInX,EAAUkX,GAAS,cAAcC,CAAY,EACjD,GAAInX,EAAQ,QAAU,gCAAiC,CACnD,GAAI,CAACA,EAAQ,KAAK,iBACd,KAAM,6CAEV,MAAO,CACH,OAAQ,YACR,GAAIA,EAAQ,KAAK,UACjB,gBAAiBA,EAAQ,KAAK,iBAAmB,GACjE,CACS,KACI,IAAIA,EAAQ,QAAU,eACvB,MAAO,CACH,OAAQ,KAAK,eAAeA,EAAQ,IAAI,EACxC,MAAO,KAAK,cAAcA,EAAQ,IAAI,CACtD,EAGY,KAAM,oBAEb,EACD,eAAgB,SAAUoV,EAAY,CAClC,OAAIA,EAAW,KAAO,IACdA,EAAW,MAAQ,MAAQA,EAAW,MAAQ,KACvC,UAGA,KAGNA,EAAW,OAAS,IAClB,WAEFA,EAAW,KAAO,KAChB,UAEFA,EAAW,KAAO,KAChB,UAEFA,EAAW,KAAO,KAChB,QAGA,SAEd,EACD,cAAe,SAAUA,EAAY,CACjC,OAAIA,EAAW,OAAS,KAAQA,EAAW,OAAS,KACzC,CACH,KAAM,cACN,KAAM,CACF,KAAMA,EAAW,KACjB,QAASA,EAAW,QAAUA,EAAW,OAC5C,CACjB,EAGmB,IAEd,CACL,EAC6B,IAAImC,GAAqBL,GAOtD,MAAMM,WAA8B3C,EAAsB,CACtD,YAAYvI,EAAIsK,EAAW,CACvB,QACA,KAAK,GAAKtK,EACV,KAAK,UAAYsK,EACjB,KAAK,gBAAkBA,EAAU,gBACjC,KAAK,cAAa,CACrB,CACD,uBAAwB,CACpB,OAAO,KAAK,UAAU,uBACzB,CACD,KAAKrc,EAAM,CACP,OAAO,KAAK,UAAU,KAAKA,CAAI,CAClC,CACD,WAAWkP,EAAMlP,EAAMkd,EAAS,CAC5B,IAAIjb,EAAQ,CAAE,MAAOiN,EAAM,KAAMlP,CAAI,EACrC,OAAIkd,IACAjb,EAAM,QAAUib,GAEpB1E,GAAO,MAAM,aAAcvW,CAAK,EACzB,KAAK,KAAK+a,GAAkB,cAAc/a,CAAK,CAAC,CAC1D,CACD,MAAO,CACC,KAAK,UAAU,eACf,KAAK,UAAU,OAGf,KAAK,WAAW,cAAe,EAAE,CAExC,CACD,OAAQ,CACJ,KAAK,UAAU,OAClB,CACD,eAAgB,CACZ,IAAIkb,EAAY,CACZ,QAAUP,GAAiB,CACvB,IAAIG,EACJ,GAAI,CACAA,EAAcC,GAAkB,cAAcJ,CAAY,CAC7D,OACM/W,EAAG,CACN,KAAK,KAAK,QAAS,CACf,KAAM,oBACN,MAAOA,EACP,KAAM+W,EAAa,IAC3C,CAAqB,CACJ,CACD,GAAIG,IAAgB,OAAW,CAE3B,OADAvE,GAAO,MAAM,aAAcuE,CAAW,EAC9BA,EAAY,MAAK,CACrB,IAAK,eACD,KAAK,KAAK,QAAS,CACf,KAAM,cACN,KAAMA,EAAY,IAClD,CAA6B,EACD,MACJ,IAAK,cACD,KAAK,KAAK,MAAM,EAChB,MACJ,IAAK,cACD,KAAK,KAAK,MAAM,EAChB,KACP,CACD,KAAK,KAAK,UAAWA,CAAW,CACnC,CACJ,EACD,SAAU,IAAM,CACZ,KAAK,KAAK,UAAU,CACvB,EACD,MAAOvU,GAAS,CACZ,KAAK,KAAK,QAASA,CAAK,CAC3B,EACD,OAAQqS,GAAc,CAClBuC,IACIvC,GAAcA,EAAW,MACzB,KAAK,iBAAiBA,CAAU,EAEpC,KAAK,UAAY,KACjB,KAAK,KAAK,QAAQ,CACrB,CACb,EACYuC,EAAkB,IAAM,CACxBpG,EAAYmG,EAAW,CAACE,EAAUpb,IAAU,CACxC,KAAK,UAAU,OAAOA,EAAOob,CAAQ,CACrD,CAAa,CACb,EACQrG,EAAYmG,EAAW,CAACE,EAAUpb,IAAU,CACxC,KAAK,UAAU,KAAKA,EAAOob,CAAQ,CAC/C,CAAS,CACJ,CACD,iBAAiBxC,EAAY,CACzB,IAAIyC,EAASN,GAAkB,eAAenC,CAAU,EACpDrS,EAAQwU,GAAkB,cAAcnC,CAAU,EAClDrS,GACA,KAAK,KAAK,QAASA,CAAK,EAExB8U,GACA,KAAK,KAAKA,EAAQ,CAAE,OAAQA,EAAQ,MAAO9U,CAAK,CAAE,CAEzD,CACJ,CAMD,MAAM+U,EAAoB,CACtB,YAAYlB,EAAWvc,EAAU,CAC7B,KAAK,UAAYuc,EACjB,KAAK,SAAWvc,EAChB,KAAK,cAAa,CACrB,CACD,OAAQ,CACJ,KAAK,gBAAe,EACpB,KAAK,UAAU,OAClB,CACD,eAAgB,CACZ,KAAK,UAAY2W,GAAK,CAClB,KAAK,gBAAe,EACpB,IAAI/F,EACJ,GAAI,CACAA,EAASsM,GAAkB,iBAAiBvG,CAAC,CAChD,OACM5Q,EAAG,CACN,KAAK,OAAO,QAAS,CAAE,MAAOA,CAAG,GACjC,KAAK,UAAU,QACf,MACH,CACG6K,EAAO,SAAW,YAClB,KAAK,OAAO,YAAa,CACrB,WAAY,IAAIuM,GAAsBvM,EAAO,GAAI,KAAK,SAAS,EAC/D,gBAAiBA,EAAO,eAC5C,CAAiB,GAGD,KAAK,OAAOA,EAAO,OAAQ,CAAE,MAAOA,EAAO,KAAK,CAAE,EAClD,KAAK,UAAU,QAE/B,EACQ,KAAK,SAAWmK,GAAc,CAC1B,KAAK,gBAAe,EACpB,IAAIyC,EAASN,GAAkB,eAAenC,CAAU,GAAK,UACzDrS,EAAQwU,GAAkB,cAAcnC,CAAU,EACtD,KAAK,OAAOyC,EAAQ,CAAE,MAAO9U,CAAO,EAChD,EACQ,KAAK,UAAU,KAAK,UAAW,KAAK,SAAS,EAC7C,KAAK,UAAU,KAAK,SAAU,KAAK,QAAQ,CAC9C,CACD,iBAAkB,CACd,KAAK,UAAU,OAAO,UAAW,KAAK,SAAS,EAC/C,KAAK,UAAU,OAAO,SAAU,KAAK,QAAQ,CAChD,CACD,OAAO8U,EAAQjV,EAAQ,CACnB,KAAK,SAAS+N,EAAO,CAAE,UAAW,KAAK,UAAW,OAAQkH,GAAUjV,CAAM,CAAC,CAC9E,CACJ,CAID,MAAMmV,EAA+B,CACjC,YAAYC,EAAUlL,EAAS,CAC3B,KAAK,SAAWkL,EAChB,KAAK,QAAUlL,GAAW,EAC7B,CACD,KAAK+G,EAAQxZ,EAAU,CACf,KAAK,SAAS,WAGlB,KAAK,SAAS,KAAK4S,GAAQ,kBAAkB,SAAS,KAAM4G,CAAM,EAAGxZ,CAAQ,CAChF,CACJ,CAQD,MAAM4d,WAAwBpD,EAAsB,CAChD,YAAYpL,EAAMyO,EAAQ,CACtB,MAAM,SAAU1b,EAAOjC,EAAM,CACzBwY,GAAO,MAAM,mBAAqBtJ,EAAO,QAAUjN,CAAK,CACpE,CAAS,EACD,KAAK,KAAOiN,EACZ,KAAK,OAASyO,EACd,KAAK,WAAa,GAClB,KAAK,oBAAsB,GAC3B,KAAK,sBAAwB,EAChC,CACD,UAAUC,EAAU9d,EAAU,CAC1B,OAAOA,EAAS,KAAM,CAAE,KAAM,EAAI,EACrC,CACD,QAAQmC,EAAOjC,EAAM,CACjB,GAAIiC,EAAM,QAAQ,SAAS,IAAM,EAC7B,MAAM,IAAIsR,EAAa,UAAYtR,EAAQ,iCAAiC,EAEhF,GAAI,CAAC,KAAK,WAAY,CAClB,IAAIyS,EAASvB,EAAU,eAAe,wBAAwB,EAC9DqF,GAAO,KAAK,0EAA0E9D,CAAM,EAAE,CACjG,CACD,OAAO,KAAK,OAAO,WAAWzS,EAAOjC,EAAM,KAAK,IAAI,CACvD,CACD,YAAa,CACT,KAAK,WAAa,GAClB,KAAK,oBAAsB,EAC9B,CACD,YAAYiC,EAAO,CACf,IAAIuY,EAAYvY,EAAM,MAClBjC,EAAOiC,EAAM,KACjB,GAAIuY,IAAc,yCACd,KAAK,iCAAiCvY,CAAK,UAEtCuY,IAAc,qCACnB,KAAK,6BAA6BvY,CAAK,UAElCuY,EAAU,QAAQ,kBAAkB,IAAM,EAAG,CAClD,IAAIC,EAAW,GACf,KAAK,KAAKD,EAAWxa,EAAMya,CAAQ,CACtC,CACJ,CACD,iCAAiCxY,EAAO,CACpC,KAAK,oBAAsB,GAC3B,KAAK,WAAa,GACd,KAAK,sBACL,KAAK,OAAO,YAAY,KAAK,IAAI,EAGjC,KAAK,KAAK,gCAAiCA,EAAM,IAAI,CAE5D,CACD,6BAA6BA,EAAO,CAC5BA,EAAM,KAAK,qBACX,KAAK,kBAAoBA,EAAM,KAAK,oBAExC,KAAK,KAAK,4BAA6BA,EAAM,IAAI,CACpD,CACD,WAAY,CACJ,KAAK,aAGT,KAAK,oBAAsB,GAC3B,KAAK,sBAAwB,GAC7B,KAAK,UAAU,KAAK,OAAO,WAAW,UAAW,CAACuG,EAAOxI,IAAS,CAC1DwI,GACA,KAAK,oBAAsB,GAC3BgQ,GAAO,MAAMhQ,EAAM,SAAU,GAC7B,KAAK,KAAK,4BAA6B,OAAO,OAAO,GAAI,CACrD,KAAM,YACN,MAAOA,EAAM,OACjC,EAAmBA,aAAiBwL,GAAgB,CAAE,OAAQxL,EAAM,MAAQ,EAAG,CAAE,EAAC,GAGlE,KAAK,OAAO,WAAW,mBAAoB,CACvC,KAAMxI,EAAK,KACX,aAAcA,EAAK,aACnB,QAAS,KAAK,IAClC,CAAiB,CAEjB,CAAS,EACJ,CACD,aAAc,CACV,KAAK,WAAa,GAClB,KAAK,OAAO,WAAW,qBAAsB,CACzC,QAAS,KAAK,IAC1B,CAAS,CACJ,CACD,oBAAqB,CACjB,KAAK,sBAAwB,EAChC,CACD,uBAAwB,CACpB,KAAK,sBAAwB,EAChC,CACJ,CAID,MAAM6d,WAAuCH,EAAgB,CACzD,UAAUE,EAAU9d,EAAU,CAC1B,OAAO,KAAK,OAAO,OAAO,kBAAkB,CACxC,YAAa,KAAK,KAClB,SAAU8d,CACb,EAAE9d,CAAQ,CACd,CACJ,CAID,MAAMge,EAAgB,CAClB,aAAc,CACV,KAAK,MAAK,CACb,CACD,IAAI/L,EAAI,CACJ,OAAI,OAAO,UAAU,eAAe,KAAK,KAAK,QAASA,CAAE,EAC9C,CACH,GAAIA,EACJ,KAAM,KAAK,QAAQA,CAAE,CACrC,EAGmB,IAEd,CACD,KAAKjS,EAAU,CACXkX,EAAY,KAAK,QAAS,CAAC+G,EAAQhM,IAAO,CACtCjS,EAAS,KAAK,IAAIiS,CAAE,CAAC,CACjC,CAAS,CACJ,CACD,QAAQA,EAAI,CACR,KAAK,KAAOA,CACf,CACD,eAAeiM,EAAkB,CAC7B,KAAK,QAAUA,EAAiB,SAAS,KACzC,KAAK,MAAQA,EAAiB,SAAS,MACvC,KAAK,GAAK,KAAK,IAAI,KAAK,IAAI,CAC/B,CACD,UAAUC,EAAY,CAClB,OAAI,KAAK,IAAIA,EAAW,OAAO,IAAM,MACjC,KAAK,QAET,KAAK,QAAQA,EAAW,OAAO,EAAIA,EAAW,UACvC,KAAK,IAAIA,EAAW,OAAO,CACrC,CACD,aAAaA,EAAY,CACrB,IAAIF,EAAS,KAAK,IAAIE,EAAW,OAAO,EACxC,OAAIF,IACA,OAAO,KAAK,QAAQE,EAAW,OAAO,EACtC,KAAK,SAEFF,CACV,CACD,OAAQ,CACJ,KAAK,QAAU,GACf,KAAK,MAAQ,EACb,KAAK,KAAO,KACZ,KAAK,GAAK,IACb,CACJ,CAGD,IAAIG,GAAkD,SAAUC,EAASC,EAAYC,EAAGC,EAAW,CAC/F,SAASC,EAAMpT,EAAO,CAAE,OAAOA,aAAiBkT,EAAIlT,EAAQ,IAAIkT,EAAE,SAAUG,GAAS,CAAEA,GAAQrT,CAAK,CAAE,CAAE,CAAI,CAC5G,OAAO,IAAKkT,IAAMA,EAAI,UAAU,SAAUG,EAASC,GAAQ,CACvD,SAASC,GAAUvT,GAAO,CAAE,GAAI,CAAEwT,GAAKL,EAAU,KAAKnT,EAAK,CAAC,CAAE,OAAUtF,GAAG,CAAE4Y,GAAO5Y,EAAC,EAAM,CAC3F,SAAS+Y,GAASzT,GAAO,CAAE,GAAI,CAAEwT,GAAKL,EAAU,MAASnT,EAAK,CAAC,CAAI,OAAQtF,GAAG,CAAE4Y,GAAO5Y,EAAC,EAAM,CAC9F,SAAS8Y,GAAKjO,GAAQ,CAAEA,GAAO,KAAO8N,EAAQ9N,GAAO,KAAK,EAAI6N,EAAM7N,GAAO,KAAK,EAAE,KAAKgO,GAAWE,EAAQ,CAAI,CAC9GD,IAAML,EAAYA,EAAU,MAAMH,EAASC,GAAc,CAAE,IAAG,KAAI,CAAE,CAC5E,CAAK,CACL,EAKA,MAAMS,WAAyChB,EAA+B,CAC1E,YAAY3O,EAAMyO,EAAQ,CACtB,MAAMzO,EAAMyO,CAAM,EAClB,KAAK,QAAU,IAAIG,EACtB,CACD,UAAUF,EAAU9d,EAAU,CAC1B,MAAM,UAAU8d,EAAU,CAACpV,EAAOsW,IAAaZ,GAAU,KAAM,OAAQ,OAAQ,WAAa,CACxF,GAAI,CAAC1V,EAED,GADAsW,EAAWA,EACPA,EAAS,cAAgB,KAAM,CAC/B,IAAIC,EAAc,KAAK,MAAMD,EAAS,YAAY,EAClD,KAAK,QAAQ,QAAQC,EAAY,OAAO,CAC3C,SAEG,MAAM,KAAK,OAAO,KAAK,kBACnB,KAAK,OAAO,KAAK,WAAa,KAC9B,KAAK,QAAQ,QAAQ,KAAK,OAAO,KAAK,UAAU,EAAE,MAEjD,CACD,IAAIrK,GAASvB,EAAU,eAAe,uBAAuB,EAC7DqF,GAAO,MAAM,sCAAsC,KAAK,IAAI,qCACtB9D,EAAM,oCACN,EACtC5U,EAAS,uBAAuB,EAChC,MACH,CAGTA,EAAS0I,EAAOsW,CAAQ,CAC3B,EAAC,CACL,CACD,YAAY7c,EAAO,CACf,IAAIuY,EAAYvY,EAAM,MACtB,GAAIuY,EAAU,QAAQ,kBAAkB,IAAM,EAC1C,KAAK,oBAAoBvY,CAAK,MAE7B,CACD,IAAIjC,EAAOiC,EAAM,KACbwY,EAAW,GACXxY,EAAM,UACNwY,EAAS,QAAUxY,EAAM,SAE7B,KAAK,KAAKuY,EAAWxa,EAAMya,CAAQ,CACtC,CACJ,CACD,oBAAoBxY,EAAO,CACvB,IAAIuY,EAAYvY,EAAM,MAClBjC,EAAOiC,EAAM,KACjB,OAAQuY,EAAS,CACb,IAAK,yCACD,KAAK,iCAAiCvY,CAAK,EAC3C,MACJ,IAAK,qCACD,KAAK,6BAA6BA,CAAK,EACvC,MACJ,IAAK,+BACD,IAAI+c,EAAc,KAAK,QAAQ,UAAUhf,CAAI,EAC7C,KAAK,KAAK,sBAAuBgf,CAAW,EAC5C,MACJ,IAAK,iCACD,IAAIC,EAAgB,KAAK,QAAQ,aAAajf,CAAI,EAC9Cif,GACA,KAAK,KAAK,wBAAyBA,CAAa,EAEpD,KACP,CACJ,CACD,iCAAiChd,EAAO,CACpC,KAAK,oBAAsB,GAC3B,KAAK,WAAa,GACd,KAAK,sBACL,KAAK,OAAO,YAAY,KAAK,IAAI,GAGjC,KAAK,QAAQ,eAAeA,EAAM,IAAI,EACtC,KAAK,KAAK,gCAAiC,KAAK,OAAO,EAE9D,CACD,YAAa,CACT,KAAK,QAAQ,QACb,MAAM,WAAU,CACnB,CACJ,CAGD,IAAIid,GAAOnQ,EAAoB,CAAC,EAG5BoQ,GAASpQ,EAAoB,CAAC,EAQlC,MAAMqQ,WAA2CvB,EAA+B,CAC5E,YAAY3O,EAAMyO,EAAQ0B,EAAM,CAC5B,MAAMnQ,EAAMyO,CAAM,EAClB,KAAK,IAAM,KACX,KAAK,KAAO0B,CACf,CACD,UAAUzB,EAAU9d,EAAU,CAC1B,MAAM,UAAU8d,EAAU,CAACpV,EAAOsW,IAAa,CAC3C,GAAItW,EAAO,CACP1I,EAAS0I,EAAOsW,CAAQ,EACxB,MACH,CACD,IAAIQ,EAAeR,EAAS,cAC5B,GAAI,CAACQ,EAAc,CACfxf,EAAS,IAAI,MAAM,+DAA+D,KAAK,IAAI,EAAE,EAAG,IAAI,EACpG,MACH,CACD,KAAK,IAAM,OAAOqf,GAAO,MAAS,EAAEG,CAAY,EAChD,OAAOR,EAAS,cAChBhf,EAAS,KAAMgf,CAAQ,CACnC,CAAS,CACJ,CACD,QAAQ7c,EAAOjC,EAAM,CACjB,MAAM,IAAI6T,EAAmB,kEAAkE,CAClG,CACD,YAAY5R,EAAO,CACf,IAAIuY,EAAYvY,EAAM,MAClBjC,EAAOiC,EAAM,KACjB,GAAIuY,EAAU,QAAQ,kBAAkB,IAAM,GAC1CA,EAAU,QAAQ,SAAS,IAAM,EAAG,CACpC,MAAM,YAAYvY,CAAK,EACvB,MACH,CACD,KAAK,qBAAqBuY,EAAWxa,CAAI,CAC5C,CACD,qBAAqBiC,EAAOjC,EAAM,CAC9B,GAAI,CAAC,KAAK,IAAK,CACXwY,GAAO,MAAM,8EAA8E,EAC3F,MACH,CACD,GAAI,CAACxY,EAAK,YAAc,CAACA,EAAK,MAAO,CACjCwY,GAAO,MAAM,qGACTxY,CAAI,EACR,MACH,CACD,IAAIuf,EAAa,OAAOJ,GAAO,MAAS,EAAEnf,EAAK,UAAU,EACzD,GAAIuf,EAAW,OAAS,KAAK,KAAK,UAAU,eAAgB,CACxD/G,GAAO,MAAM,oDAAoD,KAAK,KAAK,UAAU,cAAc,UAAU+G,EAAW,MAAM,EAAE,EAChI,MACH,CACD,IAAIC,EAAQ,OAAOL,GAAO,MAAS,EAAEnf,EAAK,KAAK,EAC/C,GAAIwf,EAAM,OAAS,KAAK,KAAK,UAAU,YAAa,CAChDhH,GAAO,MAAM,+CAA+C,KAAK,KAAK,UAAU,WAAW,UAAUgH,EAAM,MAAM,EAAE,EACnH,MACH,CACD,IAAI/c,EAAQ,KAAK,KAAK,UAAU,KAAK8c,EAAYC,EAAO,KAAK,GAAG,EAChE,GAAI/c,IAAU,KAAM,CAChB+V,GAAO,MAAM,iIAAiI,EAC9I,KAAK,UAAU,KAAK,OAAO,WAAW,UAAW,CAAChQ,GAAOsW,KAAa,CAClE,GAAItW,GAAO,CACPgQ,GAAO,MAAM,iDAAiDsG,EAAQ,wDAAwD,EAC9H,MACH,CAED,GADArc,EAAQ,KAAK,KAAK,UAAU,KAAK8c,EAAYC,EAAO,KAAK,GAAG,EACxD/c,IAAU,KAAM,CAChB+V,GAAO,MAAM,gEAAgE,EAC7E,MACH,CACD,KAAK,KAAKvW,EAAO,KAAK,cAAcQ,CAAK,CAAC,CAE1D,CAAa,EACD,MACH,CACD,KAAK,KAAKR,EAAO,KAAK,cAAcQ,CAAK,CAAC,CAC7C,CACD,cAAcA,EAAO,CACjB,IAAIgd,EAAM,OAAOP,GAAK,MAAS,EAAEzc,CAAK,EACtC,GAAI,CACA,OAAO,KAAK,MAAMgd,CAAG,CACxB,MACU,CACP,OAAOA,CACV,CACJ,CACJ,CAQD,MAAMC,WAA6CpF,EAAsB,CACrE,YAAY5V,EAAK6N,EAAS,CACtB,QACA,KAAK,MAAQ,cACb,KAAK,WAAa,KAClB,KAAK,IAAM7N,EACX,KAAK,QAAU6N,EACf,KAAK,SAAW,KAAK,QAAQ,SAC7B,KAAK,SAAW,KAAK,QAAQ,OAC7B,KAAK,eAAiB,KAAK,sBAC3B,KAAK,oBAAsB,KAAK,yBAAyB,KAAK,cAAc,EAC5E,KAAK,mBAAqB,KAAK,wBAAwB,KAAK,cAAc,EAC1E,IAAIoN,EAAUjN,GAAQ,aACtBiN,EAAQ,KAAK,SAAU,IAAM,CACzB,KAAK,SAAS,KAAK,CAAE,QAAS,QAAU,IACpC,KAAK,QAAU,cAAgB,KAAK,QAAU,gBAC9C,KAAK,QAAQ,CAAC,CAE9B,CAAS,EACDA,EAAQ,KAAK,UAAW,IAAM,CAC1B,KAAK,SAAS,KAAK,CAAE,QAAS,SAAW,GACrC,KAAK,YACL,KAAK,kBAAiB,CAEtC,CAAS,EACD,KAAK,eAAc,CACtB,CACD,SAAU,CACN,GAAI,OAAK,YAAc,KAAK,QAG5B,IAAI,CAAC,KAAK,SAAS,cAAe,CAC9B,KAAK,YAAY,QAAQ,EACzB,MACH,CACD,KAAK,YAAY,YAAY,EAC7B,KAAK,gBAAe,EACpB,KAAK,oBAAmB,EAC3B,CACD,KAAK3f,EAAM,CACP,OAAI,KAAK,WACE,KAAK,WAAW,KAAKA,CAAI,EAGzB,EAEd,CACD,WAAWkP,EAAMlP,EAAMkd,EAAS,CAC5B,OAAI,KAAK,WACE,KAAK,WAAW,WAAWhO,EAAMlP,EAAMkd,CAAO,EAG9C,EAEd,CACD,YAAa,CACT,KAAK,qBAAoB,EACzB,KAAK,YAAY,cAAc,CAClC,CACD,YAAa,CACT,OAAO,KAAK,QACf,CACD,iBAAkB,CACd,IAAIpd,EAAW,CAAC0I,EAAOoX,IAAc,CAC7BpX,EACA,KAAK,OAAS,KAAK,SAAS,QAAQ,EAAG1I,CAAQ,EAG3C8f,EAAU,SAAW,SACrB,KAAK,KAAK,QAAS,CACf,KAAM,iBACN,MAAOA,EAAU,KACzC,CAAqB,EACD,KAAK,SAAS,MAAM,CAAE,eAAgBA,EAAU,KAAK,CAAE,IAGvD,KAAK,gBAAe,EACpB,KAAK,mBAAmBA,EAAU,MAAM,EAAEA,CAAS,EAGvE,EACQ,KAAK,OAAS,KAAK,SAAS,QAAQ,EAAG9f,CAAQ,CAClD,CACD,iBAAkB,CACV,KAAK,SACL,KAAK,OAAO,QACZ,KAAK,OAAS,KAErB,CACD,sBAAuB,CAInB,GAHA,KAAK,gBAAe,EACpB,KAAK,gBAAe,EACpB,KAAK,sBAAqB,EACtB,KAAK,WAAY,CACjB,IAAIwc,EAAa,KAAK,oBACtBA,EAAW,MAAK,CACnB,CACJ,CACD,gBAAiB,CACb,KAAK,SAAW,KAAK,QAAQ,YAAY,CACrC,IAAK,KAAK,IACV,SAAU,KAAK,SACf,OAAQ,KAAK,QACzB,CAAS,CACJ,CACD,QAAQ7G,EAAO,CACX,KAAK,SAAS,KAAK,CAAE,OAAQ,QAAS,MAAOA,CAAK,CAAE,EAChDA,EAAQ,GACR,KAAK,KAAK,gBAAiB,KAAK,MAAMA,EAAQ,GAAI,CAAC,EAEvD,KAAK,WAAa,IAAIK,GAAmBL,GAAS,EAAG,IAAM,CACvD,KAAK,qBAAoB,EACzB,KAAK,QAAO,CACxB,CAAS,CACJ,CACD,iBAAkB,CACV,KAAK,aACL,KAAK,WAAW,gBAChB,KAAK,WAAa,KAEzB,CACD,qBAAsB,CAClB,KAAK,iBAAmB,IAAIK,GAAmB,KAAK,QAAQ,mBAAoB,IAAM,CAClF,KAAK,YAAY,aAAa,CAC1C,CAAS,CACJ,CACD,uBAAwB,CAChB,KAAK,kBACL,KAAK,iBAAiB,eAE7B,CACD,mBAAoB,CAChB,KAAK,kBAAiB,EACtB,KAAK,WAAW,OAChB,KAAK,cAAgB,IAAIA,GAAmB,KAAK,QAAQ,YAAa,IAAM,CACxE,KAAK,SAAS,MAAM,CAAE,eAAgB,KAAK,QAAQ,WAAW,CAAE,EAChE,KAAK,QAAQ,CAAC,CAC1B,CAAS,CACJ,CACD,oBAAqB,CACjB,KAAK,kBAAiB,EAClB,KAAK,YAAc,CAAC,KAAK,WAAW,sBAAqB,IACzD,KAAK,cAAgB,IAAIA,GAAmB,KAAK,gBAAiB,IAAM,CACpE,KAAK,kBAAiB,CACtC,CAAa,EAER,CACD,mBAAoB,CACZ,KAAK,eACL,KAAK,cAAc,eAE1B,CACD,yBAAyB+J,EAAgB,CACrC,OAAOzJ,EAAO,CAAE,EAAEyJ,EAAgB,CAC9B,QAASpa,GAAW,CAChB,KAAK,mBAAkB,EACvB,KAAK,KAAK,UAAWA,CAAO,CAC/B,EACD,KAAM,IAAM,CACR,KAAK,WAAW,cAAe,EAAE,CACpC,EACD,SAAU,IAAM,CACZ,KAAK,mBAAkB,CAC1B,EACD,MAAO+C,GAAS,CACZ,KAAK,KAAK,QAASA,CAAK,CAC3B,EACD,OAAQ,IAAM,CACV,KAAK,kBAAiB,EAClB,KAAK,eACL,KAAK,QAAQ,GAAI,CAExB,CACb,CAAS,CACJ,CACD,wBAAwBqX,EAAgB,CACpC,OAAOzJ,EAAO,CAAE,EAAEyJ,EAAgB,CAC9B,UAAYD,GAAc,CACtB,KAAK,gBAAkB,KAAK,IAAI,KAAK,QAAQ,gBAAiBA,EAAU,gBAAiBA,EAAU,WAAW,iBAAmB,GAAQ,EACzI,KAAK,sBAAqB,EAC1B,KAAK,cAAcA,EAAU,UAAU,EACvC,KAAK,UAAY,KAAK,WAAW,GACjC,KAAK,YAAY,YAAa,CAAE,UAAW,KAAK,SAAS,CAAE,CAC9D,CACb,CAAS,CACJ,CACD,qBAAsB,CAClB,IAAIE,EAAmBhgB,GACX4Q,GAAW,CACXA,EAAO,OACP,KAAK,KAAK,QAAS,CAAE,KAAM,iBAAkB,MAAOA,EAAO,KAAK,CAAE,EAEtE5Q,EAAS4Q,CAAM,CAC/B,EAEQ,MAAO,CACH,SAAUoP,EAAiB,IAAM,CAC7B,KAAK,SAAW,GAChB,KAAK,eAAc,EACnB,KAAK,QAAQ,CAAC,CAC9B,CAAa,EACD,QAASA,EAAiB,IAAM,CAC5B,KAAK,WAAU,CAC/B,CAAa,EACD,QAASA,EAAiB,IAAM,CAC5B,KAAK,QAAQ,GAAI,CACjC,CAAa,EACD,MAAOA,EAAiB,IAAM,CAC1B,KAAK,QAAQ,CAAC,CAC9B,CAAa,CACb,CACK,CACD,cAAcxD,EAAY,CACtB,KAAK,WAAaA,EAClB,QAASra,KAAS,KAAK,oBACnB,KAAK,WAAW,KAAKA,EAAO,KAAK,oBAAoBA,CAAK,CAAC,EAE/D,KAAK,mBAAkB,CAC1B,CACD,mBAAoB,CAChB,GAAK,KAAK,WAGV,MAAK,kBAAiB,EACtB,QAASA,KAAS,KAAK,oBACnB,KAAK,WAAW,OAAOA,EAAO,KAAK,oBAAoBA,CAAK,CAAC,EAEjE,IAAIqa,EAAa,KAAK,WACtB,YAAK,WAAa,KACXA,EACV,CACD,YAAYyD,EAAU/f,EAAM,CACxB,IAAIggB,EAAgB,KAAK,MAEzB,GADA,KAAK,MAAQD,EACTC,IAAkBD,EAAU,CAC5B,IAAIE,EAAsBF,EACtBE,IAAwB,cACxBA,GAAuB,uBAAyBjgB,EAAK,WAEzDwY,GAAO,MAAM,gBAAiBwH,EAAgB,OAASC,CAAmB,EAC1E,KAAK,SAAS,KAAK,CAAE,MAAOF,EAAU,OAAQ/f,CAAI,CAAE,EACpD,KAAK,KAAK,eAAgB,CAAE,SAAUggB,EAAe,QAASD,CAAQ,CAAE,EACxE,KAAK,KAAKA,EAAU/f,CAAI,CAC3B,CACJ,CACD,aAAc,CACV,OAAO,KAAK,QAAU,cAAgB,KAAK,QAAU,WACxD,CACJ,CAOD,MAAMkgB,EAAkB,CACpB,aAAc,CACV,KAAK,SAAW,EACnB,CACD,IAAIhR,EAAMyO,EAAQ,CACd,OAAK,KAAK,SAASzO,CAAI,IACnB,KAAK,SAASA,CAAI,EAAIiR,GAAcjR,EAAMyO,CAAM,GAE7C,KAAK,SAASzO,CAAI,CAC5B,CACD,KAAM,CACF,OAAOiI,EAAO,KAAK,QAAQ,CAC9B,CACD,KAAKjI,EAAM,CACP,OAAO,KAAK,SAASA,CAAI,CAC5B,CACD,OAAOA,EAAM,CACT,IAAIgO,EAAU,KAAK,SAAShO,CAAI,EAChC,cAAO,KAAK,SAASA,CAAI,EAClBgO,CACV,CACD,YAAa,CACTlG,EAAY,KAAK,SAAU,SAAUkG,EAAS,CAC1CA,EAAQ,WAAU,CAC9B,CAAS,CACJ,CACJ,CACD,SAASiD,GAAcjR,EAAMyO,EAAQ,CACjC,GAAIzO,EAAK,QAAQ,oBAAoB,IAAM,EAAG,CAC1C,GAAIyO,EAAO,OAAO,KACd,OAAOhP,GAAQ,uBAAuBO,EAAMyO,EAAQA,EAAO,OAAO,IAAI,EAE1E,IAAIyC,EAAS,0FACT1L,EAASvB,EAAU,eAAe,yBAAyB,EAC/D,MAAM,IAAIU,EAAmB,GAAGuM,CAAM,KAAK1L,CAAM,EAAE,CACtD,KACI,IAAIxF,EAAK,QAAQ,UAAU,IAAM,EAClC,OAAOP,GAAQ,qBAAqBO,EAAMyO,CAAM,EAE/C,GAAIzO,EAAK,QAAQ,WAAW,IAAM,EACnC,OAAOP,GAAQ,sBAAsBO,EAAMyO,CAAM,EAEhD,GAAIzO,EAAK,QAAQ,GAAG,IAAM,EAC3B,MAAM,IAAIuE,EAAe,sCAAwCvE,EAAO,IAAI,EAG5E,OAAOP,GAAQ,cAAcO,EAAMyO,CAAM,EAEhD,CAYD,IAAI0C,GAAU,CACV,gBAAiB,CACb,OAAO,IAAIH,EACd,EACD,wBAAwBxb,EAAK6N,EAAS,CAClC,OAAO,IAAImN,GAAqChb,EAAK6N,CAAO,CAC/D,EACD,cAAcrD,EAAMyO,EAAQ,CACxB,OAAO,IAAID,GAAgBxO,EAAMyO,CAAM,CAC1C,EACD,qBAAqBzO,EAAMyO,EAAQ,CAC/B,OAAO,IAAIE,GAA+B3O,EAAMyO,CAAM,CACzD,EACD,sBAAsBzO,EAAMyO,EAAQ,CAChC,OAAO,IAAIkB,GAAiC3P,EAAMyO,CAAM,CAC3D,EACD,uBAAuBzO,EAAMyO,EAAQ0B,EAAM,CACvC,OAAO,IAAID,GAAmClQ,EAAMyO,EAAQ0B,CAAI,CACnE,EACD,qBAAqB5B,EAAUlL,EAAS,CACpC,OAAO,IAAIiL,GAA+BC,EAAUlL,CAAO,CAC9D,EACD,gBAAgB8J,EAAWvc,EAAU,CACjC,OAAO,IAAIyd,GAAoBlB,EAAWvc,CAAQ,CACrD,EACD,qCAAqCsc,EAASC,EAAW9J,EAAS,CAC9D,OAAO,IAAI4J,GAAkEC,EAASC,EAAW9J,CAAO,CAC3G,CACL,EACiC5D,GAAW0R,GAI5C,MAAMC,EAAmC,CACrC,YAAY/N,EAAS,CACjB,KAAK,QAAUA,GAAW,GAC1B,KAAK,UAAY,KAAK,QAAQ,OAAS,GAC1C,CACD,aAAa8J,EAAW,CACpB,OAAO1N,GAAQ,qCAAqC,KAAM0N,EAAW,CACjE,aAAc,KAAK,QAAQ,aAC3B,aAAc,KAAK,QAAQ,YACvC,CAAS,CACJ,CACD,SAAU,CACN,OAAO,KAAK,UAAY,CAC3B,CACD,aAAc,CACV,KAAK,WAAa,CACrB,CACJ,CAMD,MAAMkE,EAAuC,CACzC,YAAYC,EAAYjO,EAAS,CAC7B,KAAK,WAAaiO,EAClB,KAAK,KAAO,EAAQjO,EAAQ,KAC5B,KAAK,SAAW,EAAQA,EAAQ,SAChC,KAAK,QAAUA,EAAQ,QACvB,KAAK,aAAeA,EAAQ,YAC/B,CACD,aAAc,CACV,OAAOoF,GAAI,KAAK,WAAYxB,EAAK,OAAO,aAAa,CAAC,CACzD,CACD,QAAQsK,EAAa3gB,EAAU,CAC3B,IAAI0gB,EAAa,KAAK,WAClBE,EAAU,EACVC,EAAU,KAAK,QACfC,GAAS,KACTC,GAAkB,CAACrY,GAAOoX,KAAc,CACpCA,GACA9f,EAAS,KAAM8f,EAAS,GAGxBc,EAAUA,EAAU,EAChB,KAAK,OACLA,EAAUA,EAAUF,EAAW,QAE/BE,EAAUF,EAAW,QACjBG,IACAA,EAAUA,EAAU,EAChB,KAAK,eACLA,EAAU,KAAK,IAAIA,EAAS,KAAK,YAAY,IAGrDC,GAAS,KAAK,YAAYJ,EAAWE,CAAO,EAAGD,EAAa,CAAE,QAAAE,EAAS,SAAU,KAAK,QAAU,EAAEE,EAAe,GAGjH/gB,EAAS,EAAI,EAGjC,EACQ,OAAA8gB,GAAS,KAAK,YAAYJ,EAAWE,CAAO,EAAGD,EAAa,CAAE,QAASE,EAAS,SAAU,KAAK,QAAU,EAAEE,EAAe,EACnH,CACH,MAAO,UAAY,CACfD,GAAO,MAAK,CACf,EACD,iBAAkB,SAAU5X,GAAG,CAC3ByX,EAAczX,GACV4X,IACAA,GAAO,iBAAiB5X,EAAC,CAEhC,CACb,CACK,CACD,YAAY8X,EAAUL,EAAalO,EAASzS,EAAU,CAClD,IAAI8V,EAAQ,KACRgL,GAAS,KACb,OAAIrO,EAAQ,QAAU,IAClBqD,EAAQ,IAAIE,GAAmBvD,EAAQ,QAAS,UAAY,CACxDqO,GAAO,MAAK,EACZ9gB,EAAS,EAAI,CAC7B,CAAa,GAEL8gB,GAASE,EAAS,QAAQL,EAAa,SAAUjY,GAAOoX,GAAW,CAC3DpX,IAASoN,GAASA,EAAM,UAAS,GAAM,CAACrD,EAAQ,WAGhDqD,GACAA,EAAM,cAAa,EAEvB9V,EAAS0I,GAAOoX,EAAS,EACrC,CAAS,EACM,CACH,MAAO,UAAY,CACXhK,GACAA,EAAM,cAAa,EAEvBgL,GAAO,MAAK,CACf,EACD,iBAAkB,SAAU5X,GAAG,CAC3B4X,GAAO,iBAAiB5X,EAAC,CAC5B,CACb,CACK,CACJ,CAKD,MAAM+X,EAAuD,CACzD,YAAYP,EAAY,CACpB,KAAK,WAAaA,CACrB,CACD,aAAc,CACV,OAAO7I,GAAI,KAAK,WAAYxB,EAAK,OAAO,aAAa,CAAC,CACzD,CACD,QAAQsK,EAAa3gB,EAAU,CAC3B,OAAOkhB,GAAQ,KAAK,WAAYP,EAAa,SAAU/d,EAAGue,EAAS,CAC/D,OAAO,SAAUzY,EAAOoX,GAAW,CAE/B,GADAqB,EAAQve,CAAC,EAAE,MAAQ8F,EACfA,EAAO,CACH0Y,GAAiBD,CAAO,GACxBnhB,EAAS,EAAI,EAEjB,MACH,CACDsX,EAAM6J,EAAS,SAAUL,GAAQ,CAC7BA,GAAO,iBAAiBhB,GAAU,UAAU,QAAQ,CACxE,CAAiB,EACD9f,EAAS,KAAM8f,EAAS,CACxC,CACA,CAAS,CACJ,CACJ,CACD,SAASoB,GAAQR,EAAYC,EAAaU,EAAiB,CACvD,IAAIF,EAAU5J,EAAImJ,EAAY,SAAUM,EAAUpe,EAAGwU,GAAGkK,GAAI,CACxD,OAAON,EAAS,QAAQL,EAAaU,EAAgBze,EAAG0e,EAAE,CAAC,CACnE,CAAK,EACD,MAAO,CACH,MAAO,UAAY,CACfhK,EAAM6J,EAASI,EAAW,CAC7B,EACD,iBAAkB,SAAUrY,EAAG,CAC3BoO,EAAM6J,EAAS,SAAUL,EAAQ,CAC7BA,EAAO,iBAAiB5X,CAAC,CACzC,CAAa,CACJ,CACT,CACC,CACD,SAASkY,GAAiBD,EAAS,CAC/B,OAAOrJ,GAAgBqJ,EAAS,SAAUL,EAAQ,CAC9C,MAAO,EAAQA,EAAO,KAC9B,CAAK,CACJ,CACD,SAASS,GAAYT,EAAQ,CACrB,CAACA,EAAO,OAAS,CAACA,EAAO,UACzBA,EAAO,MAAK,EACZA,EAAO,QAAU,GAExB,CAOD,MAAMU,EAAyE,CAC3E,YAAYR,EAAUrF,EAAYlJ,EAAS,CACvC,KAAK,SAAWuO,EAChB,KAAK,WAAarF,EAClB,KAAK,IAAMlJ,EAAQ,KAAO,KAAO,IACjC,KAAK,SAAWA,EAAQ,OACxB,KAAK,SAAWA,EAAQ,QAC3B,CACD,aAAc,CACV,OAAO,KAAK,SAAS,aACxB,CACD,QAAQkO,EAAa3gB,EAAU,CAC3B,IAAIyhB,EAAW,KAAK,SAChBC,EAAOC,GAAoBF,CAAQ,EACnCG,EAAiBF,GAAQA,EAAK,eAAiBA,EAAK,eAAiB,EACrEhB,GAAa,CAAC,KAAK,QAAQ,EAC/B,GAAIgB,GAAQA,EAAK,UAAY,KAAK,KAAOrL,EAAK,MAAO,CACjD,IAAIkG,GAAY,KAAK,WAAWmF,EAAK,SAAS,EAC1CnF,KACI,CAAC,KAAM,KAAK,EAAE,SAASmF,EAAK,SAAS,GAAKE,EAAiB,GAC3D,KAAK,SAAS,KAAK,CACf,OAAQ,GACR,UAAWF,EAAK,UAChB,QAASA,EAAK,OACtC,CAAqB,EACDhB,GAAW,KAAK,IAAID,GAAuC,CAAClE,EAAS,EAAG,CACpE,QAASmF,EAAK,QAAU,EAAI,IAC5B,SAAU,EACb,EAAC,GAGFE,IAGX,CACD,IAAIC,GAAiBxL,EAAK,MACtByK,GAASJ,GACR,IAAK,EACL,QAAQC,EAAa,SAASmB,GAAGpZ,GAAOoX,GAAW,CAChDpX,IACAqZ,GAAoBN,CAAQ,EACxBf,GAAW,OAAS,GACpBmB,GAAiBxL,EAAK,MACtByK,GAASJ,GAAW,IAAG,EAAG,QAAQC,EAAamB,EAAE,GAGjD9hB,EAAS0I,EAAK,IAIlBsZ,GAAoBP,EAAU3B,GAAU,UAAU,KAAMzJ,EAAK,IAAK,EAAGwL,GAAgBD,CAAc,EACnG5hB,EAAS,KAAM8f,EAAS,EAExC,CAAS,EACD,MAAO,CACH,MAAO,UAAY,CACfgB,GAAO,MAAK,CACf,EACD,iBAAkB,SAAU5X,GAAG,CAC3ByX,EAAczX,GACV4X,IACAA,GAAO,iBAAiB5X,EAAC,CAEhC,CACb,CACK,CACJ,CACD,SAAS+Y,GAAqBR,EAAU,CACpC,MAAO,mBAAqBA,EAAW,MAAQ,SAClD,CACD,SAASE,GAAoBF,EAAU,CACnC,IAAIS,EAAUtP,GAAQ,kBACtB,GAAIsP,EACA,GAAI,CACA,IAAIC,EAAkBD,EAAQD,GAAqBR,CAAQ,CAAC,EAC5D,GAAIU,EACA,OAAO,KAAK,MAAMA,CAAe,CAExC,MACS,CACNJ,GAAoBN,CAAQ,CAC/B,CAEL,OAAO,IACV,CACD,SAASO,GAAoBP,EAAUlF,EAAW6F,EAASR,EAAgB,CACvE,IAAIM,EAAUtP,GAAQ,kBACtB,GAAIsP,EACA,GAAI,CACAA,EAAQD,GAAqBR,CAAQ,CAAC,EAAI7K,GAAkB,CACxD,UAAWP,EAAK,IAAK,EACrB,UAAWkG,EACX,QAAS6F,EACT,eAAgBR,CAChC,CAAa,CACJ,MACS,CACT,CAER,CACD,SAASG,GAAoBN,EAAU,CACnC,IAAIS,EAAUtP,GAAQ,kBACtB,GAAIsP,EACA,GAAI,CACA,OAAOA,EAAQD,GAAqBR,CAAQ,CAAC,CAChD,MACS,CACT,CAER,CAID,MAAMY,EAAiC,CACnC,YAAYrB,EAAU,CAAE,MAAOhP,CAAM,EAAI,CACrC,KAAK,SAAWgP,EAChB,KAAK,QAAU,CAAE,MAAOhP,CAAM,CACjC,CACD,aAAc,CACV,OAAO,KAAK,SAAS,aACxB,CACD,QAAQ2O,EAAa3gB,EAAU,CAC3B,IAAIghB,EAAW,KAAK,SAChBF,EACAhL,EAAQ,IAAIE,GAAmB,KAAK,QAAQ,MAAO,UAAY,CAC/D8K,EAASE,EAAS,QAAQL,EAAa3gB,CAAQ,CAC3D,CAAS,EACD,MAAO,CACH,MAAO,UAAY,CACf8V,EAAM,cAAa,EACfgL,GACAA,EAAO,MAAK,CAEnB,EACD,iBAAkB,SAAU5X,GAAG,CAC3ByX,EAAczX,GACV4X,GACAA,EAAO,iBAAiB5X,EAAC,CAEhC,CACb,CACK,CACJ,CAGD,MAAMoZ,EAAW,CACb,YAAY5K,EAAM6K,EAAYC,EAAa,CACvC,KAAK,KAAO9K,EACZ,KAAK,WAAa6K,EAClB,KAAK,YAAcC,CACtB,CACD,aAAc,CACV,IAAIC,EAAS,KAAK,KAAI,EAAK,KAAK,WAAa,KAAK,YAClD,OAAOA,EAAO,aACjB,CACD,QAAQ9B,EAAa3gB,EAAU,CAC3B,IAAIyiB,EAAS,KAAK,KAAI,EAAK,KAAK,WAAa,KAAK,YAClD,OAAOA,EAAO,QAAQ9B,EAAa3gB,CAAQ,CAC9C,CACJ,CAGD,MAAM0iB,EAAuB,CACzB,YAAY1B,EAAU,CAClB,KAAK,SAAWA,CACnB,CACD,aAAc,CACV,OAAO,KAAK,SAAS,aACxB,CACD,QAAQL,EAAa3gB,EAAU,CAC3B,IAAI8gB,EAAS,KAAK,SAAS,QAAQH,EAAa,SAAUjY,EAAOoX,EAAW,CACpEA,GACAgB,EAAO,MAAK,EAEhB9gB,EAAS0I,EAAOoX,CAAS,CACrC,CAAS,EACD,OAAOgB,CACV,CACJ,CAUD,SAAS6B,GAAqB3B,EAAU,CACpC,OAAO,UAAY,CACf,OAAOA,EAAS,aACxB,CACC,CACD,IAAI4B,GAAqB,SAAUC,EAAQC,EAAaC,EAAiB,CACrE,IAAIC,EAAoB,GACxB,SAASC,EAAwB7T,GAAMtC,GAAMgO,GAAUrI,GAAS6J,GAAS,CACrE,IAAIC,GAAYwG,EAAgBF,EAAQzT,GAAMtC,GAAMgO,GAAUrI,GAAS6J,EAAO,EAC9E,OAAA0G,EAAkB5T,EAAI,EAAImN,GACnBA,EACV,CACD,IAAI2G,EAAa,OAAO,OAAO,GAAIJ,EAAa,CAC5C,WAAYD,EAAO,OAAS,IAAMA,EAAO,OACzC,QAASA,EAAO,OAAS,IAAMA,EAAO,QACtC,SAAUA,EAAO,MACzB,CAAK,EACGM,GAAc,OAAO,OAAO,GAAID,EAAY,CAC5C,OAAQ,EAChB,CAAK,EACGE,GAAiB,OAAO,OAAO,GAAIN,EAAa,CAChD,WAAYD,EAAO,SAAW,IAAMA,EAAO,SAC3C,QAASA,EAAO,SAAW,IAAMA,EAAO,UACxC,SAAUA,EAAO,QACzB,CAAK,EACGQ,GAAW,CACX,KAAM,GACN,QAAS,KACT,aAAc,GACtB,EACQC,GAAa,IAAI9C,GAAmC,CACpD,aAAc,IACd,aAAcqC,EAAO,eAC7B,CAAK,EACGU,GAAoB,IAAI/C,GAAmC,CAC3D,MAAO,EACP,aAAc,IACd,aAAcqC,EAAO,eAC7B,CAAK,EACGW,GAAeP,EAAwB,KAAM,KAAM,EAAGC,EAAYI,EAAU,EAC5EG,GAAgBR,EAAwB,MAAO,KAAM,EAAGE,GAAaG,EAAU,EAC/EI,GAAmBT,EAAwB,SAAU,SAAU,EAAGG,EAAc,EAChFO,GAA0BV,EAAwB,gBAAiB,gBAAiB,EAAGG,GAAgBG,EAAiB,EACxHK,GAA0BX,EAAwB,gBAAiB,gBAAiB,EAAGG,GAAgBG,EAAiB,EACxHM,GAAwBZ,EAAwB,cAAe,cAAe,EAAGG,EAAc,EAC/FU,GAAwBb,EAAwB,cAAe,cAAe,EAAGG,EAAc,EAC/FW,GAAU,IAAItD,GAAuC,CAAC+C,EAAY,EAAGH,EAAQ,EAC7EW,GAAW,IAAIvD,GAAuC,CAACgD,EAAa,EAAGJ,EAAQ,EAC/EY,GAAc,IAAIxD,GAAuC,CAACiD,EAAgB,EAAGL,EAAQ,EACrFa,GAAiB,IAAIzD,GAAuC,CAC5D,IAAI6B,GAAWK,GAAqBgB,EAAuB,EAAGA,GAAyBC,EAAuB,CACjH,EAAEP,EAAQ,EACPc,GAAe,IAAI1D,GAAuC,CAC1D,IAAI6B,GAAWK,GAAqBkB,EAAqB,EAAGA,GAAuBC,EAAqB,CAC3G,EAAET,EAAQ,EACPe,GAAY,IAAI3D,GAAuC,CACvD,IAAI6B,GAAWK,GAAqBuB,EAAc,EAAG,IAAIjD,GAAuD,CAC5GiD,GACA,IAAI7B,GAAiC8B,GAAc,CAAE,MAAO,GAAI,CAAE,CACrE,GAAGA,EAAY,CACnB,EAAEd,EAAQ,EACPgB,GAAqB,IAAI/B,GAAWK,GAAqByB,EAAS,EAAGA,GAAWH,EAAW,EAC3FK,GACJ,OAAIxB,EAAY,OACZwB,GAAa,IAAIrD,GAAuD,CACpE8C,GACA,IAAI1B,GAAiCgC,GAAoB,CAAE,MAAO,GAAI,CAAE,CACpF,CAAS,EAGDC,GAAa,IAAIrD,GAAuD,CACpE8C,GACA,IAAI1B,GAAiC2B,GAAU,CAAE,MAAO,GAAI,CAAE,EAC9D,IAAI3B,GAAiCgC,GAAoB,CAAE,MAAO,GAAI,CAAE,CACpF,CAAS,EAEE,IAAI7C,GAAyE,IAAIkB,GAAuB,IAAIJ,GAAWK,GAAqBa,EAAY,EAAGc,GAAYD,EAAkB,CAAC,EAAGrB,EAAmB,CACnN,IAAK,KACL,SAAUF,EAAY,SACtB,OAAQA,EAAY,MAC5B,CAAK,CACL,EACiCyB,GAAoB3B,GAIpB4B,GAAoC,UAAY,CAC7E,IAAI9R,EAAO,KACXA,EAAK,SAAS,KAAKA,EAAK,qBAAqB,CACzC,UAAWA,EAAK,MAAQA,EAAK,QAAQ,OAAS,IAAM,GACvD,EAAC,EACEA,EAAK,MAAM,gBACXA,EAAK,YAAY,aAAa,EAEzBA,EAAK,MAAM,MAChBA,EAAK,YAAY,cAAc,EAC/BS,EAAa,KAAKT,EAAK,MAAM,KAAM,CAAE,OAAQA,EAAK,QAAQ,MAAM,EAAI,SAAUhK,EAAO1I,EAAU,CACvF0S,EAAK,MAAM,iBACXA,EAAK,YAAY,aAAa,EAC9B1S,EAAS,EAAI,IAGT0I,GACAgK,EAAK,QAAQhK,CAAK,EAEtBgK,EAAK,QAAO,EACZ1S,EAAS,EAAK,EAE9B,CAAS,GAGD0S,EAAK,QAAO,CAEpB,EAII+R,GAA6B,CAC7B,WAAY,SAAU5I,EAAQ,CAC1B,IAAI6I,EAAM,IAAI,OAAO,eACrB,OAAAA,EAAI,UAAY,UAAY,CACxB7I,EAAO,KAAK,QAAS,IAAIjI,CAAiB,EAC1CiI,EAAO,MAAK,CACxB,EACQ6I,EAAI,QAAU,SAAU3e,EAAG,CACvB8V,EAAO,KAAK,QAAS9V,CAAC,EACtB8V,EAAO,MAAK,CACxB,EACQ6I,EAAI,WAAa,UAAY,CACrBA,EAAI,cAAgBA,EAAI,aAAa,OAAS,GAC9C7I,EAAO,QAAQ,IAAK6I,EAAI,YAAY,CAEpD,EACQA,EAAI,OAAS,UAAY,CACjBA,EAAI,cAAgBA,EAAI,aAAa,OAAS,GAC9C7I,EAAO,QAAQ,IAAK6I,EAAI,YAAY,EAExC7I,EAAO,KAAK,WAAY,GAAG,EAC3BA,EAAO,MAAK,CACxB,EACe6I,CACV,EACD,aAAc,SAAUA,EAAK,CACzBA,EAAI,UAAYA,EAAI,QAAUA,EAAI,WAAaA,EAAI,OAAS,KAC5DA,EAAI,MAAK,CACZ,CACL,EACiCC,GAAwBF,GAKzD,MAAMG,GAAoB,IAAM,KAChC,MAAMC,WAAiCrK,EAAsB,CACzD,YAAYK,EAAOiK,EAAQ/kB,EAAK,CAC5B,QACA,KAAK,MAAQ8a,EACb,KAAK,OAASiK,EACd,KAAK,IAAM/kB,CACd,CACD,MAAM8G,EAAS,CACX,KAAK,SAAW,EAChB,KAAK,IAAM,KAAK,MAAM,WAAW,IAAI,EACrC,KAAK,SAAW,IAAM,CAClB,KAAK,MAAK,CACtB,EACQ+L,GAAQ,kBAAkB,KAAK,QAAQ,EACvC,KAAK,IAAI,KAAK,KAAK,OAAQ,KAAK,IAAK,EAAI,EACrC,KAAK,IAAI,kBACT,KAAK,IAAI,iBAAiB,eAAgB,kBAAkB,EAEhE,KAAK,IAAI,KAAK/L,CAAO,CACxB,CACD,OAAQ,CACA,KAAK,WACL+L,GAAQ,qBAAqB,KAAK,QAAQ,EAC1C,KAAK,SAAW,MAEhB,KAAK,MACL,KAAK,MAAM,aAAa,KAAK,GAAG,EAChC,KAAK,IAAM,KAElB,CACD,QAAQuB,EAAQjU,EAAM,CAClB,OAAa,CACT,IAAI6kB,EAAQ,KAAK,cAAc7kB,CAAI,EACnC,GAAI6kB,EACA,KAAK,KAAK,QAAS,CAAE,OAAQ5Q,EAAQ,KAAM4Q,CAAK,CAAE,MAGlD,MAEP,CACG,KAAK,gBAAgB7kB,CAAI,GACzB,KAAK,KAAK,iBAAiB,CAElC,CACD,cAAc2C,EAAQ,CAClB,IAAImiB,EAAaniB,EAAO,MAAM,KAAK,QAAQ,EACvCoiB,EAAoBD,EAAW,QAAQ;AAAA,CAAI,EAC/C,OAAIC,IAAsB,IACtB,KAAK,UAAYA,EAAoB,EAC9BD,EAAW,MAAM,EAAGC,CAAiB,GAGrC,IAEd,CACD,gBAAgBpiB,EAAQ,CACpB,OAAO,KAAK,WAAaA,EAAO,QAAUA,EAAO,OAAS+hB,EAC7D,CACJ,CAGD,IAAIM,IACH,SAAUA,EAAO,CACdA,EAAMA,EAAM,WAAgB,CAAC,EAAI,aACjCA,EAAMA,EAAM,KAAU,CAAC,EAAI,OAC3BA,EAAMA,EAAM,OAAY,CAAC,EAAI,QAChC,GAAEA,KAAUA,GAAQ,CAAE,EAAC,EACK,IAAIlK,GAASkK,GAMtCC,GAAgB,EACpB,MAAMC,EAAuB,CACzB,YAAYvK,EAAO9a,EAAK,CACpB,KAAK,MAAQ8a,EACb,KAAK,QAAUwK,GAAa,GAAI,EAAI,IAAMC,GAAa,CAAC,EACxD,KAAK,SAAWC,GAAYxlB,CAAG,EAC/B,KAAK,WAAaib,GAAM,WACxB,KAAK,WAAU,CAClB,CACD,KAAKnU,EAAS,CACV,OAAO,KAAK,QAAQ,KAAK,UAAU,CAACA,CAAO,CAAC,CAAC,CAChD,CACD,MAAO,CACH,KAAK,MAAM,cAAc,IAAI,CAChC,CACD,MAAM2e,EAAMC,EAAQ,CAChB,KAAK,QAAQD,EAAMC,EAAQ,EAAI,CAClC,CACD,QAAQ5e,EAAS,CACb,GAAI,KAAK,aAAemU,GAAM,KAC1B,GAAI,CACA,OAAApI,GAAQ,oBAAoB,OAAQ8S,GAAaC,GAAW,KAAK,SAAU,KAAK,OAAO,CAAC,CAAC,EAAE,MAAM9e,CAAO,EACjG,EACV,MACS,CACN,MAAO,EACV,KAGD,OAAO,EAEd,CACD,WAAY,CACR,KAAK,YAAW,EAChB,KAAK,WAAU,CAClB,CACD,QAAQ2e,EAAMC,EAAQG,EAAU,CAC5B,KAAK,YAAW,EAChB,KAAK,WAAa5K,GAAM,OACpB,KAAK,SACL,KAAK,QAAQ,CACT,KAAMwK,EACN,OAAQC,EACR,SAAUG,CAC1B,CAAa,CAER,CACD,QAAQb,EAAO,CACX,GAAIA,EAAM,SAAW,IAGrB,CAAI,KAAK,aAAe/J,GAAM,MAC1B,KAAK,WAAU,EAEnB,IAAInU,EACAiG,EAAOiY,EAAM,KAAK,MAAM,EAAG,CAAC,EAChC,OAAQjY,EAAI,CACR,IAAK,IACDjG,EAAU,KAAK,MAAMke,EAAM,KAAK,MAAM,CAAC,GAAK,IAAI,EAChD,KAAK,OAAOle,CAAO,EACnB,MACJ,IAAK,IACDA,EAAU,KAAK,MAAMke,EAAM,KAAK,MAAM,CAAC,GAAK,IAAI,EAChD,QAASniB,EAAI,EAAGA,EAAIiE,EAAQ,OAAQjE,IAChC,KAAK,QAAQiE,EAAQjE,CAAC,CAAC,EAE3B,MACJ,IAAK,IACDiE,EAAU,KAAK,MAAMke,EAAM,KAAK,MAAM,CAAC,GAAK,MAAM,EAClD,KAAK,QAAQle,CAAO,EACpB,MACJ,IAAK,IACD,KAAK,MAAM,YAAY,IAAI,EAC3B,MACJ,IAAK,IACDA,EAAU,KAAK,MAAMke,EAAM,KAAK,MAAM,CAAC,GAAK,IAAI,EAChD,KAAK,QAAQle,EAAQ,CAAC,EAAGA,EAAQ,CAAC,EAAG,EAAI,EACzC,KACP,EACJ,CACD,OAAO4L,EAAS,CACR,KAAK,aAAeuI,GAAM,YACtBvI,GAAWA,EAAQ,WACnB,KAAK,SAAS,KAAOoT,GAAY,KAAK,SAAS,KAAMpT,EAAQ,QAAQ,GAEzE,KAAK,WAAauI,GAAM,KACpB,KAAK,QACL,KAAK,OAAM,GAIf,KAAK,QAAQ,KAAM,sBAAuB,EAAI,CAErD,CACD,QAAQ7Y,EAAO,CACP,KAAK,aAAe6Y,GAAM,MAAQ,KAAK,WACvC,KAAK,UAAU,CAAE,KAAM7Y,CAAO,EAErC,CACD,YAAa,CACL,KAAK,YACL,KAAK,WAAU,CAEtB,CACD,QAAQuG,EAAO,CACP,KAAK,SACL,KAAK,QAAQA,CAAK,CAEzB,CACD,YAAa,CACT,KAAK,OAASkK,GAAQ,oBAAoB,OAAQ8S,GAAa,KAAK,MAAM,cAAc,KAAK,SAAU,KAAK,OAAO,CAAC,CAAC,EACrH,KAAK,OAAO,KAAK,QAASX,GAAS,CAC/B,KAAK,QAAQA,CAAK,CAC9B,CAAS,EACD,KAAK,OAAO,KAAK,WAAY5Q,GAAU,CACnC,KAAK,MAAM,WAAW,KAAMA,CAAM,CAC9C,CAAS,EACD,KAAK,OAAO,KAAK,kBAAmB,IAAM,CACtC,KAAK,UAAS,CAC1B,CAAS,EACD,GAAI,CACA,KAAK,OAAO,OACf,OACMzL,EAAO,CACV2N,EAAK,MAAM,IAAM,CACb,KAAK,QAAQ3N,CAAK,EAClB,KAAK,QAAQ,KAAM,4BAA6B,EAAK,CACrE,CAAa,CACJ,CACJ,CACD,aAAc,CACN,KAAK,SACL,KAAK,OAAO,aACZ,KAAK,OAAO,QACZ,KAAK,OAAS,KAErB,CACJ,CACD,SAAS6c,GAAYxlB,EAAK,CACtB,IAAI+lB,EAAQ,qBAAqB,KAAK/lB,CAAG,EACzC,MAAO,CACH,KAAM+lB,EAAM,CAAC,EACb,YAAaA,EAAM,CAAC,CAC5B,CACC,CACD,SAASH,GAAW5lB,EAAKgmB,EAAS,CAC9B,OAAOhmB,EAAI,KAAO,IAAMgmB,EAAU,WACrC,CACD,SAASL,GAAa3lB,EAAK,CACvB,IAAIimB,EAAYjmB,EAAI,QAAQ,GAAG,IAAM,GAAK,IAAM,IAChD,OAAOA,EAAMimB,EAAY,MAAO,CAAC,IAAI,KAAS,MAAQb,IACzD,CACD,SAASU,GAAY9lB,EAAKkmB,EAAU,CAChC,IAAIC,EAAW,oCAAoC,KAAKnmB,CAAG,EAC3D,OAAOmmB,EAAS,CAAC,EAAID,EAAWC,EAAS,CAAC,CAC7C,CACD,SAASb,GAAac,EAAK,CACvB,OAAOvT,GAAQ,UAAUuT,CAAG,CAC/B,CACD,SAASb,GAAa5iB,EAAQ,CAE1B,QADIkO,EAAS,GACJhO,EAAI,EAAGA,EAAIF,EAAQE,IACxBgO,EAAO,KAAKyU,GAAa,EAAE,EAAE,SAAS,EAAE,CAAC,EAE7C,OAAOzU,EAAO,KAAK,EAAE,CACxB,CAC4B,IAAIwV,GAAehB,GAG5CiB,GAA8B,CAC9B,cAAe,SAAUtmB,EAAKgmB,EAAS,CACnC,OAAOhmB,EAAI,KAAO,IAAMgmB,EAAU,iBAAmBhmB,EAAI,WAC5D,EACD,YAAa,SAAU8b,EAAQ,CAC3BA,EAAO,QAAQ,IAAI,CACtB,EACD,cAAe,SAAUA,EAAQ,CAC7BA,EAAO,QAAQ,IAAI,CACtB,EACD,WAAY,SAAUA,EAAQ1H,EAAQ,CAClC0H,EAAO,QAAQ,KAAM,2BAA6B1H,EAAS,IAAK,EAAK,CACxE,CACL,EACiCmS,GAAyBD,GAGtDE,GAA4B,CAC5B,cAAe,SAAUxmB,EAAKgmB,EAAS,CACnC,OAAOhmB,EAAI,KAAO,IAAMgmB,EAAU,OAAShmB,EAAI,WAClD,EACD,YAAa,UAAY,CACxB,EACD,cAAe,SAAU8b,EAAQ,CAC7BA,EAAO,QAAQ,IAAI,CACtB,EACD,WAAY,SAAUA,EAAQ1H,EAAQ,CAC9BA,IAAW,IACX0H,EAAO,UAAS,EAGhBA,EAAO,QAAQ,KAAM,2BAA6B1H,EAAS,IAAK,EAAK,CAE5E,CACL,EACiCqS,GAAuBD,GAIpDE,GAAyB,CACzB,WAAY,SAAU5K,EAAQ,CAC1B,IAAI6K,EAAc9T,GAAQ,YACtB4B,EAAM,IAAIkS,EACd,OAAAlS,EAAI,mBAAqBA,EAAI,WAAa,UAAY,CAClD,OAAQA,EAAI,WAAU,CAClB,IAAK,GACGA,EAAI,cAAgBA,EAAI,aAAa,OAAS,GAC9CqH,EAAO,QAAQrH,EAAI,OAAQA,EAAI,YAAY,EAE/C,MACJ,IAAK,GACGA,EAAI,cAAgBA,EAAI,aAAa,OAAS,GAC9CqH,EAAO,QAAQrH,EAAI,OAAQA,EAAI,YAAY,EAE/CqH,EAAO,KAAK,WAAYrH,EAAI,MAAM,EAClCqH,EAAO,MAAK,EACZ,KACP,CACb,EACerH,CACV,EACD,aAAc,SAAUA,EAAK,CACzBA,EAAI,mBAAqB,KACzBA,EAAI,MAAK,CACZ,CACL,EACiCmS,GAAoBF,GAQjDG,GAAO,CACP,sBAAsB7mB,EAAK,CACvB,OAAO,KAAK,aAAaumB,GAAuBvmB,CAAG,CACtD,EACD,oBAAoBA,EAAK,CACrB,OAAO,KAAK,aAAaymB,GAAqBzmB,CAAG,CACpD,EACD,aAAa8a,EAAO9a,EAAK,CACrB,OAAO,IAAIqmB,GAAYvL,EAAO9a,CAAG,CACpC,EACD,UAAU+kB,EAAQ/kB,EAAK,CACnB,OAAO,KAAK,cAAc4mB,GAAkB7B,EAAQ/kB,CAAG,CAC1D,EACD,cAAc8a,EAAOiK,EAAQ/kB,EAAK,CAC9B,OAAO,IAAI8kB,GAAyBhK,EAAOiK,EAAQ/kB,CAAG,CACzD,CACL,EACiC8mB,GAAaD,GAK9CC,GAAU,UAAY,SAAU/B,EAAQ/kB,EAAK,CACzC,OAAO,KAAK,cAAc4kB,GAAsBG,EAAQ/kB,CAAG,CAC/D,EAC6B,IAAI+mB,GAAiBD,GAe9CE,GAAU,CACV,mBAAoB,EACpB,eAAgB,CAAE,EAClB,gBAAiB1U,EACjB,sBAAuBa,EACvB,mBAAoBqR,GACpB,WAAYrI,GACZ,+BAAgCsI,GAChC,YAAasC,GACb,kBAAmBnN,GACnB,WAAY,CACR,OAAO,OAAO,cACjB,EACD,iBAAkB,CACd,OAAO,OAAO,WAAa,OAAO,YACrC,EACD,MAAMqN,EAAa,CACf,OAAO,OAASA,EAChB,IAAIC,EAA2B,IAAM,CACjC,KAAK,eAAeD,EAAY,KAAK,CACjD,EACa,OAAO,KAIRC,IAHA9T,EAAa,KAAK,QAAS,CAAE,EAAE8T,CAAwB,CAK9D,EACD,aAAc,CACV,OAAO,QACV,EACD,aAAc,CACV,OAAO,KAAK,cAAc,SAAS,QACtC,EACD,gBAAiB,CACb,MAAO,CAAE,KAAM7S,GAAU,MAAO6E,EAAU,CAC7C,EACD,eAAejZ,EAAU,CACjB,SAAS,KACTA,IAGA,WAAW,IAAM,CACb,KAAK,eAAeA,CAAQ,CAC/B,EAAE,CAAC,CAEX,EACD,mBAAmBD,EAAKG,EAAM,CAC1B,OAAO,IAAImZ,GAA2BtZ,EAAKG,CAAI,CAClD,EACD,oBAAoBiZ,EAAK,CACrB,OAAO,IAAID,GAAcC,CAAG,CAC/B,EACD,iBAAkB,CACd,GAAI,CACA,OAAO,OAAO,YACjB,MACS,CACN,MACH,CACJ,EACD,WAAY,CACR,OAAI,KAAK,YACE,KAAK,uBAGL,KAAK,oBAEnB,EACD,sBAAuB,CACnB,IAAIuN,EAAc,KAAK,YACvB,OAAO,IAAIA,CACd,EACD,oBAAqB,CACjB,OAAO,IAAI,cAAc,mBAAmB,CAC/C,EACD,YAAa,CACT,OAAOtK,EACV,EACD,gBAAgBrc,EAAK,CACjB,IAAI2mB,EAAc,KAAK,kBACvB,OAAO,IAAIA,EAAY3mB,CAAG,CAC7B,EACD,oBAAoB+kB,EAAQ/kB,EAAK,CAC7B,GAAI,KAAK,iBACL,OAAO,KAAK,YAAY,UAAU+kB,EAAQ/kB,CAAG,EAE5C,GAAI,KAAK,eAAeA,EAAI,QAAQ,QAAQ,IAAM,CAAC,EACpD,OAAO,KAAK,YAAY,UAAU+kB,EAAQ/kB,CAAG,EAG7C,KAAM,8CAEb,EACD,gBAAiB,CACb,IAAI2mB,EAAc,KAAK,YACvB,MAAQ,EAAQA,GAAgB,IAAIA,EAAa,EAAC,kBAAoB,MACzE,EACD,eAAelN,EAAQ,CACnB,IAAIvG,EAAWuG,EAAS,SAAW,QAC/B0N,EAAmB,KAAK,cAC5B,MAAQ,EAAQ,OAAO,gBAAsBA,IAAqBjU,CACrE,EACD,kBAAkBsK,EAAU,CACpB,OAAO,mBAAqB,OAC5B,OAAO,iBAAiB,SAAUA,EAAU,EAAK,EAE5C,OAAO,cAAgB,QAC5B,OAAO,YAAY,WAAYA,CAAQ,CAE9C,EACD,qBAAqBA,EAAU,CACvB,OAAO,mBAAqB,OAC5B,OAAO,oBAAoB,SAAUA,EAAU,EAAK,EAE/C,OAAO,cAAgB,QAC5B,OAAO,YAAY,WAAYA,CAAQ,CAE9C,EACD,UAAU4I,EAAK,CAMX,OAAO,KAAK,MALG,UAAY,CAGvB,OAFe,OAAO,QAAU,OAAO,UACjB,gBAAgB,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,EAC3C,KAAK,IAAI,EAAG,EAAE,CAC1C,EACkC,EAAGA,CAAG,CACnC,CACL,EACiCvT,GAAWmU,GAGxCI,IACH,SAAUA,EAAe,CACtBA,EAAcA,EAAc,MAAW,CAAC,EAAI,QAC5CA,EAAcA,EAAc,KAAU,CAAC,EAAI,OAC3CA,EAAcA,EAAc,MAAW,CAAC,EAAI,OAC/C,GAAEA,KAAkBA,GAAgB,CAAE,EAAC,EACX,IAAIC,GAAkBD,GAMnD,MAAME,EAAkB,CACpB,YAAYziB,EAAKmhB,EAAStT,EAAS,CAC/B,KAAK,IAAM7N,EACX,KAAK,QAAUmhB,EACf,KAAK,OAAS,GACd,KAAK,QAAUtT,GAAW,GAC1B,KAAK,KAAO,EACZ,KAAK,SAAW,CACnB,CACD,IAAI6U,EAAOnlB,EAAO,CACVmlB,GAAS,KAAK,QAAQ,QACtB,KAAK,OAAO,KAAKhR,EAAO,GAAInU,EAAO,CAAE,UAAWkU,EAAK,IAAK,EAAE,CAAC,EACzD,KAAK,QAAQ,OAAS,KAAK,OAAO,OAAS,KAAK,QAAQ,OACxD,KAAK,OAAO,QAGvB,CACD,MAAMlU,EAAO,CACT,KAAK,IAAIilB,GAAe,MAAOjlB,CAAK,CACvC,CACD,KAAKA,EAAO,CACR,KAAK,IAAIilB,GAAe,KAAMjlB,CAAK,CACtC,CACD,MAAMA,EAAO,CACT,KAAK,IAAIilB,GAAe,MAAOjlB,CAAK,CACvC,CACD,SAAU,CACN,OAAO,KAAK,OAAO,SAAW,CACjC,CACD,KAAKolB,EAAQvnB,EAAU,CACnB,IAAIE,EAAOoW,EAAO,CACd,QAAS,KAAK,QACd,OAAQ,KAAK,KAAO,EACpB,IAAK,KAAK,IACV,IAAK,KACL,QAAS,KAAK,QAAQ,QACtB,QAAS,KAAK,QAAQ,QACtB,SAAU,KAAK,QAAQ,SACvB,SAAU,KAAK,MAC3B,EAAW,KAAK,QAAQ,MAAM,EACtB,YAAK,OAAS,GACdiR,EAAOrnB,EAAM,CAACwI,EAAOkI,IAAW,CACvBlI,GACD,KAAK,OAEL1I,GACAA,EAAS0I,EAAOkI,CAAM,CAEtC,CAAS,EACM,EACV,CACD,kBAAmB,CACf,YAAK,WACE,KAAK,QACf,CACJ,CAOD,MAAM4W,EAAqC,CACvC,YAAYpY,EAAM0L,EAAUyB,EAAW9J,EAAS,CAC5C,KAAK,KAAOrD,EACZ,KAAK,SAAW0L,EAChB,KAAK,UAAYyB,EACjB,KAAK,QAAU9J,GAAW,EAC7B,CACD,aAAc,CACV,OAAO,KAAK,UAAU,YAAY,CAC9B,OAAQ,KAAK,QAAQ,MACjC,CAAS,CACJ,CACD,QAAQkO,EAAa3gB,EAAU,CAC3B,GAAK,KAAK,eAGL,GAAI,KAAK,SAAW2gB,EACrB,OAAO8G,GAAY,IAAI5T,EAA2B7T,CAAQ,MAH1D,QAAOynB,GAAY,IAAIxT,EAAuBjU,CAAQ,EAK1D,IAAI0nB,EAAY,GACZnL,EAAY,KAAK,UAAU,iBAAiB,KAAK,KAAM,KAAK,SAAU,KAAK,QAAQ,IAAK,KAAK,OAAO,EACpGuD,EAAY,KACZ6H,GAAgB,UAAY,CAC5BpL,EAAU,OAAO,cAAeoL,EAAa,EAC7CpL,EAAU,QAAO,CAC7B,EACYG,GAAS,UAAY,CACrBoD,EAAYjR,GAAQ,gBAAgB0N,EAAW,SAAU3L,GAAQ,CAC7D8W,EAAY,GACZpK,KACAtd,EAAS,KAAM4Q,EAAM,CACrC,CAAa,CACb,EACYgX,GAAU,SAAUlf,GAAO,CAC3B4U,KACAtd,EAAS0I,EAAK,CAC1B,EACYiU,GAAW,UAAY,CACvBW,KACA,IAAIuK,GACJA,GAAsBjR,GAAkB2F,CAAS,EACjDvc,EAAS,IAAI8T,EAAgB+T,EAAmB,CAAC,CAC7D,EACYvK,GAAkB,UAAY,CAC9Bf,EAAU,OAAO,cAAeoL,EAAa,EAC7CpL,EAAU,OAAO,OAAQG,EAAM,EAC/BH,EAAU,OAAO,QAASqL,EAAO,EACjCrL,EAAU,OAAO,SAAUI,EAAQ,CAC/C,EACQ,OAAAJ,EAAU,KAAK,cAAeoL,EAAa,EAC3CpL,EAAU,KAAK,OAAQG,EAAM,EAC7BH,EAAU,KAAK,QAASqL,EAAO,EAC/BrL,EAAU,KAAK,SAAUI,EAAQ,EACjCJ,EAAU,WAAU,EACb,CACH,MAAO,IAAM,CACLmL,IAGJpK,KACIwC,EACAA,EAAU,MAAK,EAGfvD,EAAU,MAAK,EAEtB,EACD,iBAAkBrT,IAAK,CACfwe,GAGA,KAAK,SAAWxe,KACZ4W,EACAA,EAAU,MAAK,EAGfvD,EAAU,MAAK,EAG1B,CACb,CACK,CACJ,CACD,SAASkL,GAAY/e,EAAO1I,EAAU,CAClC,OAAAqW,EAAK,MAAM,UAAY,CACnBrW,EAAS0I,CAAK,CACtB,CAAK,EACM,CACH,MAAO,UAAY,CAAG,EACtB,iBAAkB,UAAY,CAAG,CACzC,CACC,CAQD,KAAM,CAAE,WAAYof,EAA6B,EAAGlV,GACpD,IAAImV,GAAmC,SAAUlF,EAAQzT,EAAMtC,EAAMgO,EAAUrI,EAAS6J,EAAS,CAC7F,IAAI0L,GAAiBF,GAA4Bhb,CAAI,EACrD,GAAI,CAACkb,GACD,MAAM,IAAIhU,EAAqBlH,CAAI,EAEvC,IAAImb,IAAW,CAACpF,EAAO,mBACnBhM,EAAagM,EAAO,kBAAmBzT,CAAI,IAAM,MAChD,CAACyT,EAAO,oBACLhM,EAAagM,EAAO,mBAAoBzT,CAAI,IAAM,IACtDmN,GACJ,OAAI0L,IACAxV,EAAU,OAAO,OAAO,CAAE,iBAAkBoQ,EAAO,gBAAgB,EAAIpQ,CAAO,EAC9E8J,GAAY,IAAIiL,GAAqCpY,EAAM0L,EAAUwB,EAAUA,EAAQ,aAAa0L,EAAc,EAAIA,GAAgBvV,CAAO,GAG7I8J,GAAY2L,GAET3L,EACX,EACI2L,GAAuC,CACvC,YAAa,UAAY,CACrB,MAAO,EACV,EACD,QAAS,SAAU9Q,EAAGpX,EAAU,CAC5B,IAAIyO,EAAW4H,EAAK,MAAM,UAAY,CAClCrW,EAAS,IAAIiU,CAAqB,CAC9C,CAAS,EACD,MAAO,CACH,MAAO,UAAY,CACfxF,EAAS,cAAa,CACzB,EACD,iBAAkB,UAAY,CAAG,CAC7C,CACK,CACL,EAIA,SAAS0Z,GAAgB1V,EAAS,CAC9B,GAAIA,GAAW,KACX,KAAM,kCAEV,GAAIA,EAAQ,SAAW,KACnB,KAAM,wCAEN,iBAAkBA,GAClBiG,GAAO,KAAK,+DAA+D,CAElF,CAKD,MAAM0P,GAAsB,CAAC7f,EAAQ+L,IAAgB,CACjD,IAAID,EAAQ,aAAe,mBAAmB9L,EAAO,QAAQ,EAC7D,QAAS3D,KAAO0P,EAAY,OACxBD,GACI,IACI,mBAAmBzP,CAAG,EACtB,IACA,mBAAmB0P,EAAY,OAAO1P,CAAG,CAAC,EAEtD,GAAI0P,EAAY,gBAAkB,KAAM,CACpC,IAAI+T,EAAgB/T,EAAY,iBAChC,QAAS1P,KAAOyjB,EACZhU,GACI,IACI,mBAAmBzP,CAAG,EACtB,IACA,mBAAmByjB,EAAczjB,CAAG,CAAC,CAEpD,CACD,OAAOyP,CACX,EAU6B,IAAIiU,GATNhU,GAAgB,CACvC,GAAI,OAAO1B,GAAQ,eAAc,EAAG0B,EAAY,SAAS,EAAM,IAC3D,KAAM,IAAIA,EAAY,SAAS,uCAEnC,MAAO,CAAC/L,EAAQvI,IAAa,CACzB,MAAMqU,EAAQ+T,GAAoB7f,EAAQ+L,CAAW,EACrD1B,GAAQ,eAAc,EAAG0B,EAAY,SAAS,EAAE1B,GAASyB,EAAOC,EAAad,EAAgB,mBAAoBxT,CAAQ,CACjI,CACA,EAMA,MAAMuoB,GAAyC,CAAChgB,EAAQ+L,IAAgB,CACpE,IAAID,EAAQ,aAAe,mBAAmB9L,EAAO,QAAQ,EAC7D8L,GAAS,iBAAmB,mBAAmB9L,EAAO,WAAW,EACjE,QAAS3D,KAAO0P,EAAY,OACxBD,GACI,IACI,mBAAmBzP,CAAG,EACtB,IACA,mBAAmB0P,EAAY,OAAO1P,CAAG,CAAC,EAEtD,GAAI0P,EAAY,gBAAkB,KAAM,CACpC,IAAI+T,EAAgB/T,EAAY,iBAChC,QAAS1P,KAAOyjB,EACZhU,GACI,IACI,mBAAmBzP,CAAG,EACtB,IACA,mBAAmByjB,EAAczjB,CAAG,CAAC,CAEpD,CACD,OAAOyP,CACX,EAU6B,IAAImU,GATNlU,GAAgB,CACvC,GAAI,OAAO1B,GAAQ,eAAc,EAAG0B,EAAY,SAAS,EAAM,IAC3D,KAAM,IAAIA,EAAY,SAAS,uCAEnC,MAAO,CAAC/L,EAAQvI,IAAa,CACzB,MAAMqU,EAAQkU,GAAuChgB,EAAQ+L,CAAW,EACxE1B,GAAQ,eAAc,EAAG0B,EAAY,SAAS,EAAE1B,GAASyB,EAAOC,EAAad,EAAgB,qBAAsBxT,CAAQ,CACnI,CACA,EAIA,MAAMyoB,GAAyB,CAAC5K,EAAQvJ,EAAaoU,IAA+B,CAChF,MAAMC,EAA8B,CAChC,cAAerU,EAAY,UAC3B,aAAcA,EAAY,SAC1B,KAAM,CACF,OAAQA,EAAY,OACpB,QAASA,EAAY,OACxB,CACT,EACI,MAAO,CAAC/L,EAAQvI,IAAa,CACzB,MAAMod,GAAUS,EAAO,QAAQtV,EAAO,WAAW,EACvBmgB,EAA2BtL,GAASuL,CAA2B,EACvE,UAAUpgB,EAAO,SAAUvI,CAAQ,CAC7D,CACA,EAQA,SAAS4oB,GAAUC,EAAMhL,EAAQ,CAC7B,IAAIgF,EAAS,CACT,gBAAiBgG,EAAK,iBAAmBtW,EAAS,gBAClD,QAASsW,EAAK,QACd,SAAUA,EAAK,UAAYtW,EAAS,SACpC,SAAUsW,EAAK,UAAYtW,EAAS,SACpC,UAAWsW,EAAK,WAAatW,EAAS,UACtC,YAAasW,EAAK,aAAetW,EAAS,YAC1C,UAAWsW,EAAK,WAAatW,EAAS,WACtC,mBAAoBsW,EAAK,oBAAsBtW,EAAS,mBACxD,OAAQsW,EAAK,QAAUtW,EAAS,OAChC,OAAQsW,EAAK,QAAUtW,EAAS,OAChC,QAASsW,EAAK,SAAWtW,EAAS,QAClC,YAAauW,GAAqBD,CAAI,EACtC,SAAUE,GAAYF,CAAI,EAC1B,OAAQG,GAAaH,CAAI,EACzB,OAAQI,GAAiBJ,CAAI,EAC7B,kBAAmBK,GAAuBL,CAAI,EAC9C,kBAAmBM,GAAuBN,EAAMhL,CAAM,CAC9D,EACI,MAAI,uBAAwBgL,IACxBhG,EAAO,mBAAqBgG,EAAK,oBACjC,sBAAuBA,IACvBhG,EAAO,kBAAoBgG,EAAK,mBAChC,qBAAsBA,IACtBhG,EAAO,iBAAmBgG,EAAK,kBAC/B,mBAAoBA,IACpBhG,EAAO,eAAiBgG,EAAK,gBAC7B,SAAUA,IACVhG,EAAO,KAAOgG,EAAK,MAEhBhG,CACV,CACD,SAASkG,GAAYF,EAAM,CACvB,OAAIA,EAAK,SACEA,EAAK,SAEZA,EAAK,QACE,UAAUA,EAAK,OAAO,cAE1BtW,EAAS,QACnB,CACD,SAAS0W,GAAiBJ,EAAM,CAC5B,OAAIA,EAAK,OACEA,EAAK,OAETO,GAA4BP,EAAK,OAAO,CAClD,CACD,SAASO,GAA4BC,EAAS,CAC1C,MAAO,MAAMA,CAAO,aACvB,CACD,SAASL,GAAaH,EAAM,CACxB,OAAIjW,GAAQ,YAAa,IAAK,SACnB,GAEFiW,EAAK,WAAa,EAI9B,CACD,SAASC,GAAqBD,EAAM,CAChC,MAAI,gBAAiBA,EACVA,EAAK,YAEZ,iBAAkBA,EACX,CAACA,EAAK,aAEV,EACV,CACD,SAASK,GAAuBL,EAAM,CAClC,MAAMS,EAAqB,OAAO,OAAO,OAAO,OAAO,GAAI/W,EAAS,kBAAkB,EAAGsW,EAAK,kBAAkB,EAChH,MAAI,kBAAmBS,GACnBA,EAAmB,eAAoB,KAChCA,EAAmB,cAEvBhB,GAAmBgB,CAAkB,CAC/C,CACD,SAASC,GAAiBV,EAAMhL,EAAQ,CACpC,IAAI2L,EACJ,MAAI,yBAA0BX,EAC1BW,EAAuB,OAAO,OAAO,OAAO,OAAO,GAAIjX,EAAS,oBAAoB,EAAGsW,EAAK,oBAAoB,GAGhHW,EAAuB,CACnB,UAAWX,EAAK,eAAiBtW,EAAS,cAC1C,SAAUsW,EAAK,cAAgBtW,EAAS,YACpD,EACY,SAAUsW,IACN,WAAYA,EAAK,OACjBW,EAAqB,OAASX,EAAK,KAAK,QACxC,YAAaA,EAAK,OAClBW,EAAqB,QAAUX,EAAK,KAAK,UAE7C,eAAgBA,IAChBW,EAAqB,cAAgBf,GAAuB5K,EAAQ2L,EAAsBX,EAAK,UAAU,IAE1GW,CACV,CACD,SAASL,GAAuBN,EAAMhL,EAAQ,CAC1C,MAAM2L,EAAuBD,GAAiBV,EAAMhL,CAAM,EAC1D,MAAI,kBAAmB2L,GACnBA,EAAqB,eAAoB,KAClCA,EAAqB,cAEzBhB,GAAmBgB,CAAoB,CACjD,CAKD,MAAMC,WAAkCjP,EAAsB,CAC1D,YAAYqD,EAAQ,CAChB,MAAM,SAAUnD,EAAWxa,EAAM,CAC7BwY,GAAO,MAAM,wCAAwCgC,CAAS,EAAE,CAC5E,CAAS,EACD,KAAK,OAASmD,EACd,KAAK,2BAA0B,CAClC,CACD,YAAYZ,EAAa,CACrBA,EAAY,KAAK,OAAO,QAAQyM,GAAkB,CAC9C,KAAK,KAAKA,EAAe,KAAMA,CAAc,CACzD,CAAS,CACJ,CACD,4BAA6B,CACzB,KAAK,OAAO,WAAW,KAAK,UAAWzM,GAAe,CAClD,IAAIvC,EAAYuC,EAAY,MACxBvC,IAAc,oCACd,KAAK,YAAYuC,CAAW,CAE5C,CAAS,CACJ,CACJ,CAGD,SAAS0M,IAAc,CACnB,IAAIjL,EAASC,EAKb,MAAO,CAAE,QAJO,IAAI,QAAQ,CAACiL,EAAKC,IAAQ,CACtCnL,EAAUkL,EACVjL,EAASkL,CACjB,CAAK,EACiB,QAAAnL,EAAS,OAAAC,EAC9B,CAC4B,IAAImL,GAAgBH,GAQjD,MAAMI,WAAwBvP,EAAsB,CAChD,YAAYqD,EAAQ,CAChB,MAAM,SAAUnD,EAAWxa,EAAM,CAC7BwY,GAAO,MAAM,4BAA8BgC,CAAS,CAChE,CAAS,EACD,KAAK,iBAAmB,GACxB,KAAK,UAAY,KACjB,KAAK,oBAAsB,KAC3B,KAAK,kBAAoB,KACzB,KAAK,mBAAqB,KAC1B,KAAK,aAAe,CAACsP,EAAKhL,IAAa,CACnC,GAAIgL,EAAK,CACLtR,GAAO,KAAK,wBAAwBsR,CAAG,EAAE,EACzC,KAAK,SAAQ,EACb,MACH,CACD,KAAK,OAAO,WAAW,gBAAiB,CACpC,KAAMhL,EAAS,KACf,UAAWA,EAAS,SACpC,CAAa,CACb,EACQ,KAAK,OAASnB,EACd,KAAK,OAAO,WAAW,KAAK,eAAgB,CAAC,CAAE,SAAAoM,EAAU,QAAArJ,KAAc,CAC/DqJ,IAAa,aAAerJ,IAAY,aACxC,KAAK,QAAO,EAEZqJ,IAAa,aAAerJ,IAAY,cACxC,KAAK,SAAQ,EACb,KAAK,0BAAyB,EAE9C,CAAS,EACD,KAAK,UAAY,IAAI6I,GAA0B5L,CAAM,EACrD,KAAK,OAAO,WAAW,KAAK,UAAW1b,GAAS,CAC5C,IAAIuY,EAAYvY,EAAM,MAClBuY,IAAc,yBACd,KAAK,iBAAiBvY,EAAM,IAAI,EAEhC,KAAK,qBACL,KAAK,oBAAoB,OAASA,EAAM,SACxC,KAAK,oBAAoB,YAAYA,CAAK,CAE1D,CAAS,CACJ,CACD,QAAS,CACD,KAAK,mBAGT,KAAK,iBAAmB,GACxB,KAAK,QAAO,EACf,CACD,SAAU,CACD,KAAK,mBAGV,KAAK,0BAAyB,EAC1B,KAAK,OAAO,WAAW,QAAU,aAGrC,KAAK,OAAO,OAAO,kBAAkB,CACjC,SAAU,KAAK,OAAO,WAAW,SAC7C,EAAW,KAAK,YAAY,EACvB,CACD,iBAAiBjC,EAAM,CACnB,GAAI,CACA,KAAK,UAAY,KAAK,MAAMA,EAAK,SAAS,CAC7C,MACS,CACNwY,GAAO,MAAM,0CAA0CxY,EAAK,SAAS,EAAE,EACvE,KAAK,SAAQ,EACb,MACH,CACD,GAAI,OAAO,KAAK,UAAU,IAAO,UAAY,KAAK,UAAU,KAAO,GAAI,CACnEwY,GAAO,MAAM,+CAA+C,KAAK,SAAS,EAAE,EAC5E,KAAK,SAAQ,EACb,MACH,CACD,KAAK,mBAAkB,EACvB,KAAK,mBAAkB,CAC1B,CACD,oBAAqB,CACjB,MAAMwR,EAAoB9M,GAAW,CAC7BA,EAAQ,qBAAuBA,EAAQ,sBACvCA,EAAQ,sBAAqB,EAExB,CAACA,EAAQ,qBACd,KAAK,OAAO,WAAW,QAAU,aACjCA,EAAQ,UAAS,CAEjC,EACQ,KAAK,oBAAsB,IAAIQ,GAAgB,mBAAmB,KAAK,UAAU,EAAE,GAAI,KAAK,MAAM,EAClG,KAAK,oBAAoB,YAAY,CAAClD,EAAWxa,IAAS,CAClDwa,EAAU,QAAQ,kBAAkB,IAAM,GAC1CA,EAAU,QAAQ,SAAS,IAAM,GAGrC,KAAK,KAAKA,EAAWxa,CAAI,CACrC,CAAS,EACDgqB,EAAkB,KAAK,mBAAmB,CAC7C,CACD,UAAW,CACP,KAAK,UAAY,KACb,KAAK,sBACL,KAAK,oBAAoB,aACzB,KAAK,oBAAoB,aACzB,KAAK,oBAAsB,MAE3B,KAAK,kBACL,KAAK,mBAAkB,CAE9B,CACD,2BAA4B,CAIxB,GAHI,CAAC,KAAK,kBAGN,KAAK,mBAAqB,CAAC,KAAK,kBAAkB,KAClD,OAEJ,KAAM,CAAE,QAAAC,EAAS,QAAAzL,EAAS,OAAQtH,CAAC,EAAK0S,KACxCK,EAAQ,KAAO,GACf,MAAMC,EAAU,IAAM,CAClBD,EAAQ,KAAO,EAC3B,EACQA,EAAQ,KAAKC,CAAO,EAAE,MAAMA,CAAO,EACnC,KAAK,kBAAoBD,EACzB,KAAK,mBAAqBzL,CAC7B,CACJ,CAgBD,MAAM2L,EAAc,CAChB,OAAO,OAAQ,CACXA,GAAc,QAAU,GACxB,QAASznB,EAAI,EAAGqU,EAAIoT,GAAc,UAAU,OAAQznB,EAAIqU,EAAGrU,IACvDynB,GAAc,UAAUznB,CAAC,EAAE,QAAO,CAEzC,CACD,OAAO,mBAAoB,CACvB,OAAOuU,EAAKQ,GAAa,CAAE,GAAI/E,GAAQ,WAAW,IAAM,SAAU0X,EAAG,CACjE,OAAOA,EAAE,YAAY,EAAE,CAC1B,EAAC,CACL,CACD,YAAYC,EAAS9X,EAAS,CAC1B+X,GAAYD,CAAO,EACnBpC,GAAgB1V,CAAO,EACvB,KAAK,IAAM8X,EACX,KAAK,OAAS3B,GAAUnW,EAAS,IAAI,EACrC,KAAK,SAAW5D,GAAQ,iBACxB,KAAK,eAAiB,IAAI2L,GAC1B,KAAK,UAAY5H,GAAQ,UAAU,GAAU,EAC7C,KAAK,SAAW,IAAIyU,GAAkB,KAAK,IAAK,KAAK,UAAW,CAC5D,QAAS,KAAK,OAAO,QACrB,SAAUgD,GAAc,kBAAmB,EAC3C,OAAQ,KAAK,OAAO,gBAAkB,CAAE,EACxC,MAAO,GACP,MAAOjD,GAAe,KACtB,QAAS7U,EAAS,OAC9B,CAAS,EACG,KAAK,OAAO,cACZ,KAAK,eAAiB1D,GAAQ,qBAAqB,KAAK,SAAU,CAC9D,KAAM,KAAK,OAAO,UAClB,KAAM,gBAAkB+D,GAAQ,kBAAkB,IAClE,CAAa,GAEL,IAAI6X,EAAehY,GACRG,GAAQ,mBAAmB,KAAK,OAAQH,EAASsV,EAAgC,EAE5F,KAAK,WAAalZ,GAAQ,wBAAwB,KAAK,IAAK,CACxD,YAAa4b,EACb,SAAU,KAAK,SACf,gBAAiB,KAAK,OAAO,gBAC7B,YAAa,KAAK,OAAO,YACzB,mBAAoB,KAAK,OAAO,mBAChC,OAAQ,EAAQ,KAAK,OAAO,MACxC,CAAS,EACD,KAAK,WAAW,KAAK,YAAa,IAAM,CACpC,KAAK,aAAY,EACb,KAAK,gBACL,KAAK,eAAe,KAAK,KAAK,WAAW,WAAU,CAAE,CAErE,CAAS,EACD,KAAK,WAAW,KAAK,UAAWtoB,GAAS,CACrC,IAAIuY,EAAYvY,EAAM,MAClBuoB,GAAWhQ,EAAU,QAAQ,kBAAkB,IAAM,EACzD,GAAIvY,EAAM,QAAS,CACf,IAAIib,GAAU,KAAK,QAAQjb,EAAM,OAAO,EACpCib,IACAA,GAAQ,YAAYjb,CAAK,CAEhC,CACIuoB,IACD,KAAK,eAAe,KAAKvoB,EAAM,MAAOA,EAAM,IAAI,CAEhE,CAAS,EACD,KAAK,WAAW,KAAK,aAAc,IAAM,CACrC,KAAK,SAAS,YAC1B,CAAS,EACD,KAAK,WAAW,KAAK,eAAgB,IAAM,CACvC,KAAK,SAAS,YAC1B,CAAS,EACD,KAAK,WAAW,KAAK,QAAS6nB,GAAO,CACjCtR,GAAO,KAAKsR,CAAG,CAC3B,CAAS,EACDK,GAAc,UAAU,KAAK,IAAI,EACjC,KAAK,SAAS,KAAK,CAAE,UAAWA,GAAc,UAAU,MAAM,CAAE,EAChE,KAAK,KAAO,IAAIN,GAAgB,IAAI,EAChCM,GAAc,SACd,KAAK,QAAO,CAEnB,CACD,QAAQjb,EAAM,CACV,OAAO,KAAK,SAAS,KAAKA,CAAI,CACjC,CACD,aAAc,CACV,OAAO,KAAK,SAAS,KACxB,CACD,SAAU,CAEN,GADA,KAAK,WAAW,UACZ,KAAK,gBACD,CAAC,KAAK,oBAAqB,CAC3B,IAAIqS,EAAW,KAAK,WAAW,WAAU,EACrCkJ,EAAiB,KAAK,eAC1B,KAAK,oBAAsB,IAAI1U,EAAqB,IAAO,UAAY,CACnE0U,EAAe,KAAKlJ,CAAQ,CAChD,CAAiB,CACJ,CAER,CACD,YAAa,CACT,KAAK,WAAW,aACZ,KAAK,sBACL,KAAK,oBAAoB,gBACzB,KAAK,oBAAsB,KAElC,CACD,KAAKmJ,EAAY5qB,EAAU0L,EAAS,CAChC,YAAK,eAAe,KAAKkf,EAAY5qB,EAAU0L,CAAO,EAC/C,IACV,CACD,OAAOkf,EAAY5qB,EAAU0L,EAAS,CAClC,YAAK,eAAe,OAAOkf,EAAY5qB,EAAU0L,CAAO,EACjD,IACV,CACD,YAAY1L,EAAU,CAClB,YAAK,eAAe,YAAYA,CAAQ,EACjC,IACV,CACD,cAAcA,EAAU,CACpB,YAAK,eAAe,cAAcA,CAAQ,EACnC,IACV,CACD,WAAWA,EAAU,CACjB,YAAK,eAAe,aACb,IACV,CACD,cAAe,CACX,IAAI6qB,EACJ,IAAKA,KAAe,KAAK,SAAS,SAC1B,KAAK,SAAS,SAAS,eAAeA,CAAW,GACjD,KAAK,UAAUA,CAAW,CAGrC,CACD,UAAUC,EAAc,CACpB,IAAI1N,EAAU,KAAK,SAAS,IAAI0N,EAAc,IAAI,EAClD,OAAI1N,EAAQ,qBAAuBA,EAAQ,sBACvCA,EAAQ,sBAAqB,EAExB,CAACA,EAAQ,qBACd,KAAK,WAAW,QAAU,aAC1BA,EAAQ,UAAS,EAEdA,CACV,CACD,YAAY0N,EAAc,CACtB,IAAI1N,EAAU,KAAK,SAAS,KAAK0N,CAAY,EACzC1N,GAAWA,EAAQ,oBACnBA,EAAQ,mBAAkB,GAG1BA,EAAU,KAAK,SAAS,OAAO0N,CAAY,EACvC1N,GAAWA,EAAQ,YACnBA,EAAQ,YAAW,EAG9B,CACD,WAAWwN,EAAY1qB,EAAMkd,EAAS,CAClC,OAAO,KAAK,WAAW,WAAWwN,EAAY1qB,EAAMkd,CAAO,CAC9D,CACD,cAAe,CACX,OAAO,KAAK,OAAO,MACtB,CACD,QAAS,CACL,KAAK,KAAK,QACb,CACJ,CACDiN,GAAc,UAAY,GAC1BA,GAAc,QAAU,GACxBA,GAAc,aAAe,GAC7BA,GAAc,QAAUzX,GACxByX,GAAc,gBAAkBzX,GAAQ,gBACxCyX,GAAc,sBAAwBzX,GAAQ,sBAC9CyX,GAAc,eAAiBzX,GAAQ,eACV,IAAI6F,GAAc3G,EAAoB,QAAcuY,GACjF,SAASG,GAAY5lB,EAAK,CACtB,GAAIA,GAAQ,KACR,KAAM,yDAEb,CACDgO,GAAQ,MAAMyX,EAAa,CAGpB,CACP,CAAU,CACV,CAAC,0CCr+IYU,GAAkB,CAC7B,WAAY,aACZ,UAAW,YACX,MAAO,OACT,EAEO,SAASC,GAAiB,CAAE,IAAApmB,EAAK,QAAAykB,EAAS,QAASwB,EAAa,eAAAI,GAAkB,CACvF,MAAMC,EAAmBC,UAAO,IAAI,EAC9B,CAACC,EAAkBC,CAAmB,EAAIC,YAASP,GAAgB,UAAU,EAC7EQ,EAA0BJ,UAAOJ,GAAgB,UAAU,EAC3D,CAACriB,EAAO8iB,CAAQ,EAAIF,GAAQ,SAAC,IAAI,EACjCG,EAA4BN,UAAO,EAAE,EAErCO,EAA8BC,eAAaC,GAAO,CACtDH,EAA0B,QAAQ,KAAKG,CAAE,CAC7C,EAAK,CAACH,CAAyB,CAAC,EACxBI,EAAeC,GAAgB,CACnCT,EAAoBN,GAAgB,KAAK,EACzCS,EAASM,CAAW,CACxB,EAEEC,oBAAU,IAAM,CACd,MAAMlO,EAAS,IAAImO,GAAOpnB,EAAK,CAC7B,QAASykB,EACT,qBAAsB,CACpB,SAAU4B,EACV,gBAAiB,KACR,CACL,eAAgB,SAAS,cAAc,qBAAqB,EAAE,OAC1E,EAEO,CACP,CAAK,EAGD,OAAApN,EAAO,WAAW,KAAK,aAAc,IAAM,CAAEwN,EAAoBN,GAAgB,UAAU,CAAC,CAAC,EAC7FlN,EAAO,WAAW,KAAK,YAAa,IAAM,CAAEwN,EAAoBN,GAAgB,SAAS,CAAC,CAAC,EAC3FlN,EAAO,WAAW,KAAK,cAAe,IAAMgO,EAAa,GACzDhO,EAAO,WAAW,KAAK,QAAUoO,GAAiBJ,EAAYI,CAAY,CAAC,EAE3Ef,EAAiB,QAAUrN,EAAO,UAAUgN,CAAW,EACvDK,EAAiB,QAAQ,KAAK,4BAA6BgB,GAAqB,CAC9EL,EAAYK,CAAiB,CACnC,CAAK,EAEM,IAAMrO,EAAO,YAAYgN,CAAW,CAC5C,EAAE,CAACjmB,EAAKykB,EAASwB,CAAW,CAAC,EAE9BkB,aAAU,IAAM,CACdN,EAA0B,QAAQ,QAAQG,GAAMA,EAAGR,EAAkBG,EAAwB,OAAO,CAAC,EACrGA,EAAwB,QAAUH,CACtC,EAAK,CAACA,CAAgB,CAAC,EAEd,CACL,QAASF,EAAiB,QAC1B,iBAAAE,EACA,MAAA1iB,EACA,4BAAAgjB,CACD,CACH,CC1DO,SAASS,GAAU,CAAE,KAAArf,EAAM,UAAAkB,EAAW,SAAAoe,GAAY,CAErD,OAAA9rB,EAAA,cAAC,MAAI,WAAWc,GAAW,eAAe0L,CAAI,OAAQkB,CAAS,EAAG,KAAK,SACpEoe,CACH,CAEJ,CAEAD,GAAU,UAAY,CACpB,KAAMxrB,GAAU,OAChB,UAAWA,GAAU,OACrB,SAAUA,GAAU,UAAU,CAC5BA,GAAU,KACVA,GAAU,QAAQA,GAAU,IAAI,EACjC,CACH,EAEAwrB,GAAU,aAAe,CACvB,UAAW,IACb,EClBO,SAASE,GAAuB,CACrC,iBAAAjB,EACA,aAAAkB,EACA,gBAAAC,CACF,EAAG,CACD,OAAQnB,EAAkB,CACxB,KAAKL,GAAgB,WAEjB,OAAAzqB,EAAA,cAAC6rB,GAAU,MAAK,OAAO,UAAWI,CAChC,EAAAjsB,EAAA,cAAC,IAAE,WAAU,kDAAmD,GAAE,aAEpE,EAEJ,KAAKyqB,GAAgB,MAEjB,OAAAzqB,EAAA,cAAC6rB,GAAU,MAAK,SAAS,UAAWI,CAClC,EAAAjsB,EAAA,cAAC,IAAE,WAAU,kDAAmD,GAC/DgsB,CACH,EAEJ,QACS,WACX,CACF,CAEAD,GAAuB,UAAY,CACjC,iBAAkB1rB,GAAU,MAAM,OAAO,OAAOoqB,EAAe,CAAC,EAAE,WAClE,aAAcpqB,GAAU,OACxB,gBAAiBA,GAAU,MAC7B,EAEA0rB,GAAuB,aAAe,CACpC,aACE,uEACJ,EClCA,MAAMG,GAA4B,CAACC,EAAsBC,IAAmB,OAAOD,CAAoB,GAAKC,EAE5F,SAAAC,GAAoC,CAAE,eAAAD,EAAgB,iBAAAtB,EAAkB,QAAAhO,EAAS,gBAAAmP,EAAiB,oBAAAK,EAAqB,6BAAAC,GAAgC,CACrK,KAAM,CAACJ,EAAsBK,CAAuB,EAAIxB,YAAS,IAAI,EAC/DyB,EAAiB3B,IAAqBL,GAAgB,UAoB5D,OAlBAgB,aAAU,KACJ3O,GAAWgO,IAAqBL,GAAgB,WAClD3N,EAAQ,KAAK,4BAA8Bld,GAAS4sB,EAAwB5sB,EAAK,kBAAkB,CAAC,EAG/F,IAAMkd,GAAA,YAAAA,EAAS,OAAO,4BAA6B0P,IACzD,CAAC1B,EAAkBhO,CAAO,CAAC,EAE9B2O,aAAU,IAAM,CACVc,GAAgCJ,GACLI,EAAA,CAC3B,qBAAAJ,EACA,wBAAyBD,GAA0BC,EAAsBC,CAAc,EACxF,CAEF,GAACD,EAAsBI,EAA8BH,CAAc,CAAC,EAGnEK,GAAkBP,GAA0BC,EAAsBC,CAAc,EAC3E,KAIPpsB,EAAA,cAAC6rB,GAAU,MAAK,OAAO,UAAWI,CAChC,EAAAjsB,EAAA,cAAC,IAAE,WAAU,+CAAgD,GAE5DssB,CACH,CAEJ,CAEAD,GAAoC,UAAY,CAC9C,eAAgBhsB,GAAU,OAAO,WACjC,iBAAkBA,GAAU,OAC5B,QAASA,GAAU,OACnB,gBAAiBA,GAAU,OAC3B,oBAAqBA,GAAU,OAC/B,6BAA8BA,GAAU,IAC1C,EAEAgsB,GAAoC,aAAe,CACjD,oBAAqB,oCACvB,EC/CO,SAASK,GAAiB,CAC/B,SAAAZ,EACA,cAAAa,EACA,OAAApK,EACA,gBAAA0J,EACA,eAAAG,EACA,sBAAAQ,CACF,EAAG,CACD,KAAM,CAAE,iBAAA9B,EAAkB,QAAAhO,CAAQ,EAAI4N,GAAiBnI,CAAM,EAE7DkJ,oBAAU,IAAM,CACR,MAAAoB,EAAa,OAAO,KAAKF,CAAa,EAExC,OAAA7P,GAAW+P,EAAW,QACxBA,EAAW,QAAqBzS,GAAA,CACxB,MAAAoH,EAAKmL,EAAcvS,CAAS,EAClC0C,EAAQ,KAAK1C,EAAoBvY,GAAA2f,EAAG3f,CAAK,CAAC,EAC3C,EAGI,IAAM,CACXgrB,EAAW,QAAqBzS,GAAA,CACxB,MAAAoH,EAAKmL,EAAcvS,CAAS,EACzB0C,GAAA,MAAAA,EAAA,OAAO1C,EAAWoH,EAAE,CAC9B,EAEF,GAACmL,EAAc,KAAM7P,CAAO,CAAC,EAG9B9c,EAAA,cAAC,MAAI,WAAU,yBACZ,EAAA8qB,IAAqBL,GAAgB,WAAaqB,EAClD,EAAQM,GACPpsB,EAAA,cAACqsB,GAAA,CACC,eAAAD,EACA,iBAAAtB,EACA,QAAAhO,EACA,gBAAAmP,EACA,oBAAqBW,CAAA,CAGzB,EAAA5sB,EAAA,cAAC+rB,GAAA,CACC,iBAAAjB,EACA,gBAAAmB,CAAA,EAEJ,CAEJ,CAEAS,GAAiB,UAAY,CAC3B,SAAUrsB,GAAU,UAAU,CAC5BA,GAAU,KACVA,GAAU,QAAQA,GAAU,IAAI,EACjC,EACD,cAAeA,GAAU,SAASA,GAAU,IAAI,EAChD,OAAQA,GAAU,MAAM,CACtB,IAAKA,GAAU,OAAO,WACtB,QAASA,GAAU,OAAO,WAC1B,QAASA,GAAU,OAAO,UAC3B,GAAE,WACH,gBAAiBA,GAAU,OAC3B,eAAgBA,GAAU,OAC1B,sBAAuBA,GAAU,MACnC,EAEAqsB,GAAiB,aAAe,CAC9B,cAAe,CAAC,CAClB,ECvEA,MAAMI,GAAmB,IACnBC,GAAmB,EACnBC,GAAmB,UACnBC,GAAmB,UAEnBC,GAAuB,CAACC,EAAWC,EAAUjb,EAAU,KAAO,CAClE,KAAM,CAAE,MAAA3N,EAAQsoB,GAAc,OAAA9oB,EAAS8oB,EAAY,EAAK3a,EAExD,MAAO,CACL,MAAS3N,EACT,OAAUR,EACV,OAAU+oB,GAEV,UAAa,CACX,WAAc,IACd,KAAQ,OACR,qBAAwB,GACzB,EAED,KAAQI,EAER,MAASC,EACT,aAAgB,CACd,mBAAsB,GACtB,UAAa,GACb,OAAU,CACX,EAED,kBAAqB,CACnB,MAASJ,EACV,EACD,wBAA2BK,GAE3B,YAAeC,GACf,kBAAqBD,GAErB,qBAAwBE,GACxB,2BAA8BF,GAE9B,kBAAqBE,GACrB,wBAA2BF,EAC5B,CACH,EAEME,GAAa,CACjB,KAAQ,MACR,MAASN,EACX,EAEMK,GAAc,CAClB,KAAQ,OACR,MAASL,EACX,EAEMI,GAAmB,CACvB,UAAa,CACX,OAAU,GACV,SAAY,EACb,CACH,sCC7DC,SAASrD,EAAEvkB,EAAE,CAAmD+I,EAAe,QAAA/I,EAAC,CAA4H,GAAE,KAAM,UAAU,CAAC,OAAO,IAAI,CAAC,IAAIukB,EAAE,CAAC,IAAI,CAACA,EAAEvkB,IAAI,CAAC,IAAI+nB,EAAEC,EAAEC,EAAE,UAAU,CAAC,IAAI1D,EAAE,SAASA,EAAEvkB,EAAE,CAAC,IAAI+nB,EAAExD,EAAEyD,EAAErmB,EAAE3B,CAAC,EAAEioB,EAAE,KAAKprB,GAAE,EAAEuS,GAAE,KAAK8Y,GAAE,GAAGC,GAAE,CAAE,EAACvX,GAAE,SAAS2T,EAAEvkB,EAAE,CAACioB,EAAE,SAAS1D,EAAE,CAAC,QAAQvkB,EAAE,IAAI,MAAMukB,CAAC,EAAEwD,EAAE,EAAEA,EAAExD,EAAEwD,GAAG,EAAE,CAAC/nB,EAAE+nB,CAAC,EAAE,IAAI,MAAMxD,CAAC,EAAE,QAAQyD,GAAE,EAAEA,GAAEzD,EAAEyD,IAAG,EAAEhoB,EAAE+nB,CAAC,EAAEC,EAAC,EAAE,IAAI,CAAC,OAAOhoB,CAAC,EAAEnD,GAAE,EAAEkrB,EAAE,EAAE,EAAEnmB,EAAE,EAAE,CAAC,EAAEA,EAAE/E,GAAE,EAAE,CAAC,EAAE+E,EAAE,EAAE/E,GAAE,CAAC,EAAEurB,EAAG,EAAC/W,EAAG,EAACgX,EAAE9D,EAAEvkB,CAAC,EAAE+nB,GAAG,GAAGO,EAAE/D,CAAC,EAAQnV,IAAN,OAAUA,GAAEmZ,EAAER,EAAEC,EAAEE,EAAC,GAAGM,EAAEpZ,GAAEpP,CAAC,CAAC,EAAE4B,EAAE,SAAS2iB,EAAEvkB,EAAE,CAAC,QAAQ+nB,EAAE,GAAGA,GAAG,EAAEA,GAAG,EAAE,GAAG,EAAExD,EAAEwD,GAAG,IAAIlrB,IAAG0nB,EAAEwD,GAAG,QAAQC,EAAE,GAAGA,GAAG,EAAEA,GAAG,EAAEhoB,EAAEgoB,GAAG,IAAInrB,IAAGmD,EAAEgoB,IAAIC,EAAE1D,EAAEwD,CAAC,EAAE/nB,EAAEgoB,CAAC,EAAE,GAAGD,GAAGA,GAAG,IAAOC,GAAH,GAASA,GAAH,IAAO,GAAGA,GAAGA,GAAG,IAAOD,GAAH,GAASA,GAAH,IAAO,GAAGA,GAAGA,GAAG,GAAG,GAAGC,GAAGA,GAAG,EAAE,EAAE3W,EAAE,UAAU,CAAC,QAAQkT,EAAE,EAAEA,EAAE1nB,GAAE,EAAE0nB,GAAG,EAAQ0D,EAAE1D,CAAC,EAAE,CAAC,GAAZ,OAAgB0D,EAAE1D,CAAC,EAAE,CAAC,EAAEA,EAAE,GAAG,GAAG,QAAQvkB,EAAE,EAAEA,EAAEnD,GAAE,EAAEmD,GAAG,EAAQioB,EAAE,CAAC,EAAEjoB,CAAC,GAAZ,OAAgBioB,EAAE,CAAC,EAAEjoB,CAAC,EAAEA,EAAE,GAAG,EAAE,EAAEooB,EAAE,UAAU,CAAC,QAAQ7D,EAAEla,EAAE,mBAAmB0d,CAAC,EAAE/nB,EAAE,EAAEA,EAAEukB,EAAE,OAAOvkB,GAAG,EAAE,QAAQgoB,EAAE,EAAEA,EAAEzD,EAAE,OAAOyD,GAAG,EAAE,CAAC,IAAInrB,EAAE0nB,EAAEvkB,CAAC,EAAE2B,EAAE4iB,EAAEyD,CAAC,EAAE,GAASC,EAAEprB,CAAC,EAAE8E,CAAC,GAAZ,KAAc,QAAQyN,GAAE,GAAGA,IAAG,EAAEA,IAAG,EAAE,QAAQqZ,GAAE,GAAGA,IAAG,EAAEA,IAAG,EAAER,EAAEprB,EAAEuS,EAAC,EAAEzN,EAAE8mB,EAAC,EAAMrZ,IAAJ,IAAUA,IAAH,GAAUqZ,IAAJ,IAAUA,IAAH,GAASrZ,IAAH,GAASqZ,IAAH,CAAI,CAAC,EAAEH,EAAE,SAAS/D,EAAE,CAAC,QAAQvkB,EAAEqK,EAAE,iBAAiB0d,CAAC,EAAEC,EAAE,EAAEA,EAAE,GAAGA,GAAG,EAAE,CAAC,IAAIrmB,EAAE,CAAC4iB,IAAOvkB,GAAGgoB,EAAE,IAAT,EAAYC,EAAE,KAAK,MAAMD,EAAE,CAAC,CAAC,EAAEA,EAAE,EAAEnrB,GAAE,EAAE,CAAC,EAAE8E,CAAC,CAAC,IAAIqmB,EAAE,EAAEA,EAAE,GAAGA,GAAG,EAAErmB,EAAE,CAAC4iB,IAAOvkB,GAAGgoB,EAAE,IAAT,EAAYC,EAAED,EAAE,EAAEnrB,GAAE,EAAE,CAAC,EAAE,KAAK,MAAMmrB,EAAE,CAAC,CAAC,EAAErmB,CAAC,EAAE0mB,EAAE,SAAS9D,EAAEvkB,EAAE,CAAC,QAAQ+nB,EAAEC,GAAG,EAAEhoB,EAAE2B,EAAE0I,EAAE,eAAe0d,CAAC,EAAE3Y,EAAE,EAAEA,EAAE,GAAGA,GAAG,EAAE,CAAC,IAAIqZ,GAAE,CAAClE,IAAO5iB,GAAGyN,EAAE,IAAT,EAAYA,EAAE,EAAE6Y,EAAE7Y,CAAC,EAAE,CAAC,EAAEqZ,GAAErZ,EAAE,EAAE6Y,EAAE7Y,EAAE,CAAC,EAAE,CAAC,EAAEqZ,GAAER,EAAEprB,GAAE,GAAGuS,CAAC,EAAE,CAAC,EAAEqZ,EAAC,CAAC,IAAIrZ,EAAE,EAAEA,EAAE,GAAGA,GAAG,EAAEqZ,GAAE,CAAClE,IAAO5iB,GAAGyN,EAAE,IAAT,EAAYA,EAAE,EAAE6Y,EAAE,CAAC,EAAEprB,GAAEuS,EAAE,CAAC,EAAEqZ,GAAErZ,EAAE,EAAE6Y,EAAE,CAAC,EAAE,GAAG7Y,EAAE,EAAE,CAAC,EAAEqZ,GAAER,EAAE,CAAC,EAAE,GAAG7Y,EAAE,CAAC,EAAEqZ,GAAER,EAAEprB,GAAE,CAAC,EAAE,CAAC,EAAE,CAAC0nB,CAAC,EAAEiE,EAAE,SAASjE,EAAEvkB,EAAE,CAAC,QAAQ+nB,EAAE,GAAGC,EAAEnrB,GAAE,EAAE8E,EAAE,EAAEyN,GAAE,EAAEqZ,GAAEpe,EAAE,gBAAgBrK,CAAC,EAAEmK,GAAEtN,GAAE,EAAEsN,GAAE,EAAEA,IAAG,EAAE,IAAOA,IAAH,IAAOA,IAAG,KAAK,CAAC,QAAQ+G,GAAE,EAAEA,GAAE,EAAEA,IAAG,EAAE,GAAS+W,EAAED,CAAC,EAAE7d,GAAE+G,EAAC,GAAd,KAAgB,CAAC,IAAIrH,GAAE,GAAGuF,GAAEmV,EAAE,SAAS1a,IAAM0a,EAAEnV,EAAC,IAAIzN,EAAE,IAAb,GAAiB8mB,GAAET,EAAE7d,GAAE+G,EAAC,IAAIrH,GAAE,CAACA,IAAGoe,EAAED,CAAC,EAAE7d,GAAE+G,EAAC,EAAErH,IAAOlI,GAAG,IAAR,KAAayN,IAAG,EAAEzN,EAAE,EAAE,CAAC,IAAIqmB,GAAGD,GAAG,GAAGlrB,IAAGmrB,EAAE,CAACA,GAAGD,EAAEA,EAAE,CAACA,EAAE,KAAK,CAAC,CAAC,EAAEQ,EAAE,SAAShE,EAAEvkB,EAAE+nB,EAAE,CAAC,QAAQC,EAAE7d,EAAE,YAAYoa,EAAEvkB,CAAC,EAAEioB,EAAE/W,IAAIrU,GAAE,EAAEA,GAAEkrB,EAAE,OAAOlrB,IAAG,EAAE,CAAC,IAAI8E,GAAEomB,EAAElrB,EAAC,EAAEorB,EAAE,IAAItmB,GAAE,QAAS,EAAC,CAAC,EAAEsmB,EAAE,IAAItmB,GAAE,UAAW,EAAC0I,EAAE,gBAAgB1I,GAAE,QAAS,EAAC4iB,CAAC,CAAC,EAAE5iB,GAAE,MAAMsmB,CAAC,CAAC,CAAC,IAAI7Y,GAAE,EAAE,IAAIvS,GAAE,EAAEA,GAAEmrB,EAAE,OAAOnrB,IAAG,EAAEuS,IAAG4Y,EAAEnrB,EAAC,EAAE,UAAU,GAAGorB,EAAE,gBAAe,EAAG,EAAE7Y,GAAE,KAAK,0BAA0B6Y,EAAE,gBAAe,EAAG,IAAI,EAAE7Y,GAAE,IAAI,IAAI6Y,EAAE,gBAAe,EAAG,GAAG,EAAE7Y,IAAG6Y,EAAE,IAAI,EAAE,CAAC,EAAEA,EAAE,gBAAe,EAAG,GAAG,GAAGA,EAAE,OAAO,EAAE,EAAE,KAAK,EAAEA,EAAE,mBAAmB,EAAE7Y,KAAI6Y,EAAE,IAAI,IAAI,CAAC,EAAEA,EAAE,mBAAmB,EAAE7Y,MAAK6Y,EAAE,IAAI,GAAG,CAAC,EAAE,OAAO,SAAS1D,GAAEvkB,GAAE,CAAC,QAAQ+nB,GAAE,EAAEC,GAAE,EAAEC,GAAE,EAAEprB,GAAE,IAAI,MAAMmD,GAAE,MAAM,EAAE2B,GAAE,IAAI,MAAM3B,GAAE,MAAM,EAAEoP,GAAE,EAAEA,GAAEpP,GAAE,OAAOoP,IAAG,EAAE,CAAC,IAAIjF,GAAEnK,GAAEoP,EAAC,EAAE,UAAU8B,GAAElR,GAAEoP,EAAC,EAAE,WAAWjF,GAAE6d,GAAE,KAAK,IAAIA,GAAE7d,EAAC,EAAE8d,GAAE,KAAK,IAAIA,GAAE/W,EAAC,EAAErU,GAAEuS,EAAC,EAAE,IAAI,MAAMjF,EAAC,EAAE,QAAQN,GAAE,EAAEA,GAAEhN,GAAEuS,EAAC,EAAE,OAAOvF,IAAG,EAAEhN,GAAEuS,EAAC,EAAEvF,EAAC,EAAE,IAAI0a,GAAE,UAAW,EAAC1a,GAAEke,EAAC,EAAEA,IAAG5d,GAAE,IAAIrH,GAAEuH,EAAE,0BAA0B6G,EAAC,EAAEwX,GAAED,EAAE5rB,GAAEuS,EAAC,EAAEtM,GAAE,YAAY,CAAC,EAAE,IAAIA,EAAC,EAAE,IAAInB,GAAEyN,EAAC,EAAE,IAAI,MAAMtM,GAAE,UAAW,EAAC,CAAC,EAAE+G,GAAE,EAAEA,GAAElI,GAAEyN,EAAC,EAAE,OAAOvF,IAAG,EAAE,CAAC,IAAI1G,GAAE0G,GAAE6e,GAAE,UAAW,EAAC/mB,GAAEyN,EAAC,EAAE,OAAOzN,GAAEyN,EAAC,EAAEvF,EAAC,EAAE1G,IAAG,EAAEulB,GAAE,MAAMvlB,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI+kB,GAAE,EAAE,IAAIre,GAAE,EAAEA,GAAE7J,GAAE,OAAO6J,IAAG,EAAEqe,IAAGloB,GAAE6J,EAAC,EAAE,WAAW,IAAIse,GAAE,IAAI,MAAMD,EAAC,EAAES,GAAE,EAAE,IAAI9e,GAAE,EAAEA,GAAEme,GAAEne,IAAG,EAAE,IAAIuF,GAAE,EAAEA,GAAEpP,GAAE,OAAOoP,IAAG,EAAEvF,GAAEhN,GAAEuS,EAAC,EAAE,SAAS+Y,GAAEQ,EAAC,EAAE9rB,GAAEuS,EAAC,EAAEvF,EAAC,EAAE8e,IAAG,GAAG,IAAI9e,GAAE,EAAEA,GAAEoe,GAAEpe,IAAG,EAAE,IAAIuF,GAAE,EAAEA,GAAEpP,GAAE,OAAOoP,IAAG,EAAEvF,GAAElI,GAAEyN,EAAC,EAAE,SAAS+Y,GAAEQ,EAAC,EAAEhnB,GAAEyN,EAAC,EAAEvF,EAAC,EAAE8e,IAAG,GAAG,OAAOR,EAAC,EAAEF,EAAED,CAAC,CAAC,EAAEG,GAAE,QAAQ,SAAS5D,EAAEvkB,EAAE,CAAC,IAAI+nB,EAAE,KAAK,OAAO/nB,EAAEA,GAAG,QAAQ,IAAI,UAAU+nB,EAAEle,EAAE0a,CAAC,EAAE,MAAM,IAAI,eAAewD,EAAEjlB,EAAEyhB,CAAC,EAAE,MAAM,IAAI,OAAOwD,EAAEW,GAAEnE,CAAC,EAAE,MAAM,IAAI,QAAQwD,EAAE5kB,GAAEohB,CAAC,EAAE,MAAM,QAAQ,KAAK,QAAQvkB,CAAC,CAACkoB,GAAE,KAAKH,CAAC,EAAE3Y,GAAE,IAAI,EAAE+Y,GAAE,OAAO,SAAS5D,EAAEvkB,EAAE,CAAC,GAAGukB,EAAE,GAAG1nB,IAAG0nB,GAAGvkB,EAAE,GAAGnD,IAAGmD,EAAE,MAAMukB,EAAE,IAAIvkB,EAAE,OAAOioB,EAAE1D,CAAC,EAAEvkB,CAAC,CAAC,EAAEmoB,GAAE,eAAe,UAAU,CAAC,OAAOtrB,EAAC,EAAEsrB,GAAE,KAAK,UAAU,CAAC,GAAGJ,EAAE,EAAE,CAAC,QAAQxD,EAAE,EAAEA,EAAE,GAAGA,IAAI,CAAC,QAAQvkB,EAAEmK,EAAE,YAAYoa,EAAEyD,CAAC,EAAEC,EAAE/W,EAAC,EAAGrU,EAAE,EAAEA,EAAEqrB,GAAE,OAAOrrB,IAAI,CAAC,IAAI8E,EAAEumB,GAAErrB,CAAC,EAAEorB,EAAE,IAAItmB,EAAE,QAAO,EAAG,CAAC,EAAEsmB,EAAE,IAAItmB,EAAE,UAAS,EAAG0I,EAAE,gBAAgB1I,EAAE,QAAO,EAAG4iB,CAAC,CAAC,EAAE5iB,EAAE,MAAMsmB,CAAC,CAAC,CAAC,IAAI7Y,GAAE,EAAE,IAAIvS,EAAE,EAAEA,EAAEmD,EAAE,OAAOnD,IAAIuS,IAAGpP,EAAEnD,CAAC,EAAE,UAAU,GAAGorB,EAAE,gBAAe,GAAI,EAAE7Y,GAAE,KAAK,CAAC2Y,EAAExD,CAAC,CAAC3T,GAAE,GAAG,UAAU,CAAC,QAAQ2T,GAAE,EAAEvkB,GAAE,EAAE+nB,GAAE,EAAEA,GAAE,EAAEA,IAAG,EAAE,CAACnX,GAAE,GAAGmX,EAAC,EAAE,IAAIC,GAAE3d,EAAE,aAAa8d,EAAC,GAAMJ,IAAH,GAAMxD,GAAEyD,MAAKzD,GAAEyD,GAAEhoB,GAAE+nB,GAAE,CAAC,OAAO/nB,EAAC,EAAG,EAAC,EAAEmoB,GAAE,eAAe,SAAS5D,EAAEvkB,EAAE,CAACukB,EAAEA,GAAG,EAAE,IAAIwD,EAAE,GAAGA,GAAG,iBAAiBA,GAAG,0CAA0CA,GAAG,8BAA8BA,GAAG,2BAA2B/nB,EAAWA,IAAT,OAAW,EAAEukB,EAAEvkB,GAAG,MAAM+nB,GAAG,KAAKA,GAAG,UAAU,QAAQC,EAAE,EAAEA,EAAEG,GAAE,eAAgB,EAACH,GAAG,EAAE,CAACD,GAAG,OAAO,QAAQE,EAAE,EAAEA,EAAEE,GAAE,eAAc,EAAGF,GAAG,EAAEF,GAAG,cAAcA,GAAG,0CAA0CA,GAAG,8BAA8BA,GAAG,8BAA8BA,GAAG,WAAWxD,EAAE,MAAMwD,GAAG,YAAYxD,EAAE,MAAMwD,GAAG,sBAAsBA,GAAGI,GAAE,OAAOH,EAAEC,CAAC,EAAE,UAAU,UAAUF,GAAG,IAAIA,GAAG,MAAMA,GAAG,OAAO,CAAC,OAAOA,GAAG,YAAY,UAAU,EAAEI,GAAE,aAAa,SAAS5D,EAAEvkB,EAAE+nB,EAAEC,EAAE,CAAC,IAAIC,EAAE,GAAa,OAAO,UAAU,CAAC,GAA5B,WAAgC1D,GAAG0D,EAAE,UAAU,CAAC,GAAG,SAASjoB,EAAEioB,EAAE,OAAOF,EAAEE,EAAE,IAAID,EAAEC,EAAE,OAAO1D,EAAEA,GAAG,EAAEvkB,EAAWA,IAAT,OAAW,EAAEukB,EAAEvkB,GAAG+nB,EAAY,OAAOA,GAAjB,SAAmB,CAAC,KAAKA,CAAC,EAAEA,GAAG,IAAI,KAAKA,EAAE,MAAM,KAAKA,EAAE,GAAGA,EAAE,KAAKA,EAAE,IAAI,qBAAqB,MAAMC,EAAY,OAAOA,GAAjB,SAAmB,CAAC,KAAKA,CAAC,EAAEA,GAAG,IAAI,KAAKA,EAAE,MAAM,KAAKA,EAAE,GAAGA,EAAE,KAAKA,EAAE,IAAI,eAAe,KAAK,IAAInrB,GAAE8E,GAAE0I,GAAE+E,GAAEqZ,GAAEN,GAAE,eAAc,EAAG5D,EAAE,EAAEvkB,EAAEmK,GAAE,GAAG,IAAIiF,GAAE,IAAImV,EAAE,QAAQA,EAAE,KAAKA,EAAE,SAASA,EAAE,KAAKpa,IAAG,wDAAwDA,IAAG8d,EAAE,SAAS,GAAG,WAAWQ,GAAE,eAAeA,GAAE,MAAMte,IAAG,iBAAiBse,GAAE,IAAIA,GAAE,KAAKte,IAAG,uCAAuCA,IAAG6d,EAAE,MAAMD,EAAE,KAAK,gCAAgCa,EAAE,CAACZ,EAAE,GAAGD,EAAE,EAAE,EAAE,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,GAAG5d,IAAG,IAAIA,IAAG6d,EAAE,KAAK,cAAcY,EAAEZ,EAAE,EAAE,EAAE,KAAKY,EAAEZ,EAAE,IAAI,EAAE,WAAW,GAAG7d,IAAG4d,EAAE,KAAK,oBAAoBa,EAAEb,EAAE,EAAE,EAAE,KAAKa,EAAEb,EAAE,IAAI,EAAE,iBAAiB,GAAG5d,IAAG,gEAAgEA,IAAG,YAAYxI,GAAE,EAAEA,GAAEwmB,GAAE,eAAc,EAAGxmB,IAAG,EAAE,IAAI0I,GAAE1I,GAAE4iB,EAAEvkB,EAAEnD,GAAE,EAAEA,GAAEsrB,GAAE,eAAc,EAAGtrB,IAAG,EAAEsrB,GAAE,OAAOxmB,GAAE9E,EAAC,IAAIsN,IAAG,KAAKtN,GAAE0nB,EAAEvkB,GAAG,IAAIqK,GAAE+E,IAAG,OAAOjF,IAAG,yCAAyC,QAAQ,EAAEge,GAAE,cAAc,SAAS5D,EAAEvkB,EAAE,CAACukB,EAAEA,GAAG,EAAEvkB,EAAWA,IAAT,OAAW,EAAEukB,EAAEvkB,EAAE,IAAI+nB,EAAEI,GAAE,iBAAiB5D,EAAE,EAAEvkB,EAAEgoB,EAAEhoB,EAAEioB,EAAEF,EAAE/nB,EAAE,OAAO2oB,GAAEZ,EAAEA,EAAG,SAAS/nB,GAAE+nB,GAAE,CAAC,GAAGC,GAAGhoB,IAAGA,GAAEioB,GAAGD,GAAGD,IAAGA,GAAEE,EAAE,CAAC,IAAIprB,GAAE,KAAK,OAAOmD,GAAEgoB,GAAGzD,CAAC,EAAE5iB,GAAE,KAAK,OAAOomB,GAAEC,GAAGzD,CAAC,EAAE,OAAO4D,GAAE,OAAOxmB,GAAE9E,EAAC,EAAE,EAAE,CAAC,CAAC,MAAO,EAAC,CAAG,GAAEsrB,GAAE,aAAa,SAAS5D,EAAEvkB,EAAE+nB,EAAE,CAACxD,EAAEA,GAAG,EAAEvkB,EAAWA,IAAT,OAAW,EAAEukB,EAAEvkB,EAAE,IAAIgoB,EAAEG,GAAE,eAAc,EAAG5D,EAAE,EAAEvkB,EAAEioB,EAAE,GAAG,OAAOA,GAAG,OAAOA,GAAG,SAASA,GAAGE,GAAE,cAAc5D,EAAEvkB,CAAC,EAAEioB,GAAG,IAAIA,GAAG,WAAWA,GAAGD,EAAEC,GAAG,IAAIA,GAAG,YAAYA,GAAGD,EAAEC,GAAG,IAAIF,IAAIE,GAAG,SAASA,GAAGW,EAAEb,CAAC,EAAEE,GAAG,KAAKA,EAAE,IAAI,EAAE,IAAIW,EAAE,SAASrE,EAAE,CAAC,QAAQvkB,EAAE,GAAG+nB,EAAE,EAAEA,EAAExD,EAAE,OAAOwD,GAAG,EAAE,CAAC,IAAIC,EAAEzD,EAAE,OAAOwD,CAAC,EAAE,OAAOC,EAAC,CAAE,IAAI,IAAIhoB,GAAG,OAAO,MAAM,IAAI,IAAIA,GAAG,OAAO,MAAM,IAAI,IAAIA,GAAG,QAAQ,MAAM,IAAI,IAAIA,GAAG,SAAS,MAAM,QAAQA,GAAGgoB,CAAC,CAAC,CAAC,OAAOhoB,CAAC,EAAE,OAAOmoB,GAAE,YAAY,SAAS5D,EAAEvkB,EAAE,CAAC,IAAIukB,EAAEA,GAAG,GAAG,EAAE,OAAO,SAASA,GAAE,CAACA,GAAWA,KAAT,OAAW,EAAEA,GAAE,IAAIvkB,GAAE+nB,GAAEC,GAAEC,GAAEprB,GAAE8E,GAAE,EAAEwmB,GAAE,eAAc,EAAG,EAAE5D,GAAEla,GAAEka,GAAEnV,GAAEzN,GAAE4iB,GAAEkE,GAAE,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG,EAAEte,GAAE,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG,EAAE+G,GAAE,GAAG,IAAIlR,GAAE,EAAEA,GAAE2B,GAAE3B,IAAG,EAAE,CAAC,IAAIgoB,GAAE,KAAK,OAAOhoB,GAAEqK,IAAG,CAAC,EAAE4d,GAAE,KAAK,OAAOjoB,GAAE,EAAEqK,IAAG,CAAC,EAAE0d,GAAE,EAAEA,GAAEpmB,GAAEomB,IAAG,EAAElrB,GAAE,IAAIwN,IAAG0d,IAAGA,GAAE3Y,IAAG/E,IAAGrK,IAAGA,GAAEoP,IAAG+Y,GAAE,OAAOH,GAAE,KAAK,OAAOD,GAAE1d,IAAG,CAAC,CAAC,IAAIxN,GAAE,KAAKwN,IAAG0d,IAAGA,GAAE3Y,IAAG/E,IAAGrK,GAAE,GAAGA,GAAE,EAAEoP,IAAG+Y,GAAE,OAAOF,GAAE,KAAK,OAAOF,GAAE1d,IAAG,CAAC,CAAC,EAAExN,IAAG,IAAIA,IAAG,IAAIqU,IAAGqT,GAAE,GAAGvkB,GAAE,GAAGoP,GAAEjF,GAAEtN,EAAC,EAAE4rB,GAAE5rB,EAAC,EAAEqU,IAAG;AAAA,CAAI,CAAC,OAAOvP,GAAE,GAAG4iB,GAAE,EAAErT,GAAE,UAAU,EAAEA,GAAE,OAAOvP,GAAE,CAAC,EAAE,MAAMA,GAAE,CAAC,EAAE,KAAK,GAAG,EAAEuP,GAAE,UAAU,EAAEA,GAAE,OAAO,CAAC,CAAC,EAAElR,CAAC,EAAEukB,GAAG,EAAEvkB,EAAWA,IAAT,OAAW,EAAEukB,EAAEvkB,EAAE,IAAI+nB,EAAEC,EAAEC,EAAEprB,GAAE8E,GAAEwmB,GAAE,iBAAiB5D,EAAE,EAAEvkB,EAAEqK,GAAErK,EAAEoP,GAAEzN,GAAE3B,EAAEyoB,GAAE,MAAMlE,EAAE,CAAC,EAAE,KAAK,IAAI,EAAEpa,GAAE,MAAMoa,EAAE,CAAC,EAAE,KAAK,IAAI,EAAErT,GAAE,GAAGrH,GAAE,GAAG,IAAIke,EAAE,EAAEA,EAAEpmB,GAAEomB,GAAG,EAAE,CAAC,IAAIE,EAAE,KAAK,OAAOF,EAAE1d,IAAGka,CAAC,EAAE1a,GAAE,GAAGme,EAAE,EAAEA,EAAErmB,GAAEqmB,GAAG,EAAEnrB,GAAE,EAAEwN,IAAG2d,GAAGA,EAAE5Y,IAAG/E,IAAG0d,GAAGA,EAAE3Y,IAAG+Y,GAAE,OAAOF,EAAE,KAAK,OAAOD,EAAE3d,IAAGka,CAAC,CAAC,IAAI1nB,GAAE,GAAGgN,IAAGhN,GAAE4rB,GAAEte,GAAE,IAAI8d,EAAE,EAAEA,EAAE1D,EAAE0D,GAAG,EAAE/W,IAAGrH,GAAE;AAAA,CAAI,CAAC,OAAOqH,GAAE,UAAU,EAAEA,GAAE,OAAO,CAAC,CAAC,EAAEiX,GAAE,kBAAkB,SAAS5D,EAAEvkB,EAAE,CAACA,EAAEA,GAAG,EAAE,QAAQ+nB,EAAEI,GAAE,eAAc,EAAGH,EAAE,EAAEA,EAAED,EAAEC,IAAI,QAAQC,EAAE,EAAEA,EAAEF,EAAEE,IAAI1D,EAAE,UAAU4D,GAAE,OAAOH,EAAEC,CAAC,EAAE,QAAQ,QAAQ1D,EAAE,SAASyD,EAAEhoB,EAAEioB,EAAEjoB,EAAEA,EAAEA,CAAC,CAAC,EAAEmoB,EAAC,EAAE5D,EAAE,eAAeA,EAAE,mBAAmB,CAAC,QAAQ,SAASA,EAAE,CAAC,QAAQvkB,EAAE,CAAE,EAAC+nB,EAAE,EAAEA,EAAExD,EAAE,OAAOwD,GAAG,EAAE,CAAC,IAAIC,EAAEzD,EAAE,WAAWwD,CAAC,EAAE/nB,EAAE,KAAK,IAAIgoB,CAAC,CAAC,CAAC,OAAOhoB,CAAC,CAAC,GAAG,QAAQukB,EAAE,oBAAoB,SAASA,EAAEvkB,EAAE,CAAC,IAAI+nB,EAAE,UAAU,CAAC,QAAQA,EAAEI,GAAE5D,CAAC,EAAEyD,GAAE,UAAU,CAAC,IAAIzD,EAAEwD,EAAE,KAAI,EAAG,GAAOxD,GAAJ,GAAM,KAAK,MAAM,OAAOA,CAAC,EAAE0D,GAAE,EAAEprB,GAAE,KAAK,CAAC,IAAI8E,GAAEomB,EAAE,KAAI,EAAG,GAAOpmB,IAAJ,GAAM,MAAM,IAAI0I,GAAE2d,KAAI5Y,EAAE4Y,GAAC,GAAI,EAAEA,GAAG,EAACnrB,GAAE,OAAO,aAAa8E,IAAG,EAAE0I,EAAC,CAAC,EAAE+E,EAAE6Y,IAAG,CAAC,CAAC,GAAGA,IAAGjoB,EAAE,MAAMioB,GAAE,OAAOjoB,EAAE,OAAOnD,EAAC,EAAG,EAACmrB,EAAE,IAAI,WAAW,CAAC,EAAE,OAAO,SAASzD,EAAE,CAAC,QAAQvkB,GAAE,GAAGioB,GAAE,EAAEA,GAAE1D,EAAE,OAAO0D,IAAG,EAAE,CAAC,IAAIprB,GAAE0nB,EAAE,WAAW0D,EAAC,EAAE,GAAGprB,GAAE,IAAImD,GAAE,KAAKnD,EAAC,MAAM,CAAC,IAAI8E,GAAEomB,EAAExD,EAAE,OAAO0D,EAAC,CAAC,EAAY,OAAOtmB,IAAjB,UAAoB,IAAIA,KAAIA,GAAE3B,GAAE,KAAK2B,EAAC,GAAG3B,GAAE,KAAK2B,KAAI,CAAC,EAAE3B,GAAE,KAAK,IAAI2B,EAAC,GAAG3B,GAAE,KAAKgoB,CAAC,CAAC,CAAC,CAAC,OAAOhoB,EAAC,CAAC,EAAE,IAAIA,EAAE+nB,EAAEC,EAAEC,EAAEprB,EAAE8E,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE0I,GAAGrK,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,CAAC,EAAE+nB,EAAE,KAAKC,EAAE,KAAKnrB,EAAE,SAAS0nB,EAAE,CAAC,QAAQvkB,EAAE,EAAKukB,GAAH,GAAMvkB,GAAG,EAAEukB,KAAK,EAAE,OAAOvkB,CAAC,GAAGioB,EAAE,IAAI,eAAe,SAAS1D,EAAE,CAAC,QAAQvkB,EAAEukB,GAAG,GAAG1nB,EAAEmD,CAAC,EAAEnD,EAAEkrB,CAAC,GAAG,GAAG/nB,GAAG+nB,GAAGlrB,EAAEmD,CAAC,EAAEnD,EAAEkrB,CAAC,EAAE,MAAO,QAAOxD,GAAG,GAAGvkB,EAAE,EAAEioB,EAAE,iBAAiB,SAAS1D,EAAE,CAAC,QAAQvkB,EAAEukB,GAAG,GAAG1nB,EAAEmD,CAAC,EAAEnD,EAAEmrB,CAAC,GAAG,GAAGhoB,GAAGgoB,GAAGnrB,EAAEmD,CAAC,EAAEnD,EAAEmrB,CAAC,EAAE,OAAOzD,GAAG,GAAGvkB,CAAC,EAAEioB,EAAE,mBAAmB,SAAS1D,EAAE,CAAC,OAAOvkB,EAAEukB,EAAE,CAAC,CAAC,EAAE0D,EAAE,gBAAgB,SAAS1D,EAAE,CAAC,OAAOA,EAAG,KAAK,GAAE,OAAO,SAASA,EAAEvkB,EAAE,CAAC,OAAOukB,EAAEvkB,GAAG,GAAG,CAAC,EAAE,IAAK,GAAE,OAAO,SAASukB,EAAEvkB,EAAE,CAAC,OAAOukB,EAAE,GAAG,CAAC,EAAE,IAAK,GAAE,OAAO,SAASA,EAAEvkB,EAAE,CAAC,OAAOA,EAAE,GAAG,CAAC,EAAE,IAAK,GAAE,OAAO,SAASukB,EAAEvkB,EAAE,CAAC,OAAOukB,EAAEvkB,GAAG,GAAG,CAAC,EAAE,IAAK,GAAE,OAAO,SAASukB,EAAEvkB,EAAE,CAAC,OAAO,KAAK,MAAMukB,EAAE,CAAC,EAAE,KAAK,MAAMvkB,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,IAAK,GAAE,OAAO,SAASukB,EAAEvkB,EAAE,CAAC,OAAOukB,EAAEvkB,EAAE,EAAEukB,EAAEvkB,EAAE,GAAG,CAAC,EAAE,IAAK,GAAE,OAAO,SAASukB,EAAEvkB,EAAE,CAAC,OAAOukB,EAAEvkB,EAAE,EAAEukB,EAAEvkB,EAAE,GAAG,GAAG,CAAC,EAAE,IAAK,GAAE,OAAO,SAASukB,EAAEvkB,EAAE,CAAC,OAAOukB,EAAEvkB,EAAE,GAAGukB,EAAEvkB,GAAG,GAAG,GAAG,CAAC,EAAE,QAAQ,KAAK,mBAAmBukB,CAAC,CAAC,EAAE0D,EAAE,0BAA0B,SAAS1D,EAAE,CAAC,QAAQvkB,EAAEyoB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEV,EAAE,EAAEA,EAAExD,EAAEwD,GAAG,EAAE/nB,EAAEA,EAAE,SAASyoB,EAAE,CAAC,EAAErZ,EAAE,KAAK2Y,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO/nB,CAAC,EAAEioB,EAAE,gBAAgB,SAAS1D,EAAEvkB,EAAE,CAAC,GAAG,GAAGA,GAAGA,EAAE,GAAG,OAAOukB,EAAG,KAAK,GAAE,MAAO,IAAG,IAAK,GAAE,MAAO,GAAE,IAAK,GAAE,IAAK,GAAE,MAAO,GAAE,QAAQ,KAAK,QAAQA,CAAC,SAASvkB,EAAE,GAAG,OAAOukB,GAAG,IAAK,GAAE,MAAO,IAAG,IAAK,GAAE,MAAO,IAAG,IAAK,GAAE,MAAO,IAAG,IAAK,GAAE,MAAO,IAAG,QAAQ,KAAK,QAAQA,CAAC,KAAK,CAAC,GAAG,EAAEvkB,EAAE,IAAI,KAAK,QAAQA,EAAE,OAAOukB,EAAC,CAAE,IAAK,GAAE,MAAO,IAAG,IAAK,GAAE,MAAO,IAAG,IAAK,GAAE,MAAO,IAAG,IAAK,GAAE,MAAO,IAAG,QAAQ,KAAK,QAAQA,CAAC,CAAC,CAAC,EAAE0D,EAAE,aAAa,SAAS1D,EAAE,CAAC,QAAQvkB,EAAEukB,EAAE,eAAc,EAAGwD,EAAE,EAAEC,EAAE,EAAEA,EAAEhoB,EAAEgoB,GAAG,EAAE,QAAQC,EAAE,EAAEA,EAAEjoB,EAAEioB,GAAG,EAAE,CAAC,QAAQprB,GAAE,EAAE8E,GAAE4iB,EAAE,OAAOyD,EAAEC,CAAC,EAAE5d,GAAE,GAAGA,IAAG,EAAEA,IAAG,EAAE,GAAG,EAAE2d,EAAE3d,GAAE,GAAGrK,GAAGgoB,EAAE3d,IAAG,QAAQ+E,GAAE,GAAGA,IAAG,EAAEA,IAAG,EAAE6Y,EAAE7Y,GAAE,GAAGpP,GAAGioB,EAAE7Y,IAAM/E,IAAH,GAAS+E,IAAH,GAAMzN,IAAG4iB,EAAE,OAAOyD,EAAE3d,GAAE4d,EAAE7Y,EAAC,IAAIvS,IAAG,GAAGA,GAAE,IAAIkrB,GAAG,EAAElrB,GAAE,EAAE,CAAC,IAAImrB,EAAE,EAAEA,EAAEhoB,EAAE,EAAEgoB,GAAG,EAAE,IAAIC,EAAE,EAAEA,EAAEjoB,EAAE,EAAEioB,GAAG,EAAE,CAAC,IAAIQ,GAAE,EAAElE,EAAE,OAAOyD,EAAEC,CAAC,IAAIQ,IAAG,GAAGlE,EAAE,OAAOyD,EAAE,EAAEC,CAAC,IAAIQ,IAAG,GAAGlE,EAAE,OAAOyD,EAAEC,EAAE,CAAC,IAAIQ,IAAG,GAAGlE,EAAE,OAAOyD,EAAE,EAAEC,EAAE,CAAC,IAAIQ,IAAG,GAAMA,IAAH,GAASA,IAAH,IAAOV,GAAG,EAAE,CAAC,IAAIC,EAAE,EAAEA,EAAEhoB,EAAEgoB,GAAG,EAAE,IAAIC,EAAE,EAAEA,EAAEjoB,EAAE,EAAEioB,GAAG,EAAE1D,EAAE,OAAOyD,EAAEC,CAAC,GAAG,CAAC1D,EAAE,OAAOyD,EAAEC,EAAE,CAAC,GAAG1D,EAAE,OAAOyD,EAAEC,EAAE,CAAC,GAAG1D,EAAE,OAAOyD,EAAEC,EAAE,CAAC,GAAG1D,EAAE,OAAOyD,EAAEC,EAAE,CAAC,GAAG,CAAC1D,EAAE,OAAOyD,EAAEC,EAAE,CAAC,GAAG1D,EAAE,OAAOyD,EAAEC,EAAE,CAAC,IAAIF,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAEjoB,EAAEioB,GAAG,EAAE,IAAID,EAAE,EAAEA,EAAEhoB,EAAE,EAAEgoB,GAAG,EAAEzD,EAAE,OAAOyD,EAAEC,CAAC,GAAG,CAAC1D,EAAE,OAAOyD,EAAE,EAAEC,CAAC,GAAG1D,EAAE,OAAOyD,EAAE,EAAEC,CAAC,GAAG1D,EAAE,OAAOyD,EAAE,EAAEC,CAAC,GAAG1D,EAAE,OAAOyD,EAAE,EAAEC,CAAC,GAAG,CAAC1D,EAAE,OAAOyD,EAAE,EAAEC,CAAC,GAAG1D,EAAE,OAAOyD,EAAE,EAAEC,CAAC,IAAIF,GAAG,IAAI,IAAI5d,EAAE,EAAE,IAAI8d,EAAE,EAAEA,EAAEjoB,EAAEioB,GAAG,EAAE,IAAID,EAAE,EAAEA,EAAEhoB,EAAEgoB,GAAG,EAAEzD,EAAE,OAAOyD,EAAEC,CAAC,IAAI9d,GAAG,GAAG,OAAO4d,EAAE,KAAK,IAAI,IAAI5d,EAAEnK,EAAEA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAEioB,GAAG7Y,EAAE,UAAU,CAAC,QAAQmV,EAAE,IAAI,MAAM,GAAG,EAAEvkB,EAAE,IAAI,MAAM,GAAG,EAAE+nB,EAAE,EAAEA,EAAE,EAAEA,GAAG,EAAExD,EAAEwD,CAAC,EAAE,GAAGA,EAAE,IAAIA,EAAE,EAAEA,EAAE,IAAIA,GAAG,EAAExD,EAAEwD,CAAC,EAAExD,EAAEwD,EAAE,CAAC,EAAExD,EAAEwD,EAAE,CAAC,EAAExD,EAAEwD,EAAE,CAAC,EAAExD,EAAEwD,EAAE,CAAC,EAAE,IAAIA,EAAE,EAAEA,EAAE,IAAIA,GAAG,EAAE/nB,EAAEukB,EAAEwD,CAAC,CAAC,EAAEA,EAAE,MAAM,CAAC,KAAK,SAASxD,EAAE,CAAC,GAAGA,EAAE,EAAE,KAAK,QAAQA,EAAE,IAAI,OAAOvkB,EAAEukB,CAAC,CAAC,EAAE,KAAK,SAASvkB,EAAE,CAAC,KAAKA,EAAE,GAAGA,GAAG,IAAI,KAAKA,GAAG,KAAKA,GAAG,IAAI,OAAOukB,EAAEvkB,CAAC,CAAC,CAAC,CAAC,EAAG,EAAC,SAASyoB,EAAElE,EAAEvkB,EAAE,CAAC,GAAYukB,EAAE,SAAX,OAAkB,MAAMA,EAAE,OAAO,IAAIvkB,EAAE,IAAI+nB,EAAE,UAAU,CAAC,QAAQA,EAAE,EAAEA,EAAExD,EAAE,QAAWA,EAAEwD,CAAC,GAAN,GAASA,GAAG,EAAE,QAAQC,GAAE,IAAI,MAAMzD,EAAE,OAAOwD,EAAE/nB,CAAC,EAAEioB,GAAE,EAAEA,GAAE1D,EAAE,OAAOwD,EAAEE,IAAG,EAAED,GAAEC,EAAC,EAAE1D,EAAE0D,GAAEF,CAAC,EAAE,OAAOC,EAAC,IAAIA,EAAE,CAAC,MAAM,SAASzD,EAAE,CAAC,OAAOwD,EAAExD,CAAC,CAAC,EAAE,UAAU,UAAU,CAAC,OAAOwD,EAAE,MAAM,EAAE,SAAS,SAASxD,EAAE,CAAC,QAAQvkB,GAAE,IAAI,MAAMgoB,EAAE,UAAW,EAACzD,EAAE,YAAY,CAAC,EAAEwD,GAAE,EAAEA,GAAEC,EAAE,UAAS,EAAGD,IAAG,EAAE,QAAQE,GAAE,EAAEA,GAAE1D,EAAE,UAAW,EAAC0D,IAAG,EAAEjoB,GAAE+nB,GAAEE,EAAC,GAAG7Y,EAAE,KAAKA,EAAE,KAAK4Y,EAAE,MAAMD,EAAC,CAAC,EAAE3Y,EAAE,KAAKmV,EAAE,MAAM0D,EAAC,CAAC,CAAC,EAAE,OAAOQ,EAAEzoB,GAAE,CAAC,CAAC,EAAE,IAAI,SAASukB,EAAE,CAAC,GAAGyD,EAAE,UAAW,EAACzD,EAAE,YAAY,EAAE,OAAOyD,EAAE,QAAQhoB,GAAEoP,EAAE,KAAK4Y,EAAE,MAAM,CAAC,CAAC,EAAE5Y,EAAE,KAAKmV,EAAE,MAAM,CAAC,CAAC,EAAEwD,GAAE,IAAI,MAAMC,EAAE,UAAW,GAAEC,GAAE,EAAEA,GAAED,EAAE,UAAW,EAACC,IAAG,EAAEF,GAAEE,EAAC,EAAED,EAAE,MAAMC,EAAC,EAAE,IAAIA,GAAE,EAAEA,GAAE1D,EAAE,UAAW,EAAC0D,IAAG,EAAEF,GAAEE,EAAC,GAAG7Y,EAAE,KAAKA,EAAE,KAAKmV,EAAE,MAAM0D,EAAC,CAAC,EAAEjoB,EAAC,EAAE,OAAOyoB,EAAEV,GAAE,CAAC,EAAE,IAAIxD,CAAC,CAAC,CAAC,EAAE,OAAOyD,CAAC,CAAC,IAAI7d,EAAE,UAAU,CAAC,IAAIoa,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,GA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","names":["Albums","url","callback","response","data","albums","backButton","props","React","ServiceHeader","builderDispatch","PrismUI","BackButton","PropTypes","countErrors","UrlLoaderUploadMixin","GenericPaginatedUploadMixin","formData","file","service","responseCode","spinner","classNames","JPEGExif","fileBuffer","scanner","orientation","idx","maxBytes","uint16","THUMB_MAX_HEIGHT","Preview","divStyle","Spinner","component","reader","onReaderLoaded","event","image","onImageLoaded","onImageError","convertBase64ToArrayBuffer","string","binary","length","bytes","i","buffer","degrees","reflectVertical","reflectHorizontal","canChangeAspectRatio","canvas","hRatio","vRatio","ratio","centerShift_x","centerShift_y","ctx","caption","deleteButton","FileThumbnail","DeleteButton","LazyThumbnail","createReactClass","debouncedOnWindowScroll","genericHelpers","ReactDOM","threshold","bounds","scrollTop","top","height","visible","UrlThumbnail","__publicField","img","memo","key","imageCaption","width","actionButton","albumCoverThumbnail","Thumbnails","files","renderFile","thumbnailType","AlbumCoverThumbnail","loginSection","handleLogin","showLoginOverlay","Store","photoStorageMessage","message","notLoggedIn","LoginSection","PhotoStorageMessage","e","SelectAllSection","moreButton","streamPhotos","photo","MoreButton","MyAlbumsAndTimelines","noPhotosMessage","DEFAULT_COVER_HEIGHT","DEFAULT_SELECT_ALL_HEIGHT","MyPhotosImport","FileSelectorMixin","FileClearingMixin","App","payload","WebUI","$body","NotLoggedIn","total","stream","coversHeight","selectAllHeight","componentHeight","NoPhotosMessage","StreamPhotos","thumbnails","album","a","b","selectedAlbum","albumContent","pluralizer","timelines","timelinesByDate","photoDateTaken","localDateFormat","date","dest","page","perPage","params","UrlBuilder","destPage","error","view","hideMenu","f","photos","existingFileIds","acc","photosToAdd","p","sendToGoogleAnalytics","fileIds","that","onAlbumLoaded","prevShowAlertState","source","element","BeethovenFrieze","root_url","generateServiceUrl","sendMessage","image_selected_callbacks","on_complete_callbacks","services","tray_image_removed_callbacks","on_album_entry_callbacks","MessageHandler","messageHandlers","messageReceived","onCompleteMessage","onImageSelectedMessage","onTrayImageRemoved","onAlbumEntry","prefix","onRecieved","image_selected_callback","len","on_complete_callback","tray_image_removed_callback","on_album_entry_callback","messageHandler","single_image_select","generateUrl","param","value","results","iFrame","this","PrintSizeSelector","context","sizeKey","DefaultsEvents","additionalOptions","LoaderAdditionalOptions","size","selectedSize","sizeOptions","Select","themeName","CloudImport","thumb","filename","originalKey","foreignUserId","dataKey","iframeUrl","ref","actionName","list","type","quality","binStr","arr","UploadButton","uniqueId","uploadTargetRadioButton","monthNames","defaultNewAlbumTitle","now","AlbumSelector","albumList","heading","newAlbumTitle","UploadTargetRadioButton","albumId","CustomText","textKey","className","text","LocalFileImportNative","eventCategory","eventLabel","UploadAnalytics","AnalyticsHandler","$fileInput","filteredFiles","deferred","appendFile","ImageUploadFileValidator","root","factory","module","modules","installedModules","__webpack_require__","moduleId","exports","name","getter","mode","ns","object","property","__extends","extendStatics","d","__","INVALID_BYTE","Coder","_paddingCharacter","out","c","left","s","paddingLength","op","haveBad","v0","v1","v2","v3","result","stdCoder","encode","decode","URLSafeCoder","_super","urlSafeCoder","encodeURLSafe","decodeURLSafe","INVALID_UTF16","INVALID_UTF8","encodedLength","pos","chars","min","n1","n2","n3","__webpack_exports__","ScriptReceiverFactory","number","id","called","callbackWrapper","receiver","ScriptReceivers","Defaults","defaults","dependency_loader_DependencyLoader","options","self","request","runtime","callbacks","successCallback","wasSuccessful","cdn","protocol","DependenciesReceivers","Dependencies","urlStore","url_store","urlPrefix","urlObj","AuthRequestType","BadEventName","msg","BadChannelName","RequestTimedOut","TransportPriorityTooLow","TransportClosed","UnsupportedFeature","UnsupportedTransport","UnsupportedStrategy","HTTPAuthError","status","xhr_auth","query","authOptions","authRequestType","xhr","headerName","dynamicHeaders","parsed","suffix","btoa","utob","fromCharCode","b64chars","cb_utob","cc","u","cb_encode","ccc","padlen","ord","Timer","set","clear","delay","abstract_timer","timers_clearTimeout","timer","timers_clearInterval","timers_OneOffTimer","timers_PeriodicTimer","Util","args","boundArguments","util","extend","target","sources","extensions","stringify","m","safeJSONStringify","arrayIndexOf","array","item","nativeIndexOf","l","objectApply","keys","_","values","apply","map","mapObject","filter","test","filterObject","flatten","any","collections_all","encodeParamsObject","buildQueryString","decycleObject","objects","paths","derez","path","nu","logger_Logger","defaultLoggingFunction","core_pusher","logger","jsonp","callbackName","document","script","callback_name","head","jsonp_auth","ScriptRequest","src","errorString","jsonp_request_JSONPRequest","getAgent","sender","useTLS","scheme","jsonp_timeline_jsonp","jsonp_timeline","getGenericURL","baseScheme","host","getGenericPath","queryString","ws","http","sockjs","callback_registry_CallbackRegistry","prefixedEventName","names","binding","dispatcher_Dispatcher","failThrough","eventName","metadata","transport_connection_TransportConnection","hooks","priority","closeEvent","state","transport_Transport","environment","WSTransport","httpConfiguration","streamingConfiguration","pollingConfiguration","xhrConfiguration","XHRStreamingTransport","XHRPollingTransport","Transports","transports","SockJSTransport","socket","xdrConfiguration","yes","XDRStreamingTransport","XDRPollingTransport","transports_transports","net_info_NetInfo","net_info_Network","assistant_to_the_transport_manager_AssistantToTheTransportManager","manager","transport","connection","openTimestamp","onOpen","onClosed","lifespan","Protocol","messageEvent","messageData","pusherEventData","pusherEvent","protocol_protocol","connection_Connection","channel","listeners","unbindListeners","listener","action","handshake_Handshake","timeline_sender_TimelineSender","timeline","channel_Channel","pusher","socketId","private_channel_PrivateChannel","members_Members","member","subscriptionData","memberData","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","rejected","presence_channel_PresenceChannel","authData","channelData","addedMember","removedMember","utf8","base64","encrypted_channel_EncryptedChannel","nacl","sharedSecret","cipherText","nonce","raw","connection_manager_ConnectionManager","Network","handshake","errorCallbacks","withErrorEmitted","newState","previousState","newStateDescription","channels_Channels","createChannel","errMsg","Factory","transport_manager_TransportManager","sequential_strategy_SequentialStrategy","strategies","minPriority","current","timeout","runner","tryNextStrategy","strategy","best_connected_ever_strategy_BestConnectedEverStrategy","connect","runners","allRunnersFailed","callbackBuilder","rs","abortRunner","websocket_prioritized_cached_strategy_WebSocketPrioritizedCachedStrategy","usingTLS","info","fetchTransportCache","cacheSkipCount","startTimestamp","cb","flushTransportCache","storeTransportCache","getTransportCacheKey","storage","serializedCache","latency","delayed_strategy_DelayedStrategy","IfStrategy","trueBranch","falseBranch","branch","FirstConnectedStrategy","testSupportsStrategy","getDefaultStrategy","config","baseOptions","defineTransport","definedTransports","defineTransportStrategy","ws_options","wss_options","sockjs_options","timeouts","ws_manager","streaming_manager","ws_transport","wss_transport","sockjs_transport","xhr_streaming_transport","xdr_streaming_transport","xhr_polling_transport","xdr_polling_transport","ws_loop","wss_loop","sockjs_loop","streaming_loop","polling_loop","http_loop","http_fallback_loop","wsStrategy","default_strategy","transport_connection_initializer","http_xdomain_request_hooks","xdr","http_xdomain_request","MAX_BUFFER_LENGTH","http_request_HTTPRequest","method","chunk","unreadData","endOfLinePosition","State","autoIncrement","http_socket_HTTPSocket","randomNumber","randomString","getLocation","code","reason","getUniqueURL","getSendURL","wasClean","replaceHost","parts","session","separator","hostname","urlParts","max","http_socket","http_streaming_socket_hooks","http_streaming_socket","http_polling_socket_hooks","http_polling_socket","http_xhr_request_hooks","Constructor","http_xhr_request","HTTP","http_http","web_http_http","Runtime","PusherClass","initializeOnDocumentBody","documentProtocol","TimelineLevel","timeline_level","timeline_Timeline","level","sendfn","transport_strategy_TransportStrategy","failAttempt","connected","onInitialized","onError","serializedTransport","strategy_builder_Transports","strategy_builder_defineTransport","transportClass","enabled","strategy_builder_UnsupportedStrategy","validateOptions","composeChannelQuery","dynamicParams","user_authenticator","channel_authorizer_composeChannelQuery","channel_authorizer","ChannelAuthorizerProxy","channelAuthorizerGenerator","deprecatedAuthorizerOptions","getConfig","opts","getEnableStatsConfig","getHttpHost","shouldUseTLS","getWebsocketHost","buildUserAuthenticator","buildChannelAuthorizer","getWebsocketHostFromCluster","cluster","userAuthentication","buildChannelAuth","channelAuthorization","watchlist_WatchlistFacade","watchlistEvent","flatPromise","res","rej","flat_promise","user_UserFacade","err","previous","ensure_subscribed","promise","setDone","pusher_Pusher","t","app_key","checkAppKey","getStrategy","internal","timelineSender","event_name","channelName","channel_name","ConnectionState","usePusherChannel","channelAuthUrl","pusherChannelRef","useRef","connectionStatus","setConnectionStatus","useState","prevConnectionStatusRef","setError","onStatusChangeSubscribers","addOnStatusChangeSubscriber","useCallback","fn","handleError","pusherError","useEffect","Pusher","generalError","subscriptionError","StatusBox","children","PusherConnectionStatus","errorMessage","statusClassName","isMinimumClientsConnected","connectedClientCount","minimumClients","MinimumConnectedClientsNotification","notificationMessage","onConnectedClientCountChange","setConnectedClientCount","pusherNotReady","PusherConnection","eventHandlers","minimumClientsMessage","eventNames","sizeInPixels","marginInPixels","backgroundColour","foregroundColour","QRCodeStylingOptions","uploadUrl","imageUrl","dotOptionsHelper","dotsOptions","dotOptions","r","n","o","v","w","x","M","S","A","C","h","g","y","k","q","O","D","z","B","I","E","L","R","N","placeholderImage","QrCode","QRCodeStyling","blobReader","convertPNGToDataURL","blob","setImgSrcToDataURL","raiseError","QrCodeUploading","fileCount","handleUploadingQrCodeButton","UploadFailureMessage","failedUploadCount","pluralize","buildMobileUploadURL","qrLinkedMobileUploader","prismItem","usePrismItemStore","uploaderConfigPath","fetchDesktopUploaderConfig","MyMobileImport","images","numberOfFiles","screenAndStyle","updatedChannelConfig","prevState","nextState","loaderServiceWasDisplayed","channelConfig","imageUploading","mobileUploaderUrl","loading","MobileImportWrapper","isActive","definition","obj","prop","AbortException","AnnotationEditorLayer","AnnotationEditorParamsType","AnnotationEditorType","AnnotationEditorUIManager","AnnotationLayer","AnnotationMode","AnnotationType","ColorPicker","DOMSVGFactory","DrawLayer","util_FeatureTest","GlobalWorkerOptions","util_ImageKind","InvalidPDFException","MathClamp","OPS","OutputScale","PDFDataRangeTransport","PDFDateString","PDFWorker","PasswordResponses","PermissionFlag","PixelsPerInch","RenderingCancelledException","ResponseException","SignatureExtractor","SupportedImageMimeTypes","TextLayer","TouchManager","VerbosityLevel","XfaLayer","build","createValidAbsoluteUrl","fetchData","getDocument","getFilenameFromUrl","getPdfFilenameFromUrl","getUuid","getXfaPageViewport","isDataScheme","isPdfFile","isValidExplicitDest","noContextMenu","normalizeUnicode","setLayerDimensions","shadow","stopEvent","version","isNodeJS","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","LINE_FACTOR","RenderingIntentFlag","AnnotationEditorPrefix","TextRenderingMode","AnnotationBorderStyleType","verbosity","setVerbosityLevel","getVerbosityLevel","warn","unreachable","assert","cond","_isValidProtocol","baseUrl","dots","stringToUTF8String","absoluteUrl","nonSerializable","BaseException","PasswordException","UnknownErrorException","details","missing","FormatError","bytesToString","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","stringToBytes","str","string32","objectFromMap","isLittleEndian","buffer8","isEvalSupported","platform","userAgent","_b","_a","hexNumbers","transform","minMax","temp","m1","m2","xt","yt","p1","p2","p3","p4","transpose","first","second","sx","sy","rect","rect1","rect2","xLow","xHigh","yLow","yHigh","x0","y0","x1","y1","x2","y2","x3","y3","__privateMethod","_getExtremum","getExtremum_fn","_getExtremumOnCurve","getExtremumOnCurve_fn","mt","tt","ttt","delta","sqrtDelta","a2","__privateAdd","NormalizeRegex","NormalizationMap","buf","AnnotationPrefix","_isValidExplicitDest","validRef","validName","zoom","argsLen","allowNull","arg","toBase64Util","fromBase64Util","SVG_NS","_PixelsPerInch","isValidFetchUrl","PageViewport","viewBox","userUnit","scale","rotation","offsetX","offsetY","dontFlip","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","dims","topLeft","bottomRight","extraDelay","ii","defaultFilename","reURI","reFilename","splitURI","suggestedFilename","StatTimer","outBuf","longest","start","end","input","__privateGet","_regex","__privateSet","matches","year","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","xfaPage","getRGB","color","colorRGB","getColorValues","colors","span","computedColor","getCurrentTransform","getCurrentTransformInverse","div","viewport","mustFlip","mustRotate","pageWidth","pageHeight","style","useRound","widthStr","heightStr","pixelRatio","maxPixels","maxDim","maxAreaScale","maxWidthScale","maxHeightScale","maxScale","_EditorToolbar","editor","_focusIn","_focusOut","_addListenersToElement","_addDeleteButton","_divider","_toolbar","_colorPicker","_editor","_buttons","_altText","_signatureDescriptionButton","_l10nRemove","editToolbar","signal","_pointerDown","pointerDown_fn","buttons","position","addDeleteButton_fn","altText","button","addListenersToElement_fn","divider_get","colorPicker","signatureManager","description","focusIn_fn","focusOut_fn","editorType","_uiManager","divider","EditorToolbar","HighlightToolbar","uiManager","_render","_getLastPoint","_addHighlightButton","parent","boxes","isLTR","getLastPoint_fn","render_fn","addHighlightButton_fn","lastY","lastX","box","bindEvents","IdManager","_id","__privateWrapper","_ImageManager","_get","_baseId","_cache","svg","lastModified","get_fn","blobPromise","offscreen","bitmap","rawData","mustRemoveAspectRatioPromise","fileReader","imageElement","imagePromise","ImageManager","CommandManager","maxSize","_commands","_locked","_maxSize","_position","cmd","undo","post","mustExec","overwriteIfSameType","keepUndo","save","next","KeyboardManager","_serialize","isMac","isMacKey","serialize_fn","bubbles","checker","_ColorManager","rgb","RGB","ColorManager","_AnnotationEditorUIManager","container","viewer","altTextManager","eventBus","pdfDocument","pageColors","highlightColors","enableHighlightFloatingButton","enableUpdatedAddImage","enableNewAltTextWhenAddingImage","mlManager","editorUndoBar","supportsPinchToZoom","_getAnchorElementForSelection","_getLayerForTextLayer","_displayHighlightToolbar","_selectionChange","_onSelectEnd","_addSelectionListener","_addFocusManager","_removeFocusManager","_addKeyboardManager","_removeKeyboardManager","_addCopyPasteListeners","_removeCopyPasteListeners","_addDragAndDropListeners","_dispatchUpdateStates","_dispatchUpdateUI","_enableAll","_disableAll","_addEditorToLayer","_lastSelectedEditor","_isEmpty","_selectEditors","_abortController","_activeEditor","_allEditors","_allLayers","_altTextManager","_annotationStorage","_changedExistingAnnotations","_commandManager","_copyPasteAC","_currentDrawingSession","_currentPageIndex","_deletedAnnotationsElementIds","_draggingEditors","_editorTypes","_editorsToRescale","_enableHighlightFloatingButton","_enableUpdatedAddImage","_enableNewAltTextWhenAddingImage","_filterFactory","_focusMainContainerTimeoutId","_focusManagerAC","_highlightColors","_highlightWhenShiftUp","_highlightToolbar","_idManager","_isEnabled","_isWaiting","_keyboardManagerAC","_lastActiveElement","_mainHighlightColorPicker","_missingCanvases","_mlManager","_mode","_selectedEditors","_selectedTextNode","_signatureManager","_pageColors","_showAllStates","_previousStates","_translation","_translationTimeoutId","_container","_viewer","_updateModeCapability","evt","addSelectionListener_fn","addDragAndDropListeners_fn","addKeyboardManager_fn","proto","arrowChecker","textInputChecker","_self","el","small","big","layer","_c","_d","_e","_f","_g","_h","ac","pair","firstTime","pageNumber","layerX","layerY","pagesRotation","methodOfCreation","selection","anchorNode","anchorOffset","focusNode","focusOffset","textLayer","getAnchorElementForSelection_fn","getLayerForTextLayer_fn","isNoneMode","onSelectEnd_fn","activeElement","lastEditor","lastActiveElement","addCopyPasteListeners_fn","removeKeyboardManager_fn","removeCopyPasteListeners_fn","editors","serialized","clipboardData","ex","newEditors","deserializedEditor","addEditorToLayer_fn","selectEditors_fn","isEditing","addFocusManager_fn","dispatchUpdateStates_fn","isEmpty_fn","removeFocusManager_fn","types","dispatchUpdateUI_fn","pageIndex","editId","isFromKeyboard","disableAll_fn","enableAll_fn","updateButton","mustWait","annotationElementId","lastSelectedEditor_get","ed","drawingEditor","noCommit","totalX","totalY","TIME_TO_WAIT","mustBeAddedInUndoStack","move","newX","newY","newPageIndex","savedX","savedY","savedPageIndex","tx","ty","parentWidth","parentHeight","rotator","range","annotation","editorId","annotationId","currentLayer","displayHighlightToolbar_fn","selectionChange_fn","activeLayer","pointerup","promises","_AltText","_label","_setState","_altTextDecorative","_altTextButton","_altTextButtonLabel","_altTextTooltip","_altTextTooltipTimeout","_altTextWasFromKeyBoard","_badge","_guessedText","_textWithDisclaimer","_useNewAltTextFlow","_l10nNewButton","l10n","label","onClick","label_get","setState_fn","guessedText","visibility","badge","isForCopying","decorative","textWithDisclaimer","cancel","tooltip","DELAY_TO_SHOW_TOOLTIP","AltText","_TouchManager","isPinchingDisabled","isPinchingStopped","onPinchStart","onPinching","onPinchEnd","_onTouchStart","_onTouchMove","_onTouchEnd","_isPinching","_isPinchingStopped","_isPinchingDisabled","_onPinchStart","_onPinching","_onPinchEnd","_pointerDownAC","_signal","_touchInfo","_touchManagerAC","_touchMoveAC","onTouchStart_fn","pointerDownAC","cancelPointerDown","opt","onTouchMove_fn","onTouchEnd","onTouchEnd_fn","touch0","touch1","screen0X","screen0Y","screen1X","screen1Y","touchInfo","pTouch0X","pTouch0Y","pTouch1X","pTouch1Y","prevGapX","prevGapY","currGapX","currGapY","distance","pDistance","origin","_AnnotationEditor","parameters","_translate","_getRotationMatrix","_createResizers","_resizerPointerdown","_resize","_addResizeToUndoStack","_resizerPointermove","_touchPinchStartCallback","_touchPinchCallback","_touchPinchEndCallback","_selectOnPointerEvent","_setUpDragSession","_addFocusListeners","_resizerKeydown","_resizerBlur","_resizerFocus","_setResizerTabIndex","_stopResizing","_accessibilityData","_allResizerDivs","_disabled","_dragPointerId","_dragPointerType","_keepAspectRatio","_resizersDiv","_lastPointerCoords","_savedDimensions","_focusAC","_focusedResizerName","_hasBeenClicked","_initialRect","_isEditing","_isInEditMode","_isResizerEnabledForKeyboard","_moveInDOMTimeout","_prevDragX","_prevDragY","_telemetryTimeouts","_touchManager","_isDraggable","_zIndex","pageX","pageY","resize","fakeEditor","FakeEditor","_type","_value","mime","stopResizing_fn","baseX","baseY","translate_fn","bx","by","_borderLineWidth","_rotatePoint","rotatePoint_fn","parentScale","widthPercent","heightPercent","editToolbarDiv","addFocusListeners_fn","touchPinchStartCallback_fn","touchPinchCallback_fn","touchPinchEndCallback_fn","setUpDragSession_fn","selectOnPointerEvent_fn","shiftX","shiftY","focus","bottom","right","innerHeight","innerWidth","_angle","createResizers_fn","boundResizerKeydown","resizerKeydown_fn","boundResizerBlur","resizerBlur_fn","resizerFocus_fn","firstPosition","nextFirstPosition","child","setResizerTabIndex_fn","resizerPointermove_fn","aspectRatio","content","firstChild","angle","getRotationMatrix_fn","classes","resizerPointerdown_fn","savedDraggable","savedParentCursor","savedCursor","pointerUpCallback","addResizeToUndoStack_fn","resize_fn","savedWidth","savedHeight","newWidth","newHeight","minWidth","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","screenX","screenY","lastScreenX","lastScreenY","oldDiag","_origin","prevDistance","factor","transfCenterPoint","newTransfCenterPoint","isSelected","hasDraggingStarted","cancelDrag","pointerId","AnnotationEditor","SEED","MASK_HIGH","MASK_LOW","MurmurHash3_64","seed","blockCounts","tailLength","dataUint32","k1","k2","h1","h2","C1","C2","C1_LOW","C2_LOW","SerializableEmpty","AnnotationStorage","_setModified","_modified","_modifiedIds","_storage","defaultValue","modified","entry","val","setModified_fn","PrintAnnotationStorage","hash","transfer","hasBitmap","stats","typeToEditor","editorStats","counters","count","ids","_serializable","clone","FontLoader","ownerDocument","styleElement","_systemFonts","nativeFontFace","rule","styleSheet","disableFontFace","_inspectFont","loadedName","fontFace","font","hasFonts","completeRequest","loadingRequests","otherRequest","testFont","int32","offset","spliceString","remove","insert","chunk1","chunk2","isFontReady","loadTestFontId","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","FontFaceObject","translatedData","inspectFont","css","objs","character","objId","cmds","CallbackKind","StreamKind","onFn","wrapReason","sourceName","targetName","comObj","_onMessage","_createStreamSink","_processStreamMessage","_deleteStreamController","_messageAC","onMessage_fn","handler","ah","transfers","callbackId","capability","queueingStrategy","streamId","controller","startCapability","pullCapability","cancelCapability","processStreamMessage_fn","createStreamSink_fn","streamSink","lastDesiredSize","streamController","deleteStreamController_fn","dataReason","BaseCanvasFactory","enableHWA","_enableHWA","canvasAndContext","DOMCanvasFactory","BaseCMapReaderFactory","isCompressed","cMapData","DOMCMapReaderFactory","BaseFilterFactory","maps","fgColor","bgColor","filterName","newFgColor","newBgColor","keepHCM","DOMFilterFactory","docId","_hcmCache","_defs","_createTables","_createUrl","_addLuminosityConversion","_addGrayConversion","_createFilter","_appendFeFunc","_addTransferMapConversion","_addTransferMapAlphaConversion","_getRGB","_baseUrl","__cache","__defs","_docId","_document","__hcmCache","cache_get","tableR","tableG","tableB","createTables_fn","createUrl_fn","createFilter_fn","addTransferMapConversion_fn","hcmCache_get","fgRGB","getRGB_fn","bgRGB","defs_get","table","addGrayConversion_fn","getSteps","tableA","addTransferMapAlphaConversion_fn","addLuminosityConversion_fn","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","j","mapR","mapG","mapB","bufferR","bufferG","bufferB","feColorMatrix","appendFeFunc_fn","feComponentTransfer","func","feFunc","rTable","gTable","bTable","aTable","BaseStandardFontDataFactory","DOMStandardFontDataFactory","BaseWasmFactory","DOMWasmFactory","node_utils_fetchData","NodeFilterFactory","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","NodeWasmFactory","PathType","applyBoundingBox","bbox","region","BaseShadingPattern","RadialAxialShadingPattern","IR","grad","colorStop","owner","inverse","pathType","pattern","ownerBBox","tmpCanvas","tmpCtx","domMatrix","drawTriangle","c1","c2","c3","coords","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","MeshShadingPattern","combinedScale","backgroundColor","cachedCanvases","boundsWidth","boundsHeight","scaleX","scaleY","paddedWidth","paddedHeight","matrixScale","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","_TilingPattern","canvasGraphicsFactory","baseTransform","operatorList","paintType","tilingType","xstep","ystep","curMatrixScale","combinedScaleX","combinedScaleY","canvasWidth","canvasHeight","redrawHorizontally","redrawVertically","xScaledStep","yScaledStep","xScaledWidth","yScaledHeight","dimx","dimy","graphics","dimx2","dimy2","xSize","ySize","tmpCanvas2","tmpCtx2","jj","realOutputSize","bboxWidth","bboxHeight","cssColor","matrix","TilingPattern","convertBlackAndWhiteToRGBA","srcPos","nonBlackColor","inverseDecode","black","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","destPos","elem","MIN_FONT_SIZE","MAX_FONT_SIZE","EXECUTION_TIME","EXECUTION_STEPS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","mirrorContextOperations","destCtx","cp1x","cp1y","cp2x","cp2y","CachedCanvases","canvasFactory","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","points","j0","lineSize","mask","sum","steps","p0","pp","CanvasExtraState","xStrokePad","yStrokePad","intersect","putBinaryImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","srcByte","putBinaryImageMask","copyCtxState","sourceCtx","properties","resetCtxToDefault","getImageSmoothingEnabled","interpolate","actualScale","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","_CanvasGraphics","canvasCtx","commonObjs","filterFactory","optionalContentConfig","markedContentStack","annotationCanvasMap","_restoreInitialState","_drawFilter","_getScaledPath","fallback","transparency","background","savedFillStyle","transparentCanvas","executionStartIdx","continueCallback","stepper","argsArray","fnArray","argsArrayLen","chunkOperations","endTime","fnId","depObjId","objsPool","restoreInitialState_fn","cache","drawFilter_fn","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","fillColor","isPatternFill","currentTransform","cacheKey","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","minX","maxX","drawnWidth","drawnHeight","fillCanvas","fillCtx","limit","dashArray","dashPhase","intent","flatness","states","inSMaskMode","cacheId","scratchCanvas","dirtyBox","smask","suspendedCtx","layerCtx","layerBox","layerOffsetX","layerOffsetY","layerWidth","layerHeight","maskCtx","subtype","backdrop","transferMap","maskOffsetX","maskOffsetY","maskX","maskY","backdropRGB","clip","old","ops","startX","startY","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","strokeColor","needRestore","newPath","fontSize","spacing","leading","fontRefName","fontObj","typeface","bold","italic","browserFontSize","rise","patternFillTransform","patternStrokeTransform","textRenderingMode","fillStrokeMode","isAddToPathSet","patternFill","patternStroke","getScaledPath_fn","invPatternTransform","glyphs","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","lineWidth","glyph","restoreNeeded","accent","scaledX","scaledY","vmetric","vx","vy","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","fontMatrix","isTextInvisible","spacingLength","xWidth","yWidth","llx","lly","urx","ury","inv","group","currentCtx","canvasBounds","groupCtx","currentMtx","hasOwnCanvas","viewportScale","skewX","skewY","positions","trans","imgToPaint","tag","clipBox","isEmpty","absDet","normX","normY","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","hcmFilterId","savedFilter","CanvasGraphics","_port","_src","Metadata","parsedData","_metadataMap","_data","INTERNAL","OptionalContentGroup","renderingIntent","usage","rbGroups","_isDisplay","_isPrint","_userSet","_visible","print","userSet","OptionalContentConfig","_evaluateVisibilityExpression","_cachedGetHash","_groups","_initialHash","_order","on","off","evaluateVisibilityExpression_fn","preserveRB","rbGroup","otherId","operator","PDFDataTransportStream","pdfDataRangeTransport","disableRange","disableStream","initialData","progressiveDone","contentDispositionFilename","begin","loaded","found","rangeReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","requestCapability","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","contentDispositionStr","match","iter","quot","part","quotindex","extvalue","encodingend","charset","hex","createHeaders","isHttp","httpHeaders","headers","getResponseOrigin","validateRangeRequestCapabilities","responseHeaders","rangeChunkSize","returnValues","extractFilenameFromHeader","createResponseError","validateResponseStatus","createFetchOptions","withCredentials","abortController","getArrayBuffer","PDFFetchStream","PDFFetchStreamReader","PDFFetchStreamRangeReader","allowRangeRequests","suggestedLength","done","responseOrigin","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","network_getArrayBuffer","NetworkManager","xhrId","pendingRequest","xhrStatus","rangeHeader","PDFNetworkStream","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","fullRequestXhrId","fullRequestXhr","rawResponseHeaders","urlRegex","parseUrlOrPath","sourceUrl","PDFNodeStream","PDFNodeStreamFsFullReader","PDFNodeStreamFsRangeReader","fs","stat","readableStream","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","_TextLayer","textContentSource","_processItems","_appendText","_layout","_capability","_disableProcessItems","_fontInspectorEnabled","_lang","_layoutTextParams","_pageHeight","_pageWidth","_reader","_rootContainer","_rotation","_scale","_styleCache","_textContentItemsStr","_textContentSource","_textDivs","_textDivProperties","_transform","_ensureMinFontSizeComputed","ensureMinFontSizeComputed_fn","_pendingTextLayers","isWindows","isFirefox","pump","processItems_fn","onBefore","_getCtx","getCtx_fn","layout_fn","abortEx","_ascentCache","_canvasContexts","_canvasCtxFonts","_minFontSize","items","textDivs","textContentItemsStr","appendText_fn","geom","textDiv","textDivProperties","fontFamily","fontHeight","fontAscent","_getAscent","getAscent_fn","scaleFactorStr","shouldScaleText","absScaleX","absScaleY","br","_ensureCtxFont","ensureCtxFont_fn","lang","family","cached","cachedAscent","metrics","ascent","descent","XfaText","xfa","output","walk","node","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","task","PDFDocumentLoadingTask","getUrlProp","getDataProp","password","rangeTransport","worker","docBaseUrl","cMapUrl","getFactoryUrlProp","cMapPacked","CMapReaderFactory","iccUrl","standardFontDataUrl","StandardFontDataFactory","wasmUrl","WasmFactory","ignoreErrors","maxImageSize","isOffscreenCanvasSupported","isImageDecoderSupported","canvasMaxAreaInBytes","fontExtraProperties","enableXfa","disableAutoFetch","pdfBug","CanvasFactory","FilterFactory","useWasm","useSystemFonts","useWorkerFetch","transportFactory","workerParams","docParams","transportParams","workerIdPromise","networkStream","NetworkStream","workerId","WorkerTransport","isRefProxy","isNameProxy","_PDFDocumentLoadingTask","PDFDocumentProxy","pdfInfo","keepLoadedFonts","PDFPageProxy","pageInfo","_tryCleanup","_pendingCleanup","PDFObjects","canvasContext","annotationMode","optionalContentConfigPromise","printAnnotationStorage","intentArgs","intentState","intentPrint","complete","internalRenderTask","tryCleanup_fn","InternalRenderTask","renderTask","operatorListChanged","opListTask","includeMarkedContent","disableNormalization","textContent","waitOn","resetStats","success","operatorListChunk","annotationStorageSerializable","modifiedIds","force","curCacheKey","curIntentState","renderTasks","LoopbackPort","_listeners","_deferred","rmAbort","onAbort","_PDFWorker","port","_resolve","_workerPorts","resolve_fn","_isWorkerDisabled","_mainThreadWorkerMessageHandler","mainThreadWorkerMessageHandler_get","workerSrc","terminateEarly","sendTest","testObj","WorkerMessageHandler","_fakeWorkerId","workerHandler","cachedPort","__vitePreload","otherUrl","base","other","wrapper","loadingTask","_cacheSimpleMethod","_methodPromises","_pageCache","_pagePromises","_pageRefCache","_passwordCapability","isOpList","annotationStorage","modifiedIdsHash","cacheKeyBuf","terminated","sink","readyReason","isStreamingSupported","isRangeSupported","contentLength","updatePassword","exportedData","exportedError","imageRef","pageProxy","imageData","cachedPromise","cacheSimpleMethod_fn","refStr","INITIAL_DATA","_ensureObj","_objs","ensureObj_fn","RenderTask","_internalRenderTask","separateAnnots","_InternalRenderTask","useRequestAnimationFrame","_rAF","_canvasInUse","makeColorComp","scaleAndClamp","ColorConverters","G","components","BaseSVGFactory","skipDimensions","html","storedData","option","linkService","attributes","isHTMLAnchorElement","rootHtml","isNotForRichText","rootDiv","stack","childHtml","DEFAULT_TAB_INDEX","annotation_layer_DEFAULT_FONT_SIZE","GetElementsByNameSet","AnnotationElementFactory","LinkAnnotationElement","TextAnnotationElement","TextWidgetAnnotationElement","RadioButtonWidgetAnnotationElement","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","_AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","_setRectEdited","_updates","_hasBorder","_popupElement","titleObj","contentsObj","richText","setRectEdited_fn","horizontalRadius","verticalRadius","radius","borderColor","setColor","jsName","styleName","colorType","colorArray","display","hidden","actions","jsEvent","commonActions","detail","eventProxy","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","trX","trY","blX","blY","svgBuffer","borderWidth","svgFactory","defs","clipPath","rectWidth","rectHeight","popup","skipId","fields","fieldObj","exportValues","exportValue","domElement","triggers","currentRect","_setInternalLink","_bindAttachment","_bindSetOCGState","link","isBound","bindAttachment_fn","bindSetOCGState_fn","destination","setInternalLink_fn","resetForm","otherClickAction","resetFormFields","resetFormRefs","include","allFields","fieldIds","fieldName","field","allIds","attachment","elementData","baseName","valueGetter","TEXT_ALIGNMENT","fontColor","computedFontSize","BORDER_SIZE","roundToOneDecimal","numberOfLines","lineHeight","isRequired","keyInStorage","maxLen","fieldFormattedValues","blurListener","formattedValue","charLimit","commitKey","_blurListener","selectionStart","selectionEnd","selStart","selEnd","combWidth","checked","checkbox","curChecked","radio","pdfButtonValue","linkElement","selectElement","addAnEmptyEntry","optionElement","removeEmptyEntry","noneOptionElement","getValue","isExport","multiple","selectedValues","getItems","index","displayValue","selectChild","indices","change","elements","PopupElement","elementIds","modificationDate","parentRect","open","_html","_fontSize","_fontColor","_makePopupContent","_keyDown","_setPosition","_toggle","_show","_hide","_boundKeyDown","keyDown_fn","_boundHide","hide_fn","_boundShow","show_fn","_boundToggle","toggle_fn","_color","_contentsObj","_dateObj","_elements","_parent","_parentRect","_pinned","_popup","_rect","_richText","_titleObj","_wasVisible","baseColor","header","title","html_get","contents","dir","lines","line","popupContent","makePopupContent_fn","fontSize_get","fontColor_get","popupLines","lineAttributes","setPosition_fn","useParentRect","normalizedRect","HORIZONTAL_SPACE_AFTER_ANNOTATION","popupLeft","popupTop","lineSpan","_line","_square","square","_circle","circle","_polyline","vertices","borderStyle","popupRef","polyline","_getTransform","_polylinesGroupElement","_polylines","inkLists","getTransform_fn","thickness","_download","_trigger","trigger","download_fn","_AnnotationLayer","accessibilityManager","annotationEditorUIManager","structTreeLayer","_appendElement","_setAnnotationCanvasMap","_accessibilityManager","_annotationCanvasMap","_editableAnnotations","_structTreeLayer","annotations","popupToElements","elementParams","isPopupAnnotation","rendered","appendElement_fn","setAnnotationCanvasMap_fn","contentElement","ariaAttributes","editableAnnotation","EOL_PATTERN","_FreeTextEditor","_updateFontSize","_updateColor","_extractText","_setEditorDimensions","_setContent","_serializeContent","_hasElementChanged","_content","_editorDivId","_editModeAC","updateFontSize_fn","updateColor_fn","savedText","newText","extractText_fn","setText","setContent_fn","setEditorDimensions_fn","posX","posY","paste","_deserializeContent","deserializeContent_fn","startContainer","startOffset","bufferBefore","bufferAfter","_getNodeContent","getNodeContent_fn","newRange","beforeLength","textPosition","padding","serializeContent_fn","hasElementChanged_fn","setFontsize","savedFontsize","col","savedColor","prevChild","savedDisplay","savedVisibility","FreeTextEditor","Outline","_bbox","_FreeDrawOutliner","scaleFactor","innerMargin","_getLastCoords","_toSVGPathTwoPoints","_toSVGPathStart","_toSVGPathEnd","_getOutlineTwoPoints","_getOutlineStart","_getOutlineEnd","_box","_bottom","_innerMargin","_isLTR","_top","_last","_lastX","_lastY","_min","_min_dist","_scaleFactor","_thickness","_points","_MIN_DIST","_MIN","diffX","diffY","diffD","K","nX","nY","thX","thY","toSVGPathTwoPoints_fn","toSVGPathEnd_fn","toSVGPathStart_fn","outline","FreeDrawOutline","last","getOutlineTwoPoints_fn","getOutlineEnd_fn","getOutlineStart_fn","_MIN_DIFF","getLastCoords_fn","lastTop","lastBottom","lastTopX","lastTopY","lastBottomX","lastBottomY","FreeDrawOutliner","_computeMinMax","_outline","computeMinMax_fn","outliner","lastPointX","lastPointY","ltrCallback","HighlightOutliner","_getOutlines","_binarySearch","_insert","_remove","_breakEdge","_lastPoint","_verticalEdges","_intervals","EPSILON","shiftedMinX","shiftedMinY","lastEdge","lastPoint","edge","outlineVerticalEdges","breakEdge_fn","insert_fn","remove_fn","getOutlines_fn","edges","allEdges","edge1","edge2","outlines","HighlightOutline","binarySearch_fn","middle","y4","_outlines","polygon","prevX","prevY","FreeHighlightOutliner","FreeHighlightOutline","_ColorPicker","_getDropdownRoot","_colorSelect","_openDropdown","_isDropdownVisible","_button","_buttonSwatch","_defaultColor","_dropdown","_dropdownWasFromKeyboard","_isMainColorPicker","_eventBus","_openDropdownAC","_l10nColor","openDropdown_fn","swatch","dropdown","getDropdownRoot_fn","colorSelect_fn","isDropdownVisible_get","_HighlightEditor","_createOutlines","_createFreeOutlines","_updateThickness","_changeThickness","_cleanDrawLayer","_addToDrawLayer","_keydown","_setCaret","_getRotation","_serializeBoxes","_serializeOutlines","_anchorNode","_anchorOffset","_boxes","_clipPathId","_focusOutlines","_focusNode","_focusOffset","_highlightDiv","_highlightOutlines","_isFreeHighlight","_opacity","_outlineId","_text","_methodOfCreation","createFreeOutlines_fn","addToDrawLayer_fn","createOutlines_fn","updateThickness_fn","toolbar","getRotation_fn","cleanDrawLayer_fn","mustBeSelected","drawLayer","_rotateBbox","rotateBbox_fn","keydown_fn","highlightDiv","direction","setCaret_fn","_endHighlight","endHighlight_fn","_highlightMove","highlightMove_fn","opacity","clipPathId","serializeBoxes_fn","serializeOutlines_fn","outlinerForOutline","highlightOutlines","highlightId","extraThickness","setColorAndOpacity","opa","savedOpacity","savedThickness","setThickness","th","changeThickness_fn","HighlightEditor","DrawingOptions","_svgProperties","_DrawingEditor","_createDrawOutlines","_createDrawing","_convertToParentSpace","_convertToDrawSpace","_updateBbox","_rotateBox","_drawOutlines","_mustBeCommitted","createDrawOutlines_fn","p1Keys","_options","propertyName","_currentDraw","_drawingOptions","savedValue","setter","updateBbox_fn","convertToDrawSpace_fn","rotateBox_fn","_x","_y","drawDiv","_parentWidth","_parentHeight","pointerType","_currentPointerType","_currentDrawingAC","_currentPointerId","_currentPointerIds","_currentMoveTimestamp","_currentDrawingOptions","all","draw","drawId","lastElement","isAborted","_pageX","_pageY","_innerWidth","drawOutlines","drawingOptions","createDrawing_fn","convertToParentSpace_fn","pW","pH","parentRotation","DrawingEditor","InkDrawOutliner","_normalizePoint","_lines","_lastSVGPath","_lastIndex","InkDrawOutline","normalizePoint_fn","firstX","firstY","secondX","secondY","c1x","c1y","c2x","c2y","_getMarginComponents","_getBBoxWithNoMargin","_computeBbox","_currentRotation","_parentScale","computeBbox_fn","serializedLines","serializedPoints","getBBoxWithNoMargin_fn","rescaleFn","newLines","oldMarginX","oldMarginY","getMarginComponents_fn","newMarginX","newMarginY","diffMarginX","diffMarginY","marginX","marginY","s1x","s1y","s2x","s2y","parentDimensions","newParentWidth","newParentHeight","margin","InkDrawingOptions","viewerParameters","_InkEditor","_drawId","stroke","InkEditor","ContourDrawOutline","BASE_HEADER_LENGTH","POINTS_PROPERTIES_NUMBER","fontStyle","fontWeight","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","fontBoundingBoxAscent","fontBoundingBoxDescent","SCALE","uint8Buf","_toUint8","toUint8_fn","histogram","_getHistogram","getHistogram_fn","_guessThreshold","guessThreshold_fn","contourList","_findContours","findContours_fn","_getGrayPixels","getGrayPixels_fn","_bilateralFilter","bilateralFilter_fn","_PARAMETERS","mustSmooth","areContours","curves","linesAndPoints","xScale","yScale","newCurves","reducedPoints","_douglasPeucker","douglasPeucker_fn","newPoints","minDiff","maxDiff","outlinesLength","dx","bufferType","headerLength","writer","BufferCtor","diffs","signatureData","readable","writable","numberOfDrawings","diffsOffset","_neighborIndexToId","neighborIndexToId_fn","i0","_neighborIdToIndex","_clockwiseNonZero","clockwiseNonZero_fn","kk","shiftI","shiftJ","_counterClockwiseNonZero","counterClockwiseNonZero_fn","nbd","lnbd","contours","ij","pix","i2","j2","isHole","contour","contour0","i1","j1","i3","j3","i4","j4","ij3","_douglasPeuckerHelper","douglasPeuckerHelper_fn","ax","ay","abx","aby","dist","nabx","naby","aa","invS","phi","cosPhi","sinPhi","tmax","poly","partialPhi","dmax","sigmaS","sigmaR","kernelSize","kernel","sigmaS2","halfSize","rangeValues","sigmaR2","center","norm","neighbour","spos","originalBitmap","prevWidth","prevHeight","isteps","grayImage","SignatureOptions","DrawnSignatureOptions","_SignatureEditor","_isExtracted","_description","_signatureData","_signatureUUID","hasDescriptionStats","_isCopy","uuid","heightInPage","outlineData","fontInfo","SignatureEditor","StampEditor","_getBitmapFetched","_getBitmapDone","_getBitmap","_createCanvas","_scaleBitmap","_drawBitmap","_serializeBitmap","_bitmap","_bitmapId","_bitmapPromise","_bitmapUrl","_bitmapFile","_bitmapFileName","_canvas","_missingCanvas","_resizeTimeoutId","_isSvg","_hasBeenAddedInUndoStack","hasAltTextStats","updateAltTextData","getBitmap_fn","createCanvas_fn","bitmapId","drawBitmap_fn","maxDataDimension","maxPreviewDimension","createImageData","bitmapWidth","bitmapHeight","outputScale","scaledWidth","scaledHeight","scaleBitmap_fn","boxDim","boxDimWidth","boxDimHeight","patternCtx","dataWidth","dataHeight","offscreenCtx","missingCanvas","structParent","bitmapUrl","isSvg","accessibilityData","serializeBitmap_fn","changes","area","prevData","getBitmapFetched_fn","fromId","getBitmapDone_fn","MAX_RATIO","toUrl","isSamePageIndex","isSameAltText","_AnnotationEditorLayer","annotationLayer","_textLayerPointerDown","_currentEditorType","_createNewEditor","_getCenterPoint","_cleanup","_allowClick","_annotationLayer","_clickAC","_editorFocusTimeoutId","_editors","_hadPointerDown","_isDisabling","_isEnabling","_drawingAC","_focusedElement","_textLayer","_textSelectionAC","editorTypes","cleanup_fn","classList","annotationElementIds","editables","editable","changedAnnotations","resetAnnotations","textLayerPointerDown_fn","currentEditorType_get","getCenterPoint_fn","createNewEditor_fn","isCentered","currentMode","relatedTarget","oldRotation","_DrawLayer","_createSVG","_createClipPath","_updateProperties","_mapping","_toUpdate","isPathUpdatable","hasClip","createSVG_fn","pathId","createClipPath_fn","use","mustRemoveSelfIntersections","maskId","use1","use2","elementOrId","rootClass","updateProperties_fn","_setBox","setBox_fn","pathElement","clipPathUse","__webpack_exports__GlobalWorkerOptions","__webpack_exports__getDocument","__webpack_exports__version","readFileAsArrayBuffer","LocalFileImportIndexedDB","imagesUploadProgress","uncompressedImageFile","processPDF","processImage","dispatchAndDisplayFailedUpload","processFileAndUpload","processedFile","compressedImageForThumbnails","compressImage","fileData","db","convertHEICIfNeeded","convertedBlob","heic2any","pdfData","pdfjsLib.GlobalWorkerOptions","pdfjsLib.version","pdfDoc","pdfjsLib.getDocument","numPages","canvasPDF","pageNum","fileName","newFile","failedImagesUploaded","convertedFile","computeSources","isSafariPrivate","LocalFileImport","getImageSources","useGenStore","notifyTimeout","clickEvent","notifications","LoaderBase","showUploadErrorsModal","showFailures","excludeServices","callToActionButtonText","callToActionButtonEvent","prevTargetAlbum","extraFileTypes","source_index","implementation","sourceIdx","sourceAutoUploads","upload_url","additionalData","totalNumberOfFilesToUpload","uploadErrors","MobileLoaderFooter","brokenPreviews","addPhotosDisabled","handleAddPhotosClick","onCancelClick","onErrorIconClick","DesktopLoaderFooter","LoaderFooter","onAddImages","onImagePreviewError","onRemoveThumbnail","setAddPhotosDisabled","isMobile","ScreenAndStyle","footerProps","LoaderNav","serviceTitle","handleClick","ButtonRibbon","selected","FocusTrap","LOADER_DIMENSIONS","LoaderSizeMixin","dimensions","fixedHeight","modalWindowHeight"],"sources":["../../../client/src/javascripts/customer_pages/_photo-loader/album-import/albums.js","../../../client/src/javascripts/customer_pages/_photo-loader/utils/back-button.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/service-header.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/loader-mixins/url-loader-upload-mixin.js","../../../client/src/javascripts/customer_pages/_photo-loader/utils/spinner.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/utils/jpeg-exif.js","../../../client/src/javascripts/customer_pages/_photo-loader/thumbnails/preview.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/utils/delete-button.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/thumbnails/file-thumbnail.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/thumbnails/lazy-thumbnail.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/thumbnails/url-thumbnail.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/thumbnails/album-cover-thumbnail.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/thumbnails/thumbnails.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/login-section.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/photo-storage-message.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/not-logged-in.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/select-all-section.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/utils/more-button.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/stream-photos.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/my-albums-and-timelines.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/no-photos-messgae.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/album-import/my-photos-import.jsx","../../javascripts/libs/beethoven-frieze.js","../../../client/src/javascripts/customer_pages/_photo-loader/print-size-selector.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/cloud-import.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/loader-mixins/local-file-resize.js","../../../client/src/javascripts/customer_pages/_photo-loader/utils/upload-button.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/utils/upload-target-radio-button.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/default-new-album-title.js","../../../client/src/javascripts/customer_pages/_photo-loader/album-selector.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/custom-text.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/local-file-import.jsx","../../../node_modules/pusher-js/dist/web/pusher.js","../../../client/src/javascripts/customer_pages/_mobile-uploader/pusher-connection/use-pusher-channel.js","../../../client/src/javascripts/customer_pages/_mobile-uploader/status-box.jsx","../../../client/src/javascripts/customer_pages/_mobile-uploader/pusher-connection/pusher-connection-status.jsx","../../../client/src/javascripts/customer_pages/_mobile-uploader/pusher-connection/minimum-connected-clients-notification.jsx","../../../client/src/javascripts/customer_pages/_mobile-uploader/pusher-connection/index.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import/qr-code-styling-options.js","../../../node_modules/qr-code-styling/lib/qr-code-styling.js","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import/qr-code.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import/spinner.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import/qr-uploading.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import/upload-failure-message.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import/desktop-uploader-config.js","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-import.jsx","../../../node_modules/pdfjs-dist/build/pdf.mjs","../../../client/src/javascripts/customer_pages/_utils/readFileAsArrayBuffer.js","../../../client/src/javascripts/customer_pages/_photo-loader/local-file-import-indexeddb.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/image-sources.js","../../../client/src/javascripts/customer_pages/_photo-loader/utils/notifications.js","../../../client/src/javascripts/customer_pages/_photo-loader/loader-mixins/loader-base.js","../../../client/src/javascripts/customer_pages/_photo-loader/mobile-loader-footer.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/desktop-loader-footer.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/loader-footer.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/loader-nav.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/utils/upload-errors.jsx","../../../client/src/javascripts/customer_pages/_photo-loader/loader-mixins/loader-size-mixin.js"],"sourcesContent":["class Albums {\n constructor(url) {\n this._url = url;\n this._callbacks = [];\n }\n\n load(callback) {\n if (this.loaded) {\n // we already have the data,\n // we can just return immediately.\n callback(this.data);\n return;\n }\n\n if (!this.fetching) {\n fetch(this._url, {\n credentials: 'same-origin',\n })\n .then((response) => response.json())\n .then((data) => this.resolveCallbacks(data));\n }\n\n this.addCallback(callback);\n }\n\n get data() {\n return this._data || [];\n }\n\n set data(data) {\n this._data = data;\n }\n\n get loaded() {\n return !!this._data;\n }\n\n get fetching() {\n return this._callbacks.length > 0;\n }\n\n addCallback(callback) {\n this._callbacks.push(callback);\n }\n\n resolveCallbacks(data) {\n this.data = data;\n\n this._callbacks\n .filter((callback) => typeof callback === 'function')\n .forEach((callback) => callback(data));\n\n this._callbacks = [];\n }\n}\n\n\nexport default new Albums('/account/albums.json');\n","import React from 'react';\n\nconst backButton = props => (\n <button\n className=\"back header-btn\"\n aria-label=\"Back\"\n onClick={props.onBackClick}\n >\n <i className=\"skinny-icon arrow-left\" />\n </button>\n);\n\nexport default backButton;\n","\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport BackButton from '../utils/back-button';\nimport { builderDispatch, PrismUI } from \"../../_utils/ui\";\n\nclass ServiceHeader extends React.Component {\n constructor(props) {\n super();\n this.onBackClick = props.onBackClick;\n this.title = props.title;\n }\n\n componentDidMount() {\n builderDispatch.dispatch({\n type: PrismUI.CLOUD_SERVICE_HEADER,\n mounted: true\n });\n }\n\n componentWillUnmount() {\n builderDispatch.dispatch({\n type: PrismUI.CLOUD_SERVICE_HEADER,\n mounted: false\n });\n }\n\n render() {\n return(<div className=\"modal-header justify-content-center align-items-center fixed-top border-0 service-header\">\n <BackButton onBackClick={this.onBackClick} />\n <div className=\"header-title\">\n <span className=\"text-truncate\">{this.title}</span>\n </div>\n </div>);\n }\n}\n\nServiceHeader.propTypes = {\n onBackClick: PropTypes.func.isRequired,\n title: PropTypes.string.isRequired\n};\n\nexport default ServiceHeader;\n","import GenericPaginatedUploadMixin from './generic-paginated-upload-mixin';\n\nconst countErrors = {};\n\nconst UrlLoaderUploadMixin = {\n mixins: [GenericPaginatedUploadMixin],\n\n _buildFormData(formData, file) {\n formData.append('url', file.url);\n formData.append('name', file.filename || file.title);\n if (file.foreignUserId) {\n formData.append('foreign_user_id', file.foreignUserId);\n }\n },\n\n saveErrors(service, responseCode) {\n if (responseCode > 399 && responseCode < 600) {\n if (responseCode === 400) {\n countErrors.tooManyRequests = service;\n }\n\n countErrors[service] = countErrors[service] && countErrors[service] > 0 ? countErrors[service] + 1 : 1;\n }\n },\n\n reachedErrorLimit(service) {\n return countErrors[service] > 100;\n },\n\n makesTooManyRequests(service) {\n return countErrors.tooManyRequests === service;\n },\n};\n\nexport default UrlLoaderUploadMixin;\n","import React from 'react';\nimport classNames from 'classnames';\n\nconst spinner = props => (\n <div className=\"w-100 text-center m-auto\">\n <i className={classNames(\"sm-spinner fa-2x accent-text fas fa-circle-notch fa-spin\", props.classes)} />\n </div>\n);\n\nexport default spinner;\n","\nconst JPEGExif = {\n mapping: {\n 1: { degrees: 0, reflectVertical: false, reflectHorizontal: false },\n 2: { degrees: 0, reflectVertical: false, reflectHorizontal: true },\n 3: { degrees: 180, reflectVertical: false, reflectHorizontal: false },\n 4: { degrees: 0, reflectVertical: true, reflectHorizontal: false },\n 5: { degrees: 270, reflectVertical: false, reflectHorizontal: true },\n 6: { degrees: 90, reflectVertical: false, reflectHorizontal: false },\n 7: { degrees: 90, reflectVertical: false, reflectHorizontal: true },\n 8: { degrees: 270, reflectVertical: false, reflectHorizontal: false },\n },\n\n orientation(fileBuffer) {\n const scanner = new DataView(fileBuffer);\n let orientation = 1;\n\n if (scanner.getUint16(0) === 0xFFD8) {\n let idx = 0;\n let maxBytes = scanner.byteLength;\n\n while (idx < maxBytes - 2) {\n const uint16 = scanner.getUint16(idx);\n idx += 2;\n\n switch (uint16) {\n case 0xFFE1: // Set maxBytes so only exif data is read\n const exifLength = scanner.getUint16(idx);\n maxBytes = exifLength - idx;\n idx += 2;\n break;\n case 0x0112: // Read orientation tag\n orientation = scanner.getUint16(idx + 6, false);\n maxBytes = 0; // Stop scanning\n break;\n }\n }\n }\n return orientation;\n },\n};\n\nexport default JPEGExif;\n","'use strict';\n\nimport React from 'react';\nimport Spinner from '../utils/spinner';\nimport JPEGExif from '../utils/jpeg-exif';\n\nconst THUMB_MAX_HEIGHT = 64; //px\n\nclass Preview extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n loaded: false,\n error: false\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n this.loadPreview();\n }\n\n componentWillUnmount() {\n this._isMounted = false;\n }\n\n render() {\n const divStyle = {\n width: THUMB_MAX_HEIGHT,\n height: THUMB_MAX_HEIGHT\n };\n\n return (\n <div\n aria-label={this.state.error ? 'error' : this.props.file.name}\n className=\"thumbnail_ file\"\n role={this.state.error ? 'button' : 'note'}\n tabIndex=\"0\"\n onClick={this.state.error ? () => this.props.onErrorIconClick() : null}\n onKeyPress={this.state.error ? () => this.props.onErrorIconClick() : null}\n >\n {this.state.loaded && (\n <div>\n {this.state.error\n ? <div\n className=\"error\"\n style={divStyle}\n >\n <span className=\"fa-stack\">\n <i className=\"far fa-circle fa-stack-2x fa-inverse\" />\n <i className=\"fas fa-exclamation fa-stack-1x fa-inverse\" />\n </span>\n </div>\n : <div><canvas height={THUMB_MAX_HEIGHT} ref=\"canvas\" />\n <p ref=\"file_caption\" className=\"file-caption file-caption-space\">\n {this.props.file.name && this.props.file.name}</p>\n </div>\n }\n </div>\n )}\n\n {!this.state.loaded && (\n <div style={divStyle}>\n <Spinner />\n </div>\n )}\n </div>\n );\n }\n\n\n loadPreview() {\n var component = this;\n var file = this.props.file;\n var reader = new FileReader();\n\n reader.onload = onReaderLoaded;\n reader.readAsDataURL(file);\n\n function onReaderLoaded(event) {\n if (!component._isMounted)\n return;\n\n var image = new Image();\n image.src = event.target.result;\n\n image.onload = onImageLoaded;\n image.onerror = onImageError;\n }\n\n function onImageError() {\n component.props.onImagePreviewError(file);\n component.setState({\n loaded: true,\n error: true\n });\n }\n\n function convertBase64ToArrayBuffer(string) {\n const binary = window.atob(string.split('base64,')[1]);\n const length = binary.length;\n let bytes = new Uint8Array(length);\n\n for (let i = 0; i < length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n\n return bytes.buffer;\n }\n\n function onImageLoaded(event) {\n const buffer = convertBase64ToArrayBuffer(event.target.src);\n (window.URL || window.webkitURL).revokeObjectURL(this.src);\n\n if (!component._isMounted)\n return;\n\n component.setState({\n loaded: true\n });\n\n const { degrees, reflectVertical, reflectHorizontal } = JPEGExif.mapping[JPEGExif.orientation(buffer)] || JPEGExif.mapping[1],\n canChangeAspectRatio = degrees == 90 || degrees == 270,\n canvas = component.refs.canvas;\n\n let hRatio,\n vRatio,\n ratio;\n\n if (canChangeAspectRatio) {\n ratio = (this.width > 0) ? (THUMB_MAX_HEIGHT / this.width) : 1;\n canvas.width = this.height * ratio;\n canvas.height = this.width * ratio;\n hRatio = canvas.height / this.width;\n vRatio = canvas.width / this.height;\n } else {\n ratio = (this.height > 0) ? (THUMB_MAX_HEIGHT / this.height) : 1;\n canvas.width = this.width * ratio;\n canvas.height = this.height * ratio;\n hRatio = canvas.height / this.height;\n vRatio = canvas.width / this.width;\n }\n\n ratio = Math.min(hRatio, vRatio);\n const centerShift_x = (canvas.width - this.width * ratio) / 2,\n centerShift_y = (canvas.height - this.height * ratio) / 2;\n\n const ctx = canvas.getContext('2d');\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n // Fix issue of image caption\n const caption = component.refs.file_caption\n caption.style.width = `${canvas.width}px`\n // Rotate image according to exif orientation\n ctx.translate(canvas.width / 2, canvas.height / 2);\n ctx.rotate(degrees * (Math.PI / 180));\n // Reflect image according to exif mirror\n if (reflectHorizontal) {\n ctx.scale(-1, 1);\n } else if (reflectVertical) {\n ctx.scale(1, -1);\n }\n\n ctx.translate(-canvas.width / 2, -canvas.height / 2);\n\n ctx.drawImage(\n this, 0, 0,\n this.width, this.height,\n centerShift_x, centerShift_y, this.width * ratio, this.height * ratio\n );\n }\n }\n};\nexport default Preview;\n","import React from 'react';\n\nconst deleteButton = props => (\n <button\n aria-label=\"Delete\"\n className=\"delete p-0 border-0\"\n onKeyDown={props.handleKeyDown}\n onClick={props.handleDelete}\n >\n <span className=\"fa-stack fa-xs d-flex align-items-center justify-content-center\">\n <i className=\"fas fa-circle fa-stack-2x\" />\n <i className=\"fas fa-times fa-stack-1x fa-inverse\" />\n </span>\n </button>\n);\n\nexport default deleteButton;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport Preview from './preview';\nimport DeleteButton from '../utils/delete-button';\n\nconst FileThumbnail = props => {\n return (\n <div className=\"fadein\">\n <Preview {...props} />\n <DeleteButton handleDelete={() => props.onRemoveThumbnail(props.file)} />\n </div>\n );\n};\n\nFileThumbnail.propTypes = {\n file: PropTypes.object.isRequired,\n onRemoveThumbnail: PropTypes.func,\n withOrientation: PropTypes.bool,\n};\n\nexport default FileThumbnail;\n","import createReactClass from 'create-react-class';\n'use strict';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport genericHelpers from '../../_utils/generic-helpers';\nimport Spinner from '../utils/spinner';\n\nvar LazyThumbnail = createReactClass({\n getInitialState() {\n return {\n loaded: false\n };\n },\n componentDidMount() {\n var debouncedOnWindowScroll = genericHelpers.debounce(this.onWindowScroll);\n $(ReactDOM.findDOMNode(this)).closest('.thumbnails').\n on('scroll', debouncedOnWindowScroll).\n on('resize', debouncedOnWindowScroll);\n\n this.onWindowScroll();\n },\n componentWillUnmount() {\n $(ReactDOM.findDOMNode(this)).closest('.thumbnails').off('scroll')\n .off('resize');\n },\n onWindowScroll() {\n var threshold = this.props.threshold || 300;\n\n var bounds = ReactDOM.findDOMNode(this).getBoundingClientRect();\n var scrollTop = window.pageYOffset;\n var top = bounds.top + scrollTop;\n var height = bounds.bottom - bounds.top;\n\n var visible = (top === 0 || (top <= (scrollTop + window.innerHeight + threshold)\n && (top + height) > (scrollTop - threshold)));\n\n this.setState({\n loaded: visible\n });\n },\n\n render() {\n if (!this.state.loaded) {\n return (\n <div className=\"thumbnail_ placeholder\">\n <Spinner />\n </div>\n );\n }\n\n return (\n <this.props.thumbnailType\n file={this.props.file}\n position={this.props.position}\n selected={this.props.selected}\n withOrientation={this.props.withOrientation}\n onErrorIconClick={this.props.onErrorIconClick}\n onImagePreviewError={this.props.onImagePreviewError}\n onRemoveThumbnail={this.props.onRemoveThumbnail}\n onSelect={this.props.onSelect}\n onUnSelect={this.props.onUnSelect}\n displayCaption={this.props.displayCaption}\n />\n );\n }\n});\n\nexport default LazyThumbnail;\n","import React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport DeleteButton from '../utils/delete-button';\n\nclass UrlThumbnail extends React.Component {\n constructor(props) {\n super(props);\n this.state = { dimensions: {} };\n this.onImgLoad = this.onImgLoad.bind(this);\n }\n\n onImgLoad = ({ target: img }) => {\n this.setState({\n dimensions: {\n height: img.offsetHeight,\n width: img.offsetWidth,\n },\n });\n }\n handleSelect = () => {\n if (this.props.onSelect && this.props.file.viable) {\n this.props.onSelect(this.props.file);\n }\n }\n\n handleUnSelect = () => {\n if (this.props.onUnSelect && this.props.file.viable) {\n this.props.onUnSelect(this.props.file);\n }\n }\n\n render() {\n const url = ['thumb', 'thumb_url', 'url'].reduce(\n (memo, key) => memo || this.props.file[key],\n null\n );\n const imageCaption = this.props.file.filename ? this.props.file.filename : this.props.file.title;\n const { width, height } = this.state.dimensions;\n\n const actionButton = () => {\n if (this.props.onRemoveThumbnail)\n return (\n <DeleteButton\n handleDelete={() => this.props.onRemoveThumbnail(this.props.file)}\n />\n );\n\n if (this.props.selected)\n return (\n <span className=\"fa-stack fa-xs\" onClick={this.handleUnSelect}>\n <i className=\"fas fa-square fa-stack-2x\" />\n <i className=\"fas fa-check fa-stack-1x fa-inverse\" />\n </span>\n );\n };\n return (\n <div\n className={classNames(\n 'image-container',\n { selected: this.props.selected },\n { fadein: this.props.onRemoveThumbnail }\n )}>\n <button\n aria-label={this.props.file.title}\n aria-checked={this.props.selected}\n className={classNames('thumbnail_ url')}\n role={this.props.onRemoveThumbnail ? 'note' : 'checkbox'}\n style={{\n backgroundImage: !this.props.withOrientation && `url(${url})`,\n }}\n onClick={this.props.selected ? this.handleUnSelect : this.handleSelect}>\n {this.props.withOrientation && (\n <img src={url} onLoad={this.onImgLoad} alt={imageCaption} />\n )}\n </button>\n { this.props.displayCaption && <p style={{ width: width }} className=\"file-caption\">\n {imageCaption}\n </p> }\n {actionButton()}\n </div>\n );\n }\n}\n\nUrlThumbnail.propTypes = {\n file: PropTypes.object.isRequired,\n onRemoveThumbnail: PropTypes.func,\n onSelect: PropTypes.func,\n onUnSelect: PropTypes.func,\n selected: PropTypes.bool,\n withOrientation: PropTypes.bool,\n displayCaption: PropTypes.bool\n};\n\nexport default UrlThumbnail;\n","'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst albumCoverThumbnail = props => (\n <button\n className=\"thumbnail_ album-cover\"\n onClick={() => props.onSelect(props.file.album)}\n style={{backgroundImage: `url('${props.file.album.cover}')`}}\n aria-label={props.file.album.title}\n >\n <div className=\"caption text-truncate\">\n {props.file.album.title}\n </div>\n </button>\n);\n\nalbumCoverThumbnail.propTypes = {\n file: PropTypes.object.isRequired,\n onSelect: PropTypes.func.isRequired\n};\n\nexport default albumCoverThumbnail;\n","'use strict';\n\n// Import Libraries\nimport React from 'react';\n// Import JS Modules\nimport classNames from 'classnames';\n\nimport FileThumbnail from './file-thumbnail';\nimport LazyThumbnail from './lazy-thumbnail';\nimport UrlThumbnail from './url-thumbnail';\nimport AlbumCoverThumbnail from './album-cover-thumbnail';\n\nconst Thumbnails = props => {\n const files = props.files || [];\n\n return (\n <div className={classNames('thumbnails', props.classes)}>\n {files.map(renderFile, this)}\n </div>\n );\n\n\n function renderFile(file, i) {\n let thumbnailType;\n\n switch (file.source) {\n case 'url':\n thumbnailType = UrlThumbnail;\n break;\n case 'album':\n thumbnailType = AlbumCoverThumbnail;\n break;\n case 'footer':\n default:\n thumbnailType = FileThumbnail;\n break;\n }\n\n return (\n <LazyThumbnail\n file={file}\n key={'' + i + (file.name || file.url)}\n selected={props.isSelected ? props.isSelected(file) : false}\n thumbnailType={thumbnailType}\n withOrientation={props.withOrientation}\n onImagePreviewError={props.onImagePreviewError}\n onErrorIconClick={props.onErrorIconClick}\n onRemoveThumbnail={props.onRemoveThumbnail}\n onSelect={props.handleSelect}\n onUnSelect={props.handleUnSelect}\n displayCaption={props.displayCaption}\n />\n );\n }\n};\n\nexport default Thumbnails;\n","import React from 'react';\nimport Store from '../../_utils/tools/store';\nimport showLoginOverlay from '../utils/show-login-overlay';\n\nconst loginSection = () => {\n const handleLogin = () => {\n window.showLeaveOverlay = false;\n showLoginOverlay();\n }\n\n return (\n <div className=\"text-center\">\n <i className=\"far fa-images large\" />\n <h3 className=\"service-title font-weight-bold\">My {Store.name} Photos</h3>\n <small className=\"d-block\">Please log in to My {Store.name} Photos account</small>\n <button\n aria-label=\"Log in\"\n className=\"btn btn-primary login font-weight-bold\"\n onClick={handleLogin}\n >Log in\n </button>\n <small className=\"d-block more-space mb-2\">If you do not have an account, please \n <a\n aria-label=\"Sign up\"\n className=\"sign-up\"\n href={window.urls.newAccount}\n role=\"link\"\n tabIndex=\"0\"\n title=\"Link to Create Account\"\n >\n Sign Up.\n </a>\n </small>\n </div>\n );\n}\n\nexport default loginSection;\n","'use strict';\n\nimport React from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nconst photoStorageMessage = props => {\n\n const message = 'Photo accounts are not designed or intended to be used as permanent Photo storage. Please be advised that if your account is inactive for more than 1 year, uploaded photos will be deleted.';\n\n return (\n <div className={classNames('custom-alert', props.variant, props.isOpen ? 'd-block alert alert-warning' : 'd-none')}>\n <button\n type=\"button\"\n className=\"close\"\n aria-label=\"Close\"\n onClick={props.onClose}\n >\n <i className=\"fas fa-times\" />\n </button>\n <p className=\"title d-block d-md-none\">Photo Storage Policy</p>\n <p className=\"content m-lg-0\">\n <span className=\"store-name\">{props.storeName} </span>\n {message}\n </p>\n </div>\n );\n}\nphotoStorageMessage.propTypes = {\n isOpen: PropTypes.bool,\n onClose: PropTypes.func,\n storeName: PropTypes.string,\n variant: PropTypes.string,\n};\n\nexport default photoStorageMessage;\n","'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport LoginSection from './login-section';\nimport PhotoStorageMessage from './photo-storage-message';\n\nconst notLoggedIn = props => (\n <div className=\"h-100\">\n <LoginSection />\n <div className={classNames({'modal-overlay': props.showAlert})}>\n <PhotoStorageMessage\n isOpen={props.showAlert}\n onClose={props.handleCloseAlert}\n storeName={props.storeName + '.com'}\n />\n <div className={classNames('psp-trigger justify-content-center d-md-none', props.showAlert ? 'd-none' : 'd-flex')}>\n <p>Read \n <a\n aria-label={`Read ${props.storeName} Photo Storage Policy`}\n className=\"sign-up\"\n href=\"#\"\n role=\"link\"\n onClick={(e) => props.toggleShowAlert(e)}\n >\n {`${props.storeName} Photo Storage Policy`}\n </a>\n </p>\n </div>\n </div>\n </div>\n);\n\nnotLoggedIn.propTypes = {\n showAlert: PropTypes.bool.isRequired,\n handleCloseAlert: PropTypes.func,\n storeName: PropTypes.string,\n toggleShowAlert: PropTypes.func,\n};\n\nexport default notLoggedIn;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nconst SelectAllSection = props => (\n <div className=\"select-all\">\n <h3>{props.title}</h3>\n <button\n aria-label={props.label}\n aria-checked={props.selectedAll}\n className={classNames('btn btn-link', {selected: props.selectedAll})}\n disabled={!props.enabled}\n role=\"checkbox\"\n onClick={props.selectedAll ? props.selectNone : props.selectAll}\n >\n Select all \n <i className={classNames('checkbox', props.selectedAll ? 'fas fa-check-square' : 'far fa-square')} />\n </button>\n </div>\n);\n\nSelectAllSection.propTypes = {\n enabled: PropTypes.bool,\n label: PropTypes.string,\n selectAll: PropTypes.func.isRequired,\n selectedAll: PropTypes.bool.isRequired,\n selectNone: PropTypes.func.isRequired,\n title: PropTypes.string,\n};\n\nexport default SelectAllSection;\n","import React from 'react';\nimport classNames from 'classnames';\n\nconst moreButton = props => (\n <div className=\"mx-auto more-button-container\">\n <button\n className={classNames('btn btn-outline-dark rounded my-2')}\n id={props.id}\n onClick={props.onMoreButtonClick}\n >\n Load More\n </button>\n </div>\n);\n\nexport default moreButton;\n","import React from \"react\";\nimport PropTypes from 'prop-types';\n\nimport MoreButton from '../utils/more-button';\nimport Spinner from '../../_utils/spinner';\nimport UrlThumbnail from '../thumbnails/url-thumbnail';\n\nconst streamPhotos = props => {\n if (!props.photos.length) {\n return <Spinner />;\n }\n\n return (\n <div id=\"streamDiv\" style={{ height: props.height, overflow: 'auto' }}>\n <div className=\"scroll-box\">\n {\n props.photos.map((photo, i) => (\n <UrlThumbnail\n file={photo}\n selected={props.isSelected(photo)}\n key={`stream-${photo.id}-${i}`}\n onSelect={props.onSelect}\n onUnSelect={props.onUnSelect}\n withOrientation\n />\n ))\n }\n {\n !!props.hasMoreButton &&\n <MoreButton\n id=\"load-more-stream\"\n onMoreButtonClick={props.onMoreButtonClick}\n />\n }\n </div>\n </div>\n );\n};\n\nstreamPhotos.propTypes = {\n hasMoreButton: PropTypes.bool,\n height: PropTypes.number.isRequired,\n isSelected: PropTypes.func.isRequired,\n onSelect: PropTypes.func.isRequired,\n onUnSelect: PropTypes.func.isRequired,\n photos: PropTypes.array.isRequired,\n total: PropTypes.number.isRequired,\n};\n\nexport default streamPhotos;\n","import React from 'react';\n\nconst MyAlbumsAndTimelines = props => (\n <div className=\"thumbnails covers d-flex flex-nowrap justify-content-center\">\n <button\n className=\"thumbnail_ album-cover\"\n style={{ backgroundImage: `url(${props.myAlbumsCover})` }}\n aria-label=\"My Albums\"\n onClick={props.onMyAlbumsClick}\n >\n <div className=\"caption text-truncate\">My Albums</div>\n </button>\n <button\n className=\"thumbnail_ album-cover\"\n style={{ backgroundImage: `url(${props.timelinesCover})` }}\n aria-label=\"Timelines\"\n onClick={props.onTimelinesClick}\n >\n <div className=\"caption text-truncate\">Timelines</div>\n </button>\n </div>\n);\n\nexport default MyAlbumsAndTimelines;\n","import React from 'react';\n\nconst noPhotosMessage = () => (\n <div className=\"no-albums\">You have no albums</div>\n);\n\nexport default noPhotosMessage;","import createReactClass from 'create-react-class';\n'use strict';\n\n// Import Libraries\nimport React from 'react';\nimport classNames from 'classnames';\n\n// Import JS Modules\nimport albums from './albums';\nimport Store from '../../_utils/tools/store';\nimport {\n builderDispatch,\n WebUI\n} from '../../_utils/ui';\nimport Spinner from '../../_utils/spinner';\nimport {\n pluralizer,\n localDateFormat\n} from '../utils/utils';\n\nimport UrlBuilder from '../../_utils/url-building';\n// Import JSX Modules\nimport ServiceHeader from './service-header';\nimport FileSelectorMixin from '../loader-mixins/file-selector-mixin';\nimport UrlLoaderUploadMixin from '../loader-mixins/url-loader-upload-mixin';\nimport FileClearingMixin from '../loader-mixins/file-clearing-mixin';\nimport Thumbnails from '../thumbnails/thumbnails';\nimport UrlThumbnail from '../thumbnails/url-thumbnail';\nimport NotLoggedIn from './not-logged-in';\nimport SelectAllSection from './select-all-section';\nimport StreamPhotos from './stream-photos';\nimport MyAlbumsAndTimelines from './my-albums-and-timelines';\nimport NoPhotosMessage from './no-photos-messgae';\nimport MoreButton from '../utils/more-button';\nimport PhotoStorageMessage from './photo-storage-message';\nimport sendToGoogleAnalytics from \"../../_prism-builder/desktop/slot-tools/send-to-google-analytics\";\n\nconst DEFAULT_COVER_HEIGHT = 136;\nconst DEFAULT_SELECT_ALL_HEIGHT = 33;\n\nconst MyPhotosImport = createReactClass({\n mixins: [UrlLoaderUploadMixin, FileSelectorMixin, FileClearingMixin],\n\n displayName: 'My Photos Import',\n\n getInitialState() {\n const { App } = window;\n\n return {\n selectedAlbum: null,\n view: 'stream', //stream, timelines, allAlbums, albumContent\n total: null,\n stream: [],\n streamPage: 1,\n timelines: [],\n timelinesPage: 1,\n loggedIn: App && App.order.logged_in(),\n showAlert: true\n };\n },\n\n componentDidMount() {\n this.files = (this.files || []);\n this.streamPerPage = this.props.isMobile ? 15 : 16;\n this.timelinesPerPage = this.props.isMobile ? 15 : 32;\n\n this.builderDispatchToken = builderDispatch.register(payload => {\n if (payload.type === WebUI.LOGIN) {\n this.setState({\n loggedIn: true\n }, () => {\n this.loadAlbums();\n this.fetchData('stream', this.state.streamPage, this.streamPerPage);\n this.fetchData('timelines', this.state.timelinesPage, this.timelinesPerPage);\n });\n }\n });\n\n this.albumsContents = {};\n\n if (this.state.loggedIn) {\n this.loadAlbums();\n this.fetchData('stream', this.state.streamPage, this.streamPerPage);\n this.fetchData('timelines', this.state.timelinesPage, this.timelinesPerPage);\n }\n },\n\n componentWillUnmount() {\n builderDispatch.unregister(this.builderDispatchToken);\n },\n\n render() {\n const $body = (() => {\n if (this.state.loggedIn) {\n if (this.state.view == 'stream') {\n return this.renderStream();\n }\n\n if (this.state.view == 'timelines') {\n return this.renderTimelines();\n }\n\n if (this.state.selectedAlbum && this.state.view == 'albumContent') {\n return this.renderAlbumContent();\n }\n\n if (this.state.view == 'allAlbums') {\n return this.renderAlbumList();\n }\n }\n\n return (\n <NotLoggedIn\n storeName={Store.name}\n showAlert={this.state.showAlert}\n handleCloseAlert={this.handleCloseAlert}\n toggleShowAlert={this.handleToggleShowAlert}\n />\n );\n })();\n return (\n <div\n id={'image-loader-service-' + this.props.service}\n style={{ height: this.props.height }}\n className={classNames('image-loader-service',\n this.props.service,\n this.state.loggedIn ? this.state.view : 'guest',\n { 'd-none': !this.props.isActive })}>\n {$body}\n </div>\n );\n },\n\n renderStream() {\n const { total, stream } = this.state,\n coversHeight = $('.stream-body > .covers').outerHeight() || DEFAULT_COVER_HEIGHT,\n selectAllHeight = $('.stream-body > .select-all').outerHeight() || DEFAULT_SELECT_ALL_HEIGHT,\n componentHeight = (this.props.height - coversHeight - selectAllHeight);\n\n if (!this.state.streamLoaded) {\n return <Spinner className=\"h-100\" />;\n }\n\n if (stream.length === 0) {\n return <NoPhotosMessage />;\n }\n\n return (\n <div className=\"stream-body\">\n <MyAlbumsAndTimelines\n myAlbumsCover={this.getCover(\"stream\")}\n timelinesCover={this.getCover(\"timelines\")}\n onMyAlbumsClick={() => this.handleChangeView(\"allAlbums\")}\n onTimelinesClick={() => this.handleChangeView(\"timelines\")}\n />\n <SelectAllSection\n enabled\n label=\"Select all photos\"\n title=\"All Photos\"\n selectedAll={this.handleAllSelected(stream)}\n selectAll={() => this.handleSelectAll(stream)}\n selectNone={() => this.handleSelectNone(stream)}\n />\n <StreamPhotos\n hasMoreButton={total > stream.length}\n height={componentHeight}\n isSelected={this.isSelected}\n photos={stream}\n total={total || 0}\n onMoreButtonClick={() => this.handleLoadMoreButtonClick('stream')}\n onSelect={this.handleSelect}\n onUnSelect={this.handleUnSelect}\n />\n {\n !!window.document.referrer &&\n <PhotoStorageMessage\n isOpen={this.state.showAlert}\n storeName={Store.name + '.com'}\n variant=\"all-photos-alert\"\n onClose={this.handleCloseAlert}\n />\n }\n </div>\n );\n },\n\n renderAlbumList() {\n if (!this.state.albumsLoaded) return <Spinner className=\"h-100\" />;\n\n const thumbnails = albums.data.map(album => {\n return {\n source: 'album',\n album: album\n };\n }).sort((a, b) => b.album.id - a.album.id);\n\n return (\n <div key=\"albums-list\" className=\"albums-list-body\">\n <ServiceHeader\n title=\"My Albums\"\n onBackClick={() => this.handleChangeView(\"stream\", false)}\n />\n {\n thumbnails.length ?\n <Thumbnails\n files={thumbnails}\n isSelected={this.isSelected}\n itemIdentifier=\"name\"\n handleSelect={this.handleAlbumSelected}\n displayCaption={true}\n withOrientation\n />\n :\n <NoPhotosMessage />\n }\n </div>\n );\n },\n\n renderAlbumContent() {\n const { selectedAlbum } = this.state;\n const albumContent = this.albumsContents[selectedAlbum.id];\n\n if (!albumContent) {\n return (\n <div\n className=\"album-content-body h-100\"\n key=\"albumContent\"\n >\n <ServiceHeader\n title={selectedAlbum.title}\n onBackClick={() => this.handleChangeView(\"allAlbums\")}\n />\n <Spinner className=\"h-100\" />\n </div>\n );\n }\n\n if (albumContent.photos.length) {\n return (\n <div key=\"albumContent\" className=\"album-content-body\" >\n <ServiceHeader\n title={selectedAlbum.title}\n onBackClick={() => this.handleChangeView(\"allAlbums\")}\n />\n {this.state.selectedAlbum &&\n <SelectAllSection\n enabled\n label=\"Select all photos\"\n title={pluralizer(albumContent.photos.length, 'photo')}\n selectedAll={this.handleAllSelected(albumContent.photos)}\n selectAll={() => this.handleSelectAll(albumContent.photos)}\n selectNone={() => this.handleSelectNone(albumContent.photos)}\n />\n }\n\n <Thumbnails\n files={albumContent.photos}\n isSelected={this.isSelected}\n itemIdentifier=\"url\"\n handleSelect={this.handleSelect}\n handleUnSelect={this.handleUnSelect}\n withOrientation\n />\n </div>\n );\n }\n },\n\n renderTimelines() {\n const { timelines, total } = this.state;\n\n const timelinesByDate = timelines.reduce((memo, photo) => {\n const photoDateTaken = localDateFormat(photo.date_taken);\n memo[photoDateTaken] = memo[photoDateTaken] || [];\n memo[photoDateTaken].push(photo);\n return memo;\n }, {});\n\n return (\n <div className=\"timelines-body\">\n <ServiceHeader\n title=\"Timelines\"\n onBackClick={() => this.handleChangeView(\"stream\", false)}\n />\n <div id=\"timelinesDiv\"\n style={{\n height: this.props.height,\n overflow: \"auto\"\n }}\n >\n <div className=\"scroll-box\">\n {\n Object.keys(timelinesByDate).map((date, i) => (\n <div key={`timelines-${i}`} className=\"timeline w-100\">\n <SelectAllSection\n enabled\n key={date}\n label={`${date} Select all photos`}\n title={date}\n selectedAll={this.handleAllSelected(timelinesByDate[date])}\n selectAll={() => this.handleSelectAll(timelinesByDate[date])}\n selectNone={() => this.handleSelectNone(timelinesByDate[date])}\n />\n <div className='thumbnails'>\n {\n timelinesByDate[date].map(photo => (\n <UrlThumbnail\n file={photo}\n key={`stream-${photo.id}`}\n selected={this.isSelected(photo)}\n onSelect={this.handleSelect}\n onUnSelect={this.handleUnSelect}\n withOrientation\n />\n ))\n }\n </div>\n </div>\n ))\n }\n {\n total > timelines.length &&\n <MoreButton\n id=\"load-more-timelines\"\n onMoreButtonClick={() => this.handleLoadMoreButtonClick('timelines')}\n />\n }\n </div>\n </div>\n </div>\n );\n },\n\n loadAlbums() {\n if (this.state.loggedIn) {\n albums.load(() => {\n this.setState({\n albumsLoaded: true\n });\n });\n }\n },\n\n getDestUrl(dest, page, perPage) {\n const params = {\n page,\n per_page: perPage,\n timelines: dest === 'timelines' ? true : undefined\n };\n\n return '/account/my-photos/stream.json?' + UrlBuilder.buildURLQuery(params);\n },\n\n fetchData(dest, page, perPage) {\n fetch(this.getDestUrl(dest, page, perPage), {\n credentials: 'same-origin'\n })\n .then(response => response.json())\n .then(data => {\n data.photos.forEach(photo => {\n photo.source = 'url'\n });\n\n const destPage = `${dest}Page`;\n\n this.setState({\n [dest]: this.state[dest].concat(data.photos),\n [destPage]: ++this.state[destPage],\n total: data.total,\n [dest + 'Loaded']: true\n }, () => this.scrollIntoView(dest));\n })\n .catch(error => {\n console.error('Error:', error);\n this.setState({ [dest + 'Loaded']: true })\n });\n },\n\n handleChangeView(view, hideMenu = true) {\n this.props.onHideMenu(hideMenu);\n this.setState({ view: view, selectedAlbum: null });\n },\n\n getCover(view) {\n if (this.state[view].length) {\n return this.state[view][0].url;\n }\n },\n\n handleSelect(photo) {\n if (this.files.some(file => file.id === photo.id)) {\n // this photo is already selected\n return;\n }\n\n this.files.push({ ...photo }); // photo object is cloned so modificatons made to it don't persist\n\n this.props.onFilesSelected();\n },\n\n handleUnSelect(photo) {\n this.files = this.files.filter(f => f.id !== photo.id);\n this.props.onFilesSelected();\n },\n\n handleSelectAll(photos) {\n const existingFileIds = this.files.reduce((acc, file) => {\n acc[file.id] = true;\n return acc;\n }, {});\n\n const photosToAdd = photos.filter((p) => p.viable && !existingFileIds[p.id]).map((p) => ({ ...p })); // photo object is cloned so modificatons made to it don't persist\n this.files = this.files.concat(photosToAdd);\n\n this.props.onFilesSelected();\n },\n\n handleSelectNone(photos) {\n this.files = this.files.filter(f => !photos.find(p => f.id === p.id));\n\n this.props.onFilesSelected();\n },\n\n isSelected(photo) {\n const ids = this.files.map(file => file.id);\n return ids.includes(photo.id);\n },\n\n triggerFeatureTracking() {\n sendToGoogleAnalytics('my-photos','import')\n },\n\n handleAllSelected(photos) {\n if (!photos.length) return false;\n\n this.triggerFeatureTracking()\n\n const fileIds = this.files.reduce((memo, f) => {\n memo[f.id] = true;\n return memo;\n }, {});\n\n return photos.every(p => fileIds[p.id]);\n },\n\n handleViewAllAlbums(e) {\n e.preventDefault();\n\n this.setState({\n selectedAlbum: null\n });\n\n if (typeof this.props.onHideMenu === 'function') {\n this.props.onHideMenu();\n }\n\n if (typeof this.props.toggleAlbumSelected === 'function') {\n this.props.toggleAlbumSelected();\n }\n },\n\n handleAlbumSelected(album) {\n this.setState({\n selectedAlbum: album,\n view: 'albumContent'\n });\n\n if (typeof this.props.onHideMenu === 'function') {\n this.props.onHideMenu(true);\n }\n\n if (typeof this.props.toggleAlbumSelected == 'function') {\n this.props.toggleAlbumSelected();\n }\n\n if (this.albumsContents[album.id]) {\n return;\n }\n\n const that = this;\n\n fetch(album.link, {\n credentials: 'same-origin'\n }).\n then(response => response.json()).\n then(data => onAlbumLoaded(data));\n\n function onAlbumLoaded(data) {\n data.photos.forEach(photo => {\n photo.source = 'url';\n });\n\n if (that.albumsContents[album.id]) {\n that.albumsContents[album.id].photos = that.albumsContents[album.id].photos.concat(data.photos);\n } else {\n that.albumsContents[album.id] = data;\n }\n\n that.forceUpdate();\n }\n },\n\n handleToggleShowAlert(e) {\n e.preventDefault();\n const prevShowAlertState = this.state.showAlert;\n this.setState({ showAlert: !prevShowAlertState });\n },\n\n handleCloseAlert() {\n this.setState({ showAlert: false });\n },\n\n _clear() {\n this.setState({\n selectedAlbum: null,\n view: 'stream'\n });\n },\n\n handleLoadMoreButtonClick(source) {\n $(`#${source}Div .image-container`).addClass('seen');\n this.fetchData(source, this.state[`${source}Page`], this[`${source}PerPage`]);\n },\n\n scrollIntoView(source) {\n const element = $(`#${source}Div .image-container:not(.seen)`)[0];\n element && element.scrollIntoView({ behavior: \"smooth\", block: \"start\", inline: \"end\" });\n },\n});\n\nexport default MyPhotosImport;\n","var BeethovenFrieze = (function(root_url) {\n var generateServiceUrl, sendMessage, image_selected_callbacks, on_complete_callbacks, services, tray_image_removed_callbacks, on_album_entry_callbacks;\n\n services = {\n dropbox: 'dropbox',\n facebook: 'facebook',\n flickr: 'flickr',\n instagram: 'instagram',\n picasa: 'picasa',\n skydrive: 'skydrive'\n };\n\n image_selected_callbacks = [];\n\n on_complete_callbacks = [];\n\n tray_image_removed_callbacks = [];\n\n on_album_entry_callbacks = [];\n\n (function() {\n var MessageHandler, messageHandlers, messageReceived, onCompleteMessage, onImageSelectedMessage, onTrayImageRemoved, onAlbumEntry;\n MessageHandler = (function() {\n function MessageHandler(prefix, onRecieved) {\n this.prefix = prefix;\n this.onRecieved = onRecieved;\n }\n\n MessageHandler.prototype.is = function(message) {\n return message.match(this.prefix);\n };\n\n MessageHandler.prototype.strip = function(message) {\n return message.replace(this.prefix, '');\n };\n\n MessageHandler.prototype.handle = function(message) {\n if (typeof message === 'string' && this.is(message)) {\n return this.onRecieved(this.strip(message));\n }\n };\n\n return MessageHandler;\n })();\n onImageSelectedMessage = function(data) {\n var i, image_selected_callback, len;\n data = (function() {\n try {\n return JSON.parse(data);\n } catch (error) {\n return {\n url: data\n };\n }\n })();\n for (i = 0, len = image_selected_callbacks.length; i < len; i++) {\n image_selected_callback = image_selected_callbacks[i];\n image_selected_callback({ url: data.url, thumb: data.thumb, filename: data.displayName, originalKey: data.originalKey, foreignUserId: data.id });\n }\n return void 0;\n };\n onCompleteMessage = function() {\n var i, len, on_complete_callback;\n for (i = 0, len = on_complete_callbacks.length; i < len; i++) {\n on_complete_callback = on_complete_callbacks[i];\n on_complete_callback();\n }\n return void 0;\n };\n\n onTrayImageRemoved = function(data) {\n data = (function() {\n try {\n return JSON.parse(data);\n } catch (error) {\n return {\n url: data\n };\n }\n })();\n var i, len, tray_image_removed_callback;\n for (i = 0, len = tray_image_removed_callbacks.length; i < len; i++) {\n tray_image_removed_callback = tray_image_removed_callbacks[i];\n tray_image_removed_callback(data);\n }\n return void 0;\n };\n\n onAlbumEntry = function(data) {\n data = (function() {\n try {\n return data;\n } catch (error) {\n return {\n url: data\n };\n }\n })();\n var i, len, on_album_entry_callback;\n for (i = 0, len = on_album_entry_callbacks.length; i < len; i++) {\n on_album_entry_callback = on_album_entry_callbacks[i];\n on_album_entry_callback(data);\n }\n return void 0;\n };\n\n messageHandlers = [new MessageHandler(/^image_selected:/, onImageSelectedMessage), new MessageHandler(/^complete$/, onCompleteMessage), new MessageHandler(/^tray_image_removed:/, onTrayImageRemoved), new MessageHandler(/^on_album_entry:/, onAlbumEntry)];\n messageReceived = function(e) {\n var i, len, messageHandler;\n if (e.origin === root_url) {\n for (i = 0, len = messageHandlers.length; i < len; i++) {\n messageHandler = messageHandlers[i];\n messageHandler.handle(e.data);\n }\n }\n return void 0;\n };\n return window.addEventListener(\"message\", messageReceived, false);\n })();\n\n generateServiceUrl = function(service, params, single_image_select) {\n var generateUrl, url;\n if (single_image_select == null) {\n single_image_select = true;\n }\n if (!services[service]) {\n return;\n }\n generateUrl = function(url, params) {\n var param, value;\n if (params == null) {\n params = {};\n }\n return (url + \"?\") + ((function() {\n var results;\n results = [];\n for (param in params) {\n value = params[param];\n if (value) {\n results.push(param + \"=\" + (param === 'callback' ? value : encodeURIComponent(value)));\n }\n }\n return results;\n })()).join('&');\n };\n params.service = service;\n params.source_url = window.location.href.replace(/#.*$/, '');\n params.single_image_select = single_image_select;\n params.live_update = true;\n return url = generateUrl(root_url + \"/login\", params);\n };\n\n sendMessage = function(iFrame, message) {\n iFrame.contentWindow.postMessage(message, iFrame.src);\n };\n\n return {\n services: services,\n generateServiceUrl: generateServiceUrl,\n sendMessage: sendMessage,\n onImageSelected: function(callback) {\n return image_selected_callbacks.push(callback);\n },\n onComplete: function(callback) {\n return on_complete_callbacks.push(callback);\n },\n onTrayImageRemoved: function(callback) {\n return tray_image_removed_callbacks.push(callback);\n },\n onAlbumEntry: function(callback) {\n return on_album_entry_callbacks.push(callback);\n }\n };\n\n}).call(this, window.cloudloader_url);\n\n// 'http://192.168.148.4:3000'\n// 'http://localhost:3000'\n// 'https://cloudloader-wm.livelink.io'\n\n// module.exports = BeethovenFrieze;\nexport default BeethovenFrieze;\n","/* eslint-disable jsx-a11y/label-has-for, jsx-a11y/label-has-associated-control */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Select from '../_utils/select-wrapper';\nimport { builderDispatch, WebUI } from '../_utils/ui';\nimport LoaderAdditionalOptions from './additional-options';\nimport { DefaultsEvents } from '../_prints-builder/common/events/event-declarations';\n\nclass PrintSizeSelector extends React.Component {\n constructor(props, context) {\n super(props, context);\n\n this.state = {\n selectedSize: undefined,\n };\n }\n\n componentDidMount() {\n this.builderDispatchToken = builderDispatch.register(payload => {\n switch (payload.type) {\n case WebUI.UPLOAD_ABORTED:\n this.setState({ selectedSize: undefined });\n break;\n }\n });\n }\n\n componentWillUnmount() {\n builderDispatch.unregister(this.builderDispatchToken);\n }\n\n get sizes() {\n const { additionalOptions } = this.context;\n\n return additionalOptions[LoaderAdditionalOptions.PRINT_SIZES] || [];\n }\n\n get hasNoSizes() {\n return this.sizes.length === 0;\n }\n\n selectedPrintSizeKey() {\n return (this.sizes.find(size => size.selected) || {}).key;\n }\n\n printSizeChanged = sizeKey => {\n this.setState({\n selectedSize: sizeKey,\n });\n\n builderDispatch.dispatch({\n type: DefaultsEvents.CHANGE_SIZE,\n sizeKey,\n });\n };\n\n render() {\n if (this.hasNoSizes) {\n return null;\n }\n\n const { selectedSize } = this.state;\n const sizeOptions = this.sizes.map(size => {\n return {\n value: size.key,\n label: size.title,\n };\n });\n\n return (\n <div className=\"default-print-size col form-group my-2 d-flex align-items-center justify-content-center\">\n <label\n htmlFor=\"print-size-select\"\n className=\"col-3 col-sm-2 col-md-4 col-lg-5 col-xl-3 col-form-label text-center px-0\">\n Print Size:\n </label>\n <Select\n className=\"col-3 col-sm-2 col-md-3 col-lg-5 col-xl-3 text-center badge-pill\"\n id=\"print-size-select\"\n label=\"Print Size\"\n name=\"default-print-size\"\n options={sizeOptions}\n value={selectedSize || this.selectedPrintSizeKey()}\n onChange={this.printSizeChanged}\n />\n </div>\n );\n }\n}\n\nPrintSizeSelector.contextTypes = {\n additionalOptions: PropTypes.object,\n};\n\nexport default PrintSizeSelector;\n","import createReactClass from 'create-react-class';\n'use strict';\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport Store from '../_utils/tools/store';\nimport FileSelectorMixin from './loader-mixins/file-selector-mixin';\nimport UrlLoaderUploadMixin from './loader-mixins/url-loader-upload-mixin';\nimport FileClearingMixin from './loader-mixins/file-clearing-mixin';\nimport BeethovenFrieze from 'libs/beethoven-frieze';\nimport PrintSizeSelector from './print-size-selector';\nimport LoaderAdditionalOptions from './additional-options';\nimport { builderDispatch, WebUI } from \"../_utils/ui\";\nimport ServiceHeader from './album-import/service-header';\n\nconst themeName = (() => {\n if (!Store.isWalmart()) {\n return Store.name.toLowerCase();\n }\n})();\n\nconst CloudImport = createReactClass({\n mixins: [UrlLoaderUploadMixin, FileSelectorMixin, FileClearingMixin],\n displayName: 'Cloud import',\n\n getInitialState() {\n return {\n albumName: null\n };\n },\n\n componentDidMount() {\n this.dispatchToken = builderDispatch.register(payload => {\n switch (payload.type) {\n case (WebUI.UPLOAD_PHOTO_REMOVED_FROM_TRAY):\n this.handlePhotoRemoved(payload.key, payload.service);\n break;\n case (WebUI.UPLOAD_ALL_PHOTOS_REMOVED_FROM_TRAY):\n this.handleAllPhotosRemoved();\n break;\n }\n });\n },\n\n UNSAFE_componentWillMount() {\n this.getIframeUrl();\n BeethovenFrieze.onImageSelected(({ url, thumb, filename, originalKey, foreignUserId = null, }) => {\n if (this.props.isActive) {\n if (url === decodeURI(url)) {\n url = encodeURI(url);\n }\n originalKey = String(originalKey || url);\n\n this.files = (this.files || []);\n\n // avoid duplicates\n if (this.files.some(file => file.originalKey === originalKey)) {\n return;\n }\n\n this.files.push({\n url: url,\n thumb: thumb,\n filename: filename,\n source: 'url',\n originalKey: originalKey,\n foreignUserId: foreignUserId,\n });\n }\n });\n\n BeethovenFrieze.onComplete(() => {\n if (this.props.isActive) {\n this.props.onFilesSelected();\n }\n });\n\n BeethovenFrieze.onTrayImageRemoved((data) => {\n const dataKey = String(data.url || data);\n if (this.props.isActive) {\n this.files = (this.files || []);\n this.files = this.files.filter(file => file.originalKey !== dataKey);\n this.props.onFilesSelected();\n }\n });\n\n BeethovenFrieze.onAlbumEntry((data) => {\n if (this.props.isActive && data !== 'root') {\n this.setState({\n albumName: data\n });\n this.props.onHideMenu(true);\n }\n\n if (this.props.isActive && data === 'root') {\n this.handleShowAlbums('root');\n }\n })\n },\n\n render() {\n let iframeUrl = this.iframeUrl ? this.iframeUrl : 'about:blank';\n\n if (!this.iframeUrl && (this.shown_already || this.props.isActive)) {\n iframeUrl = BeethovenFrieze.generateServiceUrl(this.props.service, { theme: themeName }, false);\n this.shown_already = true;\n }\n\n return (\n <div>\n {this.props.isActive && this.state.albumName &&\n <ServiceHeader\n title={this.state.albumName}\n onBackClick={() => { this.handleShowAlbums('handle_back') }}\n />\n }\n <div id={`image-loader-service-${this.props.service}`}\n className={classNames(\"image-loader-service\", \"cloud\", { \"cloud-album\": this.state.albumName }, { \"d-none\": !this.props.isActive }, this.props.service, { \"has-additional-options\": this.context.additionalOptions[LoaderAdditionalOptions.PRINT_SIZES] })}\n style={{ height: this.props.height }}>\n <div className=\"iframe-container\">\n <iframe\n aria-label={`${this.props.title} service frame`}\n className=\"image-loader-iframe\"\n frameBorder=\"0\"\n id={`image-loader-iframe-${this.props.service}`}\n ref={ref => this.iFrame = ref}\n src={iframeUrl}\n title={`${this.props.title} service frame`}\n />\n </div>\n </div>\n </div>\n );\n },\n\n handlePhotoRemoved(key, service) {\n if (service === this.props.service) {\n const message = `tray_image_removed:${key}`;\n BeethovenFrieze.sendMessage(this.iFrame, message);\n }\n },\n\n handleAllPhotosRemoved() {\n (this.files || []).forEach(file => this.handlePhotoRemoved(file.originalKey || file.url));\n },\n\n handleShowAlbums(actionName) {\n if (this.props.isActive) {\n this.props.onHideMenu(false);\n this.setState({\n albumName: null\n });\n const message = `on_album_entry:` + actionName;\n BeethovenFrieze.sendMessage(this.iFrame, message);\n }\n },\n\n getIframeUrl() {\n const source = window.urls || {};\n const list = source.cloudServices || {};\n\n this.iframeUrl = list[this.props.service];\n }\n});\n\nCloudImport.contextTypes = {\n additionalOptions: PropTypes.object\n};\n\nexport default CloudImport;\n","// https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob\n// polyfill\n// canvas.toDataURL may not work in iOS: http://stackoverflow.com/questions/26152652/ios-html5-canvas-todataurl\nif (!HTMLCanvasElement.prototype.toBlob) {\n Object.defineProperty(HTMLCanvasElement.prototype, 'toBlob', {\n value(callback, type, quality) {\n const binStr = atob(this.toDataURL(type, quality).split(',')[1]);\n const len = binStr.length;\n const arr = new Uint8Array(len);\n if (binStr.length === 0) {\n throw 'Unable to generate Data URL';\n }\n\n if (binStr.length === 0) {\n throw 'Unable to generate Data URL';\n }\n\n if (binStr.length === 0) {\n throw 'Unable to generate Data URL';\n }\n\n for (let i = 0; i < len; i++) {\n arr[i] = binStr.charCodeAt(i);\n }\n\n callback(new Blob([arr], { type: type || 'image/png' }));\n },\n });\n}\n\nconst ORIENTATION = {\n LANDSCAPE: 1,\n PORTRAIT: 2,\n};\n\nconst calculateOrientation = function (image) {\n return image.width >= image.height ? ORIENTATION.LANDSCAPE : ORIENTATION.PORTRAIT;\n};\n\n// from https://gist.github.com/mfyz/10198229#file-resize_preview-html-L100\nexport const localFileResize = function (file, size, callback) {\n const reader = new FileReader();\n\n reader.onload = onReaderLoaded;\n reader.readAsDataURL(file);\n\n function onReaderLoaded() {\n const image = new Image();\n image.onload = onImageLoaded;\n image.src = this.result;\n }\n\n function onImageLoaded() {\n const orientation = calculateOrientation(this);\n\n // shrink longest edge to size\n if (orientation === ORIENTATION.PORTRAIT && this.height > size) {\n this.width *= size / this.height;\n this.height = size;\n }\n\n if (orientation === ORIENTATION.LANDSCAPE && this.width > size) {\n this.height *= size / this.width;\n this.width = size;\n }\n\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n canvas.width = this.width;\n canvas.height = this.height;\n ctx.drawImage(this, 0, 0, this.width, this.height);\n try {\n canvas.toBlob(callback, 'image/jpeg');\n } catch (error) {\n console.warn(error); // Optional\n return callback(file);\n }\n }\n};\n\n// Disable client side file resize for touch screen devices until further notice\nexport const ABLE_TO_RESIZE = false; // screenAndStyle.isTouch();\n","import React from 'react';\nimport uniqueId from 'lodash.uniqueid';\n\nclass UploadButton extends React.Component {\n // Don't set this in the render\n id = `file-upload-${uniqueId()}`;\n\n handleKeyDown = event => {\n if (event.keyCode === 13) event.target.click();\n };\n\n render() {\n return (\n <label\n aria-label={this.props.ariaLabel}\n className='btn upload-button btn-primary btn-lg font-weight-bold'\n tabIndex='0'\n htmlFor={this.id}\n role='button'\n onKeyDown={this.handleKeyDown}\n >\n {this.props.label}\n\n <input\n id={this.id}\n type='file'\n className='d-none'\n multiple\n accept={this.props.fileValidator.acceptFileTypeString}\n onChange={this.props.onChange}\n />\n </label>\n );\n }\n};\n\nexport default UploadButton;\n","import React from 'react';\n\nconst uploadTargetRadioButton = (props) => (\n <input\n id={props.value}\n className=\"form-check-input mr-2\"\n type=\"radio\"\n name=\"source\"\n value={props.value}\n checked={props.albumOption === props.value}\n onChange={props.handleChange}\n />\n );\n\nexport default uploadTargetRadioButton;\n","const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nexport function defaultNewAlbumTitle() {\n const now = new Date();\n\n return `Uploaded on ${monthNames[now.getMonth()]} ${now.getDate()}, ${now.getFullYear()}`;\n}\n","import React from 'react';\nimport classNames from 'classnames';\nimport albums from './album-import/albums';\nimport Select from '../_utils/select-wrapper';\nimport UploadTargetRadioButton from './utils/upload-target-radio-button';\nimport { defaultNewAlbumTitle } from './default-new-album-title';\n\nclass AlbumSelector extends React.Component{\n constructor() {\n super();\n this.handleAlbumOptionChange = this.handleAlbumOptionChange.bind(this);\n this.handleNewAlbumOptionFocus = this.handleNewAlbumOptionFocus.bind(this);\n this.handleAlbumExistingOptionFocus = this.handleAlbumExistingOptionFocus.bind(this);\n this.handleSaveToAnExistingAlbum = this.handleSaveToAnExistingAlbum.bind(this);\n this.handleSaveToANewAlbum = this.handleSaveToANewAlbum.bind(this);\n\n this.state = {\n loaded: false,\n albumOption: 'new'\n };\n }\n UNSAFE_componentWillMount() {\n albums.load(() => {\n this.setState({\n loaded: true\n });\n });\n }\n componentDidMount() {\n if (!this.props.targetAlbum) {\n this.props.onAlbumSelected({\n title: defaultNewAlbumTitle()\n });\n }\n }\n render() {\n const albumList = albums.data.map(album => {\n return {\n value: album.id,\n label: album.title\n };\n });\n\n let heading = 'Create new album';\n if (albumList.length) {\n heading += ' or add to existing album';\n }\n const newAlbumTitle = defaultNewAlbumTitle();\n\n return (\n <fieldset aria-labelledby='album-select-header' className=\"album-selector\">\n <p id=\"album-select-header\">{ heading }</p>\n <div className=\"form-row form-group\">\n <div className=\"col-5\">\n <div className=\"form-check text-left\">\n <UploadTargetRadioButton value=\"new\"\n albumOption={this.state.albumOption}\n handleChange={this.handleAlbumOptionChange} />\n <label className=\"form-check-label\" htmlFor=\"new\">\n New album:\n </label>\n </div>\n </div>\n <div className=\"col-7\">\n <input ref=\"new-album-name\"\n className=\"form-control form-control-lg\"\n type=\"text\"\n placeholder={ newAlbumTitle }\n defaultValue={ newAlbumTitle }\n onChange={ this.handleSaveToANewAlbum }\n onFocus= { this.handleNewAlbumOptionFocus } />\n </div>\n </div>\n <div className={ classNames('form-row form-group', { 'd-none': albumList.length == 0 }) }>\n <div className=\"col-5\">\n <div className=\"form-check text-left\">\n <UploadTargetRadioButton value=\"existing\"\n albumOption={this.state.albumOption}\n handleChange={this.handleAlbumOptionChange} />\n <label htmlFor=\"existing\" className=\"form-check-label\">\n Existing album:\n </label>\n </div>\n </div>\n <div className=\"col-7\">\n <Select name=\"albums\"\n value={this.props.targetAlbum && this.props.targetAlbum.id || albumList[0] && albumList[0].value}\n options={albumList}\n onFocus={this.handleAlbumExistingOptionFocus}\n onChange={this.handleSaveToAnExistingAlbum} />\n </div>\n </div>\n </fieldset>\n );\n }\n handleNewAlbumOptionFocus() {\n this.setState({\n albumOption: 'new'\n });\n }\n handleAlbumExistingOptionFocus() {\n this.setState({\n albumOption: 'existing'\n });\n }\n handleAlbumOptionChange(e) {\n const value = e.target.value;\n\n this.setState({\n albumOption: value\n });\n\n if (value == 'existing' && !this.props.targetAlbum.id && albums.data[0]) {\n this.handleSaveToAnExistingAlbum(albums.data[0].id)\n }\n if (value == 'new' && !this.props.targetAlbum.title) {\n this.handleSaveToANewAlbum()\n }\n }\n handleSaveToANewAlbum() {\n this.props.onAlbumSelected({\n title: this.refs['new-album-name'].value\n });\n }\n handleSaveToAnExistingAlbum(albumId) {\n if (albumId) {\n this.props.onAlbumSelected({\n id: albumId\n });\n }\n }\n}\n\nexport default AlbumSelector;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst CustomText = ({ textKey, className }) => {\n const text = (window.customText || {})[textKey];\n\n if (!text) {\n return null;\n }\n\n return <p className={className} dangerouslySetInnerHTML={{ __html: text }} />;\n};\n\nCustomText.propTypes = {\n textKey: PropTypes.string.isRequired,\n className: PropTypes.string,\n};\n\nCustomText.defaultProps = {\n className: null,\n};\n\nexport default CustomText;\n","import createReactClass from 'create-react-class';\n('use strict');\n\n// Import Libraries\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\n// Import JS Modules\nimport {\n ABLE_TO_RESIZE,\n localFileResize,\n} from './loader-mixins/local-file-resize';\nimport GenericPaginatedUploadMixin from './loader-mixins/generic-paginated-upload-mixin';\nimport UploadAnalytics from './upload-analytics';\nimport { builderDispatch, WebUI } from '../_utils/ui';\nimport DPI from './utils/dpi';\nimport FileClearingMixin from './loader-mixins/file-clearing-mixin';\nimport FileSelectorMixin from './loader-mixins/file-selector-mixin';\nimport PrintSizeSelector from './print-size-selector';\nimport UploadButton from './utils/upload-button';\nimport AlbumSelector from './album-selector';\nimport CustomText from './custom-text';\nimport ImageUploadFileValidator from '../_utils/image-upload-file-validator';\nimport AnalyticsHandler from '../_libs/analytics/checkout-google-analytics';\nimport sendToGoogleAnalytics from '../_prism-builder/desktop/slot-tools/send-to-google-analytics';\nimport LoaderAdditionalOptions from './additional-options';\n\nconst LocalFileImportNative = createReactClass({\n mixins: [GenericPaginatedUploadMixin, FileSelectorMixin, FileClearingMixin],\n displayName: 'Local file import native',\n\n[LoaderAdditionalOptions.CLOSE_ON_FILE_SELECTION]: true,\n\n getInitialState() {\n const { App } = window;\n this.files = this.files || [];\n\n return {\n loggedIn: App && App.order.logged_in(),\n };\n },\n componentDidMount() {\n this.builderDispatchToken = builderDispatch.register(payload => {\n if (payload.type === WebUI.LOGIN) {\n this.setState({\n loggedIn: true,\n });\n }\n });\n const component = ReactDOM.findDOMNode(this);\n component.addEventListener('dragover', this.handleDragOver, false);\n component.addEventListener('dragenter', this.handleDragEnter, false);\n component.addEventListener('dragleave', this.handleDragLeave, false);\n component.addEventListener('drop', this.handleDrop, false);\n },\n componentWillUnmount() {\n const component = ReactDOM.findDOMNode(this);\n component.removeEventListener('dragover', this.handleDragOver, false);\n component.removeEventListener('dragenter', this.handleDragEnter, false);\n component.removeEventListener('dragleave', this.handleDragLeave, false);\n component.removeEventListener('drop', this.handleDrop, false);\n },\n sendAnalytics(eventCategory) {\n const eventLabel = UploadAnalytics.eventTypes(\n this.files.map(f => f.uploadAnalytics)\n );\n\n const payload = {\n type: WebUI.Analytics.SEND,\n eventCategory: eventCategory,\n eventAction: 'device',\n eventLabel: eventLabel,\n eventValue: this.files.length,\n };\n\n AnalyticsHandler.handleAnalyticsEvent(payload);\n },\n\n render() {\n return (\n <div\n id={'image-loader-service-' + this.props.service}\n style={{ height: this.props.height }}\n className={classNames(\n 'text-center image-loader-service',\n this.props.service,\n { 'd-none': !this.props.isActive }\n )}\n tabIndex=\"0\">\n <div className=\"d-flex d-md-none h-100 flex-column justify-content-center\">\n <i className=\"d-none d-lg-block large fas fa-laptop\" />\n <i className=\"mx-auto d-lg-none large fas fa-mobile-alt\" />\n <h3 className=\"title service-title font-weight-bold\">My Phone</h3>\n <small>Upload photos from your phone.</small>\n <div className=\"mobile-file-upload-btn\">\n <UploadButton\n label=\"Upload\"\n ariaLabel=\"Upload\"\n onChange={this.handleFileInputChange}\n fileValidator={this.props.fileValidator}\n />\n </div>\n <CustomText\n textKey=\"imageLoaderLocalFileImportBannerHtml\"\n className=\"local-file-import-banner local-file-import-banner-mweb d-none\"\n />\n </div>\n <div id=\"fileList\" />\n <div\n id=\"dropArea\"\n className=\"d-none d-md-flex h-100 flex-column justify-content-center align-items-center\">\n <div className=\"album-selector-box d-none\">\n <div className=\"image-loader-form-elements\">\n {!!this.state.loggedIn && (\n <AlbumSelector\n targetAlbum={this.props.targetAlbum}\n onAlbumSelected={this.handleTargetAlbumSelected}\n />\n )}\n <PrintSizeSelector />\n </div>\n </div>\n <div className=\"device\">\n <i className=\"large fas fa-cloud-upload-alt\" />\n <h3 className=\"title font-weight-bold\">Drag & Drop Here</h3>\n <small className=\"d-block\">*Upload only jpeg or jpg.</small>\n <UploadButton\n label=\"Upload Photos\"\n ariaLabel=\"Upload\"\n onChange={this.handleFileInputChange}\n fileValidator={this.props.fileValidator}\n />\n </div>\n\n <CustomText\n textKey=\"imageLoaderLocalFileImportBannerHtml\"\n className=\"local-file-import-banner local-file-import-banner-rweb d-none\"\n />\n </div>\n </div>\n );\n },\n\n handleTargetAlbumSelected(album) {\n if (this.props.onTargetAlbumSelected)\n this.props.onTargetAlbumSelected(album);\n },\n\n draggable() {\n return (\n 'draggable' in document.createElement('span') && !this.props.isMobile\n );\n },\n\n handleDragOver(e) {\n e.stopPropagation();\n e.preventDefault();\n },\n\n dragCounter: 0,\n handleDragEnter(e) {\n e.preventDefault();\n\n if (this.dragCounter++ === 0) $('#dropArea').addClass('dragover');\n },\n\n handleDragLeave(e) {\n if (--this.dragCounter === 0) $('#dropArea').removeClass('dragover');\n },\n\n handleDrop(e) {\n e.preventDefault();\n\n this.dragCounter = 0;\n $('#dropArea').removeClass('dragover');\n\n const files = Array.prototype.slice.apply(e.dataTransfer.files);\n this.addFiles(files);\n\n return false;\n },\n\n triggerFeatureTracking() {\n sendToGoogleAnalytics('local-import', '');\n },\n\n\n handleFileInputChange(e) {\n this.triggerFeatureTracking();\n const $fileInput = e.target;\n const files = Array.from($fileInput.files);\n\n if (!files.length) return;\n\n this.addFiles(files);\n $fileInput.value = '';\n },\n\n addFiles(files) {\n const filteredFiles = files.filter(\n this.props.fileValidator.isAcceptedFileType\n );\n\n if (!!filteredFiles.length) {\n this.files = this.files.concat(filteredFiles);\n this.props.onFilesSelected();\n }\n },\n\n _buildFormData(formData, file) {\n var deferred = $.Deferred();\n\n formData.append('name', file.name);\n if (ABLE_TO_RESIZE) {\n localFileResize(\n file,\n this.props.optimiseUploadFiles ? DPI.DPI_300 : DPI.DPI_HIGH,\n appendFile\n );\n } else {\n appendFile(file);\n }\n\n return deferred.promise();\n\n function appendFile(file) {\n formData.append('file', file);\n deferred.resolve(formData);\n }\n },\n});\n\nLocalFileImportNative.defaultProps = {\n fileValidator: new ImageUploadFileValidator(),\n};\n\nexport default LocalFileImportNative;\n","/*!\n * Pusher JavaScript Library v8.3.0\n * https://pusher.com/\n *\n * Copyright 2020, Pusher\n * Released under the MIT licence.\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Pusher\"] = factory();\n\telse\n\t\troot[\"Pusher\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 2);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package base64 implements Base64 encoding and decoding.\n */\n// Invalid character used in decoding to indicate\n// that the character to decode is out of range of\n// alphabet and cannot be decoded.\nvar INVALID_BYTE = 256;\n/**\n * Implements standard Base64 encoding.\n *\n * Operates in constant time.\n */\nvar Coder = /** @class */ (function () {\n // TODO(dchest): methods to encode chunk-by-chunk.\n function Coder(_paddingCharacter) {\n if (_paddingCharacter === void 0) { _paddingCharacter = \"=\"; }\n this._paddingCharacter = _paddingCharacter;\n }\n Coder.prototype.encodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 8 + 5) / 6 | 0;\n }\n return (length + 2) / 3 * 4 | 0;\n };\n Coder.prototype.encode = function (data) {\n var out = \"\";\n var i = 0;\n for (; i < data.length - 2; i += 3) {\n var c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n out += this._encodeByte((c >>> 1 * 6) & 63);\n out += this._encodeByte((c >>> 0 * 6) & 63);\n }\n var left = data.length - i;\n if (left > 0) {\n var c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n if (left === 2) {\n out += this._encodeByte((c >>> 1 * 6) & 63);\n }\n else {\n out += this._paddingCharacter || \"\";\n }\n out += this._paddingCharacter || \"\";\n }\n return out;\n };\n Coder.prototype.maxDecodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 6 + 7) / 8 | 0;\n }\n return length / 4 * 3 | 0;\n };\n Coder.prototype.decodedLength = function (s) {\n return this.maxDecodedLength(s.length - this._getPaddingLength(s));\n };\n Coder.prototype.decode = function (s) {\n if (s.length === 0) {\n return new Uint8Array(0);\n }\n var paddingLength = this._getPaddingLength(s);\n var length = s.length - paddingLength;\n var out = new Uint8Array(this.maxDecodedLength(length));\n var op = 0;\n var i = 0;\n var haveBad = 0;\n var v0 = 0, v1 = 0, v2 = 0, v3 = 0;\n for (; i < length - 4; i += 4) {\n v0 = this._decodeChar(s.charCodeAt(i + 0));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n out[op++] = (v1 << 4) | (v2 >>> 2);\n out[op++] = (v2 << 6) | v3;\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n haveBad |= v2 & INVALID_BYTE;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (i < length - 1) {\n v0 = this._decodeChar(s.charCodeAt(i));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n }\n if (i < length - 2) {\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n out[op++] = (v1 << 4) | (v2 >>> 2);\n haveBad |= v2 & INVALID_BYTE;\n }\n if (i < length - 3) {\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v2 << 6) | v3;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (haveBad !== 0) {\n throw new Error(\"Base64Coder: incorrect characters for decoding\");\n }\n return out;\n };\n // Standard encoding have the following encoded/decoded ranges,\n // which we need to convert between.\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 + /\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 43 47\n //\n // Encode 6 bits in b into a new character.\n Coder.prototype._encodeByte = function (b) {\n // Encoding uses constant time operations as follows:\n //\n // 1. Define comparison of A with B using (A - B) >>> 8:\n // if A > B, then result is positive integer\n // if A <= B, then result is 0\n //\n // 2. Define selection of C or 0 using bitwise AND: X & C:\n // if X == 0, then result is 0\n // if X != 0, then result is C\n //\n // 3. Start with the smallest comparison (b >= 0), which is always\n // true, so set the result to the starting ASCII value (65).\n //\n // 4. Continue comparing b to higher ASCII values, and selecting\n // zero if comparison isn't true, otherwise selecting a value\n // to add to result, which:\n //\n // a) undoes the previous addition\n // b) provides new value to add\n //\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47);\n return String.fromCharCode(result);\n };\n // Decode a character code into a byte.\n // Must return 256 if character is out of alphabet range.\n Coder.prototype._decodeChar = function (c) {\n // Decoding works similar to encoding: using the same comparison\n // function, but now it works on ranges: result is always incremented\n // by value, but this value becomes zero if the range is not\n // satisfied.\n //\n // Decoding starts with invalid value, 256, which is then\n // subtracted when the range is satisfied. If none of the ranges\n // apply, the function returns 256, which is then checked by\n // the caller to throw error.\n var result = INVALID_BYTE; // start with invalid character\n // c == 43 (c > 42 and c < 44)\n result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62);\n // c == 47 (c > 46 and c < 48)\n result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n Coder.prototype._getPaddingLength = function (s) {\n var paddingLength = 0;\n if (this._paddingCharacter) {\n for (var i = s.length - 1; i >= 0; i--) {\n if (s[i] !== this._paddingCharacter) {\n break;\n }\n paddingLength++;\n }\n if (s.length < 4 || paddingLength > 2) {\n throw new Error(\"Base64Coder: incorrect padding\");\n }\n }\n return paddingLength;\n };\n return Coder;\n}());\nexports.Coder = Coder;\nvar stdCoder = new Coder();\nfunction encode(data) {\n return stdCoder.encode(data);\n}\nexports.encode = encode;\nfunction decode(s) {\n return stdCoder.decode(s);\n}\nexports.decode = decode;\n/**\n * Implements URL-safe Base64 encoding.\n * (Same as Base64, but '+' is replaced with '-', and '/' with '_').\n *\n * Operates in constant time.\n */\nvar URLSafeCoder = /** @class */ (function (_super) {\n __extends(URLSafeCoder, _super);\n function URLSafeCoder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // URL-safe encoding have the following encoded/decoded ranges:\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 - _\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 45 95\n //\n URLSafeCoder.prototype._encodeByte = function (b) {\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);\n return String.fromCharCode(result);\n };\n URLSafeCoder.prototype._decodeChar = function (c) {\n var result = INVALID_BYTE;\n // c == 45 (c > 44 and c < 46)\n result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);\n // c == 95 (c > 94 and c < 96)\n result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n return URLSafeCoder;\n}(Coder));\nexports.URLSafeCoder = URLSafeCoder;\nvar urlSafeCoder = new URLSafeCoder();\nfunction encodeURLSafe(data) {\n return urlSafeCoder.encode(data);\n}\nexports.encodeURLSafe = encodeURLSafe;\nfunction decodeURLSafe(s) {\n return urlSafeCoder.decode(s);\n}\nexports.decodeURLSafe = decodeURLSafe;\nexports.encodedLength = function (length) {\n return stdCoder.encodedLength(length);\n};\nexports.maxDecodedLength = function (length) {\n return stdCoder.maxDecodedLength(length);\n};\nexports.decodedLength = function (s) {\n return stdCoder.decodedLength(s);\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package utf8 implements UTF-8 encoding and decoding.\n */\nvar INVALID_UTF16 = \"utf8: invalid string\";\nvar INVALID_UTF8 = \"utf8: invalid source encoding\";\n/**\n * Encodes the given string into UTF-8 byte array.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encode(s) {\n // Calculate result length and allocate output array.\n // encodedLength() also validates string and throws errors,\n // so we don't need repeat validation here.\n var arr = new Uint8Array(encodedLength(s));\n var pos = 0;\n for (var i = 0; i < s.length; i++) {\n var c = s.charCodeAt(i);\n if (c < 0x80) {\n arr[pos++] = c;\n }\n else if (c < 0x800) {\n arr[pos++] = 0xc0 | c >> 6;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n else if (c < 0xd800) {\n arr[pos++] = 0xe0 | c >> 12;\n arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n else {\n i++; // get one more character\n c = (c & 0x3ff) << 10;\n c |= s.charCodeAt(i) & 0x3ff;\n c += 0x10000;\n arr[pos++] = 0xf0 | c >> 18;\n arr[pos++] = 0x80 | (c >> 12) & 0x3f;\n arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n }\n return arr;\n}\nexports.encode = encode;\n/**\n * Returns the number of bytes required to encode the given string into UTF-8.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encodedLength(s) {\n var result = 0;\n for (var i = 0; i < s.length; i++) {\n var c = s.charCodeAt(i);\n if (c < 0x80) {\n result += 1;\n }\n else if (c < 0x800) {\n result += 2;\n }\n else if (c < 0xd800) {\n result += 3;\n }\n else if (c <= 0xdfff) {\n if (i >= s.length - 1) {\n throw new Error(INVALID_UTF16);\n }\n i++; // \"eat\" next character\n result += 4;\n }\n else {\n throw new Error(INVALID_UTF16);\n }\n }\n return result;\n}\nexports.encodedLength = encodedLength;\n/**\n * Decodes the given byte array from UTF-8 into a string.\n * Throws if encoding is invalid.\n */\nfunction decode(arr) {\n var chars = [];\n for (var i = 0; i < arr.length; i++) {\n var b = arr[i];\n if (b & 0x80) {\n var min = void 0;\n if (b < 0xe0) {\n // Need 1 more byte.\n if (i >= arr.length) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n if ((n1 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x1f) << 6 | (n1 & 0x3f);\n min = 0x80;\n }\n else if (b < 0xf0) {\n // Need 2 more bytes.\n if (i >= arr.length - 1) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n var n2 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 12 | (n1 & 0x3f) << 6 | (n2 & 0x3f);\n min = 0x800;\n }\n else if (b < 0xf8) {\n // Need 3 more bytes.\n if (i >= arr.length - 2) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n var n2 = arr[++i];\n var n3 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80 || (n3 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 18 | (n1 & 0x3f) << 12 | (n2 & 0x3f) << 6 | (n3 & 0x3f);\n min = 0x10000;\n }\n else {\n throw new Error(INVALID_UTF8);\n }\n if (b < min || (b >= 0xd800 && b <= 0xdfff)) {\n throw new Error(INVALID_UTF8);\n }\n if (b >= 0x10000) {\n // Surrogate pair.\n if (b > 0x10ffff) {\n throw new Error(INVALID_UTF8);\n }\n b -= 0x10000;\n chars.push(String.fromCharCode(0xd800 | (b >> 10)));\n b = 0xdc00 | (b & 0x3ff);\n }\n }\n chars.push(String.fromCharCode(b));\n }\n return chars.join(\"\");\n}\nexports.decode = decode;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// required so we don't have to do require('pusher').default etc.\nmodule.exports = __webpack_require__(3).default;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/script_receiver_factory.ts\nclass ScriptReceiverFactory {\n constructor(prefix, name) {\n this.lastId = 0;\n this.prefix = prefix;\n this.name = name;\n }\n create(callback) {\n this.lastId++;\n var number = this.lastId;\n var id = this.prefix + number;\n var name = this.name + '[' + number + ']';\n var called = false;\n var callbackWrapper = function () {\n if (!called) {\n callback.apply(null, arguments);\n called = true;\n }\n };\n this[number] = callbackWrapper;\n return { number: number, id: id, name: name, callback: callbackWrapper };\n }\n remove(receiver) {\n delete this[receiver.number];\n }\n}\nvar ScriptReceivers = new ScriptReceiverFactory('_pusher_script_', 'Pusher.ScriptReceivers');\n\n// CONCATENATED MODULE: ./src/core/defaults.ts\nvar Defaults = {\n VERSION: \"8.3.0\",\n PROTOCOL: 7,\n wsPort: 80,\n wssPort: 443,\n wsPath: '',\n httpHost: 'sockjs.pusher.com',\n httpPort: 80,\n httpsPort: 443,\n httpPath: '/pusher',\n stats_host: 'stats.pusher.com',\n authEndpoint: '/pusher/auth',\n authTransport: 'ajax',\n activityTimeout: 120000,\n pongTimeout: 30000,\n unavailableTimeout: 10000,\n userAuthentication: {\n endpoint: '/pusher/user-auth',\n transport: 'ajax'\n },\n channelAuthorization: {\n endpoint: '/pusher/auth',\n transport: 'ajax'\n },\n cdn_http: \"http://js.pusher.com\",\n cdn_https: \"https://js.pusher.com\",\n dependency_suffix: \"\"\n};\n/* harmony default export */ var defaults = (Defaults);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/dependency_loader.ts\n\n\nclass dependency_loader_DependencyLoader {\n constructor(options) {\n this.options = options;\n this.receivers = options.receivers || ScriptReceivers;\n this.loading = {};\n }\n load(name, options, callback) {\n var self = this;\n if (self.loading[name] && self.loading[name].length > 0) {\n self.loading[name].push(callback);\n }\n else {\n self.loading[name] = [callback];\n var request = runtime.createScriptRequest(self.getPath(name, options));\n var receiver = self.receivers.create(function (error) {\n self.receivers.remove(receiver);\n if (self.loading[name]) {\n var callbacks = self.loading[name];\n delete self.loading[name];\n var successCallback = function (wasSuccessful) {\n if (!wasSuccessful) {\n request.cleanup();\n }\n };\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i](error, successCallback);\n }\n }\n });\n request.send(receiver);\n }\n }\n getRoot(options) {\n var cdn;\n var protocol = runtime.getDocument().location.protocol;\n if ((options && options.useTLS) || protocol === 'https:') {\n cdn = this.options.cdn_https;\n }\n else {\n cdn = this.options.cdn_http;\n }\n return cdn.replace(/\\/*$/, '') + '/' + this.options.version;\n }\n getPath(name, options) {\n return this.getRoot(options) + '/' + name + this.options.suffix + '.js';\n }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/dependencies.ts\n\n\n\nvar DependenciesReceivers = new ScriptReceiverFactory('_pusher_dependencies', 'Pusher.DependenciesReceivers');\nvar Dependencies = new dependency_loader_DependencyLoader({\n cdn_http: defaults.cdn_http,\n cdn_https: defaults.cdn_https,\n version: defaults.VERSION,\n suffix: defaults.dependency_suffix,\n receivers: DependenciesReceivers\n});\n\n// CONCATENATED MODULE: ./src/core/utils/url_store.ts\nconst urlStore = {\n baseUrl: 'https://pusher.com',\n urls: {\n authenticationEndpoint: {\n path: '/docs/channels/server_api/authenticating_users'\n },\n authorizationEndpoint: {\n path: '/docs/channels/server_api/authorizing-users/'\n },\n javascriptQuickStart: {\n path: '/docs/javascript_quick_start'\n },\n triggeringClientEvents: {\n path: '/docs/client_api_guide/client_events#trigger-events'\n },\n encryptedChannelSupport: {\n fullUrl: 'https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support'\n }\n }\n};\nconst buildLogSuffix = function (key) {\n const urlPrefix = 'See:';\n const urlObj = urlStore.urls[key];\n if (!urlObj)\n return '';\n let url;\n if (urlObj.fullUrl) {\n url = urlObj.fullUrl;\n }\n else if (urlObj.path) {\n url = urlStore.baseUrl + urlObj.path;\n }\n if (!url)\n return '';\n return `${urlPrefix} ${url}`;\n};\n/* harmony default export */ var url_store = ({ buildLogSuffix });\n\n// CONCATENATED MODULE: ./src/core/auth/options.ts\nvar AuthRequestType;\n(function (AuthRequestType) {\n AuthRequestType[\"UserAuthentication\"] = \"user-authentication\";\n AuthRequestType[\"ChannelAuthorization\"] = \"channel-authorization\";\n})(AuthRequestType || (AuthRequestType = {}));\n\n// CONCATENATED MODULE: ./src/core/errors.ts\nclass BadEventName extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass BadChannelName extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass RequestTimedOut extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass TransportPriorityTooLow extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass TransportClosed extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass UnsupportedFeature extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass UnsupportedTransport extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass UnsupportedStrategy extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass HTTPAuthError extends Error {\n constructor(status, msg) {\n super(msg);\n this.status = status;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/auth/xhr_auth.ts\n\n\n\n\nconst ajax = function (context, query, authOptions, authRequestType, callback) {\n const xhr = runtime.createXHR();\n xhr.open('POST', authOptions.endpoint, true);\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n for (var headerName in authOptions.headers) {\n xhr.setRequestHeader(headerName, authOptions.headers[headerName]);\n }\n if (authOptions.headersProvider != null) {\n let dynamicHeaders = authOptions.headersProvider();\n for (var headerName in dynamicHeaders) {\n xhr.setRequestHeader(headerName, dynamicHeaders[headerName]);\n }\n }\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n let data;\n let parsed = false;\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n }\n catch (e) {\n callback(new HTTPAuthError(200, `JSON returned from ${authRequestType.toString()} endpoint was invalid, yet status code was 200. Data was: ${xhr.responseText}`), null);\n }\n if (parsed) {\n callback(null, data);\n }\n }\n else {\n let suffix = '';\n switch (authRequestType) {\n case AuthRequestType.UserAuthentication:\n suffix = url_store.buildLogSuffix('authenticationEndpoint');\n break;\n case AuthRequestType.ChannelAuthorization:\n suffix = `Clients must be authorized to join private or presence channels. ${url_store.buildLogSuffix('authorizationEndpoint')}`;\n break;\n }\n callback(new HTTPAuthError(xhr.status, `Unable to retrieve auth string from ${authRequestType.toString()} endpoint - ` +\n `received status: ${xhr.status} from ${authOptions.endpoint}. ${suffix}`), null);\n }\n }\n };\n xhr.send(query);\n return xhr;\n};\n/* harmony default export */ var xhr_auth = (ajax);\n\n// CONCATENATED MODULE: ./src/core/base64.ts\nfunction encode(s) {\n return btoa(utob(s));\n}\nvar fromCharCode = String.fromCharCode;\nvar b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nvar b64tab = {};\nfor (var base64_i = 0, l = b64chars.length; base64_i < l; base64_i++) {\n b64tab[b64chars.charAt(base64_i)] = base64_i;\n}\nvar cb_utob = function (c) {\n var cc = c.charCodeAt(0);\n return cc < 0x80\n ? c\n : cc < 0x800\n ? fromCharCode(0xc0 | (cc >>> 6)) + fromCharCode(0x80 | (cc & 0x3f))\n : fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) +\n fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) +\n fromCharCode(0x80 | (cc & 0x3f));\n};\nvar utob = function (u) {\n return u.replace(/[^\\x00-\\x7F]/g, cb_utob);\n};\nvar cb_encode = function (ccc) {\n var padlen = [0, 2, 1][ccc.length % 3];\n var ord = (ccc.charCodeAt(0) << 16) |\n ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) |\n (ccc.length > 2 ? ccc.charCodeAt(2) : 0);\n var chars = [\n b64chars.charAt(ord >>> 18),\n b64chars.charAt((ord >>> 12) & 63),\n padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),\n padlen >= 1 ? '=' : b64chars.charAt(ord & 63)\n ];\n return chars.join('');\n};\nvar btoa = window.btoa ||\n function (b) {\n return b.replace(/[\\s\\S]{1,3}/g, cb_encode);\n };\n\n// CONCATENATED MODULE: ./src/core/utils/timers/abstract_timer.ts\nclass Timer {\n constructor(set, clear, delay, callback) {\n this.clear = clear;\n this.timer = set(() => {\n if (this.timer) {\n this.timer = callback(this.timer);\n }\n }, delay);\n }\n isRunning() {\n return this.timer !== null;\n }\n ensureAborted() {\n if (this.timer) {\n this.clear(this.timer);\n this.timer = null;\n }\n }\n}\n/* harmony default export */ var abstract_timer = (Timer);\n\n// CONCATENATED MODULE: ./src/core/utils/timers/index.ts\n\nfunction timers_clearTimeout(timer) {\n window.clearTimeout(timer);\n}\nfunction timers_clearInterval(timer) {\n window.clearInterval(timer);\n}\nclass timers_OneOffTimer extends abstract_timer {\n constructor(delay, callback) {\n super(setTimeout, timers_clearTimeout, delay, function (timer) {\n callback();\n return null;\n });\n }\n}\nclass timers_PeriodicTimer extends abstract_timer {\n constructor(delay, callback) {\n super(setInterval, timers_clearInterval, delay, function (timer) {\n callback();\n return timer;\n });\n }\n}\n\n// CONCATENATED MODULE: ./src/core/util.ts\n\nvar Util = {\n now() {\n if (Date.now) {\n return Date.now();\n }\n else {\n return new Date().valueOf();\n }\n },\n defer(callback) {\n return new timers_OneOffTimer(0, callback);\n },\n method(name, ...args) {\n var boundArguments = Array.prototype.slice.call(arguments, 1);\n return function (object) {\n return object[name].apply(object, boundArguments.concat(arguments));\n };\n }\n};\n/* harmony default export */ var util = (Util);\n\n// CONCATENATED MODULE: ./src/core/utils/collections.ts\n\n\nfunction extend(target, ...sources) {\n for (var i = 0; i < sources.length; i++) {\n var extensions = sources[i];\n for (var property in extensions) {\n if (extensions[property] &&\n extensions[property].constructor &&\n extensions[property].constructor === Object) {\n target[property] = extend(target[property] || {}, extensions[property]);\n }\n else {\n target[property] = extensions[property];\n }\n }\n }\n return target;\n}\nfunction stringify() {\n var m = ['Pusher'];\n for (var i = 0; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n m.push(arguments[i]);\n }\n else {\n m.push(safeJSONStringify(arguments[i]));\n }\n }\n return m.join(' : ');\n}\nfunction arrayIndexOf(array, item) {\n var nativeIndexOf = Array.prototype.indexOf;\n if (array === null) {\n return -1;\n }\n if (nativeIndexOf && array.indexOf === nativeIndexOf) {\n return array.indexOf(item);\n }\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] === item) {\n return i;\n }\n }\n return -1;\n}\nfunction objectApply(object, f) {\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n f(object[key], key, object);\n }\n }\n}\nfunction keys(object) {\n var keys = [];\n objectApply(object, function (_, key) {\n keys.push(key);\n });\n return keys;\n}\nfunction values(object) {\n var values = [];\n objectApply(object, function (value) {\n values.push(value);\n });\n return values;\n}\nfunction apply(array, f, context) {\n for (var i = 0; i < array.length; i++) {\n f.call(context || window, array[i], i, array);\n }\n}\nfunction map(array, f) {\n var result = [];\n for (var i = 0; i < array.length; i++) {\n result.push(f(array[i], i, array, result));\n }\n return result;\n}\nfunction mapObject(object, f) {\n var result = {};\n objectApply(object, function (value, key) {\n result[key] = f(value);\n });\n return result;\n}\nfunction filter(array, test) {\n test =\n test ||\n function (value) {\n return !!value;\n };\n var result = [];\n for (var i = 0; i < array.length; i++) {\n if (test(array[i], i, array, result)) {\n result.push(array[i]);\n }\n }\n return result;\n}\nfunction filterObject(object, test) {\n var result = {};\n objectApply(object, function (value, key) {\n if ((test && test(value, key, object, result)) || Boolean(value)) {\n result[key] = value;\n }\n });\n return result;\n}\nfunction flatten(object) {\n var result = [];\n objectApply(object, function (value, key) {\n result.push([key, value]);\n });\n return result;\n}\nfunction any(array, test) {\n for (var i = 0; i < array.length; i++) {\n if (test(array[i], i, array)) {\n return true;\n }\n }\n return false;\n}\nfunction collections_all(array, test) {\n for (var i = 0; i < array.length; i++) {\n if (!test(array[i], i, array)) {\n return false;\n }\n }\n return true;\n}\nfunction encodeParamsObject(data) {\n return mapObject(data, function (value) {\n if (typeof value === 'object') {\n value = safeJSONStringify(value);\n }\n return encodeURIComponent(encode(value.toString()));\n });\n}\nfunction buildQueryString(data) {\n var params = filterObject(data, function (value) {\n return value !== undefined;\n });\n var query = map(flatten(encodeParamsObject(params)), util.method('join', '=')).join('&');\n return query;\n}\nfunction decycleObject(object) {\n var objects = [], paths = [];\n return (function derez(value, path) {\n var i, name, nu;\n switch (typeof value) {\n case 'object':\n if (!value) {\n return null;\n }\n for (i = 0; i < objects.length; i += 1) {\n if (objects[i] === value) {\n return { $ref: paths[i] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n nu = [];\n for (i = 0; i < value.length; i += 1) {\n nu[i] = derez(value[i], path + '[' + i + ']');\n }\n }\n else {\n nu = {};\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n nu[name] = derez(value[name], path + '[' + JSON.stringify(name) + ']');\n }\n }\n }\n return nu;\n case 'number':\n case 'string':\n case 'boolean':\n return value;\n }\n })(object, '$');\n}\nfunction safeJSONStringify(source) {\n try {\n return JSON.stringify(source);\n }\n catch (e) {\n return JSON.stringify(decycleObject(source));\n }\n}\n\n// CONCATENATED MODULE: ./src/core/logger.ts\n\n\nclass logger_Logger {\n constructor() {\n this.globalLog = (message) => {\n if (window.console && window.console.log) {\n window.console.log(message);\n }\n };\n }\n debug(...args) {\n this.log(this.globalLog, args);\n }\n warn(...args) {\n this.log(this.globalLogWarn, args);\n }\n error(...args) {\n this.log(this.globalLogError, args);\n }\n globalLogWarn(message) {\n if (window.console && window.console.warn) {\n window.console.warn(message);\n }\n else {\n this.globalLog(message);\n }\n }\n globalLogError(message) {\n if (window.console && window.console.error) {\n window.console.error(message);\n }\n else {\n this.globalLogWarn(message);\n }\n }\n log(defaultLoggingFunction, ...args) {\n var message = stringify.apply(this, arguments);\n if (core_pusher.log) {\n core_pusher.log(message);\n }\n else if (core_pusher.logToConsole) {\n const log = defaultLoggingFunction.bind(this);\n log(message);\n }\n }\n}\n/* harmony default export */ var logger = (new logger_Logger());\n\n// CONCATENATED MODULE: ./src/runtimes/web/auth/jsonp_auth.ts\n\nvar jsonp = function (context, query, authOptions, authRequestType, callback) {\n if (authOptions.headers !== undefined ||\n authOptions.headersProvider != null) {\n logger.warn(`To send headers with the ${authRequestType.toString()} request, you must use AJAX, rather than JSONP.`);\n }\n var callbackName = context.nextAuthCallbackID.toString();\n context.nextAuthCallbackID++;\n var document = context.getDocument();\n var script = document.createElement('script');\n context.auth_callbacks[callbackName] = function (data) {\n callback(null, data);\n };\n var callback_name = \"Pusher.auth_callbacks['\" + callbackName + \"']\";\n script.src =\n authOptions.endpoint +\n '?callback=' +\n encodeURIComponent(callback_name) +\n '&' +\n query;\n var head = document.getElementsByTagName('head')[0] || document.documentElement;\n head.insertBefore(script, head.firstChild);\n};\n/* harmony default export */ var jsonp_auth = (jsonp);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/script_request.ts\nclass ScriptRequest {\n constructor(src) {\n this.src = src;\n }\n send(receiver) {\n var self = this;\n var errorString = 'Error loading ' + self.src;\n self.script = document.createElement('script');\n self.script.id = receiver.id;\n self.script.src = self.src;\n self.script.type = 'text/javascript';\n self.script.charset = 'UTF-8';\n if (self.script.addEventListener) {\n self.script.onerror = function () {\n receiver.callback(errorString);\n };\n self.script.onload = function () {\n receiver.callback(null);\n };\n }\n else {\n self.script.onreadystatechange = function () {\n if (self.script.readyState === 'loaded' ||\n self.script.readyState === 'complete') {\n receiver.callback(null);\n }\n };\n }\n if (self.script.async === undefined &&\n document.attachEvent &&\n /opera/i.test(navigator.userAgent)) {\n self.errorScript = document.createElement('script');\n self.errorScript.id = receiver.id + '_error';\n self.errorScript.text = receiver.name + \"('\" + errorString + \"');\";\n self.script.async = self.errorScript.async = false;\n }\n else {\n self.script.async = true;\n }\n var head = document.getElementsByTagName('head')[0];\n head.insertBefore(self.script, head.firstChild);\n if (self.errorScript) {\n head.insertBefore(self.errorScript, self.script.nextSibling);\n }\n }\n cleanup() {\n if (this.script) {\n this.script.onload = this.script.onerror = null;\n this.script.onreadystatechange = null;\n }\n if (this.script && this.script.parentNode) {\n this.script.parentNode.removeChild(this.script);\n }\n if (this.errorScript && this.errorScript.parentNode) {\n this.errorScript.parentNode.removeChild(this.errorScript);\n }\n this.script = null;\n this.errorScript = null;\n }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/jsonp_request.ts\n\n\nclass jsonp_request_JSONPRequest {\n constructor(url, data) {\n this.url = url;\n this.data = data;\n }\n send(receiver) {\n if (this.request) {\n return;\n }\n var query = buildQueryString(this.data);\n var url = this.url + '/' + receiver.number + '?' + query;\n this.request = runtime.createScriptRequest(url);\n this.request.send(receiver);\n }\n cleanup() {\n if (this.request) {\n this.request.cleanup();\n }\n }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/timeline/jsonp_timeline.ts\n\n\nvar getAgent = function (sender, useTLS) {\n return function (data, callback) {\n var scheme = 'http' + (useTLS ? 's' : '') + '://';\n var url = scheme + (sender.host || sender.options.host) + sender.options.path;\n var request = runtime.createJSONPRequest(url, data);\n var receiver = runtime.ScriptReceivers.create(function (error, result) {\n ScriptReceivers.remove(receiver);\n request.cleanup();\n if (result && result.host) {\n sender.host = result.host;\n }\n if (callback) {\n callback(error, result);\n }\n });\n request.send(receiver);\n };\n};\nvar jsonp_timeline_jsonp = {\n name: 'jsonp',\n getAgent\n};\n/* harmony default export */ var jsonp_timeline = (jsonp_timeline_jsonp);\n\n// CONCATENATED MODULE: ./src/core/transports/url_schemes.ts\n\nfunction getGenericURL(baseScheme, params, path) {\n var scheme = baseScheme + (params.useTLS ? 's' : '');\n var host = params.useTLS ? params.hostTLS : params.hostNonTLS;\n return scheme + '://' + host + path;\n}\nfunction getGenericPath(key, queryString) {\n var path = '/app/' + key;\n var query = '?protocol=' +\n defaults.PROTOCOL +\n '&client=js' +\n '&version=' +\n defaults.VERSION +\n (queryString ? '&' + queryString : '');\n return path + query;\n}\nvar ws = {\n getInitial: function (key, params) {\n var path = (params.httpPath || '') + getGenericPath(key, 'flash=false');\n return getGenericURL('ws', params, path);\n }\n};\nvar http = {\n getInitial: function (key, params) {\n var path = (params.httpPath || '/pusher') + getGenericPath(key);\n return getGenericURL('http', params, path);\n }\n};\nvar sockjs = {\n getInitial: function (key, params) {\n return getGenericURL('http', params, params.httpPath || '/pusher');\n },\n getPath: function (key, params) {\n return getGenericPath(key);\n }\n};\n\n// CONCATENATED MODULE: ./src/core/events/callback_registry.ts\n\nclass callback_registry_CallbackRegistry {\n constructor() {\n this._callbacks = {};\n }\n get(name) {\n return this._callbacks[prefix(name)];\n }\n add(name, callback, context) {\n var prefixedEventName = prefix(name);\n this._callbacks[prefixedEventName] =\n this._callbacks[prefixedEventName] || [];\n this._callbacks[prefixedEventName].push({\n fn: callback,\n context: context\n });\n }\n remove(name, callback, context) {\n if (!name && !callback && !context) {\n this._callbacks = {};\n return;\n }\n var names = name ? [prefix(name)] : keys(this._callbacks);\n if (callback || context) {\n this.removeCallback(names, callback, context);\n }\n else {\n this.removeAllCallbacks(names);\n }\n }\n removeCallback(names, callback, context) {\n apply(names, function (name) {\n this._callbacks[name] = filter(this._callbacks[name] || [], function (binding) {\n return ((callback && callback !== binding.fn) ||\n (context && context !== binding.context));\n });\n if (this._callbacks[name].length === 0) {\n delete this._callbacks[name];\n }\n }, this);\n }\n removeAllCallbacks(names) {\n apply(names, function (name) {\n delete this._callbacks[name];\n }, this);\n }\n}\nfunction prefix(name) {\n return '_' + name;\n}\n\n// CONCATENATED MODULE: ./src/core/events/dispatcher.ts\n\n\nclass dispatcher_Dispatcher {\n constructor(failThrough) {\n this.callbacks = new callback_registry_CallbackRegistry();\n this.global_callbacks = [];\n this.failThrough = failThrough;\n }\n bind(eventName, callback, context) {\n this.callbacks.add(eventName, callback, context);\n return this;\n }\n bind_global(callback) {\n this.global_callbacks.push(callback);\n return this;\n }\n unbind(eventName, callback, context) {\n this.callbacks.remove(eventName, callback, context);\n return this;\n }\n unbind_global(callback) {\n if (!callback) {\n this.global_callbacks = [];\n return this;\n }\n this.global_callbacks = filter(this.global_callbacks || [], c => c !== callback);\n return this;\n }\n unbind_all() {\n this.unbind();\n this.unbind_global();\n return this;\n }\n emit(eventName, data, metadata) {\n for (var i = 0; i < this.global_callbacks.length; i++) {\n this.global_callbacks[i](eventName, data);\n }\n var callbacks = this.callbacks.get(eventName);\n var args = [];\n if (metadata) {\n args.push(data, metadata);\n }\n else if (data) {\n args.push(data);\n }\n if (callbacks && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].fn.apply(callbacks[i].context || window, args);\n }\n }\n else if (this.failThrough) {\n this.failThrough(eventName, data);\n }\n return this;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/transports/transport_connection.ts\n\n\n\n\n\nclass transport_connection_TransportConnection extends dispatcher_Dispatcher {\n constructor(hooks, name, priority, key, options) {\n super();\n this.initialize = runtime.transportConnectionInitializer;\n this.hooks = hooks;\n this.name = name;\n this.priority = priority;\n this.key = key;\n this.options = options;\n this.state = 'new';\n this.timeline = options.timeline;\n this.activityTimeout = options.activityTimeout;\n this.id = this.timeline.generateUniqueID();\n }\n handlesActivityChecks() {\n return Boolean(this.hooks.handlesActivityChecks);\n }\n supportsPing() {\n return Boolean(this.hooks.supportsPing);\n }\n connect() {\n if (this.socket || this.state !== 'initialized') {\n return false;\n }\n var url = this.hooks.urls.getInitial(this.key, this.options);\n try {\n this.socket = this.hooks.getSocket(url, this.options);\n }\n catch (e) {\n util.defer(() => {\n this.onError(e);\n this.changeState('closed');\n });\n return false;\n }\n this.bindListeners();\n logger.debug('Connecting', { transport: this.name, url });\n this.changeState('connecting');\n return true;\n }\n close() {\n if (this.socket) {\n this.socket.close();\n return true;\n }\n else {\n return false;\n }\n }\n send(data) {\n if (this.state === 'open') {\n util.defer(() => {\n if (this.socket) {\n this.socket.send(data);\n }\n });\n return true;\n }\n else {\n return false;\n }\n }\n ping() {\n if (this.state === 'open' && this.supportsPing()) {\n this.socket.ping();\n }\n }\n onOpen() {\n if (this.hooks.beforeOpen) {\n this.hooks.beforeOpen(this.socket, this.hooks.urls.getPath(this.key, this.options));\n }\n this.changeState('open');\n this.socket.onopen = undefined;\n }\n onError(error) {\n this.emit('error', { type: 'WebSocketError', error: error });\n this.timeline.error(this.buildTimelineMessage({ error: error.toString() }));\n }\n onClose(closeEvent) {\n if (closeEvent) {\n this.changeState('closed', {\n code: closeEvent.code,\n reason: closeEvent.reason,\n wasClean: closeEvent.wasClean\n });\n }\n else {\n this.changeState('closed');\n }\n this.unbindListeners();\n this.socket = undefined;\n }\n onMessage(message) {\n this.emit('message', message);\n }\n onActivity() {\n this.emit('activity');\n }\n bindListeners() {\n this.socket.onopen = () => {\n this.onOpen();\n };\n this.socket.onerror = error => {\n this.onError(error);\n };\n this.socket.onclose = closeEvent => {\n this.onClose(closeEvent);\n };\n this.socket.onmessage = message => {\n this.onMessage(message);\n };\n if (this.supportsPing()) {\n this.socket.onactivity = () => {\n this.onActivity();\n };\n }\n }\n unbindListeners() {\n if (this.socket) {\n this.socket.onopen = undefined;\n this.socket.onerror = undefined;\n this.socket.onclose = undefined;\n this.socket.onmessage = undefined;\n if (this.supportsPing()) {\n this.socket.onactivity = undefined;\n }\n }\n }\n changeState(state, params) {\n this.state = state;\n this.timeline.info(this.buildTimelineMessage({\n state: state,\n params: params\n }));\n this.emit(state, params);\n }\n buildTimelineMessage(message) {\n return extend({ cid: this.id }, message);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/transports/transport.ts\n\nclass transport_Transport {\n constructor(hooks) {\n this.hooks = hooks;\n }\n isSupported(environment) {\n return this.hooks.isSupported(environment);\n }\n createConnection(name, priority, key, options) {\n return new transport_connection_TransportConnection(this.hooks, name, priority, key, options);\n }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/transports/transports.ts\n\n\n\n\nvar WSTransport = new transport_Transport({\n urls: ws,\n handlesActivityChecks: false,\n supportsPing: false,\n isInitialized: function () {\n return Boolean(runtime.getWebSocketAPI());\n },\n isSupported: function () {\n return Boolean(runtime.getWebSocketAPI());\n },\n getSocket: function (url) {\n return runtime.createWebSocket(url);\n }\n});\nvar httpConfiguration = {\n urls: http,\n handlesActivityChecks: false,\n supportsPing: true,\n isInitialized: function () {\n return true;\n }\n};\nvar streamingConfiguration = extend({\n getSocket: function (url) {\n return runtime.HTTPFactory.createStreamingSocket(url);\n }\n}, httpConfiguration);\nvar pollingConfiguration = extend({\n getSocket: function (url) {\n return runtime.HTTPFactory.createPollingSocket(url);\n }\n}, httpConfiguration);\nvar xhrConfiguration = {\n isSupported: function () {\n return runtime.isXHRSupported();\n }\n};\nvar XHRStreamingTransport = new transport_Transport((extend({}, streamingConfiguration, xhrConfiguration)));\nvar XHRPollingTransport = new transport_Transport(extend({}, pollingConfiguration, xhrConfiguration));\nvar Transports = {\n ws: WSTransport,\n xhr_streaming: XHRStreamingTransport,\n xhr_polling: XHRPollingTransport\n};\n/* harmony default export */ var transports = (Transports);\n\n// CONCATENATED MODULE: ./src/runtimes/web/transports/transports.ts\n\n\n\n\n\n\nvar SockJSTransport = new transport_Transport({\n file: 'sockjs',\n urls: sockjs,\n handlesActivityChecks: true,\n supportsPing: false,\n isSupported: function () {\n return true;\n },\n isInitialized: function () {\n return window.SockJS !== undefined;\n },\n getSocket: function (url, options) {\n return new window.SockJS(url, null, {\n js_path: Dependencies.getPath('sockjs', {\n useTLS: options.useTLS\n }),\n ignore_null_origin: options.ignoreNullOrigin\n });\n },\n beforeOpen: function (socket, path) {\n socket.send(JSON.stringify({\n path: path\n }));\n }\n});\nvar xdrConfiguration = {\n isSupported: function (environment) {\n var yes = runtime.isXDRSupported(environment.useTLS);\n return yes;\n }\n};\nvar XDRStreamingTransport = new transport_Transport((extend({}, streamingConfiguration, xdrConfiguration)));\nvar XDRPollingTransport = new transport_Transport(extend({}, pollingConfiguration, xdrConfiguration));\ntransports.xdr_streaming = XDRStreamingTransport;\ntransports.xdr_polling = XDRPollingTransport;\ntransports.sockjs = SockJSTransport;\n/* harmony default export */ var transports_transports = (transports);\n\n// CONCATENATED MODULE: ./src/runtimes/web/net_info.ts\n\nclass net_info_NetInfo extends dispatcher_Dispatcher {\n constructor() {\n super();\n var self = this;\n if (window.addEventListener !== undefined) {\n window.addEventListener('online', function () {\n self.emit('online');\n }, false);\n window.addEventListener('offline', function () {\n self.emit('offline');\n }, false);\n }\n }\n isOnline() {\n if (window.navigator.onLine === undefined) {\n return true;\n }\n else {\n return window.navigator.onLine;\n }\n }\n}\nvar net_info_Network = new net_info_NetInfo();\n\n// CONCATENATED MODULE: ./src/core/transports/assistant_to_the_transport_manager.ts\n\n\nclass assistant_to_the_transport_manager_AssistantToTheTransportManager {\n constructor(manager, transport, options) {\n this.manager = manager;\n this.transport = transport;\n this.minPingDelay = options.minPingDelay;\n this.maxPingDelay = options.maxPingDelay;\n this.pingDelay = undefined;\n }\n createConnection(name, priority, key, options) {\n options = extend({}, options, {\n activityTimeout: this.pingDelay\n });\n var connection = this.transport.createConnection(name, priority, key, options);\n var openTimestamp = null;\n var onOpen = function () {\n connection.unbind('open', onOpen);\n connection.bind('closed', onClosed);\n openTimestamp = util.now();\n };\n var onClosed = closeEvent => {\n connection.unbind('closed', onClosed);\n if (closeEvent.code === 1002 || closeEvent.code === 1003) {\n this.manager.reportDeath();\n }\n else if (!closeEvent.wasClean && openTimestamp) {\n var lifespan = util.now() - openTimestamp;\n if (lifespan < 2 * this.maxPingDelay) {\n this.manager.reportDeath();\n this.pingDelay = Math.max(lifespan / 2, this.minPingDelay);\n }\n }\n };\n connection.bind('open', onOpen);\n return connection;\n }\n isSupported(environment) {\n return this.manager.isAlive() && this.transport.isSupported(environment);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/connection/protocol/protocol.ts\nconst Protocol = {\n decodeMessage: function (messageEvent) {\n try {\n var messageData = JSON.parse(messageEvent.data);\n var pusherEventData = messageData.data;\n if (typeof pusherEventData === 'string') {\n try {\n pusherEventData = JSON.parse(messageData.data);\n }\n catch (e) { }\n }\n var pusherEvent = {\n event: messageData.event,\n channel: messageData.channel,\n data: pusherEventData\n };\n if (messageData.user_id) {\n pusherEvent.user_id = messageData.user_id;\n }\n return pusherEvent;\n }\n catch (e) {\n throw { type: 'MessageParseError', error: e, data: messageEvent.data };\n }\n },\n encodeMessage: function (event) {\n return JSON.stringify(event);\n },\n processHandshake: function (messageEvent) {\n var message = Protocol.decodeMessage(messageEvent);\n if (message.event === 'pusher:connection_established') {\n if (!message.data.activity_timeout) {\n throw 'No activity timeout specified in handshake';\n }\n return {\n action: 'connected',\n id: message.data.socket_id,\n activityTimeout: message.data.activity_timeout * 1000\n };\n }\n else if (message.event === 'pusher:error') {\n return {\n action: this.getCloseAction(message.data),\n error: this.getCloseError(message.data)\n };\n }\n else {\n throw 'Invalid handshake';\n }\n },\n getCloseAction: function (closeEvent) {\n if (closeEvent.code < 4000) {\n if (closeEvent.code >= 1002 && closeEvent.code <= 1004) {\n return 'backoff';\n }\n else {\n return null;\n }\n }\n else if (closeEvent.code === 4000) {\n return 'tls_only';\n }\n else if (closeEvent.code < 4100) {\n return 'refused';\n }\n else if (closeEvent.code < 4200) {\n return 'backoff';\n }\n else if (closeEvent.code < 4300) {\n return 'retry';\n }\n else {\n return 'refused';\n }\n },\n getCloseError: function (closeEvent) {\n if (closeEvent.code !== 1000 && closeEvent.code !== 1001) {\n return {\n type: 'PusherError',\n data: {\n code: closeEvent.code,\n message: closeEvent.reason || closeEvent.message\n }\n };\n }\n else {\n return null;\n }\n }\n};\n/* harmony default export */ var protocol_protocol = (Protocol);\n\n// CONCATENATED MODULE: ./src/core/connection/connection.ts\n\n\n\n\nclass connection_Connection extends dispatcher_Dispatcher {\n constructor(id, transport) {\n super();\n this.id = id;\n this.transport = transport;\n this.activityTimeout = transport.activityTimeout;\n this.bindListeners();\n }\n handlesActivityChecks() {\n return this.transport.handlesActivityChecks();\n }\n send(data) {\n return this.transport.send(data);\n }\n send_event(name, data, channel) {\n var event = { event: name, data: data };\n if (channel) {\n event.channel = channel;\n }\n logger.debug('Event sent', event);\n return this.send(protocol_protocol.encodeMessage(event));\n }\n ping() {\n if (this.transport.supportsPing()) {\n this.transport.ping();\n }\n else {\n this.send_event('pusher:ping', {});\n }\n }\n close() {\n this.transport.close();\n }\n bindListeners() {\n var listeners = {\n message: (messageEvent) => {\n var pusherEvent;\n try {\n pusherEvent = protocol_protocol.decodeMessage(messageEvent);\n }\n catch (e) {\n this.emit('error', {\n type: 'MessageParseError',\n error: e,\n data: messageEvent.data\n });\n }\n if (pusherEvent !== undefined) {\n logger.debug('Event recd', pusherEvent);\n switch (pusherEvent.event) {\n case 'pusher:error':\n this.emit('error', {\n type: 'PusherError',\n data: pusherEvent.data\n });\n break;\n case 'pusher:ping':\n this.emit('ping');\n break;\n case 'pusher:pong':\n this.emit('pong');\n break;\n }\n this.emit('message', pusherEvent);\n }\n },\n activity: () => {\n this.emit('activity');\n },\n error: error => {\n this.emit('error', error);\n },\n closed: closeEvent => {\n unbindListeners();\n if (closeEvent && closeEvent.code) {\n this.handleCloseEvent(closeEvent);\n }\n this.transport = null;\n this.emit('closed');\n }\n };\n var unbindListeners = () => {\n objectApply(listeners, (listener, event) => {\n this.transport.unbind(event, listener);\n });\n };\n objectApply(listeners, (listener, event) => {\n this.transport.bind(event, listener);\n });\n }\n handleCloseEvent(closeEvent) {\n var action = protocol_protocol.getCloseAction(closeEvent);\n var error = protocol_protocol.getCloseError(closeEvent);\n if (error) {\n this.emit('error', error);\n }\n if (action) {\n this.emit(action, { action: action, error: error });\n }\n }\n}\n\n// CONCATENATED MODULE: ./src/core/connection/handshake/index.ts\n\n\n\nclass handshake_Handshake {\n constructor(transport, callback) {\n this.transport = transport;\n this.callback = callback;\n this.bindListeners();\n }\n close() {\n this.unbindListeners();\n this.transport.close();\n }\n bindListeners() {\n this.onMessage = m => {\n this.unbindListeners();\n var result;\n try {\n result = protocol_protocol.processHandshake(m);\n }\n catch (e) {\n this.finish('error', { error: e });\n this.transport.close();\n return;\n }\n if (result.action === 'connected') {\n this.finish('connected', {\n connection: new connection_Connection(result.id, this.transport),\n activityTimeout: result.activityTimeout\n });\n }\n else {\n this.finish(result.action, { error: result.error });\n this.transport.close();\n }\n };\n this.onClosed = closeEvent => {\n this.unbindListeners();\n var action = protocol_protocol.getCloseAction(closeEvent) || 'backoff';\n var error = protocol_protocol.getCloseError(closeEvent);\n this.finish(action, { error: error });\n };\n this.transport.bind('message', this.onMessage);\n this.transport.bind('closed', this.onClosed);\n }\n unbindListeners() {\n this.transport.unbind('message', this.onMessage);\n this.transport.unbind('closed', this.onClosed);\n }\n finish(action, params) {\n this.callback(extend({ transport: this.transport, action: action }, params));\n }\n}\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline_sender.ts\n\nclass timeline_sender_TimelineSender {\n constructor(timeline, options) {\n this.timeline = timeline;\n this.options = options || {};\n }\n send(useTLS, callback) {\n if (this.timeline.isEmpty()) {\n return;\n }\n this.timeline.send(runtime.TimelineTransport.getAgent(this, useTLS), callback);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/channel.ts\n\n\n\n\n\nclass channel_Channel extends dispatcher_Dispatcher {\n constructor(name, pusher) {\n super(function (event, data) {\n logger.debug('No callbacks on ' + name + ' for ' + event);\n });\n this.name = name;\n this.pusher = pusher;\n this.subscribed = false;\n this.subscriptionPending = false;\n this.subscriptionCancelled = false;\n }\n authorize(socketId, callback) {\n return callback(null, { auth: '' });\n }\n trigger(event, data) {\n if (event.indexOf('client-') !== 0) {\n throw new BadEventName(\"Event '\" + event + \"' does not start with 'client-'\");\n }\n if (!this.subscribed) {\n var suffix = url_store.buildLogSuffix('triggeringClientEvents');\n logger.warn(`Client event triggered before channel 'subscription_succeeded' event . ${suffix}`);\n }\n return this.pusher.send_event(event, data, this.name);\n }\n disconnect() {\n this.subscribed = false;\n this.subscriptionPending = false;\n }\n handleEvent(event) {\n var eventName = event.event;\n var data = event.data;\n if (eventName === 'pusher_internal:subscription_succeeded') {\n this.handleSubscriptionSucceededEvent(event);\n }\n else if (eventName === 'pusher_internal:subscription_count') {\n this.handleSubscriptionCountEvent(event);\n }\n else if (eventName.indexOf('pusher_internal:') !== 0) {\n var metadata = {};\n this.emit(eventName, data, metadata);\n }\n }\n handleSubscriptionSucceededEvent(event) {\n this.subscriptionPending = false;\n this.subscribed = true;\n if (this.subscriptionCancelled) {\n this.pusher.unsubscribe(this.name);\n }\n else {\n this.emit('pusher:subscription_succeeded', event.data);\n }\n }\n handleSubscriptionCountEvent(event) {\n if (event.data.subscription_count) {\n this.subscriptionCount = event.data.subscription_count;\n }\n this.emit('pusher:subscription_count', event.data);\n }\n subscribe() {\n if (this.subscribed) {\n return;\n }\n this.subscriptionPending = true;\n this.subscriptionCancelled = false;\n this.authorize(this.pusher.connection.socket_id, (error, data) => {\n if (error) {\n this.subscriptionPending = false;\n logger.error(error.toString());\n this.emit('pusher:subscription_error', Object.assign({}, {\n type: 'AuthError',\n error: error.message\n }, error instanceof HTTPAuthError ? { status: error.status } : {}));\n }\n else {\n this.pusher.send_event('pusher:subscribe', {\n auth: data.auth,\n channel_data: data.channel_data,\n channel: this.name\n });\n }\n });\n }\n unsubscribe() {\n this.subscribed = false;\n this.pusher.send_event('pusher:unsubscribe', {\n channel: this.name\n });\n }\n cancelSubscription() {\n this.subscriptionCancelled = true;\n }\n reinstateSubscription() {\n this.subscriptionCancelled = false;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/private_channel.ts\n\nclass private_channel_PrivateChannel extends channel_Channel {\n authorize(socketId, callback) {\n return this.pusher.config.channelAuthorizer({\n channelName: this.name,\n socketId: socketId\n }, callback);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/members.ts\n\nclass members_Members {\n constructor() {\n this.reset();\n }\n get(id) {\n if (Object.prototype.hasOwnProperty.call(this.members, id)) {\n return {\n id: id,\n info: this.members[id]\n };\n }\n else {\n return null;\n }\n }\n each(callback) {\n objectApply(this.members, (member, id) => {\n callback(this.get(id));\n });\n }\n setMyID(id) {\n this.myID = id;\n }\n onSubscription(subscriptionData) {\n this.members = subscriptionData.presence.hash;\n this.count = subscriptionData.presence.count;\n this.me = this.get(this.myID);\n }\n addMember(memberData) {\n if (this.get(memberData.user_id) === null) {\n this.count++;\n }\n this.members[memberData.user_id] = memberData.user_info;\n return this.get(memberData.user_id);\n }\n removeMember(memberData) {\n var member = this.get(memberData.user_id);\n if (member) {\n delete this.members[memberData.user_id];\n this.count--;\n }\n return member;\n }\n reset() {\n this.members = {};\n this.count = 0;\n this.myID = null;\n this.me = null;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/presence_channel.ts\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\nclass presence_channel_PresenceChannel extends private_channel_PrivateChannel {\n constructor(name, pusher) {\n super(name, pusher);\n this.members = new members_Members();\n }\n authorize(socketId, callback) {\n super.authorize(socketId, (error, authData) => __awaiter(this, void 0, void 0, function* () {\n if (!error) {\n authData = authData;\n if (authData.channel_data != null) {\n var channelData = JSON.parse(authData.channel_data);\n this.members.setMyID(channelData.user_id);\n }\n else {\n yield this.pusher.user.signinDonePromise;\n if (this.pusher.user.user_data != null) {\n this.members.setMyID(this.pusher.user.user_data.id);\n }\n else {\n let suffix = url_store.buildLogSuffix('authorizationEndpoint');\n logger.error(`Invalid auth response for channel '${this.name}', ` +\n `expected 'channel_data' field. ${suffix}, ` +\n `or the user should be signed in.`);\n callback('Invalid auth response');\n return;\n }\n }\n }\n callback(error, authData);\n }));\n }\n handleEvent(event) {\n var eventName = event.event;\n if (eventName.indexOf('pusher_internal:') === 0) {\n this.handleInternalEvent(event);\n }\n else {\n var data = event.data;\n var metadata = {};\n if (event.user_id) {\n metadata.user_id = event.user_id;\n }\n this.emit(eventName, data, metadata);\n }\n }\n handleInternalEvent(event) {\n var eventName = event.event;\n var data = event.data;\n switch (eventName) {\n case 'pusher_internal:subscription_succeeded':\n this.handleSubscriptionSucceededEvent(event);\n break;\n case 'pusher_internal:subscription_count':\n this.handleSubscriptionCountEvent(event);\n break;\n case 'pusher_internal:member_added':\n var addedMember = this.members.addMember(data);\n this.emit('pusher:member_added', addedMember);\n break;\n case 'pusher_internal:member_removed':\n var removedMember = this.members.removeMember(data);\n if (removedMember) {\n this.emit('pusher:member_removed', removedMember);\n }\n break;\n }\n }\n handleSubscriptionSucceededEvent(event) {\n this.subscriptionPending = false;\n this.subscribed = true;\n if (this.subscriptionCancelled) {\n this.pusher.unsubscribe(this.name);\n }\n else {\n this.members.onSubscription(event.data);\n this.emit('pusher:subscription_succeeded', this.members);\n }\n }\n disconnect() {\n this.members.reset();\n super.disconnect();\n }\n}\n\n// EXTERNAL MODULE: ./node_modules/@stablelib/utf8/lib/utf8.js\nvar utf8 = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./node_modules/@stablelib/base64/lib/base64.js\nvar base64 = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./src/core/channels/encrypted_channel.ts\n\n\n\n\n\nclass encrypted_channel_EncryptedChannel extends private_channel_PrivateChannel {\n constructor(name, pusher, nacl) {\n super(name, pusher);\n this.key = null;\n this.nacl = nacl;\n }\n authorize(socketId, callback) {\n super.authorize(socketId, (error, authData) => {\n if (error) {\n callback(error, authData);\n return;\n }\n let sharedSecret = authData['shared_secret'];\n if (!sharedSecret) {\n callback(new Error(`No shared_secret key in auth payload for encrypted channel: ${this.name}`), null);\n return;\n }\n this.key = Object(base64[\"decode\"])(sharedSecret);\n delete authData['shared_secret'];\n callback(null, authData);\n });\n }\n trigger(event, data) {\n throw new UnsupportedFeature('Client events are not currently supported for encrypted channels');\n }\n handleEvent(event) {\n var eventName = event.event;\n var data = event.data;\n if (eventName.indexOf('pusher_internal:') === 0 ||\n eventName.indexOf('pusher:') === 0) {\n super.handleEvent(event);\n return;\n }\n this.handleEncryptedEvent(eventName, data);\n }\n handleEncryptedEvent(event, data) {\n if (!this.key) {\n logger.debug('Received encrypted event before key has been retrieved from the authEndpoint');\n return;\n }\n if (!data.ciphertext || !data.nonce) {\n logger.error('Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: ' +\n data);\n return;\n }\n let cipherText = Object(base64[\"decode\"])(data.ciphertext);\n if (cipherText.length < this.nacl.secretbox.overheadLength) {\n logger.error(`Expected encrypted event ciphertext length to be ${this.nacl.secretbox.overheadLength}, got: ${cipherText.length}`);\n return;\n }\n let nonce = Object(base64[\"decode\"])(data.nonce);\n if (nonce.length < this.nacl.secretbox.nonceLength) {\n logger.error(`Expected encrypted event nonce length to be ${this.nacl.secretbox.nonceLength}, got: ${nonce.length}`);\n return;\n }\n let bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);\n if (bytes === null) {\n logger.debug('Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint...');\n this.authorize(this.pusher.connection.socket_id, (error, authData) => {\n if (error) {\n logger.error(`Failed to make a request to the authEndpoint: ${authData}. Unable to fetch new key, so dropping encrypted event`);\n return;\n }\n bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);\n if (bytes === null) {\n logger.error(`Failed to decrypt event with new key. Dropping encrypted event`);\n return;\n }\n this.emit(event, this.getDataToEmit(bytes));\n return;\n });\n return;\n }\n this.emit(event, this.getDataToEmit(bytes));\n }\n getDataToEmit(bytes) {\n let raw = Object(utf8[\"decode\"])(bytes);\n try {\n return JSON.parse(raw);\n }\n catch (_a) {\n return raw;\n }\n }\n}\n\n// CONCATENATED MODULE: ./src/core/connection/connection_manager.ts\n\n\n\n\n\nclass connection_manager_ConnectionManager extends dispatcher_Dispatcher {\n constructor(key, options) {\n super();\n this.state = 'initialized';\n this.connection = null;\n this.key = key;\n this.options = options;\n this.timeline = this.options.timeline;\n this.usingTLS = this.options.useTLS;\n this.errorCallbacks = this.buildErrorCallbacks();\n this.connectionCallbacks = this.buildConnectionCallbacks(this.errorCallbacks);\n this.handshakeCallbacks = this.buildHandshakeCallbacks(this.errorCallbacks);\n var Network = runtime.getNetwork();\n Network.bind('online', () => {\n this.timeline.info({ netinfo: 'online' });\n if (this.state === 'connecting' || this.state === 'unavailable') {\n this.retryIn(0);\n }\n });\n Network.bind('offline', () => {\n this.timeline.info({ netinfo: 'offline' });\n if (this.connection) {\n this.sendActivityCheck();\n }\n });\n this.updateStrategy();\n }\n connect() {\n if (this.connection || this.runner) {\n return;\n }\n if (!this.strategy.isSupported()) {\n this.updateState('failed');\n return;\n }\n this.updateState('connecting');\n this.startConnecting();\n this.setUnavailableTimer();\n }\n send(data) {\n if (this.connection) {\n return this.connection.send(data);\n }\n else {\n return false;\n }\n }\n send_event(name, data, channel) {\n if (this.connection) {\n return this.connection.send_event(name, data, channel);\n }\n else {\n return false;\n }\n }\n disconnect() {\n this.disconnectInternally();\n this.updateState('disconnected');\n }\n isUsingTLS() {\n return this.usingTLS;\n }\n startConnecting() {\n var callback = (error, handshake) => {\n if (error) {\n this.runner = this.strategy.connect(0, callback);\n }\n else {\n if (handshake.action === 'error') {\n this.emit('error', {\n type: 'HandshakeError',\n error: handshake.error\n });\n this.timeline.error({ handshakeError: handshake.error });\n }\n else {\n this.abortConnecting();\n this.handshakeCallbacks[handshake.action](handshake);\n }\n }\n };\n this.runner = this.strategy.connect(0, callback);\n }\n abortConnecting() {\n if (this.runner) {\n this.runner.abort();\n this.runner = null;\n }\n }\n disconnectInternally() {\n this.abortConnecting();\n this.clearRetryTimer();\n this.clearUnavailableTimer();\n if (this.connection) {\n var connection = this.abandonConnection();\n connection.close();\n }\n }\n updateStrategy() {\n this.strategy = this.options.getStrategy({\n key: this.key,\n timeline: this.timeline,\n useTLS: this.usingTLS\n });\n }\n retryIn(delay) {\n this.timeline.info({ action: 'retry', delay: delay });\n if (delay > 0) {\n this.emit('connecting_in', Math.round(delay / 1000));\n }\n this.retryTimer = new timers_OneOffTimer(delay || 0, () => {\n this.disconnectInternally();\n this.connect();\n });\n }\n clearRetryTimer() {\n if (this.retryTimer) {\n this.retryTimer.ensureAborted();\n this.retryTimer = null;\n }\n }\n setUnavailableTimer() {\n this.unavailableTimer = new timers_OneOffTimer(this.options.unavailableTimeout, () => {\n this.updateState('unavailable');\n });\n }\n clearUnavailableTimer() {\n if (this.unavailableTimer) {\n this.unavailableTimer.ensureAborted();\n }\n }\n sendActivityCheck() {\n this.stopActivityCheck();\n this.connection.ping();\n this.activityTimer = new timers_OneOffTimer(this.options.pongTimeout, () => {\n this.timeline.error({ pong_timed_out: this.options.pongTimeout });\n this.retryIn(0);\n });\n }\n resetActivityCheck() {\n this.stopActivityCheck();\n if (this.connection && !this.connection.handlesActivityChecks()) {\n this.activityTimer = new timers_OneOffTimer(this.activityTimeout, () => {\n this.sendActivityCheck();\n });\n }\n }\n stopActivityCheck() {\n if (this.activityTimer) {\n this.activityTimer.ensureAborted();\n }\n }\n buildConnectionCallbacks(errorCallbacks) {\n return extend({}, errorCallbacks, {\n message: message => {\n this.resetActivityCheck();\n this.emit('message', message);\n },\n ping: () => {\n this.send_event('pusher:pong', {});\n },\n activity: () => {\n this.resetActivityCheck();\n },\n error: error => {\n this.emit('error', error);\n },\n closed: () => {\n this.abandonConnection();\n if (this.shouldRetry()) {\n this.retryIn(1000);\n }\n }\n });\n }\n buildHandshakeCallbacks(errorCallbacks) {\n return extend({}, errorCallbacks, {\n connected: (handshake) => {\n this.activityTimeout = Math.min(this.options.activityTimeout, handshake.activityTimeout, handshake.connection.activityTimeout || Infinity);\n this.clearUnavailableTimer();\n this.setConnection(handshake.connection);\n this.socket_id = this.connection.id;\n this.updateState('connected', { socket_id: this.socket_id });\n }\n });\n }\n buildErrorCallbacks() {\n let withErrorEmitted = callback => {\n return (result) => {\n if (result.error) {\n this.emit('error', { type: 'WebSocketError', error: result.error });\n }\n callback(result);\n };\n };\n return {\n tls_only: withErrorEmitted(() => {\n this.usingTLS = true;\n this.updateStrategy();\n this.retryIn(0);\n }),\n refused: withErrorEmitted(() => {\n this.disconnect();\n }),\n backoff: withErrorEmitted(() => {\n this.retryIn(1000);\n }),\n retry: withErrorEmitted(() => {\n this.retryIn(0);\n })\n };\n }\n setConnection(connection) {\n this.connection = connection;\n for (var event in this.connectionCallbacks) {\n this.connection.bind(event, this.connectionCallbacks[event]);\n }\n this.resetActivityCheck();\n }\n abandonConnection() {\n if (!this.connection) {\n return;\n }\n this.stopActivityCheck();\n for (var event in this.connectionCallbacks) {\n this.connection.unbind(event, this.connectionCallbacks[event]);\n }\n var connection = this.connection;\n this.connection = null;\n return connection;\n }\n updateState(newState, data) {\n var previousState = this.state;\n this.state = newState;\n if (previousState !== newState) {\n var newStateDescription = newState;\n if (newStateDescription === 'connected') {\n newStateDescription += ' with new socket ID ' + data.socket_id;\n }\n logger.debug('State changed', previousState + ' -> ' + newStateDescription);\n this.timeline.info({ state: newState, params: data });\n this.emit('state_change', { previous: previousState, current: newState });\n this.emit(newState, data);\n }\n }\n shouldRetry() {\n return this.state === 'connecting' || this.state === 'connected';\n }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/channels.ts\n\n\n\n\nclass channels_Channels {\n constructor() {\n this.channels = {};\n }\n add(name, pusher) {\n if (!this.channels[name]) {\n this.channels[name] = createChannel(name, pusher);\n }\n return this.channels[name];\n }\n all() {\n return values(this.channels);\n }\n find(name) {\n return this.channels[name];\n }\n remove(name) {\n var channel = this.channels[name];\n delete this.channels[name];\n return channel;\n }\n disconnect() {\n objectApply(this.channels, function (channel) {\n channel.disconnect();\n });\n }\n}\nfunction createChannel(name, pusher) {\n if (name.indexOf('private-encrypted-') === 0) {\n if (pusher.config.nacl) {\n return factory.createEncryptedChannel(name, pusher, pusher.config.nacl);\n }\n let errMsg = 'Tried to subscribe to a private-encrypted- channel but no nacl implementation available';\n let suffix = url_store.buildLogSuffix('encryptedChannelSupport');\n throw new UnsupportedFeature(`${errMsg}. ${suffix}`);\n }\n else if (name.indexOf('private-') === 0) {\n return factory.createPrivateChannel(name, pusher);\n }\n else if (name.indexOf('presence-') === 0) {\n return factory.createPresenceChannel(name, pusher);\n }\n else if (name.indexOf('#') === 0) {\n throw new BadChannelName('Cannot create a channel with name \"' + name + '\".');\n }\n else {\n return factory.createChannel(name, pusher);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/utils/factory.ts\n\n\n\n\n\n\n\n\n\nvar Factory = {\n createChannels() {\n return new channels_Channels();\n },\n createConnectionManager(key, options) {\n return new connection_manager_ConnectionManager(key, options);\n },\n createChannel(name, pusher) {\n return new channel_Channel(name, pusher);\n },\n createPrivateChannel(name, pusher) {\n return new private_channel_PrivateChannel(name, pusher);\n },\n createPresenceChannel(name, pusher) {\n return new presence_channel_PresenceChannel(name, pusher);\n },\n createEncryptedChannel(name, pusher, nacl) {\n return new encrypted_channel_EncryptedChannel(name, pusher, nacl);\n },\n createTimelineSender(timeline, options) {\n return new timeline_sender_TimelineSender(timeline, options);\n },\n createHandshake(transport, callback) {\n return new handshake_Handshake(transport, callback);\n },\n createAssistantToTheTransportManager(manager, transport, options) {\n return new assistant_to_the_transport_manager_AssistantToTheTransportManager(manager, transport, options);\n }\n};\n/* harmony default export */ var factory = (Factory);\n\n// CONCATENATED MODULE: ./src/core/transports/transport_manager.ts\n\nclass transport_manager_TransportManager {\n constructor(options) {\n this.options = options || {};\n this.livesLeft = this.options.lives || Infinity;\n }\n getAssistant(transport) {\n return factory.createAssistantToTheTransportManager(this, transport, {\n minPingDelay: this.options.minPingDelay,\n maxPingDelay: this.options.maxPingDelay\n });\n }\n isAlive() {\n return this.livesLeft > 0;\n }\n reportDeath() {\n this.livesLeft -= 1;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/sequential_strategy.ts\n\n\n\nclass sequential_strategy_SequentialStrategy {\n constructor(strategies, options) {\n this.strategies = strategies;\n this.loop = Boolean(options.loop);\n this.failFast = Boolean(options.failFast);\n this.timeout = options.timeout;\n this.timeoutLimit = options.timeoutLimit;\n }\n isSupported() {\n return any(this.strategies, util.method('isSupported'));\n }\n connect(minPriority, callback) {\n var strategies = this.strategies;\n var current = 0;\n var timeout = this.timeout;\n var runner = null;\n var tryNextStrategy = (error, handshake) => {\n if (handshake) {\n callback(null, handshake);\n }\n else {\n current = current + 1;\n if (this.loop) {\n current = current % strategies.length;\n }\n if (current < strategies.length) {\n if (timeout) {\n timeout = timeout * 2;\n if (this.timeoutLimit) {\n timeout = Math.min(timeout, this.timeoutLimit);\n }\n }\n runner = this.tryStrategy(strategies[current], minPriority, { timeout, failFast: this.failFast }, tryNextStrategy);\n }\n else {\n callback(true);\n }\n }\n };\n runner = this.tryStrategy(strategies[current], minPriority, { timeout: timeout, failFast: this.failFast }, tryNextStrategy);\n return {\n abort: function () {\n runner.abort();\n },\n forceMinPriority: function (p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n }\n tryStrategy(strategy, minPriority, options, callback) {\n var timer = null;\n var runner = null;\n if (options.timeout > 0) {\n timer = new timers_OneOffTimer(options.timeout, function () {\n runner.abort();\n callback(true);\n });\n }\n runner = strategy.connect(minPriority, function (error, handshake) {\n if (error && timer && timer.isRunning() && !options.failFast) {\n return;\n }\n if (timer) {\n timer.ensureAborted();\n }\n callback(error, handshake);\n });\n return {\n abort: function () {\n if (timer) {\n timer.ensureAborted();\n }\n runner.abort();\n },\n forceMinPriority: function (p) {\n runner.forceMinPriority(p);\n }\n };\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/best_connected_ever_strategy.ts\n\n\nclass best_connected_ever_strategy_BestConnectedEverStrategy {\n constructor(strategies) {\n this.strategies = strategies;\n }\n isSupported() {\n return any(this.strategies, util.method('isSupported'));\n }\n connect(minPriority, callback) {\n return connect(this.strategies, minPriority, function (i, runners) {\n return function (error, handshake) {\n runners[i].error = error;\n if (error) {\n if (allRunnersFailed(runners)) {\n callback(true);\n }\n return;\n }\n apply(runners, function (runner) {\n runner.forceMinPriority(handshake.transport.priority);\n });\n callback(null, handshake);\n };\n });\n }\n}\nfunction connect(strategies, minPriority, callbackBuilder) {\n var runners = map(strategies, function (strategy, i, _, rs) {\n return strategy.connect(minPriority, callbackBuilder(i, rs));\n });\n return {\n abort: function () {\n apply(runners, abortRunner);\n },\n forceMinPriority: function (p) {\n apply(runners, function (runner) {\n runner.forceMinPriority(p);\n });\n }\n };\n}\nfunction allRunnersFailed(runners) {\n return collections_all(runners, function (runner) {\n return Boolean(runner.error);\n });\n}\nfunction abortRunner(runner) {\n if (!runner.error && !runner.aborted) {\n runner.abort();\n runner.aborted = true;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/websocket_prioritized_cached_strategy.ts\n\n\n\n\nclass websocket_prioritized_cached_strategy_WebSocketPrioritizedCachedStrategy {\n constructor(strategy, transports, options) {\n this.strategy = strategy;\n this.transports = transports;\n this.ttl = options.ttl || 1800 * 1000;\n this.usingTLS = options.useTLS;\n this.timeline = options.timeline;\n }\n isSupported() {\n return this.strategy.isSupported();\n }\n connect(minPriority, callback) {\n var usingTLS = this.usingTLS;\n var info = fetchTransportCache(usingTLS);\n var cacheSkipCount = info && info.cacheSkipCount ? info.cacheSkipCount : 0;\n var strategies = [this.strategy];\n if (info && info.timestamp + this.ttl >= util.now()) {\n var transport = this.transports[info.transport];\n if (transport) {\n if (['ws', 'wss'].includes(info.transport) || cacheSkipCount > 3) {\n this.timeline.info({\n cached: true,\n transport: info.transport,\n latency: info.latency\n });\n strategies.push(new sequential_strategy_SequentialStrategy([transport], {\n timeout: info.latency * 2 + 1000,\n failFast: true\n }));\n }\n else {\n cacheSkipCount++;\n }\n }\n }\n var startTimestamp = util.now();\n var runner = strategies\n .pop()\n .connect(minPriority, function cb(error, handshake) {\n if (error) {\n flushTransportCache(usingTLS);\n if (strategies.length > 0) {\n startTimestamp = util.now();\n runner = strategies.pop().connect(minPriority, cb);\n }\n else {\n callback(error);\n }\n }\n else {\n storeTransportCache(usingTLS, handshake.transport.name, util.now() - startTimestamp, cacheSkipCount);\n callback(null, handshake);\n }\n });\n return {\n abort: function () {\n runner.abort();\n },\n forceMinPriority: function (p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n }\n}\nfunction getTransportCacheKey(usingTLS) {\n return 'pusherTransport' + (usingTLS ? 'TLS' : 'NonTLS');\n}\nfunction fetchTransportCache(usingTLS) {\n var storage = runtime.getLocalStorage();\n if (storage) {\n try {\n var serializedCache = storage[getTransportCacheKey(usingTLS)];\n if (serializedCache) {\n return JSON.parse(serializedCache);\n }\n }\n catch (e) {\n flushTransportCache(usingTLS);\n }\n }\n return null;\n}\nfunction storeTransportCache(usingTLS, transport, latency, cacheSkipCount) {\n var storage = runtime.getLocalStorage();\n if (storage) {\n try {\n storage[getTransportCacheKey(usingTLS)] = safeJSONStringify({\n timestamp: util.now(),\n transport: transport,\n latency: latency,\n cacheSkipCount: cacheSkipCount\n });\n }\n catch (e) {\n }\n }\n}\nfunction flushTransportCache(usingTLS) {\n var storage = runtime.getLocalStorage();\n if (storage) {\n try {\n delete storage[getTransportCacheKey(usingTLS)];\n }\n catch (e) {\n }\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/delayed_strategy.ts\n\nclass delayed_strategy_DelayedStrategy {\n constructor(strategy, { delay: number }) {\n this.strategy = strategy;\n this.options = { delay: number };\n }\n isSupported() {\n return this.strategy.isSupported();\n }\n connect(minPriority, callback) {\n var strategy = this.strategy;\n var runner;\n var timer = new timers_OneOffTimer(this.options.delay, function () {\n runner = strategy.connect(minPriority, callback);\n });\n return {\n abort: function () {\n timer.ensureAborted();\n if (runner) {\n runner.abort();\n }\n },\n forceMinPriority: function (p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/if_strategy.ts\nclass IfStrategy {\n constructor(test, trueBranch, falseBranch) {\n this.test = test;\n this.trueBranch = trueBranch;\n this.falseBranch = falseBranch;\n }\n isSupported() {\n var branch = this.test() ? this.trueBranch : this.falseBranch;\n return branch.isSupported();\n }\n connect(minPriority, callback) {\n var branch = this.test() ? this.trueBranch : this.falseBranch;\n return branch.connect(minPriority, callback);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/first_connected_strategy.ts\nclass FirstConnectedStrategy {\n constructor(strategy) {\n this.strategy = strategy;\n }\n isSupported() {\n return this.strategy.isSupported();\n }\n connect(minPriority, callback) {\n var runner = this.strategy.connect(minPriority, function (error, handshake) {\n if (handshake) {\n runner.abort();\n }\n callback(error, handshake);\n });\n return runner;\n }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/default_strategy.ts\n\n\n\n\n\n\n\nfunction testSupportsStrategy(strategy) {\n return function () {\n return strategy.isSupported();\n };\n}\nvar getDefaultStrategy = function (config, baseOptions, defineTransport) {\n var definedTransports = {};\n function defineTransportStrategy(name, type, priority, options, manager) {\n var transport = defineTransport(config, name, type, priority, options, manager);\n definedTransports[name] = transport;\n return transport;\n }\n var ws_options = Object.assign({}, baseOptions, {\n hostNonTLS: config.wsHost + ':' + config.wsPort,\n hostTLS: config.wsHost + ':' + config.wssPort,\n httpPath: config.wsPath\n });\n var wss_options = Object.assign({}, ws_options, {\n useTLS: true\n });\n var sockjs_options = Object.assign({}, baseOptions, {\n hostNonTLS: config.httpHost + ':' + config.httpPort,\n hostTLS: config.httpHost + ':' + config.httpsPort,\n httpPath: config.httpPath\n });\n var timeouts = {\n loop: true,\n timeout: 15000,\n timeoutLimit: 60000\n };\n var ws_manager = new transport_manager_TransportManager({\n minPingDelay: 10000,\n maxPingDelay: config.activityTimeout\n });\n var streaming_manager = new transport_manager_TransportManager({\n lives: 2,\n minPingDelay: 10000,\n maxPingDelay: config.activityTimeout\n });\n var ws_transport = defineTransportStrategy('ws', 'ws', 3, ws_options, ws_manager);\n var wss_transport = defineTransportStrategy('wss', 'ws', 3, wss_options, ws_manager);\n var sockjs_transport = defineTransportStrategy('sockjs', 'sockjs', 1, sockjs_options);\n var xhr_streaming_transport = defineTransportStrategy('xhr_streaming', 'xhr_streaming', 1, sockjs_options, streaming_manager);\n var xdr_streaming_transport = defineTransportStrategy('xdr_streaming', 'xdr_streaming', 1, sockjs_options, streaming_manager);\n var xhr_polling_transport = defineTransportStrategy('xhr_polling', 'xhr_polling', 1, sockjs_options);\n var xdr_polling_transport = defineTransportStrategy('xdr_polling', 'xdr_polling', 1, sockjs_options);\n var ws_loop = new sequential_strategy_SequentialStrategy([ws_transport], timeouts);\n var wss_loop = new sequential_strategy_SequentialStrategy([wss_transport], timeouts);\n var sockjs_loop = new sequential_strategy_SequentialStrategy([sockjs_transport], timeouts);\n var streaming_loop = new sequential_strategy_SequentialStrategy([\n new IfStrategy(testSupportsStrategy(xhr_streaming_transport), xhr_streaming_transport, xdr_streaming_transport)\n ], timeouts);\n var polling_loop = new sequential_strategy_SequentialStrategy([\n new IfStrategy(testSupportsStrategy(xhr_polling_transport), xhr_polling_transport, xdr_polling_transport)\n ], timeouts);\n var http_loop = new sequential_strategy_SequentialStrategy([\n new IfStrategy(testSupportsStrategy(streaming_loop), new best_connected_ever_strategy_BestConnectedEverStrategy([\n streaming_loop,\n new delayed_strategy_DelayedStrategy(polling_loop, { delay: 4000 })\n ]), polling_loop)\n ], timeouts);\n var http_fallback_loop = new IfStrategy(testSupportsStrategy(http_loop), http_loop, sockjs_loop);\n var wsStrategy;\n if (baseOptions.useTLS) {\n wsStrategy = new best_connected_ever_strategy_BestConnectedEverStrategy([\n ws_loop,\n new delayed_strategy_DelayedStrategy(http_fallback_loop, { delay: 2000 })\n ]);\n }\n else {\n wsStrategy = new best_connected_ever_strategy_BestConnectedEverStrategy([\n ws_loop,\n new delayed_strategy_DelayedStrategy(wss_loop, { delay: 2000 }),\n new delayed_strategy_DelayedStrategy(http_fallback_loop, { delay: 5000 })\n ]);\n }\n return new websocket_prioritized_cached_strategy_WebSocketPrioritizedCachedStrategy(new FirstConnectedStrategy(new IfStrategy(testSupportsStrategy(ws_transport), wsStrategy, http_fallback_loop)), definedTransports, {\n ttl: 1800000,\n timeline: baseOptions.timeline,\n useTLS: baseOptions.useTLS\n });\n};\n/* harmony default export */ var default_strategy = (getDefaultStrategy);\n\n// CONCATENATED MODULE: ./src/runtimes/web/transports/transport_connection_initializer.ts\n\n/* harmony default export */ var transport_connection_initializer = (function () {\n var self = this;\n self.timeline.info(self.buildTimelineMessage({\n transport: self.name + (self.options.useTLS ? 's' : '')\n }));\n if (self.hooks.isInitialized()) {\n self.changeState('initialized');\n }\n else if (self.hooks.file) {\n self.changeState('initializing');\n Dependencies.load(self.hooks.file, { useTLS: self.options.useTLS }, function (error, callback) {\n if (self.hooks.isInitialized()) {\n self.changeState('initialized');\n callback(true);\n }\n else {\n if (error) {\n self.onError(error);\n }\n self.onClose();\n callback(false);\n }\n });\n }\n else {\n self.onClose();\n }\n});\n\n// CONCATENATED MODULE: ./src/runtimes/web/http/http_xdomain_request.ts\n\nvar http_xdomain_request_hooks = {\n getRequest: function (socket) {\n var xdr = new window.XDomainRequest();\n xdr.ontimeout = function () {\n socket.emit('error', new RequestTimedOut());\n socket.close();\n };\n xdr.onerror = function (e) {\n socket.emit('error', e);\n socket.close();\n };\n xdr.onprogress = function () {\n if (xdr.responseText && xdr.responseText.length > 0) {\n socket.onChunk(200, xdr.responseText);\n }\n };\n xdr.onload = function () {\n if (xdr.responseText && xdr.responseText.length > 0) {\n socket.onChunk(200, xdr.responseText);\n }\n socket.emit('finished', 200);\n socket.close();\n };\n return xdr;\n },\n abortRequest: function (xdr) {\n xdr.ontimeout = xdr.onerror = xdr.onprogress = xdr.onload = null;\n xdr.abort();\n }\n};\n/* harmony default export */ var http_xdomain_request = (http_xdomain_request_hooks);\n\n// CONCATENATED MODULE: ./src/core/http/http_request.ts\n\n\nconst MAX_BUFFER_LENGTH = 256 * 1024;\nclass http_request_HTTPRequest extends dispatcher_Dispatcher {\n constructor(hooks, method, url) {\n super();\n this.hooks = hooks;\n this.method = method;\n this.url = url;\n }\n start(payload) {\n this.position = 0;\n this.xhr = this.hooks.getRequest(this);\n this.unloader = () => {\n this.close();\n };\n runtime.addUnloadListener(this.unloader);\n this.xhr.open(this.method, this.url, true);\n if (this.xhr.setRequestHeader) {\n this.xhr.setRequestHeader('Content-Type', 'application/json');\n }\n this.xhr.send(payload);\n }\n close() {\n if (this.unloader) {\n runtime.removeUnloadListener(this.unloader);\n this.unloader = null;\n }\n if (this.xhr) {\n this.hooks.abortRequest(this.xhr);\n this.xhr = null;\n }\n }\n onChunk(status, data) {\n while (true) {\n var chunk = this.advanceBuffer(data);\n if (chunk) {\n this.emit('chunk', { status: status, data: chunk });\n }\n else {\n break;\n }\n }\n if (this.isBufferTooLong(data)) {\n this.emit('buffer_too_long');\n }\n }\n advanceBuffer(buffer) {\n var unreadData = buffer.slice(this.position);\n var endOfLinePosition = unreadData.indexOf('\\n');\n if (endOfLinePosition !== -1) {\n this.position += endOfLinePosition + 1;\n return unreadData.slice(0, endOfLinePosition);\n }\n else {\n return null;\n }\n }\n isBufferTooLong(buffer) {\n return this.position === buffer.length && buffer.length > MAX_BUFFER_LENGTH;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/http/state.ts\nvar State;\n(function (State) {\n State[State[\"CONNECTING\"] = 0] = \"CONNECTING\";\n State[State[\"OPEN\"] = 1] = \"OPEN\";\n State[State[\"CLOSED\"] = 3] = \"CLOSED\";\n})(State || (State = {}));\n/* harmony default export */ var state = (State);\n\n// CONCATENATED MODULE: ./src/core/http/http_socket.ts\n\n\n\nvar autoIncrement = 1;\nclass http_socket_HTTPSocket {\n constructor(hooks, url) {\n this.hooks = hooks;\n this.session = randomNumber(1000) + '/' + randomString(8);\n this.location = getLocation(url);\n this.readyState = state.CONNECTING;\n this.openStream();\n }\n send(payload) {\n return this.sendRaw(JSON.stringify([payload]));\n }\n ping() {\n this.hooks.sendHeartbeat(this);\n }\n close(code, reason) {\n this.onClose(code, reason, true);\n }\n sendRaw(payload) {\n if (this.readyState === state.OPEN) {\n try {\n runtime.createSocketRequest('POST', getUniqueURL(getSendURL(this.location, this.session))).start(payload);\n return true;\n }\n catch (e) {\n return false;\n }\n }\n else {\n return false;\n }\n }\n reconnect() {\n this.closeStream();\n this.openStream();\n }\n onClose(code, reason, wasClean) {\n this.closeStream();\n this.readyState = state.CLOSED;\n if (this.onclose) {\n this.onclose({\n code: code,\n reason: reason,\n wasClean: wasClean\n });\n }\n }\n onChunk(chunk) {\n if (chunk.status !== 200) {\n return;\n }\n if (this.readyState === state.OPEN) {\n this.onActivity();\n }\n var payload;\n var type = chunk.data.slice(0, 1);\n switch (type) {\n case 'o':\n payload = JSON.parse(chunk.data.slice(1) || '{}');\n this.onOpen(payload);\n break;\n case 'a':\n payload = JSON.parse(chunk.data.slice(1) || '[]');\n for (var i = 0; i < payload.length; i++) {\n this.onEvent(payload[i]);\n }\n break;\n case 'm':\n payload = JSON.parse(chunk.data.slice(1) || 'null');\n this.onEvent(payload);\n break;\n case 'h':\n this.hooks.onHeartbeat(this);\n break;\n case 'c':\n payload = JSON.parse(chunk.data.slice(1) || '[]');\n this.onClose(payload[0], payload[1], true);\n break;\n }\n }\n onOpen(options) {\n if (this.readyState === state.CONNECTING) {\n if (options && options.hostname) {\n this.location.base = replaceHost(this.location.base, options.hostname);\n }\n this.readyState = state.OPEN;\n if (this.onopen) {\n this.onopen();\n }\n }\n else {\n this.onClose(1006, 'Server lost session', true);\n }\n }\n onEvent(event) {\n if (this.readyState === state.OPEN && this.onmessage) {\n this.onmessage({ data: event });\n }\n }\n onActivity() {\n if (this.onactivity) {\n this.onactivity();\n }\n }\n onError(error) {\n if (this.onerror) {\n this.onerror(error);\n }\n }\n openStream() {\n this.stream = runtime.createSocketRequest('POST', getUniqueURL(this.hooks.getReceiveURL(this.location, this.session)));\n this.stream.bind('chunk', chunk => {\n this.onChunk(chunk);\n });\n this.stream.bind('finished', status => {\n this.hooks.onFinished(this, status);\n });\n this.stream.bind('buffer_too_long', () => {\n this.reconnect();\n });\n try {\n this.stream.start();\n }\n catch (error) {\n util.defer(() => {\n this.onError(error);\n this.onClose(1006, 'Could not start streaming', false);\n });\n }\n }\n closeStream() {\n if (this.stream) {\n this.stream.unbind_all();\n this.stream.close();\n this.stream = null;\n }\n }\n}\nfunction getLocation(url) {\n var parts = /([^\\?]*)\\/*(\\??.*)/.exec(url);\n return {\n base: parts[1],\n queryString: parts[2]\n };\n}\nfunction getSendURL(url, session) {\n return url.base + '/' + session + '/xhr_send';\n}\nfunction getUniqueURL(url) {\n var separator = url.indexOf('?') === -1 ? '?' : '&';\n return url + separator + 't=' + +new Date() + '&n=' + autoIncrement++;\n}\nfunction replaceHost(url, hostname) {\n var urlParts = /(https?:\\/\\/)([^\\/:]+)((\\/|:)?.*)/.exec(url);\n return urlParts[1] + hostname + urlParts[3];\n}\nfunction randomNumber(max) {\n return runtime.randomInt(max);\n}\nfunction randomString(length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(randomNumber(32).toString(32));\n }\n return result.join('');\n}\n/* harmony default export */ var http_socket = (http_socket_HTTPSocket);\n\n// CONCATENATED MODULE: ./src/core/http/http_streaming_socket.ts\nvar http_streaming_socket_hooks = {\n getReceiveURL: function (url, session) {\n return url.base + '/' + session + '/xhr_streaming' + url.queryString;\n },\n onHeartbeat: function (socket) {\n socket.sendRaw('[]');\n },\n sendHeartbeat: function (socket) {\n socket.sendRaw('[]');\n },\n onFinished: function (socket, status) {\n socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n }\n};\n/* harmony default export */ var http_streaming_socket = (http_streaming_socket_hooks);\n\n// CONCATENATED MODULE: ./src/core/http/http_polling_socket.ts\nvar http_polling_socket_hooks = {\n getReceiveURL: function (url, session) {\n return url.base + '/' + session + '/xhr' + url.queryString;\n },\n onHeartbeat: function () {\n },\n sendHeartbeat: function (socket) {\n socket.sendRaw('[]');\n },\n onFinished: function (socket, status) {\n if (status === 200) {\n socket.reconnect();\n }\n else {\n socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n }\n }\n};\n/* harmony default export */ var http_polling_socket = (http_polling_socket_hooks);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http_xhr_request.ts\n\nvar http_xhr_request_hooks = {\n getRequest: function (socket) {\n var Constructor = runtime.getXHRAPI();\n var xhr = new Constructor();\n xhr.onreadystatechange = xhr.onprogress = function () {\n switch (xhr.readyState) {\n case 3:\n if (xhr.responseText && xhr.responseText.length > 0) {\n socket.onChunk(xhr.status, xhr.responseText);\n }\n break;\n case 4:\n if (xhr.responseText && xhr.responseText.length > 0) {\n socket.onChunk(xhr.status, xhr.responseText);\n }\n socket.emit('finished', xhr.status);\n socket.close();\n break;\n }\n };\n return xhr;\n },\n abortRequest: function (xhr) {\n xhr.onreadystatechange = null;\n xhr.abort();\n }\n};\n/* harmony default export */ var http_xhr_request = (http_xhr_request_hooks);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http.ts\n\n\n\n\n\nvar HTTP = {\n createStreamingSocket(url) {\n return this.createSocket(http_streaming_socket, url);\n },\n createPollingSocket(url) {\n return this.createSocket(http_polling_socket, url);\n },\n createSocket(hooks, url) {\n return new http_socket(hooks, url);\n },\n createXHR(method, url) {\n return this.createRequest(http_xhr_request, method, url);\n },\n createRequest(hooks, method, url) {\n return new http_request_HTTPRequest(hooks, method, url);\n }\n};\n/* harmony default export */ var http_http = (HTTP);\n\n// CONCATENATED MODULE: ./src/runtimes/web/http/http.ts\n\n\nhttp_http.createXDR = function (method, url) {\n return this.createRequest(http_xdomain_request, method, url);\n};\n/* harmony default export */ var web_http_http = (http_http);\n\n// CONCATENATED MODULE: ./src/runtimes/web/runtime.ts\n\n\n\n\n\n\n\n\n\n\n\n\nvar Runtime = {\n nextAuthCallbackID: 1,\n auth_callbacks: {},\n ScriptReceivers: ScriptReceivers,\n DependenciesReceivers: DependenciesReceivers,\n getDefaultStrategy: default_strategy,\n Transports: transports_transports,\n transportConnectionInitializer: transport_connection_initializer,\n HTTPFactory: web_http_http,\n TimelineTransport: jsonp_timeline,\n getXHRAPI() {\n return window.XMLHttpRequest;\n },\n getWebSocketAPI() {\n return window.WebSocket || window.MozWebSocket;\n },\n setup(PusherClass) {\n window.Pusher = PusherClass;\n var initializeOnDocumentBody = () => {\n this.onDocumentBody(PusherClass.ready);\n };\n if (!window.JSON) {\n Dependencies.load('json2', {}, initializeOnDocumentBody);\n }\n else {\n initializeOnDocumentBody();\n }\n },\n getDocument() {\n return document;\n },\n getProtocol() {\n return this.getDocument().location.protocol;\n },\n getAuthorizers() {\n return { ajax: xhr_auth, jsonp: jsonp_auth };\n },\n onDocumentBody(callback) {\n if (document.body) {\n callback();\n }\n else {\n setTimeout(() => {\n this.onDocumentBody(callback);\n }, 0);\n }\n },\n createJSONPRequest(url, data) {\n return new jsonp_request_JSONPRequest(url, data);\n },\n createScriptRequest(src) {\n return new ScriptRequest(src);\n },\n getLocalStorage() {\n try {\n return window.localStorage;\n }\n catch (e) {\n return undefined;\n }\n },\n createXHR() {\n if (this.getXHRAPI()) {\n return this.createXMLHttpRequest();\n }\n else {\n return this.createMicrosoftXHR();\n }\n },\n createXMLHttpRequest() {\n var Constructor = this.getXHRAPI();\n return new Constructor();\n },\n createMicrosoftXHR() {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n getNetwork() {\n return net_info_Network;\n },\n createWebSocket(url) {\n var Constructor = this.getWebSocketAPI();\n return new Constructor(url);\n },\n createSocketRequest(method, url) {\n if (this.isXHRSupported()) {\n return this.HTTPFactory.createXHR(method, url);\n }\n else if (this.isXDRSupported(url.indexOf('https:') === 0)) {\n return this.HTTPFactory.createXDR(method, url);\n }\n else {\n throw 'Cross-origin HTTP requests are not supported';\n }\n },\n isXHRSupported() {\n var Constructor = this.getXHRAPI();\n return (Boolean(Constructor) && new Constructor().withCredentials !== undefined);\n },\n isXDRSupported(useTLS) {\n var protocol = useTLS ? 'https:' : 'http:';\n var documentProtocol = this.getProtocol();\n return (Boolean(window['XDomainRequest']) && documentProtocol === protocol);\n },\n addUnloadListener(listener) {\n if (window.addEventListener !== undefined) {\n window.addEventListener('unload', listener, false);\n }\n else if (window.attachEvent !== undefined) {\n window.attachEvent('onunload', listener);\n }\n },\n removeUnloadListener(listener) {\n if (window.addEventListener !== undefined) {\n window.removeEventListener('unload', listener, false);\n }\n else if (window.detachEvent !== undefined) {\n window.detachEvent('onunload', listener);\n }\n },\n randomInt(max) {\n const random = function () {\n const crypto = window.crypto || window['msCrypto'];\n const random = crypto.getRandomValues(new Uint32Array(1))[0];\n return random / Math.pow(2, 32);\n };\n return Math.floor(random() * max);\n }\n};\n/* harmony default export */ var runtime = (Runtime);\n\n// CONCATENATED MODULE: ./src/core/timeline/level.ts\nvar TimelineLevel;\n(function (TimelineLevel) {\n TimelineLevel[TimelineLevel[\"ERROR\"] = 3] = \"ERROR\";\n TimelineLevel[TimelineLevel[\"INFO\"] = 6] = \"INFO\";\n TimelineLevel[TimelineLevel[\"DEBUG\"] = 7] = \"DEBUG\";\n})(TimelineLevel || (TimelineLevel = {}));\n/* harmony default export */ var timeline_level = (TimelineLevel);\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline.ts\n\n\n\nclass timeline_Timeline {\n constructor(key, session, options) {\n this.key = key;\n this.session = session;\n this.events = [];\n this.options = options || {};\n this.sent = 0;\n this.uniqueID = 0;\n }\n log(level, event) {\n if (level <= this.options.level) {\n this.events.push(extend({}, event, { timestamp: util.now() }));\n if (this.options.limit && this.events.length > this.options.limit) {\n this.events.shift();\n }\n }\n }\n error(event) {\n this.log(timeline_level.ERROR, event);\n }\n info(event) {\n this.log(timeline_level.INFO, event);\n }\n debug(event) {\n this.log(timeline_level.DEBUG, event);\n }\n isEmpty() {\n return this.events.length === 0;\n }\n send(sendfn, callback) {\n var data = extend({\n session: this.session,\n bundle: this.sent + 1,\n key: this.key,\n lib: 'js',\n version: this.options.version,\n cluster: this.options.cluster,\n features: this.options.features,\n timeline: this.events\n }, this.options.params);\n this.events = [];\n sendfn(data, (error, result) => {\n if (!error) {\n this.sent++;\n }\n if (callback) {\n callback(error, result);\n }\n });\n return true;\n }\n generateUniqueID() {\n this.uniqueID++;\n return this.uniqueID;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/transport_strategy.ts\n\n\n\n\nclass transport_strategy_TransportStrategy {\n constructor(name, priority, transport, options) {\n this.name = name;\n this.priority = priority;\n this.transport = transport;\n this.options = options || {};\n }\n isSupported() {\n return this.transport.isSupported({\n useTLS: this.options.useTLS\n });\n }\n connect(minPriority, callback) {\n if (!this.isSupported()) {\n return failAttempt(new UnsupportedStrategy(), callback);\n }\n else if (this.priority < minPriority) {\n return failAttempt(new TransportPriorityTooLow(), callback);\n }\n var connected = false;\n var transport = this.transport.createConnection(this.name, this.priority, this.options.key, this.options);\n var handshake = null;\n var onInitialized = function () {\n transport.unbind('initialized', onInitialized);\n transport.connect();\n };\n var onOpen = function () {\n handshake = factory.createHandshake(transport, function (result) {\n connected = true;\n unbindListeners();\n callback(null, result);\n });\n };\n var onError = function (error) {\n unbindListeners();\n callback(error);\n };\n var onClosed = function () {\n unbindListeners();\n var serializedTransport;\n serializedTransport = safeJSONStringify(transport);\n callback(new TransportClosed(serializedTransport));\n };\n var unbindListeners = function () {\n transport.unbind('initialized', onInitialized);\n transport.unbind('open', onOpen);\n transport.unbind('error', onError);\n transport.unbind('closed', onClosed);\n };\n transport.bind('initialized', onInitialized);\n transport.bind('open', onOpen);\n transport.bind('error', onError);\n transport.bind('closed', onClosed);\n transport.initialize();\n return {\n abort: () => {\n if (connected) {\n return;\n }\n unbindListeners();\n if (handshake) {\n handshake.close();\n }\n else {\n transport.close();\n }\n },\n forceMinPriority: p => {\n if (connected) {\n return;\n }\n if (this.priority < p) {\n if (handshake) {\n handshake.close();\n }\n else {\n transport.close();\n }\n }\n }\n };\n }\n}\nfunction failAttempt(error, callback) {\n util.defer(function () {\n callback(error);\n });\n return {\n abort: function () { },\n forceMinPriority: function () { }\n };\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/strategy_builder.ts\n\n\n\n\n\nconst { Transports: strategy_builder_Transports } = runtime;\nvar strategy_builder_defineTransport = function (config, name, type, priority, options, manager) {\n var transportClass = strategy_builder_Transports[type];\n if (!transportClass) {\n throw new UnsupportedTransport(type);\n }\n var enabled = (!config.enabledTransports ||\n arrayIndexOf(config.enabledTransports, name) !== -1) &&\n (!config.disabledTransports ||\n arrayIndexOf(config.disabledTransports, name) === -1);\n var transport;\n if (enabled) {\n options = Object.assign({ ignoreNullOrigin: config.ignoreNullOrigin }, options);\n transport = new transport_strategy_TransportStrategy(name, priority, manager ? manager.getAssistant(transportClass) : transportClass, options);\n }\n else {\n transport = strategy_builder_UnsupportedStrategy;\n }\n return transport;\n};\nvar strategy_builder_UnsupportedStrategy = {\n isSupported: function () {\n return false;\n },\n connect: function (_, callback) {\n var deferred = util.defer(function () {\n callback(new UnsupportedStrategy());\n });\n return {\n abort: function () {\n deferred.ensureAborted();\n },\n forceMinPriority: function () { }\n };\n }\n};\n\n// CONCATENATED MODULE: ./src/core/options.ts\n\nfunction validateOptions(options) {\n if (options == null) {\n throw 'You must pass an options object';\n }\n if (options.cluster == null) {\n throw 'Options object must provide a cluster';\n }\n if ('disableStats' in options) {\n logger.warn('The disableStats option is deprecated in favor of enableStats');\n }\n}\n\n// CONCATENATED MODULE: ./src/core/auth/user_authenticator.ts\n\n\nconst composeChannelQuery = (params, authOptions) => {\n var query = 'socket_id=' + encodeURIComponent(params.socketId);\n for (var key in authOptions.params) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(authOptions.params[key]);\n }\n if (authOptions.paramsProvider != null) {\n let dynamicParams = authOptions.paramsProvider();\n for (var key in dynamicParams) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(dynamicParams[key]);\n }\n }\n return query;\n};\nconst UserAuthenticator = (authOptions) => {\n if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n throw `'${authOptions.transport}' is not a recognized auth transport`;\n }\n return (params, callback) => {\n const query = composeChannelQuery(params, authOptions);\n runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.UserAuthentication, callback);\n };\n};\n/* harmony default export */ var user_authenticator = (UserAuthenticator);\n\n// CONCATENATED MODULE: ./src/core/auth/channel_authorizer.ts\n\n\nconst channel_authorizer_composeChannelQuery = (params, authOptions) => {\n var query = 'socket_id=' + encodeURIComponent(params.socketId);\n query += '&channel_name=' + encodeURIComponent(params.channelName);\n for (var key in authOptions.params) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(authOptions.params[key]);\n }\n if (authOptions.paramsProvider != null) {\n let dynamicParams = authOptions.paramsProvider();\n for (var key in dynamicParams) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(dynamicParams[key]);\n }\n }\n return query;\n};\nconst ChannelAuthorizer = (authOptions) => {\n if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n throw `'${authOptions.transport}' is not a recognized auth transport`;\n }\n return (params, callback) => {\n const query = channel_authorizer_composeChannelQuery(params, authOptions);\n runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.ChannelAuthorization, callback);\n };\n};\n/* harmony default export */ var channel_authorizer = (ChannelAuthorizer);\n\n// CONCATENATED MODULE: ./src/core/auth/deprecated_channel_authorizer.ts\nconst ChannelAuthorizerProxy = (pusher, authOptions, channelAuthorizerGenerator) => {\n const deprecatedAuthorizerOptions = {\n authTransport: authOptions.transport,\n authEndpoint: authOptions.endpoint,\n auth: {\n params: authOptions.params,\n headers: authOptions.headers\n }\n };\n return (params, callback) => {\n const channel = pusher.channel(params.channelName);\n const channelAuthorizer = channelAuthorizerGenerator(channel, deprecatedAuthorizerOptions);\n channelAuthorizer.authorize(params.socketId, callback);\n };\n};\n\n// CONCATENATED MODULE: ./src/core/config.ts\n\n\n\n\n\nfunction getConfig(opts, pusher) {\n let config = {\n activityTimeout: opts.activityTimeout || defaults.activityTimeout,\n cluster: opts.cluster,\n httpPath: opts.httpPath || defaults.httpPath,\n httpPort: opts.httpPort || defaults.httpPort,\n httpsPort: opts.httpsPort || defaults.httpsPort,\n pongTimeout: opts.pongTimeout || defaults.pongTimeout,\n statsHost: opts.statsHost || defaults.stats_host,\n unavailableTimeout: opts.unavailableTimeout || defaults.unavailableTimeout,\n wsPath: opts.wsPath || defaults.wsPath,\n wsPort: opts.wsPort || defaults.wsPort,\n wssPort: opts.wssPort || defaults.wssPort,\n enableStats: getEnableStatsConfig(opts),\n httpHost: getHttpHost(opts),\n useTLS: shouldUseTLS(opts),\n wsHost: getWebsocketHost(opts),\n userAuthenticator: buildUserAuthenticator(opts),\n channelAuthorizer: buildChannelAuthorizer(opts, pusher)\n };\n if ('disabledTransports' in opts)\n config.disabledTransports = opts.disabledTransports;\n if ('enabledTransports' in opts)\n config.enabledTransports = opts.enabledTransports;\n if ('ignoreNullOrigin' in opts)\n config.ignoreNullOrigin = opts.ignoreNullOrigin;\n if ('timelineParams' in opts)\n config.timelineParams = opts.timelineParams;\n if ('nacl' in opts) {\n config.nacl = opts.nacl;\n }\n return config;\n}\nfunction getHttpHost(opts) {\n if (opts.httpHost) {\n return opts.httpHost;\n }\n if (opts.cluster) {\n return `sockjs-${opts.cluster}.pusher.com`;\n }\n return defaults.httpHost;\n}\nfunction getWebsocketHost(opts) {\n if (opts.wsHost) {\n return opts.wsHost;\n }\n return getWebsocketHostFromCluster(opts.cluster);\n}\nfunction getWebsocketHostFromCluster(cluster) {\n return `ws-${cluster}.pusher.com`;\n}\nfunction shouldUseTLS(opts) {\n if (runtime.getProtocol() === 'https:') {\n return true;\n }\n else if (opts.forceTLS === false) {\n return false;\n }\n return true;\n}\nfunction getEnableStatsConfig(opts) {\n if ('enableStats' in opts) {\n return opts.enableStats;\n }\n if ('disableStats' in opts) {\n return !opts.disableStats;\n }\n return false;\n}\nfunction buildUserAuthenticator(opts) {\n const userAuthentication = Object.assign(Object.assign({}, defaults.userAuthentication), opts.userAuthentication);\n if ('customHandler' in userAuthentication &&\n userAuthentication['customHandler'] != null) {\n return userAuthentication['customHandler'];\n }\n return user_authenticator(userAuthentication);\n}\nfunction buildChannelAuth(opts, pusher) {\n let channelAuthorization;\n if ('channelAuthorization' in opts) {\n channelAuthorization = Object.assign(Object.assign({}, defaults.channelAuthorization), opts.channelAuthorization);\n }\n else {\n channelAuthorization = {\n transport: opts.authTransport || defaults.authTransport,\n endpoint: opts.authEndpoint || defaults.authEndpoint\n };\n if ('auth' in opts) {\n if ('params' in opts.auth)\n channelAuthorization.params = opts.auth.params;\n if ('headers' in opts.auth)\n channelAuthorization.headers = opts.auth.headers;\n }\n if ('authorizer' in opts)\n channelAuthorization.customHandler = ChannelAuthorizerProxy(pusher, channelAuthorization, opts.authorizer);\n }\n return channelAuthorization;\n}\nfunction buildChannelAuthorizer(opts, pusher) {\n const channelAuthorization = buildChannelAuth(opts, pusher);\n if ('customHandler' in channelAuthorization &&\n channelAuthorization['customHandler'] != null) {\n return channelAuthorization['customHandler'];\n }\n return channel_authorizer(channelAuthorization);\n}\n\n// CONCATENATED MODULE: ./src/core/watchlist.ts\n\n\nclass watchlist_WatchlistFacade extends dispatcher_Dispatcher {\n constructor(pusher) {\n super(function (eventName, data) {\n logger.debug(`No callbacks on watchlist events for ${eventName}`);\n });\n this.pusher = pusher;\n this.bindWatchlistInternalEvent();\n }\n handleEvent(pusherEvent) {\n pusherEvent.data.events.forEach(watchlistEvent => {\n this.emit(watchlistEvent.name, watchlistEvent);\n });\n }\n bindWatchlistInternalEvent() {\n this.pusher.connection.bind('message', pusherEvent => {\n var eventName = pusherEvent.event;\n if (eventName === 'pusher_internal:watchlist_events') {\n this.handleEvent(pusherEvent);\n }\n });\n }\n}\n\n// CONCATENATED MODULE: ./src/core/utils/flat_promise.ts\nfunction flatPromise() {\n let resolve, reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\n/* harmony default export */ var flat_promise = (flatPromise);\n\n// CONCATENATED MODULE: ./src/core/user.ts\n\n\n\n\n\nclass user_UserFacade extends dispatcher_Dispatcher {\n constructor(pusher) {\n super(function (eventName, data) {\n logger.debug('No callbacks on user for ' + eventName);\n });\n this.signin_requested = false;\n this.user_data = null;\n this.serverToUserChannel = null;\n this.signinDonePromise = null;\n this._signinDoneResolve = null;\n this._onAuthorize = (err, authData) => {\n if (err) {\n logger.warn(`Error during signin: ${err}`);\n this._cleanup();\n return;\n }\n this.pusher.send_event('pusher:signin', {\n auth: authData.auth,\n user_data: authData.user_data\n });\n };\n this.pusher = pusher;\n this.pusher.connection.bind('state_change', ({ previous, current }) => {\n if (previous !== 'connected' && current === 'connected') {\n this._signin();\n }\n if (previous === 'connected' && current !== 'connected') {\n this._cleanup();\n this._newSigninPromiseIfNeeded();\n }\n });\n this.watchlist = new watchlist_WatchlistFacade(pusher);\n this.pusher.connection.bind('message', event => {\n var eventName = event.event;\n if (eventName === 'pusher:signin_success') {\n this._onSigninSuccess(event.data);\n }\n if (this.serverToUserChannel &&\n this.serverToUserChannel.name === event.channel) {\n this.serverToUserChannel.handleEvent(event);\n }\n });\n }\n signin() {\n if (this.signin_requested) {\n return;\n }\n this.signin_requested = true;\n this._signin();\n }\n _signin() {\n if (!this.signin_requested) {\n return;\n }\n this._newSigninPromiseIfNeeded();\n if (this.pusher.connection.state !== 'connected') {\n return;\n }\n this.pusher.config.userAuthenticator({\n socketId: this.pusher.connection.socket_id\n }, this._onAuthorize);\n }\n _onSigninSuccess(data) {\n try {\n this.user_data = JSON.parse(data.user_data);\n }\n catch (e) {\n logger.error(`Failed parsing user data after signin: ${data.user_data}`);\n this._cleanup();\n return;\n }\n if (typeof this.user_data.id !== 'string' || this.user_data.id === '') {\n logger.error(`user_data doesn't contain an id. user_data: ${this.user_data}`);\n this._cleanup();\n return;\n }\n this._signinDoneResolve();\n this._subscribeChannels();\n }\n _subscribeChannels() {\n const ensure_subscribed = channel => {\n if (channel.subscriptionPending && channel.subscriptionCancelled) {\n channel.reinstateSubscription();\n }\n else if (!channel.subscriptionPending &&\n this.pusher.connection.state === 'connected') {\n channel.subscribe();\n }\n };\n this.serverToUserChannel = new channel_Channel(`#server-to-user-${this.user_data.id}`, this.pusher);\n this.serverToUserChannel.bind_global((eventName, data) => {\n if (eventName.indexOf('pusher_internal:') === 0 ||\n eventName.indexOf('pusher:') === 0) {\n return;\n }\n this.emit(eventName, data);\n });\n ensure_subscribed(this.serverToUserChannel);\n }\n _cleanup() {\n this.user_data = null;\n if (this.serverToUserChannel) {\n this.serverToUserChannel.unbind_all();\n this.serverToUserChannel.disconnect();\n this.serverToUserChannel = null;\n }\n if (this.signin_requested) {\n this._signinDoneResolve();\n }\n }\n _newSigninPromiseIfNeeded() {\n if (!this.signin_requested) {\n return;\n }\n if (this.signinDonePromise && !this.signinDonePromise.done) {\n return;\n }\n const { promise, resolve, reject: _ } = flat_promise();\n promise.done = false;\n const setDone = () => {\n promise.done = true;\n };\n promise.then(setDone).catch(setDone);\n this.signinDonePromise = promise;\n this._signinDoneResolve = resolve;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/pusher.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass pusher_Pusher {\n static ready() {\n pusher_Pusher.isReady = true;\n for (var i = 0, l = pusher_Pusher.instances.length; i < l; i++) {\n pusher_Pusher.instances[i].connect();\n }\n }\n static getClientFeatures() {\n return keys(filterObject({ ws: runtime.Transports.ws }, function (t) {\n return t.isSupported({});\n }));\n }\n constructor(app_key, options) {\n checkAppKey(app_key);\n validateOptions(options);\n this.key = app_key;\n this.config = getConfig(options, this);\n this.channels = factory.createChannels();\n this.global_emitter = new dispatcher_Dispatcher();\n this.sessionID = runtime.randomInt(1000000000);\n this.timeline = new timeline_Timeline(this.key, this.sessionID, {\n cluster: this.config.cluster,\n features: pusher_Pusher.getClientFeatures(),\n params: this.config.timelineParams || {},\n limit: 50,\n level: timeline_level.INFO,\n version: defaults.VERSION\n });\n if (this.config.enableStats) {\n this.timelineSender = factory.createTimelineSender(this.timeline, {\n host: this.config.statsHost,\n path: '/timeline/v2/' + runtime.TimelineTransport.name\n });\n }\n var getStrategy = (options) => {\n return runtime.getDefaultStrategy(this.config, options, strategy_builder_defineTransport);\n };\n this.connection = factory.createConnectionManager(this.key, {\n getStrategy: getStrategy,\n timeline: this.timeline,\n activityTimeout: this.config.activityTimeout,\n pongTimeout: this.config.pongTimeout,\n unavailableTimeout: this.config.unavailableTimeout,\n useTLS: Boolean(this.config.useTLS)\n });\n this.connection.bind('connected', () => {\n this.subscribeAll();\n if (this.timelineSender) {\n this.timelineSender.send(this.connection.isUsingTLS());\n }\n });\n this.connection.bind('message', event => {\n var eventName = event.event;\n var internal = eventName.indexOf('pusher_internal:') === 0;\n if (event.channel) {\n var channel = this.channel(event.channel);\n if (channel) {\n channel.handleEvent(event);\n }\n }\n if (!internal) {\n this.global_emitter.emit(event.event, event.data);\n }\n });\n this.connection.bind('connecting', () => {\n this.channels.disconnect();\n });\n this.connection.bind('disconnected', () => {\n this.channels.disconnect();\n });\n this.connection.bind('error', err => {\n logger.warn(err);\n });\n pusher_Pusher.instances.push(this);\n this.timeline.info({ instances: pusher_Pusher.instances.length });\n this.user = new user_UserFacade(this);\n if (pusher_Pusher.isReady) {\n this.connect();\n }\n }\n channel(name) {\n return this.channels.find(name);\n }\n allChannels() {\n return this.channels.all();\n }\n connect() {\n this.connection.connect();\n if (this.timelineSender) {\n if (!this.timelineSenderTimer) {\n var usingTLS = this.connection.isUsingTLS();\n var timelineSender = this.timelineSender;\n this.timelineSenderTimer = new timers_PeriodicTimer(60000, function () {\n timelineSender.send(usingTLS);\n });\n }\n }\n }\n disconnect() {\n this.connection.disconnect();\n if (this.timelineSenderTimer) {\n this.timelineSenderTimer.ensureAborted();\n this.timelineSenderTimer = null;\n }\n }\n bind(event_name, callback, context) {\n this.global_emitter.bind(event_name, callback, context);\n return this;\n }\n unbind(event_name, callback, context) {\n this.global_emitter.unbind(event_name, callback, context);\n return this;\n }\n bind_global(callback) {\n this.global_emitter.bind_global(callback);\n return this;\n }\n unbind_global(callback) {\n this.global_emitter.unbind_global(callback);\n return this;\n }\n unbind_all(callback) {\n this.global_emitter.unbind_all();\n return this;\n }\n subscribeAll() {\n var channelName;\n for (channelName in this.channels.channels) {\n if (this.channels.channels.hasOwnProperty(channelName)) {\n this.subscribe(channelName);\n }\n }\n }\n subscribe(channel_name) {\n var channel = this.channels.add(channel_name, this);\n if (channel.subscriptionPending && channel.subscriptionCancelled) {\n channel.reinstateSubscription();\n }\n else if (!channel.subscriptionPending &&\n this.connection.state === 'connected') {\n channel.subscribe();\n }\n return channel;\n }\n unsubscribe(channel_name) {\n var channel = this.channels.find(channel_name);\n if (channel && channel.subscriptionPending) {\n channel.cancelSubscription();\n }\n else {\n channel = this.channels.remove(channel_name);\n if (channel && channel.subscribed) {\n channel.unsubscribe();\n }\n }\n }\n send_event(event_name, data, channel) {\n return this.connection.send_event(event_name, data, channel);\n }\n shouldUseTLS() {\n return this.config.useTLS;\n }\n signin() {\n this.user.signin();\n }\n}\npusher_Pusher.instances = [];\npusher_Pusher.isReady = false;\npusher_Pusher.logToConsole = false;\npusher_Pusher.Runtime = runtime;\npusher_Pusher.ScriptReceivers = runtime.ScriptReceivers;\npusher_Pusher.DependenciesReceivers = runtime.DependenciesReceivers;\npusher_Pusher.auth_callbacks = runtime.auth_callbacks;\n/* harmony default export */ var core_pusher = __webpack_exports__[\"default\"] = (pusher_Pusher);\nfunction checkAppKey(key) {\n if (key === null || key === undefined) {\n throw 'You must pass your app key when you instantiate Pusher.';\n }\n}\nruntime.setup(pusher_Pusher);\n\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pusher.js.map","import { useRef, useEffect, useState, useCallback } from 'react';\n\nimport Pusher from 'pusher-js';\n\nexport const ConnectionState = {\n CONNECTING: 'connecting',\n CONNECTED: 'connected',\n ERROR: 'error'\n};\n\nexport function usePusherChannel({ key, cluster, channel: channelName, channelAuthUrl }) {\n const pusherChannelRef = useRef(null);\n const [connectionStatus, setConnectionStatus] = useState(ConnectionState.CONNECTING);\n const prevConnectionStatusRef = useRef(ConnectionState.CONNECTING);\n const [error, setError] = useState(null);\n const onStatusChangeSubscribers = useRef([]);\n\n const addOnStatusChangeSubscriber = useCallback((fn) => {\n onStatusChangeSubscribers.current.push(fn)\n }, [onStatusChangeSubscribers]);\n const handleError = (pusherError) => {\n setConnectionStatus(ConnectionState.ERROR);\n setError(pusherError);\n };\n\n useEffect(() => {\n const pusher = new Pusher(key, {\n cluster: cluster,\n channelAuthorization: {\n endpoint: channelAuthUrl,\n headersProvider: () => {\n return {\n \"X-CSRF-Token\": document.querySelector('[name=\"csrf-token\"]').content,\n };\n },\n },\n });\n\n // https://pusher.com/docs/channels/using_channels/connection/#available-states\n pusher.connection.bind('connecting', () => { setConnectionStatus(ConnectionState.CONNECTING)});\n pusher.connection.bind('connected', () => { setConnectionStatus(ConnectionState.CONNECTED)});\n pusher.connection.bind('unavailable', () => handleError());\n pusher.connection.bind('error', (generalError) => handleError(generalError));\n\n pusherChannelRef.current = pusher.subscribe(channelName);\n pusherChannelRef.current.bind('pusher:subscription_error', subscriptionError => {\n handleError(subscriptionError);\n });\n\n return () => pusher.unsubscribe(channelName);\n }, [key, cluster, channelName]);\n\n useEffect(() => {\n onStatusChangeSubscribers.current.forEach(fn => fn(connectionStatus, prevConnectionStatusRef.current));\n prevConnectionStatusRef.current = connectionStatus\n }, [connectionStatus]);\n\n return {\n channel: pusherChannelRef.current,\n connectionStatus,\n error,\n addOnStatusChangeSubscriber\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport classNames from 'classnames';\n\nexport function StatusBox({ type, className, children }) {\n return (\n <div className={classNames(`alert alert-${type} p-2`, className)} role='alert'>\n {children}\n </div>\n );\n}\n\nStatusBox.propTypes = {\n type: PropTypes.string,\n className: PropTypes.string,\n children: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.arrayOf(PropTypes.node),\n ]),\n}\n\nStatusBox.defaultProps = {\n className: null\n}\n","import React, { useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ConnectionState } from './use-pusher-channel';\nimport { StatusBox } from '../status-box';\n\nexport function PusherConnectionStatus({\n connectionStatus,\n errorMessage,\n statusClassName,\n}) {\n switch (connectionStatus) {\n case ConnectionState.CONNECTING:\n return (\n <StatusBox type=\"info\" className={statusClassName}>\n <i className=\"fas fa-circle-notch fa-spin fa-lg mr-2 text-info\" />\n Connecting…\n </StatusBox>\n );\n case ConnectionState.ERROR:\n return (\n <StatusBox type=\"danger\" className={statusClassName}>\n <i className=\"fas fa-exclamation-circle fa-lg mr-2 text-danger\" />\n {errorMessage}\n </StatusBox>\n );\n default:\n return null; // connected\n }\n}\n\nPusherConnectionStatus.propTypes = {\n connectionStatus: PropTypes.oneOf(Object.values(ConnectionState)).isRequired,\n errorMessage: PropTypes.string,\n statusClassName: PropTypes.string,\n};\n\nPusherConnectionStatus.defaultProps = {\n errorMessage:\n 'This service is temporarily unavailable. Please refresh and try again',\n};\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { ConnectionState } from './use-pusher-channel';\nimport { StatusBox } from '../status-box';\n\nconst isMinimumClientsConnected = (connectedClientCount, minimumClients) => Number(connectedClientCount) >= minimumClients\n\nexport function MinimumConnectedClientsNotification({ minimumClients, connectionStatus, channel, statusClassName, notificationMessage, onConnectedClientCountChange }) {\n const [connectedClientCount, setConnectedClientCount] = useState(null);\n const pusherNotReady = connectionStatus !== ConnectionState.CONNECTED;\n\n useEffect(() => {\n if (channel && connectionStatus === ConnectionState.CONNECTED) {\n channel.bind('pusher:subscription_count', (data) => setConnectedClientCount(data.subscription_count));\n }\n\n return () => channel?.unbind('pusher:subscription_count', setConnectedClientCount);\n }, [connectionStatus, channel]);\n\n useEffect(() => {\n if (onConnectedClientCountChange && connectedClientCount) {\n onConnectedClientCountChange({\n connectedClientCount,\n minimumClientsConnected: isMinimumClientsConnected(connectedClientCount, minimumClients)\n });\n }\n }, [connectedClientCount, onConnectedClientCountChange, minimumClients]);\n\n\n if (pusherNotReady || isMinimumClientsConnected(connectedClientCount, minimumClients)) {\n return null;\n }\n\n return (\n <StatusBox type='info' className={statusClassName} >\n <i className='far fa-hourglass fa-spin fa-lg mr-2 text-info' />\n\n {notificationMessage}\n </StatusBox>\n )\n}\n\nMinimumConnectedClientsNotification.propTypes = {\n minimumClients: PropTypes.number.isRequired,\n connectionStatus: PropTypes.string,\n channel: PropTypes.object,\n statusClassName: PropTypes.string,\n notificationMessage: PropTypes.string,\n onConnectedClientCountChange: PropTypes.func\n}\n\nMinimumConnectedClientsNotification.defaultProps = {\n notificationMessage: 'Waiting for all clients to connect'\n}\n","import React, { useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport { usePusherChannel, ConnectionState } from './use-pusher-channel';\nimport { PusherConnectionStatus } from './pusher-connection-status';\nimport { MinimumConnectedClientsNotification } from './minimum-connected-clients-notification';\n\nexport function PusherConnection({\n children,\n eventHandlers,\n config,\n statusClassName,\n minimumClients,\n minimumClientsMessage,\n}) {\n const { connectionStatus, channel } = usePusherChannel(config);\n\n useEffect(() => {\n const eventNames = Object.keys(eventHandlers);\n\n if (channel && eventNames.length) {\n eventNames.forEach(eventName => {\n const cb = eventHandlers[eventName];\n channel.bind(eventName, event => cb(event));\n });\n }\n\n return () => {\n eventNames.forEach(eventName => {\n const cb = eventHandlers[eventName];\n channel?.unbind(eventName, cb);\n });\n };\n }, [eventHandlers.keys, channel]);\n\n return (\n <div className=\"pusher-connection h-100\">\n {connectionStatus === ConnectionState.CONNECTED && children}\n {Boolean(minimumClients) && (\n <MinimumConnectedClientsNotification\n minimumClients={minimumClients}\n connectionStatus={connectionStatus}\n channel={channel}\n statusClassName={statusClassName}\n notificationMessage={minimumClientsMessage}\n />\n )}\n <PusherConnectionStatus\n connectionStatus={connectionStatus}\n statusClassName={statusClassName}\n />\n </div>\n );\n}\n\nPusherConnection.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.node,\n PropTypes.arrayOf(PropTypes.node),\n ]),\n eventHandlers: PropTypes.objectOf(PropTypes.func),\n config: PropTypes.shape({\n key: PropTypes.string.isRequired,\n cluster: PropTypes.string.isRequired,\n channel: PropTypes.string.isRequired,\n }).isRequired,\n statusClassName: PropTypes.string,\n minimumClients: PropTypes.number,\n minimumClientsMessage: PropTypes.string,\n};\n\nPusherConnection.defaultProps = {\n eventHandlers: {},\n};\n","// Update this with help from https://qr-code-styling.com/\n\nconst sizeInPixels = 500,\n marginInPixels = 0,\n backgroundColour = '#FFFFFF',\n foregroundColour = '#000000';\n\nconst QRCodeStylingOptions = (uploadUrl, imageUrl, options = {}) => {\n const { width = sizeInPixels, height = sizeInPixels } = options;\n\n return {\n \"width\": width,\n \"height\": height,\n \"margin\": marginInPixels,\n\n \"qrOptions\": {\n \"typeNumber\": \"0\",\n \"mode\": \"Byte\",\n \"errorCorrectionLevel\": \"Q\"\n },\n\n \"data\": uploadUrl,\n\n \"image\": imageUrl,\n \"imageOptions\": {\n \"hideBackgroundDots\": true,\n \"imageSize\": 0.5,\n \"margin\": 5\n },\n\n \"backgroundOptions\": {\n \"color\": backgroundColour\n },\n \"backgroundOptionsHelper\": dotOptionsHelper,\n\n \"dotsOptions\": dotsOptions,\n \"dotsOptionsHelper\": dotOptionsHelper,\n\n \"cornersSquareOptions\": dotOptions,\n \"cornersSquareOptionsHelper\": dotOptionsHelper,\n\n \"cornersDotOptions\": dotOptions,\n \"cornersDotOptionsHelper\": dotOptionsHelper\n }\n}\n\nconst dotOptions = {\n \"type\": \"dot\",\n \"color\": foregroundColour\n};\n\nconst dotsOptions = {\n \"type\": \"dots\",\n \"color\": foregroundColour\n}\n\nconst dotOptionsHelper = {\n \"colorType\": {\n \"single\": true,\n \"gradient\": false\n }\n};\n\nexport default QRCodeStylingOptions;","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.QRCodeStyling=e():t.QRCodeStyling=e()}(self,(function(){return(()=>{var t={192:(t,e)=>{var r,n,o=function(){var t=function(t,e){var r=t,n=a[e],o=null,i=0,u=null,v=[],w={},m=function(t,e){o=function(t){for(var e=new Array(t),r=0;r<t;r+=1){e[r]=new Array(t);for(var n=0;n<t;n+=1)e[r][n]=null}return e}(i=4*r+17),b(0,0),b(i-7,0),b(0,i-7),x(),_(),M(t,e),r>=7&&S(t),null==u&&(u=A(r,n,v)),C(u,e)},b=function(t,e){for(var r=-1;r<=7;r+=1)if(!(t+r<=-1||i<=t+r))for(var n=-1;n<=7;n+=1)e+n<=-1||i<=e+n||(o[t+r][e+n]=0<=r&&r<=6&&(0==n||6==n)||0<=n&&n<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=n&&n<=4)},_=function(){for(var t=8;t<i-8;t+=1)null==o[t][6]&&(o[t][6]=t%2==0);for(var e=8;e<i-8;e+=1)null==o[6][e]&&(o[6][e]=e%2==0)},x=function(){for(var t=s.getPatternPosition(r),e=0;e<t.length;e+=1)for(var n=0;n<t.length;n+=1){var i=t[e],a=t[n];if(null==o[i][a])for(var u=-2;u<=2;u+=1)for(var h=-2;h<=2;h+=1)o[i+u][a+h]=-2==u||2==u||-2==h||2==h||0==u&&0==h}},S=function(t){for(var e=s.getBCHTypeNumber(r),n=0;n<18;n+=1){var a=!t&&1==(e>>n&1);o[Math.floor(n/3)][n%3+i-8-3]=a}for(n=0;n<18;n+=1)a=!t&&1==(e>>n&1),o[n%3+i-8-3][Math.floor(n/3)]=a},M=function(t,e){for(var r=n<<3|e,a=s.getBCHTypeInfo(r),u=0;u<15;u+=1){var h=!t&&1==(a>>u&1);u<6?o[u][8]=h:u<8?o[u+1][8]=h:o[i-15+u][8]=h}for(u=0;u<15;u+=1)h=!t&&1==(a>>u&1),u<8?o[8][i-u-1]=h:u<9?o[8][15-u-1+1]=h:o[8][15-u-1]=h;o[i-8][8]=!t},C=function(t,e){for(var r=-1,n=i-1,a=7,u=0,h=s.getMaskFunction(e),c=i-1;c>0;c-=2)for(6==c&&(c-=1);;){for(var l=0;l<2;l+=1)if(null==o[n][c-l]){var d=!1;u<t.length&&(d=1==(t[u]>>>a&1)),h(n,c-l)&&(d=!d),o[n][c-l]=d,-1==(a-=1)&&(u+=1,a=7)}if((n+=r)<0||i<=n){n-=r,r=-r;break}}},A=function(t,e,r){for(var n=c.getRSBlocks(t,e),o=l(),i=0;i<r.length;i+=1){var a=r[i];o.put(a.getMode(),4),o.put(a.getLength(),s.getLengthInBits(a.getMode(),t)),a.write(o)}var u=0;for(i=0;i<n.length;i+=1)u+=n[i].dataCount;if(o.getLengthInBits()>8*u)throw\"code length overflow. (\"+o.getLengthInBits()+\">\"+8*u+\")\";for(o.getLengthInBits()+4<=8*u&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(!1);for(;!(o.getLengthInBits()>=8*u||(o.put(236,8),o.getLengthInBits()>=8*u));)o.put(17,8);return function(t,e){for(var r=0,n=0,o=0,i=new Array(e.length),a=new Array(e.length),u=0;u<e.length;u+=1){var c=e[u].dataCount,l=e[u].totalCount-c;n=Math.max(n,c),o=Math.max(o,l),i[u]=new Array(c);for(var d=0;d<i[u].length;d+=1)i[u][d]=255&t.getBuffer()[d+r];r+=c;var f=s.getErrorCorrectPolynomial(l),g=h(i[u],f.getLength()-1).mod(f);for(a[u]=new Array(f.getLength()-1),d=0;d<a[u].length;d+=1){var p=d+g.getLength()-a[u].length;a[u][d]=p>=0?g.getAt(p):0}}var v=0;for(d=0;d<e.length;d+=1)v+=e[d].totalCount;var w=new Array(v),y=0;for(d=0;d<n;d+=1)for(u=0;u<e.length;u+=1)d<i[u].length&&(w[y]=i[u][d],y+=1);for(d=0;d<o;d+=1)for(u=0;u<e.length;u+=1)d<a[u].length&&(w[y]=a[u][d],y+=1);return w}(o,n)};w.addData=function(t,e){var r=null;switch(e=e||\"Byte\"){case\"Numeric\":r=d(t);break;case\"Alphanumeric\":r=f(t);break;case\"Byte\":r=g(t);break;case\"Kanji\":r=p(t);break;default:throw\"mode:\"+e}v.push(r),u=null},w.isDark=function(t,e){if(t<0||i<=t||e<0||i<=e)throw t+\",\"+e;return o[t][e]},w.getModuleCount=function(){return i},w.make=function(){if(r<1){for(var t=1;t<40;t++){for(var e=c.getRSBlocks(t,n),o=l(),i=0;i<v.length;i++){var a=v[i];o.put(a.getMode(),4),o.put(a.getLength(),s.getLengthInBits(a.getMode(),t)),a.write(o)}var u=0;for(i=0;i<e.length;i++)u+=e[i].dataCount;if(o.getLengthInBits()<=8*u)break}r=t}m(!1,function(){for(var t=0,e=0,r=0;r<8;r+=1){m(!0,r);var n=s.getLostPoint(w);(0==r||t>n)&&(t=n,e=r)}return e}())},w.createTableTag=function(t,e){t=t||2;var r=\"\";r+='<table style=\"',r+=\" border-width: 0px; border-style: none;\",r+=\" border-collapse: collapse;\",r+=\" padding: 0px; margin: \"+(e=void 0===e?4*t:e)+\"px;\",r+='\">',r+=\"<tbody>\";for(var n=0;n<w.getModuleCount();n+=1){r+=\"<tr>\";for(var o=0;o<w.getModuleCount();o+=1)r+='<td style=\"',r+=\" border-width: 0px; border-style: none;\",r+=\" border-collapse: collapse;\",r+=\" padding: 0px; margin: 0px;\",r+=\" width: \"+t+\"px;\",r+=\" height: \"+t+\"px;\",r+=\" background-color: \",r+=w.isDark(n,o)?\"#000000\":\"#ffffff\",r+=\";\",r+='\"/>';r+=\"</tr>\"}return(r+=\"</tbody>\")+\"</table>\"},w.createSvgTag=function(t,e,r,n){var o={};\"object\"==typeof arguments[0]&&(t=(o=arguments[0]).cellSize,e=o.margin,r=o.alt,n=o.title),t=t||2,e=void 0===e?4*t:e,(r=\"string\"==typeof r?{text:r}:r||{}).text=r.text||null,r.id=r.text?r.id||\"qrcode-description\":null,(n=\"string\"==typeof n?{text:n}:n||{}).text=n.text||null,n.id=n.text?n.id||\"qrcode-title\":null;var i,a,s,u,h=w.getModuleCount()*t+2*e,c=\"\";for(u=\"l\"+t+\",0 0,\"+t+\" -\"+t+\",0 0,-\"+t+\"z \",c+='<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"',c+=o.scalable?\"\":' width=\"'+h+'px\" height=\"'+h+'px\"',c+=' viewBox=\"0 0 '+h+\" \"+h+'\" ',c+=' preserveAspectRatio=\"xMinYMin meet\"',c+=n.text||r.text?' role=\"img\" aria-labelledby=\"'+k([n.id,r.id].join(\" \").trim())+'\"':\"\",c+=\">\",c+=n.text?'<title id=\"'+k(n.id)+'\">'+k(n.text)+\"</title>\":\"\",c+=r.text?'<description id=\"'+k(r.id)+'\">'+k(r.text)+\"</description>\":\"\",c+='<rect width=\"100%\" height=\"100%\" fill=\"white\" cx=\"0\" cy=\"0\"/>',c+='<path d=\"',a=0;a<w.getModuleCount();a+=1)for(s=a*t+e,i=0;i<w.getModuleCount();i+=1)w.isDark(a,i)&&(c+=\"M\"+(i*t+e)+\",\"+s+u);return(c+='\" stroke=\"transparent\" fill=\"black\"/>')+\"</svg>\"},w.createDataURL=function(t,e){t=t||2,e=void 0===e?4*t:e;var r=w.getModuleCount()*t+2*e,n=e,o=r-e;return y(r,r,(function(e,r){if(n<=e&&e<o&&n<=r&&r<o){var i=Math.floor((e-n)/t),a=Math.floor((r-n)/t);return w.isDark(a,i)?0:1}return 1}))},w.createImgTag=function(t,e,r){t=t||2,e=void 0===e?4*t:e;var n=w.getModuleCount()*t+2*e,o=\"\";return o+=\"<img\",o+=' src=\"',o+=w.createDataURL(t,e),o+='\"',o+=' width=\"',o+=n,o+='\"',o+=' height=\"',o+=n,o+='\"',r&&(o+=' alt=\"',o+=k(r),o+='\"'),o+\"/>\"};var k=function(t){for(var e=\"\",r=0;r<t.length;r+=1){var n=t.charAt(r);switch(n){case\"<\":e+=\"<\";break;case\">\":e+=\">\";break;case\"&\":e+=\"&\";break;case'\"':e+=\""\";break;default:e+=n}}return e};return w.createASCII=function(t,e){if((t=t||1)<2)return function(t){t=void 0===t?2:t;var e,r,n,o,i,a=1*w.getModuleCount()+2*t,s=t,u=a-t,h={\"██\":\"â–ˆ\",\"â–ˆ \":\"â–€\",\" â–ˆ\":\"â–„\",\" \":\" \"},c={\"██\":\"â–€\",\"â–ˆ \":\"â–€\",\" â–ˆ\":\" \",\" \":\" \"},l=\"\";for(e=0;e<a;e+=2){for(n=Math.floor((e-s)/1),o=Math.floor((e+1-s)/1),r=0;r<a;r+=1)i=\"â–ˆ\",s<=r&&r<u&&s<=e&&e<u&&w.isDark(n,Math.floor((r-s)/1))&&(i=\" \"),s<=r&&r<u&&s<=e+1&&e+1<u&&w.isDark(o,Math.floor((r-s)/1))?i+=\" \":i+=\"â–ˆ\",l+=t<1&&e+1>=u?c[i]:h[i];l+=\"\\n\"}return a%2&&t>0?l.substring(0,l.length-a-1)+Array(a+1).join(\"â–€\"):l.substring(0,l.length-1)}(e);t-=1,e=void 0===e?2*t:e;var r,n,o,i,a=w.getModuleCount()*t+2*e,s=e,u=a-e,h=Array(t+1).join(\"██\"),c=Array(t+1).join(\" \"),l=\"\",d=\"\";for(r=0;r<a;r+=1){for(o=Math.floor((r-s)/t),d=\"\",n=0;n<a;n+=1)i=1,s<=n&&n<u&&s<=r&&r<u&&w.isDark(o,Math.floor((n-s)/t))&&(i=0),d+=i?h:c;for(o=0;o<t;o+=1)l+=d+\"\\n\"}return l.substring(0,l.length-1)},w.renderTo2dContext=function(t,e){e=e||2;for(var r=w.getModuleCount(),n=0;n<r;n++)for(var o=0;o<r;o++)t.fillStyle=w.isDark(n,o)?\"black\":\"white\",t.fillRect(n*e,o*e,e,e)},w};t.stringToBytes=(t.stringToBytesFuncs={default:function(t){for(var e=[],r=0;r<t.length;r+=1){var n=t.charCodeAt(r);e.push(255&n)}return e}}).default,t.createStringToBytes=function(t,e){var r=function(){for(var r=w(t),n=function(){var t=r.read();if(-1==t)throw\"eof\";return t},o=0,i={};;){var a=r.read();if(-1==a)break;var s=n(),u=n()<<8|n();i[String.fromCharCode(a<<8|s)]=u,o+=1}if(o!=e)throw o+\" != \"+e;return i}(),n=\"?\".charCodeAt(0);return function(t){for(var e=[],o=0;o<t.length;o+=1){var i=t.charCodeAt(o);if(i<128)e.push(i);else{var a=r[t.charAt(o)];\"number\"==typeof a?(255&a)==a?e.push(a):(e.push(a>>>8),e.push(255&a)):e.push(n)}}return e}};var e,r,n,o,i,a={L:1,M:0,Q:3,H:2},s=(e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],r=1335,n=7973,i=function(t){for(var e=0;0!=t;)e+=1,t>>>=1;return e},(o={}).getBCHTypeInfo=function(t){for(var e=t<<10;i(e)-i(r)>=0;)e^=r<<i(e)-i(r);return 21522^(t<<10|e)},o.getBCHTypeNumber=function(t){for(var e=t<<12;i(e)-i(n)>=0;)e^=n<<i(e)-i(n);return t<<12|e},o.getPatternPosition=function(t){return e[t-1]},o.getMaskFunction=function(t){switch(t){case 0:return function(t,e){return(t+e)%2==0};case 1:return function(t,e){return t%2==0};case 2:return function(t,e){return e%3==0};case 3:return function(t,e){return(t+e)%3==0};case 4:return function(t,e){return(Math.floor(t/2)+Math.floor(e/3))%2==0};case 5:return function(t,e){return t*e%2+t*e%3==0};case 6:return function(t,e){return(t*e%2+t*e%3)%2==0};case 7:return function(t,e){return(t*e%3+(t+e)%2)%2==0};default:throw\"bad maskPattern:\"+t}},o.getErrorCorrectPolynomial=function(t){for(var e=h([1],0),r=0;r<t;r+=1)e=e.multiply(h([1,u.gexp(r)],0));return e},o.getLengthInBits=function(t,e){if(1<=e&&e<10)switch(t){case 1:return 10;case 2:return 9;case 4:case 8:return 8;default:throw\"mode:\"+t}else if(e<27)switch(t){case 1:return 12;case 2:return 11;case 4:return 16;case 8:return 10;default:throw\"mode:\"+t}else{if(!(e<41))throw\"type:\"+e;switch(t){case 1:return 14;case 2:return 13;case 4:return 16;case 8:return 12;default:throw\"mode:\"+t}}},o.getLostPoint=function(t){for(var e=t.getModuleCount(),r=0,n=0;n<e;n+=1)for(var o=0;o<e;o+=1){for(var i=0,a=t.isDark(n,o),s=-1;s<=1;s+=1)if(!(n+s<0||e<=n+s))for(var u=-1;u<=1;u+=1)o+u<0||e<=o+u||0==s&&0==u||a==t.isDark(n+s,o+u)&&(i+=1);i>5&&(r+=3+i-5)}for(n=0;n<e-1;n+=1)for(o=0;o<e-1;o+=1){var h=0;t.isDark(n,o)&&(h+=1),t.isDark(n+1,o)&&(h+=1),t.isDark(n,o+1)&&(h+=1),t.isDark(n+1,o+1)&&(h+=1),0!=h&&4!=h||(r+=3)}for(n=0;n<e;n+=1)for(o=0;o<e-6;o+=1)t.isDark(n,o)&&!t.isDark(n,o+1)&&t.isDark(n,o+2)&&t.isDark(n,o+3)&&t.isDark(n,o+4)&&!t.isDark(n,o+5)&&t.isDark(n,o+6)&&(r+=40);for(o=0;o<e;o+=1)for(n=0;n<e-6;n+=1)t.isDark(n,o)&&!t.isDark(n+1,o)&&t.isDark(n+2,o)&&t.isDark(n+3,o)&&t.isDark(n+4,o)&&!t.isDark(n+5,o)&&t.isDark(n+6,o)&&(r+=40);var c=0;for(o=0;o<e;o+=1)for(n=0;n<e;n+=1)t.isDark(n,o)&&(c+=1);return r+Math.abs(100*c/e/e-50)/5*10},o),u=function(){for(var t=new Array(256),e=new Array(256),r=0;r<8;r+=1)t[r]=1<<r;for(r=8;r<256;r+=1)t[r]=t[r-4]^t[r-5]^t[r-6]^t[r-8];for(r=0;r<255;r+=1)e[t[r]]=r;return{glog:function(t){if(t<1)throw\"glog(\"+t+\")\";return e[t]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return t[e]}}}();function h(t,e){if(void 0===t.length)throw t.length+\"/\"+e;var r=function(){for(var r=0;r<t.length&&0==t[r];)r+=1;for(var n=new Array(t.length-r+e),o=0;o<t.length-r;o+=1)n[o]=t[o+r];return n}(),n={getAt:function(t){return r[t]},getLength:function(){return r.length},multiply:function(t){for(var e=new Array(n.getLength()+t.getLength()-1),r=0;r<n.getLength();r+=1)for(var o=0;o<t.getLength();o+=1)e[r+o]^=u.gexp(u.glog(n.getAt(r))+u.glog(t.getAt(o)));return h(e,0)},mod:function(t){if(n.getLength()-t.getLength()<0)return n;for(var e=u.glog(n.getAt(0))-u.glog(t.getAt(0)),r=new Array(n.getLength()),o=0;o<n.getLength();o+=1)r[o]=n.getAt(o);for(o=0;o<t.getLength();o+=1)r[o]^=u.gexp(u.glog(t.getAt(o))+e);return h(r,0).mod(t)}};return n}var c=function(){var t=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],e=function(t,e){var r={};return r.totalCount=t,r.dataCount=e,r},r={getRSBlocks:function(r,n){var o=function(e,r){switch(r){case a.L:return t[4*(e-1)+0];case a.M:return t[4*(e-1)+1];case a.Q:return t[4*(e-1)+2];case a.H:return t[4*(e-1)+3];default:return}}(r,n);if(void 0===o)throw\"bad rs block @ typeNumber:\"+r+\"/errorCorrectionLevel:\"+n;for(var i=o.length/3,s=[],u=0;u<i;u+=1)for(var h=o[3*u+0],c=o[3*u+1],l=o[3*u+2],d=0;d<h;d+=1)s.push(e(c,l));return s}};return r}(),l=function(){var t=[],e=0,r={getBuffer:function(){return t},getAt:function(e){var r=Math.floor(e/8);return 1==(t[r]>>>7-e%8&1)},put:function(t,e){for(var n=0;n<e;n+=1)r.putBit(1==(t>>>e-n-1&1))},getLengthInBits:function(){return e},putBit:function(r){var n=Math.floor(e/8);t.length<=n&&t.push(0),r&&(t[n]|=128>>>e%8),e+=1}};return r},d=function(t){var e=t,r={getMode:function(){return 1},getLength:function(t){return e.length},write:function(t){for(var r=e,o=0;o+2<r.length;)t.put(n(r.substring(o,o+3)),10),o+=3;o<r.length&&(r.length-o==1?t.put(n(r.substring(o,o+1)),4):r.length-o==2&&t.put(n(r.substring(o,o+2)),7))}},n=function(t){for(var e=0,r=0;r<t.length;r+=1)e=10*e+o(t.charAt(r));return e},o=function(t){if(\"0\"<=t&&t<=\"9\")return t.charCodeAt(0)-\"0\".charCodeAt(0);throw\"illegal char :\"+t};return r},f=function(t){var e=t,r={getMode:function(){return 2},getLength:function(t){return e.length},write:function(t){for(var r=e,o=0;o+1<r.length;)t.put(45*n(r.charAt(o))+n(r.charAt(o+1)),11),o+=2;o<r.length&&t.put(n(r.charAt(o)),6)}},n=function(t){if(\"0\"<=t&&t<=\"9\")return t.charCodeAt(0)-\"0\".charCodeAt(0);if(\"A\"<=t&&t<=\"Z\")return t.charCodeAt(0)-\"A\".charCodeAt(0)+10;switch(t){case\" \":return 36;case\"$\":return 37;case\"%\":return 38;case\"*\":return 39;case\"+\":return 40;case\"-\":return 41;case\".\":return 42;case\"/\":return 43;case\":\":return 44;default:throw\"illegal char :\"+t}};return r},g=function(e){var r=t.stringToBytes(e);return{getMode:function(){return 4},getLength:function(t){return r.length},write:function(t){for(var e=0;e<r.length;e+=1)t.put(r[e],8)}}},p=function(e){var r=t.stringToBytesFuncs.SJIS;if(!r)throw\"sjis not supported.\";!function(t,e){var n=r(\"å‹\");if(2!=n.length||38726!=(n[0]<<8|n[1]))throw\"sjis not supported.\"}();var n=r(e);return{getMode:function(){return 8},getLength:function(t){return~~(n.length/2)},write:function(t){for(var e=n,r=0;r+1<e.length;){var o=(255&e[r])<<8|255&e[r+1];if(33088<=o&&o<=40956)o-=33088;else{if(!(57408<=o&&o<=60351))throw\"illegal char at \"+(r+1)+\"/\"+o;o-=49472}o=192*(o>>>8&255)+(255&o),t.put(o,13),r+=2}if(r<e.length)throw\"illegal char at \"+(r+1)}}},v=function(){var t=[],e={writeByte:function(e){t.push(255&e)},writeShort:function(t){e.writeByte(t),e.writeByte(t>>>8)},writeBytes:function(t,r,n){r=r||0,n=n||t.length;for(var o=0;o<n;o+=1)e.writeByte(t[o+r])},writeString:function(t){for(var r=0;r<t.length;r+=1)e.writeByte(t.charCodeAt(r))},toByteArray:function(){return t},toString:function(){var e=\"\";e+=\"[\";for(var r=0;r<t.length;r+=1)r>0&&(e+=\",\"),e+=t[r];return e+\"]\"}};return e},w=function(t){var e=t,r=0,n=0,o=0,i={read:function(){for(;o<8;){if(r>=e.length){if(0==o)return-1;throw\"unexpected end of file./\"+o}var t=e.charAt(r);if(r+=1,\"=\"==t)return o=0,-1;t.match(/^\\s$/)||(n=n<<6|a(t.charCodeAt(0)),o+=6)}var i=n>>>o-8&255;return o-=8,i}},a=function(t){if(65<=t&&t<=90)return t-65;if(97<=t&&t<=122)return t-97+26;if(48<=t&&t<=57)return t-48+52;if(43==t)return 62;if(47==t)return 63;throw\"c:\"+t};return i},y=function(t,e,r){for(var n=function(t,e){var r=t,n=e,o=new Array(t*e),i={setPixel:function(t,e,n){o[e*r+t]=n},write:function(t){t.writeString(\"GIF87a\"),t.writeShort(r),t.writeShort(n),t.writeByte(128),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(0),t.writeByte(255),t.writeByte(255),t.writeByte(255),t.writeString(\",\"),t.writeShort(0),t.writeShort(0),t.writeShort(r),t.writeShort(n),t.writeByte(0);var e=a(2);t.writeByte(2);for(var o=0;e.length-o>255;)t.writeByte(255),t.writeBytes(e,o,255),o+=255;t.writeByte(e.length-o),t.writeBytes(e,o,e.length-o),t.writeByte(0),t.writeString(\";\")}},a=function(t){for(var e=1<<t,r=1+(1<<t),n=t+1,i=s(),a=0;a<e;a+=1)i.add(String.fromCharCode(a));i.add(String.fromCharCode(e)),i.add(String.fromCharCode(r));var u,h,c,l=v(),d=(u=l,h=0,c=0,{write:function(t,e){if(t>>>e!=0)throw\"length over\";for(;h+e>=8;)u.writeByte(255&(t<<h|c)),e-=8-h,t>>>=8-h,c=0,h=0;c|=t<<h,h+=e},flush:function(){h>0&&u.writeByte(c)}});d.write(e,n);var f=0,g=String.fromCharCode(o[f]);for(f+=1;f<o.length;){var p=String.fromCharCode(o[f]);f+=1,i.contains(g+p)?g+=p:(d.write(i.indexOf(g),n),i.size()<4095&&(i.size()==1<<n&&(n+=1),i.add(g+p)),g=p)}return d.write(i.indexOf(g),n),d.write(r,n),d.flush(),l.toByteArray()},s=function(){var t={},e=0,r={add:function(n){if(r.contains(n))throw\"dup key:\"+n;t[n]=e,e+=1},size:function(){return e},indexOf:function(e){return t[e]},contains:function(e){return void 0!==t[e]}};return r};return i}(t,e),o=0;o<e;o+=1)for(var i=0;i<t;i+=1)n.setPixel(i,o,r(i,o));var a=v();n.write(a);for(var s=function(){var t=0,e=0,r=0,n=\"\",o={},i=function(t){n+=String.fromCharCode(a(63&t))},a=function(t){if(t<0);else{if(t<26)return 65+t;if(t<52)return t-26+97;if(t<62)return t-52+48;if(62==t)return 43;if(63==t)return 47}throw\"n:\"+t};return o.writeByte=function(n){for(t=t<<8|255&n,e+=8,r+=1;e>=6;)i(t>>>e-6),e-=6},o.flush=function(){if(e>0&&(i(t<<6-e),t=0,e=0),r%3!=0)for(var o=3-r%3,a=0;a<o;a+=1)n+=\"=\"},o.toString=function(){return n},o}(),u=a.toByteArray(),h=0;h<u.length;h+=1)s.writeByte(u[h]);return s.flush(),\"data:image/gif;base64,\"+s};return t}();o.stringToBytesFuncs[\"UTF-8\"]=function(t){return function(t){for(var e=[],r=0;r<t.length;r++){var n=t.charCodeAt(r);n<128?e.push(n):n<2048?e.push(192|n>>6,128|63&n):n<55296||n>=57344?e.push(224|n>>12,128|n>>6&63,128|63&n):(r++,n=65536+((1023&n)<<10|1023&t.charCodeAt(r)),e.push(240|n>>18,128|n>>12&63,128|n>>6&63,128|63&n))}return e}(t)},void 0===(n=\"function\"==typeof(r=function(){return o})?r.apply(e,[]):r)||(t.exports=n)},676:(t,e,r)=>{\"use strict\";r.d(e,{default:()=>q});var n=function(){return(n=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)},o=function(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;var n=Array(t),o=0;for(e=0;e<r;e++)for(var i=arguments[e],a=0,s=i.length;a<s;a++,o++)n[o]=i[a];return n},i=function(t){return!!t&&\"object\"==typeof t&&!Array.isArray(t)};function a(t){for(var e=[],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(!e.length)return t;var s=e.shift();return void 0!==s&&i(t)&&i(s)?(t=n({},t),Object.keys(s).forEach((function(e){var r=t[e],n=s[e];Array.isArray(r)&&Array.isArray(n)?t[e]=n:i(r)&&i(n)?t[e]=a(Object.assign({},r),n):t[e]=n})),a.apply(void 0,o([t],e))):t}function s(t,e){var r=document.createElement(\"a\");r.download=e,r.href=t,document.body.appendChild(r),r.click(),document.body.removeChild(r)}function u(t){return e=this,r=void 0,o=function(){return function(t,e){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}}(this,(function(e){return[2,new Promise((function(e){var r=new XMLHttpRequest;r.onload=function(){var t=new FileReader;t.onloadend=function(){e(t.result)},t.readAsDataURL(r.response)},r.open(\"GET\",t),r.responseType=\"blob\",r.send()}))]}))},new((n=void 0)||(n=Promise))((function(t,i){function a(t){try{u(o.next(t))}catch(t){i(t)}}function s(t){try{u(o.throw(t))}catch(t){i(t)}}function u(e){var r;e.done?t(e.value):(r=e.value,r instanceof n?r:new n((function(t){t(r)}))).then(a,s)}u((o=o.apply(e,r||[])).next())}));var e,r,n,o}const h={L:.07,M:.15,Q:.25,H:.3};var c=function(){return(c=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};const l=function(){function t(t){var e=t.svg,r=t.type;this._svg=e,this._type=r}return t.prototype.draw=function(t,e,r,n){var o;switch(this._type){case\"dots\":o=this._drawDot;break;case\"classy\":o=this._drawClassy;break;case\"classy-rounded\":o=this._drawClassyRounded;break;case\"rounded\":o=this._drawRounded;break;case\"extra-rounded\":o=this._drawExtraRounded;break;case\"square\":default:o=this._drawSquare}o.call(this,{x:t,y:e,size:r,getNeighbor:n})},t.prototype._rotateFigure=function(t){var e,r=t.x,n=t.y,o=t.size,i=t.rotation,a=void 0===i?0:i,s=r+o/2,u=n+o/2;(0,t.draw)(),null===(e=this._element)||void 0===e||e.setAttribute(\"transform\",\"rotate(\"+180*a/Math.PI+\",\"+s+\",\"+u+\")\")},t.prototype._basicDot=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(c(c({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"circle\"),e._element.setAttribute(\"cx\",String(n+r/2)),e._element.setAttribute(\"cy\",String(o+r/2)),e._element.setAttribute(\"r\",String(r/2))}}))},t.prototype._basicSquare=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(c(c({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\"),e._element.setAttribute(\"x\",String(n)),e._element.setAttribute(\"y\",String(o)),e._element.setAttribute(\"width\",String(r)),e._element.setAttribute(\"height\",String(r))}}))},t.prototype._basicSideRounded=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(c(c({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"d\",\"M \"+n+\" \"+o+\"v \"+r+\"h \"+r/2+\"a \"+r/2+\" \"+r/2+\", 0, 0, 0, 0 \"+-r)}}))},t.prototype._basicCornerRounded=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(c(c({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"d\",\"M \"+n+\" \"+o+\"v \"+r+\"h \"+r+\"v \"+-r/2+\"a \"+r/2+\" \"+r/2+\", 0, 0, 0, \"+-r/2+\" \"+-r/2)}}))},t.prototype._basicCornerExtraRounded=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(c(c({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"d\",\"M \"+n+\" \"+o+\"v \"+r+\"h \"+r+\"a \"+r+\" \"+r+\", 0, 0, 0, \"+-r+\" \"+-r)}}))},t.prototype._basicCornersRounded=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(c(c({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"d\",\"M \"+n+\" \"+o+\"v \"+r/2+\"a \"+r/2+\" \"+r/2+\", 0, 0, 0, \"+r/2+\" \"+r/2+\"h \"+r/2+\"v \"+-r/2+\"a \"+r/2+\" \"+r/2+\", 0, 0, 0, \"+-r/2+\" \"+-r/2)}}))},t.prototype._drawDot=function(t){var e=t.x,r=t.y,n=t.size;this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawSquare=function(t){var e=t.x,r=t.y,n=t.size;this._basicSquare({x:e,y:r,size:n,rotation:0})},t.prototype._drawRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0,h=i+a+s+u;if(0!==h)if(h>2||i&&a||s&&u)this._basicSquare({x:e,y:r,size:n,rotation:0});else{if(2===h){var c=0;return i&&s?c=Math.PI/2:s&&a?c=Math.PI:a&&u&&(c=-Math.PI/2),void this._basicCornerRounded({x:e,y:r,size:n,rotation:c})}if(1===h)return c=0,s?c=Math.PI/2:a?c=Math.PI:u&&(c=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,rotation:c})}else this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0,h=i+a+s+u;if(0!==h)if(h>2||i&&a||s&&u)this._basicSquare({x:e,y:r,size:n,rotation:0});else{if(2===h){var c=0;return i&&s?c=Math.PI/2:s&&a?c=Math.PI:a&&u&&(c=-Math.PI/2),void this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:c})}if(1===h)return c=0,s?c=Math.PI/2:a?c=Math.PI:u&&(c=-Math.PI/2),void this._basicSideRounded({x:e,y:r,size:n,rotation:c})}else this._basicDot({x:e,y:r,size:n,rotation:0})},t.prototype._drawClassy=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0;0!==i+a+s+u?i||s?a||u?this._basicSquare({x:e,y:r,size:n,rotation:0}):this._basicCornerRounded({x:e,y:r,size:n,rotation:Math.PI/2}):this._basicCornerRounded({x:e,y:r,size:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,rotation:Math.PI/2})},t.prototype._drawClassyRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.getNeighbor,i=o?+o(-1,0):0,a=o?+o(1,0):0,s=o?+o(0,-1):0,u=o?+o(0,1):0;0!==i+a+s+u?i||s?a||u?this._basicSquare({x:e,y:r,size:n,rotation:0}):this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:Math.PI/2}):this._basicCornerExtraRounded({x:e,y:r,size:n,rotation:-Math.PI/2}):this._basicCornersRounded({x:e,y:r,size:n,rotation:Math.PI/2})},t}();var d=function(){return(d=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};const f=function(){function t(t){var e=t.svg,r=t.type;this._svg=e,this._type=r}return t.prototype.draw=function(t,e,r,n){var o;switch(this._type){case\"square\":o=this._drawSquare;break;case\"extra-rounded\":o=this._drawExtraRounded;break;case\"dot\":default:o=this._drawDot}o.call(this,{x:t,y:e,size:r,rotation:n})},t.prototype._rotateFigure=function(t){var e,r=t.x,n=t.y,o=t.size,i=t.rotation,a=void 0===i?0:i,s=r+o/2,u=n+o/2;(0,t.draw)(),null===(e=this._element)||void 0===e||e.setAttribute(\"transform\",\"rotate(\"+180*a/Math.PI+\",\"+s+\",\"+u+\")\")},t.prototype._basicDot=function(t){var e=this,r=t.size,n=t.x,o=t.y,i=r/7;this._rotateFigure(d(d({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"clip-rule\",\"evenodd\"),e._element.setAttribute(\"d\",\"M \"+(n+r/2)+\" \"+o+\"a \"+r/2+\" \"+r/2+\" 0 1 0 0.1 0zm 0 \"+i+\"a \"+(r/2-i)+\" \"+(r/2-i)+\" 0 1 1 -0.1 0Z\")}}))},t.prototype._basicSquare=function(t){var e=this,r=t.size,n=t.x,o=t.y,i=r/7;this._rotateFigure(d(d({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"clip-rule\",\"evenodd\"),e._element.setAttribute(\"d\",\"M \"+n+\" \"+o+\"v \"+r+\"h \"+r+\"v \"+-r+\"zM \"+(n+i)+\" \"+(o+i)+\"h \"+(r-2*i)+\"v \"+(r-2*i)+\"h \"+(2*i-r)+\"z\")}}))},t.prototype._basicExtraRounded=function(t){var e=this,r=t.size,n=t.x,o=t.y,i=r/7;this._rotateFigure(d(d({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\"),e._element.setAttribute(\"clip-rule\",\"evenodd\"),e._element.setAttribute(\"d\",\"M \"+n+\" \"+(o+2.5*i)+\"v \"+2*i+\"a \"+2.5*i+\" \"+2.5*i+\", 0, 0, 0, \"+2.5*i+\" \"+2.5*i+\"h \"+2*i+\"a \"+2.5*i+\" \"+2.5*i+\", 0, 0, 0, \"+2.5*i+\" \"+2.5*-i+\"v \"+-2*i+\"a \"+2.5*i+\" \"+2.5*i+\", 0, 0, 0, \"+2.5*-i+\" \"+2.5*-i+\"h \"+-2*i+\"a \"+2.5*i+\" \"+2.5*i+\", 0, 0, 0, \"+2.5*-i+\" \"+2.5*i+\"M \"+(n+2.5*i)+\" \"+(o+i)+\"h \"+2*i+\"a \"+1.5*i+\" \"+1.5*i+\", 0, 0, 1, \"+1.5*i+\" \"+1.5*i+\"v \"+2*i+\"a \"+1.5*i+\" \"+1.5*i+\", 0, 0, 1, \"+1.5*-i+\" \"+1.5*i+\"h \"+-2*i+\"a \"+1.5*i+\" \"+1.5*i+\", 0, 0, 1, \"+1.5*-i+\" \"+1.5*-i+\"v \"+-2*i+\"a \"+1.5*i+\" \"+1.5*i+\", 0, 0, 1, \"+1.5*i+\" \"+1.5*-i)}}))},t.prototype._drawDot=function(t){var e=t.x,r=t.y,n=t.size,o=t.rotation;this._basicDot({x:e,y:r,size:n,rotation:o})},t.prototype._drawSquare=function(t){var e=t.x,r=t.y,n=t.size,o=t.rotation;this._basicSquare({x:e,y:r,size:n,rotation:o})},t.prototype._drawExtraRounded=function(t){var e=t.x,r=t.y,n=t.size,o=t.rotation;this._basicExtraRounded({x:e,y:r,size:n,rotation:o})},t}();var g=function(){return(g=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};const p=function(){function t(t){var e=t.svg,r=t.type;this._svg=e,this._type=r}return t.prototype.draw=function(t,e,r,n){var o;switch(this._type){case\"square\":o=this._drawSquare;break;case\"dot\":default:o=this._drawDot}o.call(this,{x:t,y:e,size:r,rotation:n})},t.prototype._rotateFigure=function(t){var e,r=t.x,n=t.y,o=t.size,i=t.rotation,a=void 0===i?0:i,s=r+o/2,u=n+o/2;(0,t.draw)(),null===(e=this._element)||void 0===e||e.setAttribute(\"transform\",\"rotate(\"+180*a/Math.PI+\",\"+s+\",\"+u+\")\")},t.prototype._basicDot=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(g(g({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"circle\"),e._element.setAttribute(\"cx\",String(n+r/2)),e._element.setAttribute(\"cy\",String(o+r/2)),e._element.setAttribute(\"r\",String(r/2))}}))},t.prototype._basicSquare=function(t){var e=this,r=t.size,n=t.x,o=t.y;this._rotateFigure(g(g({},t),{draw:function(){e._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\"),e._element.setAttribute(\"x\",String(n)),e._element.setAttribute(\"y\",String(o)),e._element.setAttribute(\"width\",String(r)),e._element.setAttribute(\"height\",String(r))}}))},t.prototype._drawDot=function(t){var e=t.x,r=t.y,n=t.size,o=t.rotation;this._basicDot({x:e,y:r,size:n,rotation:o})},t.prototype._drawSquare=function(t){var e=t.x,r=t.y,n=t.size,o=t.rotation;this._basicSquare({x:e,y:r,size:n,rotation:o})},t}(),v=\"circle\";var w=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function s(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}u((n=n.apply(t,e||[])).next())}))},y=function(t,e){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}},m=[[1,1,1,1,1,1,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,0,0,0,0,0,1],[1,1,1,1,1,1,1]],b=[[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]];const _=function(){function t(t){this._element=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\"),this._element.setAttribute(\"width\",String(t.width)),this._element.setAttribute(\"height\",String(t.height)),this._defs=document.createElementNS(\"http://www.w3.org/2000/svg\",\"defs\"),this._element.appendChild(this._defs),this._options=t}return Object.defineProperty(t.prototype,\"width\",{get:function(){return this._options.width},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"height\",{get:function(){return this._options.height},enumerable:!1,configurable:!0}),t.prototype.getElement=function(){return this._element},t.prototype.drawQR=function(t){return w(this,void 0,void 0,(function(){var e,r,n,o,i,a,s,u,c,l,d=this;return y(this,(function(f){switch(f.label){case 0:return e=t.getModuleCount(),r=Math.min(this._options.width,this._options.height)-2*this._options.margin,n=this._options.shape===v?r/Math.sqrt(2):r,o=Math.floor(n/e),i={hideXDots:0,hideYDots:0,width:0,height:0},this._qr=t,this._options.image?[4,this.loadImage()]:[3,2];case 1:if(f.sent(),!this._image)return[2];a=this._options,s=a.imageOptions,u=a.qrOptions,c=s.imageSize*h[u.errorCorrectionLevel],l=Math.floor(c*e*e),i=function(t){var e=t.originalHeight,r=t.originalWidth,n=t.maxHiddenDots,o=t.maxHiddenAxisDots,i=t.dotSize,a={x:0,y:0},s={x:0,y:0};if(e<=0||r<=0||n<=0||i<=0)return{height:0,width:0,hideYDots:0,hideXDots:0};var u=e/r;return a.x=Math.floor(Math.sqrt(n/u)),a.x<=0&&(a.x=1),o&&o<a.x&&(a.x=o),a.x%2==0&&a.x--,s.x=a.x*i,a.y=1+2*Math.ceil((a.x*u-1)/2),s.y=Math.round(s.x*u),(a.y*a.x>n||o&&o<a.y)&&(o&&o<a.y?(a.y=o,a.y%2==0&&a.x--):a.y-=2,s.y=a.y*i,a.x=1+2*Math.ceil((a.y/u-1)/2),s.x=Math.round(s.y/u)),{height:s.y,width:s.x,hideYDots:a.y,hideXDots:a.x}}({originalWidth:this._image.width,originalHeight:this._image.height,maxHiddenDots:l,maxHiddenAxisDots:e-14,dotSize:o}),f.label=2;case 2:return this.drawBackground(),this.drawDots((function(t,r){var n,o,a,s,u,h;return!(d._options.imageOptions.hideBackgroundDots&&t>=(e-i.hideXDots)/2&&t<(e+i.hideXDots)/2&&r>=(e-i.hideYDots)/2&&r<(e+i.hideYDots)/2||(null===(n=m[t])||void 0===n?void 0:n[r])||(null===(o=m[t-e+7])||void 0===o?void 0:o[r])||(null===(a=m[t])||void 0===a?void 0:a[r-e+7])||(null===(s=b[t])||void 0===s?void 0:s[r])||(null===(u=b[t-e+7])||void 0===u?void 0:u[r])||(null===(h=b[t])||void 0===h?void 0:h[r-e+7]))})),this.drawCorners(),this._options.image?[4,this.drawImage({width:i.width,height:i.height,count:e,dotSize:o})]:[3,4];case 3:f.sent(),f.label=4;case 4:return[2]}}))}))},t.prototype.drawBackground=function(){var t,e,r,n=this._element,o=this._options;if(n){var i=null===(t=o.backgroundOptions)||void 0===t?void 0:t.gradient,a=null===(e=o.backgroundOptions)||void 0===e?void 0:e.color;if((i||a)&&this._createColor({options:i,color:a,additionalRotation:0,x:0,y:0,height:o.height,width:o.width,name:\"background-color\"}),null===(r=o.backgroundOptions)||void 0===r?void 0:r.round){var s=Math.min(o.width,o.height),u=document.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\");this._backgroundClipPath=document.createElementNS(\"http://www.w3.org/2000/svg\",\"clipPath\"),this._backgroundClipPath.setAttribute(\"id\",\"clip-path-background-color\"),this._defs.appendChild(this._backgroundClipPath),u.setAttribute(\"x\",String((o.width-s)/2)),u.setAttribute(\"y\",String((o.height-s)/2)),u.setAttribute(\"width\",String(s)),u.setAttribute(\"height\",String(s)),u.setAttribute(\"rx\",String(s/2*o.backgroundOptions.round)),this._backgroundClipPath.appendChild(u)}}},t.prototype.drawDots=function(t){var e,r,n=this;if(!this._qr)throw\"QR code is not defined\";var o=this._options,i=this._qr.getModuleCount();if(i>o.width||i>o.height)throw\"The canvas is too small.\";var a=Math.min(o.width,o.height)-2*o.margin,s=o.shape===v?a/Math.sqrt(2):a,u=Math.floor(s/i),h=Math.floor((o.width-i*u)/2),c=Math.floor((o.height-i*u)/2),d=new l({svg:this._element,type:o.dotsOptions.type});this._dotsClipPath=document.createElementNS(\"http://www.w3.org/2000/svg\",\"clipPath\"),this._dotsClipPath.setAttribute(\"id\",\"clip-path-dot-color\"),this._defs.appendChild(this._dotsClipPath),this._createColor({options:null===(e=o.dotsOptions)||void 0===e?void 0:e.gradient,color:o.dotsOptions.color,additionalRotation:0,x:0,y:0,height:o.height,width:o.width,name:\"dot-color\"});for(var f=function(e){for(var o=function(o){return t&&!t(e,o)?\"continue\":(null===(r=g._qr)||void 0===r?void 0:r.isDark(e,o))?(d.draw(h+e*u,c+o*u,u,(function(r,a){return!(e+r<0||o+a<0||e+r>=i||o+a>=i)&&!(t&&!t(e+r,o+a))&&!!n._qr&&n._qr.isDark(e+r,o+a)})),void(d._element&&g._dotsClipPath&&g._dotsClipPath.appendChild(d._element))):\"continue\"},a=0;a<i;a++)o(a)},g=this,p=0;p<i;p++)f(p);if(o.shape===v){var w=Math.floor((a/u-i)/2),y=i+2*w,m=h-w*u,b=c-w*u,_=[],x=Math.floor(y/2);for(p=0;p<y;p++){_[p]=[];for(var S=0;S<y;S++)p>=w-1&&p<=y-w&&S>=w-1&&S<=y-w||Math.sqrt((p-x)*(p-x)+(S-x)*(S-x))>x?_[p][S]=0:_[p][S]=this._qr.isDark(S-2*w<0?S:S>=i?S-2*w:S-w,p-2*w<0?p:p>=i?p-2*w:p-w)?1:0}var M=function(t){for(var e=function(e){if(!_[t][e])return\"continue\";d.draw(m+t*u,b+e*u,u,(function(r,n){var o;return!!(null===(o=_[t+r])||void 0===o?void 0:o[e+n])})),d._element&&C._dotsClipPath&&C._dotsClipPath.appendChild(d._element)},r=0;r<y;r++)e(r)},C=this;for(p=0;p<y;p++)M(p)}},t.prototype.drawCorners=function(){var t=this;if(!this._qr)throw\"QR code is not defined\";var e=this._element,r=this._options;if(!e)throw\"Element code is not defined\";var n=this._qr.getModuleCount(),o=Math.min(r.width,r.height)-2*r.margin,i=r.shape===v?o/Math.sqrt(2):o,a=Math.floor(i/n),s=7*a,u=3*a,h=Math.floor((r.width-n*a)/2),c=Math.floor((r.height-n*a)/2);[[0,0,0],[1,0,Math.PI/2],[0,1,-Math.PI/2]].forEach((function(e){var o,i,d,g,v,w,y,_,x,S,M,C,A=e[0],k=e[1],O=e[2],D=h+A*a*(n-7),P=c+k*a*(n-7),z=t._dotsClipPath,B=t._dotsClipPath;if(((null===(o=r.cornersSquareOptions)||void 0===o?void 0:o.gradient)||(null===(i=r.cornersSquareOptions)||void 0===i?void 0:i.color))&&((z=document.createElementNS(\"http://www.w3.org/2000/svg\",\"clipPath\")).setAttribute(\"id\",\"clip-path-corners-square-color-\"+A+\"-\"+k),t._defs.appendChild(z),t._cornersSquareClipPath=t._cornersDotClipPath=B=z,t._createColor({options:null===(d=r.cornersSquareOptions)||void 0===d?void 0:d.gradient,color:null===(g=r.cornersSquareOptions)||void 0===g?void 0:g.color,additionalRotation:O,x:D,y:P,height:s,width:s,name:\"corners-square-color-\"+A+\"-\"+k})),null===(v=r.cornersSquareOptions)||void 0===v?void 0:v.type){var q=new f({svg:t._element,type:r.cornersSquareOptions.type});q.draw(D,P,s,O),q._element&&z&&z.appendChild(q._element)}else for(var I=new l({svg:t._element,type:r.dotsOptions.type}),E=function(t){for(var e=function(e){if(!(null===(w=m[t])||void 0===w?void 0:w[e]))return\"continue\";I.draw(D+t*a,P+e*a,a,(function(r,n){var o;return!!(null===(o=m[t+r])||void 0===o?void 0:o[e+n])})),I._element&&z&&z.appendChild(I._element)},r=0;r<m[t].length;r++)e(r)},L=0;L<m.length;L++)E(L);if(((null===(y=r.cornersDotOptions)||void 0===y?void 0:y.gradient)||(null===(_=r.cornersDotOptions)||void 0===_?void 0:_.color))&&((B=document.createElementNS(\"http://www.w3.org/2000/svg\",\"clipPath\")).setAttribute(\"id\",\"clip-path-corners-dot-color-\"+A+\"-\"+k),t._defs.appendChild(B),t._cornersDotClipPath=B,t._createColor({options:null===(x=r.cornersDotOptions)||void 0===x?void 0:x.gradient,color:null===(S=r.cornersDotOptions)||void 0===S?void 0:S.color,additionalRotation:O,x:D+2*a,y:P+2*a,height:u,width:u,name:\"corners-dot-color-\"+A+\"-\"+k})),null===(M=r.cornersDotOptions)||void 0===M?void 0:M.type){var R=new p({svg:t._element,type:r.cornersDotOptions.type});R.draw(D+2*a,P+2*a,u,O),R._element&&B&&B.appendChild(R._element)}else{I=new l({svg:t._element,type:r.dotsOptions.type});var N=function(t){for(var e=function(e){if(!(null===(C=b[t])||void 0===C?void 0:C[e]))return\"continue\";I.draw(D+t*a,P+e*a,a,(function(r,n){var o;return!!(null===(o=b[t+r])||void 0===o?void 0:o[e+n])})),I._element&&B&&B.appendChild(I._element)},r=0;r<b[t].length;r++)e(r)};for(L=0;L<b.length;L++)N(L)}}))},t.prototype.loadImage=function(){var t=this;return new Promise((function(e,r){var n=t._options,o=new Image;if(!n.image)return r(\"Image is not defined\");\"string\"==typeof n.imageOptions.crossOrigin&&(o.crossOrigin=n.imageOptions.crossOrigin),t._image=o,o.onload=function(){e()},o.src=n.image}))},t.prototype.drawImage=function(t){var e=t.width,r=t.height,n=t.count,o=t.dotSize;return w(this,void 0,void 0,(function(){var t,i,a,s,h,c,l,d,f;return y(this,(function(g){switch(g.label){case 0:return t=this._options,i=Math.floor((t.width-n*o)/2),a=Math.floor((t.height-n*o)/2),s=i+t.imageOptions.margin+(n*o-e)/2,h=a+t.imageOptions.margin+(n*o-r)/2,c=e-2*t.imageOptions.margin,l=r-2*t.imageOptions.margin,(d=document.createElementNS(\"http://www.w3.org/2000/svg\",\"image\")).setAttribute(\"x\",String(s)),d.setAttribute(\"y\",String(h)),d.setAttribute(\"width\",c+\"px\"),d.setAttribute(\"height\",l+\"px\"),[4,u(t.image||\"\")];case 1:return f=g.sent(),d.setAttribute(\"href\",f||\"\"),this._element.appendChild(d),[2]}}))}))},t.prototype._createColor=function(t){var e=t.options,r=t.color,n=t.additionalRotation,o=t.x,i=t.y,a=t.height,s=t.width,u=t.name,h=s>a?s:a,c=document.createElementNS(\"http://www.w3.org/2000/svg\",\"rect\");if(c.setAttribute(\"x\",String(o)),c.setAttribute(\"y\",String(i)),c.setAttribute(\"height\",String(a)),c.setAttribute(\"width\",String(s)),c.setAttribute(\"clip-path\",\"url('#clip-path-\"+u+\"')\"),e){var l;if(\"radial\"===e.type)(l=document.createElementNS(\"http://www.w3.org/2000/svg\",\"radialGradient\")).setAttribute(\"id\",u),l.setAttribute(\"gradientUnits\",\"userSpaceOnUse\"),l.setAttribute(\"fx\",String(o+s/2)),l.setAttribute(\"fy\",String(i+a/2)),l.setAttribute(\"cx\",String(o+s/2)),l.setAttribute(\"cy\",String(i+a/2)),l.setAttribute(\"r\",String(h/2));else{var d=((e.rotation||0)+n)%(2*Math.PI),f=(d+2*Math.PI)%(2*Math.PI),g=o+s/2,p=i+a/2,v=o+s/2,w=i+a/2;f>=0&&f<=.25*Math.PI||f>1.75*Math.PI&&f<=2*Math.PI?(g-=s/2,p-=a/2*Math.tan(d),v+=s/2,w+=a/2*Math.tan(d)):f>.25*Math.PI&&f<=.75*Math.PI?(p-=a/2,g-=s/2/Math.tan(d),w+=a/2,v+=s/2/Math.tan(d)):f>.75*Math.PI&&f<=1.25*Math.PI?(g+=s/2,p+=a/2*Math.tan(d),v-=s/2,w-=a/2*Math.tan(d)):f>1.25*Math.PI&&f<=1.75*Math.PI&&(p+=a/2,g+=s/2/Math.tan(d),w-=a/2,v-=s/2/Math.tan(d)),(l=document.createElementNS(\"http://www.w3.org/2000/svg\",\"linearGradient\")).setAttribute(\"id\",u),l.setAttribute(\"gradientUnits\",\"userSpaceOnUse\"),l.setAttribute(\"x1\",String(Math.round(g))),l.setAttribute(\"y1\",String(Math.round(p))),l.setAttribute(\"x2\",String(Math.round(v))),l.setAttribute(\"y2\",String(Math.round(w)))}e.colorStops.forEach((function(t){var e=t.offset,r=t.color,n=document.createElementNS(\"http://www.w3.org/2000/svg\",\"stop\");n.setAttribute(\"offset\",100*e+\"%\"),n.setAttribute(\"stop-color\",r),l.appendChild(n)})),c.setAttribute(\"fill\",\"url('#\"+u+\"')\"),this._defs.appendChild(l)}else r&&c.setAttribute(\"fill\",r);this._element.appendChild(c)},t}(),x=\"canvas\";for(var S={},M=0;M<=40;M++)S[M]=M;const C={type:x,shape:\"square\",width:300,height:300,data:\"\",margin:0,qrOptions:{typeNumber:S[0],mode:void 0,errorCorrectionLevel:\"Q\"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,crossOrigin:void 0,margin:0},dotsOptions:{type:\"square\",color:\"#000\"},backgroundOptions:{round:0,color:\"#fff\"}};var A=function(){return(A=Object.assign||function(t){for(var e,r=1,n=arguments.length;r<n;r++)for(var o in e=arguments[r])Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o]);return t}).apply(this,arguments)};function k(t){var e=A({},t);if(!e.colorStops||!e.colorStops.length)throw\"Field 'colorStops' is required in gradient\";return e.rotation?e.rotation=Number(e.rotation):e.rotation=0,e.colorStops=e.colorStops.map((function(t){return A(A({},t),{offset:Number(t.offset)})})),e}function O(t){var e=A({},t);return e.width=Number(e.width),e.height=Number(e.height),e.margin=Number(e.margin),e.imageOptions=A(A({},e.imageOptions),{hideBackgroundDots:Boolean(e.imageOptions.hideBackgroundDots),imageSize:Number(e.imageOptions.imageSize),margin:Number(e.imageOptions.margin)}),e.margin>Math.min(e.width,e.height)&&(e.margin=Math.min(e.width,e.height)),e.dotsOptions=A({},e.dotsOptions),e.dotsOptions.gradient&&(e.dotsOptions.gradient=k(e.dotsOptions.gradient)),e.cornersSquareOptions&&(e.cornersSquareOptions=A({},e.cornersSquareOptions),e.cornersSquareOptions.gradient&&(e.cornersSquareOptions.gradient=k(e.cornersSquareOptions.gradient))),e.cornersDotOptions&&(e.cornersDotOptions=A({},e.cornersDotOptions),e.cornersDotOptions.gradient&&(e.cornersDotOptions.gradient=k(e.cornersDotOptions.gradient))),e.backgroundOptions&&(e.backgroundOptions=A({},e.backgroundOptions),e.backgroundOptions.gradient&&(e.backgroundOptions.gradient=k(e.backgroundOptions.gradient))),e}var D=r(192),P=r.n(D),z=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function s(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,s)}u((n=n.apply(t,e||[])).next())}))},B=function(t,e){var r,n,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},\"function\"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){return function(i){if(r)throw new TypeError(\"Generator is already executing.\");for(;a;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,n=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((o=(o=a.trys).length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=e.call(t,a)}catch(t){i=[6,t],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,s])}}};const q=function(){function t(t){this._options=t?O(a(C,t)):C,this.update()}return t._clearContainer=function(t){t&&(t.innerHTML=\"\")},t.prototype._setupSvg=function(){var t=this;if(this._qr){var e=new _(this._options);this._svg=e.getElement(),this._svgDrawingPromise=e.drawQR(this._qr).then((function(){var r;t._svg&&(null===(r=t._extension)||void 0===r||r.call(t,e.getElement(),t._options))}))}},t.prototype._setupCanvas=function(){var t,e=this;this._qr&&(this._canvas=document.createElement(\"canvas\"),this._canvas.width=this._options.width,this._canvas.height=this._options.height,this._setupSvg(),this._canvasDrawingPromise=null===(t=this._svgDrawingPromise)||void 0===t?void 0:t.then((function(){if(e._svg){var t=e._svg,r=(new XMLSerializer).serializeToString(t),n=\"data:image/svg+xml;base64,\"+btoa(r),o=new Image;return new Promise((function(t){o.onload=function(){var r,n;null===(n=null===(r=e._canvas)||void 0===r?void 0:r.getContext(\"2d\"))||void 0===n||n.drawImage(o,0,0),t()},o.src=n}))}})))},t.prototype._getElement=function(t){return void 0===t&&(t=\"png\"),z(this,void 0,void 0,(function(){return B(this,(function(e){switch(e.label){case 0:if(!this._qr)throw\"QR code is empty\";return\"svg\"!==t.toLowerCase()?[3,2]:(this._svg&&this._svgDrawingPromise||this._setupSvg(),[4,this._svgDrawingPromise]);case 1:return e.sent(),[2,this._svg];case 2:return this._canvas&&this._canvasDrawingPromise||this._setupCanvas(),[4,this._canvasDrawingPromise];case 3:return e.sent(),[2,this._canvas]}}))}))},t.prototype.update=function(e){t._clearContainer(this._container),this._options=e?O(a(this._options,e)):this._options,this._options.data&&(this._qr=P()(this._options.qrOptions.typeNumber,this._options.qrOptions.errorCorrectionLevel),this._qr.addData(this._options.data,this._options.qrOptions.mode||function(t){switch(!0){case/^[0-9]*$/.test(t):return\"Numeric\";case/^[0-9A-Z $%*+\\-./:]*$/.test(t):return\"Alphanumeric\";default:return\"Byte\"}}(this._options.data)),this._qr.make(),this._options.type===x?this._setupCanvas():this._setupSvg(),this.append(this._container))},t.prototype.append=function(t){if(t){if(\"function\"!=typeof t.appendChild)throw\"Container should be a single DOM node\";this._options.type===x?this._canvas&&t.appendChild(this._canvas):this._svg&&t.appendChild(this._svg),this._container=t}},t.prototype.applyExtension=function(t){if(!t)throw\"Extension function should be defined.\";this._extension=t,this.update()},t.prototype.deleteExtension=function(){this._extension=void 0,this.update()},t.prototype.getRawData=function(t){return void 0===t&&(t=\"png\"),z(this,void 0,void 0,(function(){var e,r,n;return B(this,(function(o){switch(o.label){case 0:if(!this._qr)throw\"QR code is empty\";return[4,this._getElement(t)];case 1:return(e=o.sent())?\"svg\"===t.toLowerCase()?(r=new XMLSerializer,n=r.serializeToString(e),[2,new Blob(['<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n'+n],{type:\"image/svg+xml\"})]):[2,new Promise((function(r){return e.toBlob(r,\"image/\"+t,1)}))]:[2,null]}}))}))},t.prototype.download=function(t){return z(this,void 0,void 0,(function(){var e,r,n,o,i;return B(this,(function(a){switch(a.label){case 0:if(!this._qr)throw\"QR code is empty\";return e=\"png\",r=\"qr\",\"string\"==typeof t?(e=t,console.warn(\"Extension is deprecated as argument for 'download' method, please pass object { name: '...', extension: '...' } as argument\")):\"object\"==typeof t&&null!==t&&(t.name&&(r=t.name),t.extension&&(e=t.extension)),[4,this._getElement(e)];case 1:return(n=a.sent())?(\"svg\"===e.toLowerCase()?(o=new XMLSerializer,i='<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n'+(i=o.serializeToString(n)),s(\"data:image/svg+xml;charset=utf-8,\"+encodeURIComponent(i),r+\".svg\")):s(n.toDataURL(\"image/\"+e),r+\".\"+e),[2]):[2]}}))}))},t}()}},e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}return r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var n in e)r.o(e,n)&&!r.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r(676)})().default}));\n//# sourceMappingURL=qr-code-styling.js.map","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport QRCodeStylingOptions from './qr-code-styling-options';\nimport QRCodeStyling from 'qr-code-styling';\n\nconst placeholderImage = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8PhMAAo0BkpQxA1sAAAAASUVORK5CYII=\";\n\n// <QrCode> is a class component to allow tests to access the `qrCode` variable via a ref\n// to the instance which is not possible with functional components\nclass QrCode extends React.PureComponent {\n constructor(props) {\n super(props);\n\n const { width, height } = props;\n this.qrCodeRef = React.createRef();\n this.qrCode = new QRCodeStyling(\n QRCodeStylingOptions(props.url, window.urls.logo, { width, height })\n );\n }\n\n componentDidMount() {\n const blobReader = new FileReader();\n const convertPNGToDataURL = blob => {\n blobReader.readAsDataURL(blob);\n }; // readAsDataURL will call onload when complete\n const setImgSrcToDataURL = () => {\n if (this.qrCodeRef.current) {\n this.qrCodeRef.current.src = blobReader.result;\n }\n };\n const raiseError = reason => {\n throw `Failed to extract PNG: ${reason}`;\n };\n\n blobReader.onload = setImgSrcToDataURL; // when complete, set the reference `img` element to display the result\n this.qrCode.getRawData('png').then(convertPNGToDataURL, raiseError);\n this.qrCode.append(this.qrCodeRef.current);\n }\n\n render() {\n const { url, width, height } = this.props;\n\n return (\n <img\n className=\"mt-2 image-loader__qr-code\"\n ref={this.qrCodeRef}\n alt=\"QR code: open a page to upload photos from your phone\"\n data-test-id=\"mobile-upload-qr-code\"\n src={placeholderImage}\n width={width}\n height={height}\n data-url={url}\n />\n );\n }\n}\n\nQrCode.propTypes = {\n url: PropTypes.string.isRequired,\n width: PropTypes.number,\n height: PropTypes.number,\n}\n\nQrCode.defaultProps = {\n width: 250,\n height: 250,\n}\n\nexport default QrCode;\n","import React from 'react';\n\nexport default function Spinner() {\n return (\n <div\n data-test-id=\"image-loader__qr-code-spinner\"\n className=\"spinner-border image-loader__qr-code-spinner\"\n role=\"status\"></div>\n );\n}\n","import React from 'react';\nimport Spinner from './spinner';\n\nexport default function QrCodeUploading({\n fileCount,\n handleUploadingQrCodeButton,\n}) {\n return (\n <>\n <h3 className=\"title service-title font-weight-bold mt-5\">\n {fileCount} photos are being uploaded from your phone\n </h3>\n <small className=\"d-block image-loader__qr-code-instructions\">\n Please wait while the photos are being transferred\n </small>\n <small className=\"d-block image-loader__qr-code-instructions\">\n This window will close automatically once the upload is complete\n </small>\n <small className=\"d-block image-loader__qr-code-instructions mb-4\">\n <button\n className=\"btn btn-link btn-sm\"\n aria-label=\"Display QR code\"\n role=\"button\"\n onClick={handleUploadingQrCodeButton}>\n Display Qr code\n </button>\n </small>\n <Spinner />\n </>\n );\n}\n","import React from 'react';\nimport pluralize from '../../_utils/tools/pluralize';\n\nexport default function UploadFailureMessage({ failedUploadCount }) {\n return (\n <div\n data-test-id=\"upload-failure-message\"\n className=\"alert alert-danger p-2 w-50 mx-auto mt-2\"\n role=\"alert\">\n <i className=\"fas fa-exclamation-circle fa-lg mr-2 text-danger\" />\n {failedUploadCount} {pluralize('photo', failedUploadCount)} failed to\n upload\n </div>\n );\n}\n","import { usePrismItemStore } from 'stores/usePrismItemStore';\n\n\nfunction buildMobileUploadURL() {\n const { qrLinkedMobileUploader } = window;\n const prismItem = usePrismItemStore.getState().prismItem;\n\n const uploaderConfigPath =\n qrLinkedMobileUploader?.desktopUploaderConfigPath || '';\n\n if (prismItem) {\n return `${uploaderConfigPath}?prism_id=${prismItem.id}&sec=${prismItem.sec}`;\n }\n\n return uploaderConfigPath;\n}\n\nexport async function fetchDesktopUploaderConfig() {\n try {\n const response = await fetch(buildMobileUploadURL());\n\n if (response.ok) {\n return await response.json();\n }\n\n return {\n error: 'Service Unavailable, please refresh the page and try again.',\n };\n } catch (error) {\n return {\n error: error,\n };\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\n\nimport UploadAnalytics from './upload-analytics';\n\nimport { builderDispatch, WebUI } from '../_utils/ui';\nimport screenAndStyle from '../_utils/screen-and-style';\nimport { PusherConnection } from '../_mobile-uploader/pusher-connection';\nimport QrCode from './mobile-import/qr-code';\nimport QrCodeUploading from './mobile-import/qr-uploading';\nimport UploadFailureMessage from './mobile-import/upload-failure-message';\nimport Spinner from './mobile-import/spinner';\nimport { fetchDesktopUploaderConfig } from './mobile-import/desktop-uploader-config';\nimport { StatusBox } from '../_mobile-uploader/status-box';\nimport { defaultNewAlbumTitle } from './default-new-album-title';\nimport AnalyticsHandler from '../_libs/analytics/checkout-google-analytics';\n\nclass MyMobileImport extends React.Component {\n static isActive() {\n const { qrLinkedMobileUploader } = window;\n\n return (\n !!qrLinkedMobileUploader?.enabled &&\n !screenAndStyle.isBootstrapXS() &&\n !screenAndStyle.isBootstrapSM()\n );\n }\n\n constructor() {\n super();\n const { App } = window;\n\n this.state = {\n loggedIn: App && App.order.logged_in(),\n loaderServiceWasDisplayed: false,\n imageUploading: false,\n loading: true,\n fileCount: 0,\n failedUploadCount: 0,\n };\n this.files = this.files || [];\n }\n\n filesSelected() {\n return [];\n }\n\n clear() {}\n\n clearUploaded() {}\n\n restart() {}\n\n pause() {}\n\n totalNumberOfFilesSelected() {\n return 0;\n }\n\n performUpload() {}\n\n componentDidMount() {\n this.builderDispatchToken = builderDispatch.register(async payload => {\n switch (payload.type) {\n case WebUI.LOGIN:\n const updatedChannelConfig = await fetchDesktopUploaderConfig();\n\n this.setState({\n loggedIn: true,\n ...updatedChannelConfig,\n });\n break;\n\n case WebUI.PHOTO_SERVICE_SELECTED:\n if (payload.service === 'mobile') {\n this.initialiseQrCodeImage();\n }\n break;\n\n case WebUI.UPLOAD_PROGRESS:\n this.setState(prevState => ({\n prevState: (prevState.fileCount -= 1),\n }));\n break;\n\n case WebUI.UPLOAD_DONE:\n this.setState({ imageUploading: false });\n !this.state.failedUploadCount && $('.image-loader').modal('hide');\n break;\n }\n });\n\n if (this.props.isActive) {\n this.initialiseQrCodeImage();\n }\n }\n\n componentWillUnmount() {\n builderDispatch.unregister(this.builderDispatchToken);\n }\n\n shouldComponentUpdate(nextState) {\n const {\n fileCount,\n loaderServiceWasDisplayed,\n failedUploadCount,\n } = this.state;\n return (\n nextState.fileCount !== fileCount ||\n nextState.loaderServiceWasDisplayed !== loaderServiceWasDisplayed ||\n nextState.failedUploadCount !== failedUploadCount\n );\n }\n\n async initialiseQrCodeImage() {\n if (!this.state.loaderServiceWasDisplayed) {\n const channelConfig = await fetchDesktopUploaderConfig();\n\n this.setState({\n loaderServiceWasDisplayed: true,\n loading: false,\n ...channelConfig,\n }); // Only initiate Pusher connection when tab/service is selected\n }\n }\n\n sendAnalytics(eventCategory) {\n const eventLabel = UploadAnalytics.eventTypes(\n this.files.map(f => f.uploadAnalytics)\n );\n\n const payload = {\n type: WebUI.Analytics.SEND,\n eventCategory: eventCategory,\n eventAction: 'mobile-device',\n eventLabel: eventLabel,\n eventValue: 0,\n };\n\n AnalyticsHandler.handleAnalyticsEvent(payload);\n }\n\n handlePusherEvent = event => {\n const { data: images = [] } = event;\n const numberOfFiles = images.length;\n\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_BEGUN,\n number_of_files: numberOfFiles,\n album: defaultNewAlbumTitle(), // Allow Prism Builder to use default album title after image upload\n });\n\n images.forEach(image => {\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_PROGRESS,\n data: image,\n number_of_files: numberOfFiles,\n });\n });\n\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_DONE,\n number_of_errors: 0,\n number_of_files: numberOfFiles,\n });\n };\n\n handleIncomingUploads = ({ fileCount }) => {\n this.setState({\n imageUploading: true,\n fileCount: fileCount,\n failedUploadCount: 0,\n });\n };\n\n handleUploadFail = ({ failedUploadCount }) => {\n this.setState({\n imageUploading: false,\n failedUploadCount: failedUploadCount,\n });\n };\n\n handleUploadingQrCodeButton = () => {\n this.setState({ imageUploading: false });\n };\n\n render() {\n const {\n loaderServiceWasDisplayed,\n imageUploading,\n fileCount,\n failedUploadCount,\n mobileUploaderUrl,\n config,\n loading,\n error,\n } = this.state;\n\n if (loading) {\n return (\n <MobileImportWrapper {...this.props}>\n <Spinner />\n </MobileImportWrapper>\n );\n }\n\n if (error) {\n return (\n <MobileImportWrapper {...this.props}>\n <StatusBox type=\"danger\" className=\"w-50 mx-auto mt-2\">\n <i className=\"fas fa-exclamation-circle fa-lg mr-2 text-danger\" />\n {error}\n </StatusBox>\n </MobileImportWrapper>\n );\n }\n\n return (\n <MobileImportWrapper {...this.props}>\n {loaderServiceWasDisplayed && (\n <PusherConnection\n config={config}\n eventHandlers={{\n 'client-image-upload': this.handlePusherEvent,\n 'client-image-uploading': this.handleIncomingUploads,\n 'client-image-upload-fail': this.handleUploadFail,\n }}\n statusClassName=\"w-50 mx-auto mt-2\">\n {imageUploading ? (\n <QrCodeUploading\n fileCount={fileCount}\n handleUploadingQrCodeButton={this.handleUploadingQrCodeButton}\n />\n ) : (\n <div className=\"h-100 image-loader__qr-code-wrapper\">\n <div className=\"image-loader__qr-code-instructions\">\n <i className=\"mx-auto medium fas fa-mobile-alt\" />\n <h3 className=\"title service-title font-weight-bold\">\n Uploading photos from your phone is as simple as 1-2-3\n </h3>\n <small>\n <ol>\n <li>Scan the QR code by using your phone camera</li>\n <li>Select the photos you want to use</li>\n <li>Upload your photos</li>\n </ol>\n </small>\n </div>\n <div>\n <QrCode url={mobileUploaderUrl} />\n </div>\n </div>\n )}\n\n {!!failedUploadCount && (\n <UploadFailureMessage failedUploadCount={failedUploadCount} />\n )}\n </PusherConnection>\n )}\n </MobileImportWrapper>\n );\n }\n}\n\nexport const MobileImportWrapper = ({\n service,\n height,\n isActive,\n children,\n}) => {\n return (\n <div\n data-test-id={`image-loader-service-${service}`}\n id={`image-loader-service-${service}`}\n style={{ height: height }}\n className={classNames('text-center image-loader-service', service, {\n 'd-none': !isActive,\n })}\n tabIndex=\"0\">\n <div className=\"d-flex h-100 flex-column justify-content-center p-4 overflow-auto\">\n {children}\n </div>\n </div>\n );\n};\n\nMyMobileImport.propTypes = {\n service: PropTypes.string.isRequired,\n isActive: PropTypes.bool.isRequired,\n height: PropTypes.number.isRequired,\n};\n\nexport default MyMobileImport;\n","/**\n * @licstart The following is the entire license notice for the\n * JavaScript code in this page\n *\n * Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * JavaScript code in this page\n */\n\n/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = globalThis.pdfjsLib = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n AbortException: () => (/* reexport */ AbortException),\n AnnotationEditorLayer: () => (/* reexport */ AnnotationEditorLayer),\n AnnotationEditorParamsType: () => (/* reexport */ AnnotationEditorParamsType),\n AnnotationEditorType: () => (/* reexport */ AnnotationEditorType),\n AnnotationEditorUIManager: () => (/* reexport */ AnnotationEditorUIManager),\n AnnotationLayer: () => (/* reexport */ AnnotationLayer),\n AnnotationMode: () => (/* reexport */ AnnotationMode),\n AnnotationType: () => (/* reexport */ AnnotationType),\n ColorPicker: () => (/* reexport */ ColorPicker),\n DOMSVGFactory: () => (/* reexport */ DOMSVGFactory),\n DrawLayer: () => (/* reexport */ DrawLayer),\n FeatureTest: () => (/* reexport */ util_FeatureTest),\n GlobalWorkerOptions: () => (/* reexport */ GlobalWorkerOptions),\n ImageKind: () => (/* reexport */ util_ImageKind),\n InvalidPDFException: () => (/* reexport */ InvalidPDFException),\n MathClamp: () => (/* reexport */ MathClamp),\n OPS: () => (/* reexport */ OPS),\n OutputScale: () => (/* reexport */ OutputScale),\n PDFDataRangeTransport: () => (/* reexport */ PDFDataRangeTransport),\n PDFDateString: () => (/* reexport */ PDFDateString),\n PDFWorker: () => (/* reexport */ PDFWorker),\n PasswordResponses: () => (/* reexport */ PasswordResponses),\n PermissionFlag: () => (/* reexport */ PermissionFlag),\n PixelsPerInch: () => (/* reexport */ PixelsPerInch),\n RenderingCancelledException: () => (/* reexport */ RenderingCancelledException),\n ResponseException: () => (/* reexport */ ResponseException),\n SignatureExtractor: () => (/* reexport */ SignatureExtractor),\n SupportedImageMimeTypes: () => (/* reexport */ SupportedImageMimeTypes),\n TextLayer: () => (/* reexport */ TextLayer),\n TouchManager: () => (/* reexport */ TouchManager),\n Util: () => (/* reexport */ Util),\n VerbosityLevel: () => (/* reexport */ VerbosityLevel),\n XfaLayer: () => (/* reexport */ XfaLayer),\n build: () => (/* reexport */ build),\n createValidAbsoluteUrl: () => (/* reexport */ createValidAbsoluteUrl),\n fetchData: () => (/* reexport */ fetchData),\n getDocument: () => (/* reexport */ getDocument),\n getFilenameFromUrl: () => (/* reexport */ getFilenameFromUrl),\n getPdfFilenameFromUrl: () => (/* reexport */ getPdfFilenameFromUrl),\n getUuid: () => (/* reexport */ getUuid),\n getXfaPageViewport: () => (/* reexport */ getXfaPageViewport),\n isDataScheme: () => (/* reexport */ isDataScheme),\n isPdfFile: () => (/* reexport */ isPdfFile),\n isValidExplicitDest: () => (/* reexport */ isValidExplicitDest),\n noContextMenu: () => (/* reexport */ noContextMenu),\n normalizeUnicode: () => (/* reexport */ normalizeUnicode),\n setLayerDimensions: () => (/* reexport */ setLayerDimensions),\n shadow: () => (/* reexport */ shadow),\n stopEvent: () => (/* reexport */ stopEvent),\n version: () => (/* reexport */ version)\n});\n\n;// ./src/shared/util.js\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100\n};\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3\n};\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n SIGNATURE: 101\n};\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_DEFAULT_COLOR: 32,\n HIGHLIGHT_THICKNESS: 33,\n HIGHLIGHT_FREE: 34,\n HIGHLIGHT_SHOW_ALL: 35,\n DRAW_STEP: 41\n};\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800\n};\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4\n};\nconst util_ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3\n};\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26\n};\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\"\n};\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200\n};\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000\n};\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5\n};\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\"\n};\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\"\n};\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\"\n};\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5\n};\nconst OPS = {\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93\n};\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2\n};\nlet verbosity = VerbosityLevel.WARNINGS;\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\nfunction getVerbosityLevel() {\n return verbosity;\n}\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\nfunction unreachable(msg) {\n throw new Error(msg);\n}\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n if (options && typeof url === \"string\") {\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\nfunction shadow(obj, prop, value, nonSerializable = false) {\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false\n });\n return value;\n}\nconst BaseException = function BaseExceptionClosure() {\n function BaseException(message, name) {\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n return BaseException;\n}();\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\nclass ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\n }\n}\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\nfunction string32(value) {\n return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nfunction isEvalSupported() {\n try {\n new Function(\"\");\n return true;\n } catch {\n return false;\n }\n}\nclass util_FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n static get isOffscreenCanvasSupported() {\n return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n }\n static get isImageDecoderSupported() {\n return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n }\n static get platform() {\n if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\" && typeof navigator?.userAgent === \"string\") {\n const {\n platform,\n userAgent\n } = navigator;\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox: userAgent.includes(\"Firefox\")\n });\n }\n return shadow(this, \"platform\", {\n isAndroid: false,\n isLinux: false,\n isMac: false,\n isWindows: false,\n isFirefox: false\n });\n }\n static get isCSSRoundSupported() {\n return shadow(this, \"isCSSRoundSupported\", globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\"));\n }\n}\nconst hexNumbers = Array.from(Array(256).keys(), n => n.toString(16).padStart(2, \"0\"));\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[0];\n minMax[2] *= transform[0];\n if (transform[3] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n if (transform[1] < 0) {\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n }\n minMax[1] *= transform[1];\n minMax[3] *= transform[1];\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n }\n minMax[0] *= transform[2];\n minMax[2] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[5];\n minMax[2] += transform[4];\n minMax[3] += transform[5];\n }\n static transform(m1, m2) {\n return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n }\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n }\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n }\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n static normalizeRect(rect) {\n const r = rect.slice(0);\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n static intersect(rect1, rect2) {\n const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));\n const xHigh = Math.min(Math.max(rect1[0], rect1[2]), Math.max(rect2[0], rect2[2]));\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(Math.min(rect1[1], rect1[3]), Math.min(rect2[1], rect2[3]));\n const yHigh = Math.min(Math.max(rect1[1], rect1[3]), Math.max(rect2[1], rect2[3]));\n if (yLow > yHigh) {\n return null;\n }\n return [xLow, yLow, xHigh, yHigh];\n }\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, -c / b, minMax);\n }\n return;\n }\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b + sqrtDelta) / a2, minMax);\n this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) / a2, minMax);\n }\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n if (minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n } else {\n minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n }\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n return minMax;\n }\n}\nconst PDFStringTranslateTable = (/* unused pure expression or super */ null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (!decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (charCode === 0x1b) {\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction getModificationDate(date = new Date()) {\n const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n return buffer.join(\"\");\n}\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n NormalizeRegex = /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n}\nfunction getUuid() {\n if (typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || allowNull && arg === null) {\n continue;\n }\n return false;\n }\n return true;\n}\nfunction MathClamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\nfunction toHexUtil(arr) {\n if (Uint8Array.prototype.toHex) {\n return arr.toHex();\n }\n return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\nfunction toBase64Util(arr) {\n if (Uint8Array.prototype.toBase64) {\n return arr.toBase64();\n }\n return btoa(bytesToString(arr));\n}\nfunction fromBase64Util(str) {\n if (Uint8Array.fromBase64) {\n return Uint8Array.fromBase64(str);\n }\n return stringToBytes(atob(str));\n}\nif (typeof Promise.try !== \"function\") {\n Promise.try = function (fn, ...args) {\n return new Promise(resolve => {\n resolve(fn(...args));\n });\n };\n}\n\n;// ./src/display/display_utils.js\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nclass PixelsPerInch {\n static CSS = 96.0;\n static PDF = 72.0;\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\nasync function fetchData(url, type = \"text\") {\n if (isValidFetchUrl(url, document.baseURI)) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.responseType = type;\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n resolve(request.response);\n return;\n }\n resolve(request.responseText);\n return;\n }\n reject(new Error(request.statusText));\n };\n request.send(null);\n });\n}\nclass PageViewport {\n constructor({\n viewBox,\n userUnit,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n }) {\n this.viewBox = viewBox;\n this.userUnit = userUnit;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n scale *= userUnit;\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n }\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n this.width = width;\n this.height = height;\n }\n get rawDims() {\n const dims = this.viewBox;\n return shadow(this, \"rawDims\", {\n pageWidth: dims[2] - dims[0],\n pageHeight: dims[3] - dims[1],\n pageX: dims[0],\n pageY: dims[1]\n });\n }\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\nfunction getFilenameFromUrl(url) {\n [url] = url.split(/[#?]/, 1);\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n try {\n suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch {}\n }\n }\n return suggestedFilename || defaultFilename;\n}\nclass StatTimer {\n started = Object.create(null);\n times = [];\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now()\n });\n delete this.started[name];\n }\n toString() {\n const outBuf = [];\n let longest = 0;\n for (const {\n name\n } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const {\n name,\n start,\n end\n } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\nfunction isValidFetchUrl(url, baseUrl) {\n const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n}\nfunction noContextMenu(e) {\n e.preventDefault();\n}\nfunction stopEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\nclass PDFDateString {\n static #regex;\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n const matches = this.#regex.exec(input);\n if (!matches) {\n return null;\n }\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\nfunction getXfaPageViewport(xfaPage, {\n scale = 1,\n rotation = 0\n}) {\n const {\n width,\n height\n } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n return new PageViewport({\n viewBox,\n userUnit: 1,\n scale,\n rotation\n });\n}\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [(colorRGB & 0xff0000) >> 16, (colorRGB & 0x00ff00) >> 8, colorRGB & 0x0000ff];\n }\n if (color.startsWith(\"rgb(\")) {\n return color.slice(4, -1).split(\",\").map(x => parseInt(x));\n }\n if (color.startsWith(\"rgba(\")) {\n return color.slice(5, -1).split(\",\").map(x => parseInt(x)).slice(0, 3);\n }\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\nfunction getCurrentTransform(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\nfunction getCurrentTransformInverse(ctx) {\n const {\n a,\n b,\n c,\n d,\n e,\n f\n } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\nfunction setLayerDimensions(div, viewport, mustFlip = false, mustRotate = true) {\n if (viewport instanceof PageViewport) {\n const {\n pageWidth,\n pageHeight\n } = viewport.rawDims;\n const {\n style\n } = div;\n const useRound = util_FeatureTest.isCSSRoundSupported;\n const w = `var(--total-scale-factor) * ${pageWidth}px`,\n h = `var(--total-scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`,\n heightStr = useRound ? `round(down, ${h}, var(--scale-round-y))` : `calc(${h})`;\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\nclass OutputScale {\n constructor() {\n const {\n pixelRatio\n } = OutputScale;\n this.sx = pixelRatio;\n this.sy = pixelRatio;\n }\n get scaled() {\n return this.sx !== 1 || this.sy !== 1;\n }\n get symmetric() {\n return this.sx === this.sy;\n }\n limitCanvas(width, height, maxPixels, maxDim) {\n let maxAreaScale = Infinity,\n maxWidthScale = Infinity,\n maxHeightScale = Infinity;\n if (maxPixels > 0) {\n maxAreaScale = Math.sqrt(maxPixels / (width * height));\n }\n if (maxDim !== -1) {\n maxWidthScale = maxDim / width;\n maxHeightScale = maxDim / height;\n }\n const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n if (this.sx > maxScale || this.sy > maxScale) {\n this.sx = maxScale;\n this.sy = maxScale;\n return true;\n }\n return false;\n }\n static get pixelRatio() {\n return globalThis.devicePixelRatio || 1;\n }\n}\nconst SupportedImageMimeTypes = [\"image/apng\", \"image/avif\", \"image/bmp\", \"image/gif\", \"image/jpeg\", \"image/png\", \"image/svg+xml\", \"image/webp\", \"image/x-icon\"];\n\n;// ./src/display/editor/toolbar.js\n\nclass EditorToolbar {\n #toolbar = null;\n #colorPicker = null;\n #editor;\n #buttons = null;\n #altText = null;\n #signatureDescriptionButton = null;\n static #l10nRemove = null;\n constructor(editor) {\n this.#editor = editor;\n EditorToolbar.#l10nRemove ||= Object.freeze({\n freetext: \"pdfjs-editor-remove-freetext-button\",\n highlight: \"pdfjs-editor-remove-highlight-button\",\n ink: \"pdfjs-editor-remove-ink-button\",\n stamp: \"pdfjs-editor-remove-stamp-button\",\n signature: \"pdfjs-editor-remove-signature-button\"\n });\n }\n render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.classList.add(\"editToolbar\", \"hidden\");\n editToolbar.setAttribute(\"role\", \"toolbar\");\n const signal = this.#editor._uiManager._signal;\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n const position = this.#editor.toolbarPosition;\n if (position) {\n const {\n style\n } = editToolbar;\n const x = this.#editor._uiManager.direction === \"ltr\" ? 1 - position[0] : position[0];\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * position[1]}% + var(--editor-toolbar-vert-offset))`;\n }\n this.#addDeleteButton();\n return editToolbar;\n }\n get div() {\n return this.#toolbar;\n }\n static #pointerDown(e) {\n e.stopPropagation();\n }\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n stopEvent(e);\n }\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n stopEvent(e);\n }\n #addListenersToElement(element) {\n const signal = this.#editor._uiManager._signal;\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n signal\n });\n element.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n }\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n this.#colorPicker?.hideDropdown();\n }\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n this.#altText?.shown();\n }\n #addDeleteButton() {\n const {\n editorType,\n _uiManager\n } = this.#editor;\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n _uiManager.delete();\n }, {\n signal: _uiManager._signal\n });\n this.#buttons.append(button);\n }\n get #divider() {\n const divider = document.createElement(\"div\");\n divider.className = \"divider\";\n return divider;\n }\n async addAltText(altText) {\n const button = await altText.render();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n this.#altText = altText;\n }\n addColorPicker(colorPicker) {\n this.#colorPicker = colorPicker;\n const button = colorPicker.renderButton();\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n async addEditSignatureButton(signatureManager) {\n const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n this.#addListenersToElement(button);\n this.#buttons.prepend(button, this.#divider);\n }\n updateEditSignatureButton(description) {\n if (this.#signatureDescriptionButton) {\n this.#signatureDescriptionButton.title = description;\n }\n }\n remove() {\n this.#toolbar.remove();\n this.#colorPicker?.destroy();\n this.#colorPicker = null;\n }\n}\nclass HighlightToolbar {\n #buttons = null;\n #toolbar = null;\n #uiManager;\n constructor(uiManager) {\n this.#uiManager = uiManager;\n }\n #render() {\n const editToolbar = this.#toolbar = document.createElement(\"div\");\n editToolbar.className = \"editToolbar\";\n editToolbar.setAttribute(\"role\", \"toolbar\");\n editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n signal: this.#uiManager._signal\n });\n const buttons = this.#buttons = document.createElement(\"div\");\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n this.#addHighlightButton();\n return editToolbar;\n }\n #getLastPoint(boxes, isLTR) {\n let lastY = 0;\n let lastX = 0;\n for (const box of boxes) {\n const y = box.y + box.height;\n if (y < lastY) {\n continue;\n }\n const x = box.x + (isLTR ? box.width : 0);\n if (y > lastY) {\n lastX = x;\n lastY = y;\n continue;\n }\n if (isLTR) {\n if (x > lastX) {\n lastX = x;\n }\n } else if (x < lastX) {\n lastX = x;\n }\n }\n return [isLTR ? 1 - lastX : lastX, lastY];\n }\n show(parent, boxes, isLTR) {\n const [x, y] = this.#getLastPoint(boxes, isLTR);\n const {\n style\n } = this.#toolbar ||= this.#render();\n parent.append(this.#toolbar);\n style.insetInlineEnd = `${100 * x}%`;\n style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n }\n hide() {\n this.#toolbar.remove();\n }\n #addHighlightButton() {\n const button = document.createElement(\"button\");\n button.className = \"highlightButton\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", `pdfjs-highlight-floating-button1`);\n const span = document.createElement(\"span\");\n button.append(span);\n span.className = \"visuallyHidden\";\n span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n const signal = this.#uiManager._signal;\n button.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n button.addEventListener(\"click\", () => {\n this.#uiManager.highlightSelection(\"floating_button\");\n }, {\n signal\n });\n this.#buttons.append(button);\n }\n}\n\n;// ./src/display/editor/tools.js\n\n\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\nclass IdManager {\n #id = 0;\n get id() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\nclass ImageManager {\n #baseId = getUuid();\n #id = 0;\n #cache = null;\n static get _isSVGFittingCanvas() {\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\", {\n willReadFrequently: true\n });\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else if (rawData instanceof File) {\n image = data.file = rawData;\n } else if (rawData instanceof Blob) {\n image = rawData;\n }\n if (image.type === \"image/svg+xml\") {\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = data.svgUrl = fileReader.result;\n imageElement.src = (await mustRemoveAspectRatioPromise) ? `${url}#svgView(preserveAspectRatio(none))` : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n warn(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n async getFromFile(file) {\n const {\n lastModified,\n name,\n size,\n type\n } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n async getFromBlob(id, blobPromise) {\n const blob = await blobPromise;\n return this.#get(id, blob);\n }\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n if (data.file) {\n return this.getFromFile(data.file);\n }\n if (data.blobPromise) {\n const {\n blobPromise\n } = data;\n delete data.blobPromise;\n return this.getFromBlob(data.id, blobPromise);\n }\n return this.getFromUrl(data.url);\n }\n getFromCanvas(id, canvas) {\n this.#cache ||= new Map();\n let data = this.#cache.get(id);\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(canvas, 0, 0);\n data = {\n bitmap: offscreen.transferToImageBitmap(),\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 1,\n isSvg: false\n };\n this.#cache.set(id, data);\n this.#cache.set(data.id, data);\n return data;\n }\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n const {\n bitmap\n } = data;\n if (!data.url && !data.file) {\n const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n const ctx = canvas.getContext(\"bitmaprenderer\");\n ctx.transferFromImageBitmap(bitmap);\n data.blobPromise = canvas.convertToBlob();\n }\n bitmap.close?.();\n data.bitmap = null;\n }\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\nclass CommandManager {\n #commands = [];\n #locked = false;\n #maxSize;\n #position = -1;\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n add({\n cmd,\n undo,\n post,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false\n }) {\n if (mustExec) {\n cmd();\n }\n if (this.#locked) {\n return;\n }\n const save = {\n cmd,\n undo,\n post,\n type\n };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n this.#commands.push(save);\n }\n undo() {\n if (this.#position === -1) {\n return;\n }\n this.#locked = true;\n const {\n undo,\n post\n } = this.#commands[this.#position];\n undo();\n post?.();\n this.#locked = false;\n this.#position -= 1;\n }\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n this.#locked = true;\n const {\n cmd,\n post\n } = this.#commands[this.#position];\n cmd();\n post?.();\n this.#locked = false;\n }\n }\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n cleanType(type) {\n if (this.#position === -1) {\n return;\n }\n for (let i = this.#position; i >= 0; i--) {\n if (this.#commands[i].type !== type) {\n this.#commands.splice(i + 1, this.#position - i);\n this.#position = i;\n return;\n }\n }\n this.#commands.length = 0;\n this.#position = -1;\n }\n destroy() {\n this.#commands = null;\n }\n}\nclass KeyboardManager {\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n const {\n isMac\n } = util_FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, {\n callback,\n options\n });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n return str;\n }\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: {\n bubbles = false,\n args = [],\n checker = null\n }\n } = info;\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args, event)();\n if (!bubbles) {\n stopEvent(event);\n }\n }\n}\nclass ColorManager {\n static _colorsMapping = new Map([[\"CanvasText\", [0, 0, 0]], [\"Canvas\", [255, 255, 255]]]);\n get _colors() {\n const colors = new Map([[\"CanvasText\", null], [\"Canvas\", null]]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\nclass AnnotationEditorUIManager {\n #abortController = new AbortController();\n #activeEditor = null;\n #allEditors = new Map();\n #allLayers = new Map();\n #altTextManager = null;\n #annotationStorage = null;\n #changedExistingAnnotations = null;\n #commandManager = new CommandManager();\n #copyPasteAC = null;\n #currentDrawingSession = null;\n #currentPageIndex = 0;\n #deletedAnnotationsElementIds = new Set();\n #draggingEditors = null;\n #editorTypes = null;\n #editorsToRescale = new Set();\n _editorUndoBar = null;\n #enableHighlightFloatingButton = false;\n #enableUpdatedAddImage = false;\n #enableNewAltTextWhenAddingImage = false;\n #filterFactory = null;\n #focusMainContainerTimeoutId = null;\n #focusManagerAC = null;\n #highlightColors = null;\n #highlightWhenShiftUp = false;\n #highlightToolbar = null;\n #idManager = new IdManager();\n #isEnabled = false;\n #isWaiting = false;\n #keyboardManagerAC = null;\n #lastActiveElement = null;\n #mainHighlightColorPicker = null;\n #missingCanvases = null;\n #mlManager = null;\n #mode = AnnotationEditorType.NONE;\n #selectedEditors = new Set();\n #selectedTextNode = null;\n #signatureManager = null;\n #pageColors = null;\n #showAllStates = null;\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n hasSelectedText: false\n };\n #translation = [0, 0];\n #translationTimeoutId = null;\n #container = null;\n #viewer = null;\n #updateModeCapability = null;\n static TRANSLATE_SMALL = 1;\n static TRANSLATE_BIG = 10;\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n const arrowChecker = self => self.#container.contains(document.activeElement) && document.activeElement.tagName !== \"BUTTON\" && self.hasSomethingToControl();\n const textInputChecker = (_self, {\n target: el\n }) => {\n if (el instanceof HTMLInputElement) {\n const {\n type\n } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+a\", \"mac+meta+a\"], proto.selectAll, {\n checker: textInputChecker\n }], [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, {\n checker: textInputChecker\n }], [[\"ctrl+y\", \"ctrl+shift+z\", \"mac+meta+shift+z\", \"ctrl+shift+Z\", \"mac+meta+shift+Z\"], proto.redo, {\n checker: textInputChecker\n }], [[\"Backspace\", \"alt+Backspace\", \"ctrl+Backspace\", \"shift+Backspace\", \"mac+Backspace\", \"mac+alt+Backspace\", \"mac+ctrl+Backspace\", \"Delete\", \"ctrl+Delete\", \"shift+Delete\", \"mac+Delete\"], proto.delete, {\n checker: textInputChecker\n }], [[\"Enter\", \"mac+Enter\"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(el) && !self.isEnterHandled\n }], [[\" \", \"mac+ \"], proto.addNewEditorFromKeyboard, {\n checker: (self, {\n target: el\n }) => !(el instanceof HTMLButtonElement) && self.#container.contains(document.activeElement)\n }], [[\"Escape\", \"mac+Escape\"], proto.unselectAll], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto.translateSelectedEditors, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto.translateSelectedEditors, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto.translateSelectedEditors, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto.translateSelectedEditors, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto.translateSelectedEditors, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n constructor(container, viewer, altTextManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n const signal = this._signal = this.#abortController.signal;\n this.#container = container;\n this.#viewer = viewer;\n this.#altTextManager = altTextManager;\n this.#signatureManager = signatureManager;\n this._eventBus = eventBus;\n eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n signal\n });\n eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n signal\n });\n eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n signal\n });\n eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n signal\n });\n eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n signal\n });\n eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n signal\n });\n this.#addSelectionListener();\n this.#addDragAndDropListeners();\n this.#addKeyboardManager();\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.#highlightColors = highlightColors || null;\n this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n this.#enableUpdatedAddImage = enableUpdatedAddImage;\n this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n this.#mlManager = mlManager || null;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0\n };\n this.isShiftKeyDown = false;\n this._editorUndoBar = editorUndoBar || null;\n this._supportsPinchToZoom = supportsPinchToZoom !== false;\n }\n destroy() {\n this.#updateModeCapability?.resolve();\n this.#updateModeCapability = null;\n this.#abortController?.abort();\n this.#abortController = null;\n this._signal = null;\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#missingCanvases?.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager?.destroy();\n this.#signatureManager?.destroy();\n this.#highlightToolbar?.hide();\n this.#highlightToolbar = null;\n this.#mainHighlightColorPicker?.destroy();\n this.#mainHighlightColorPicker = null;\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n this._editorUndoBar?.destroy();\n }\n combinedSignal(ac) {\n return AbortSignal.any([this._signal, ac.signal]);\n }\n get mlManager() {\n return this.#mlManager;\n }\n get useNewAltTextFlow() {\n return this.#enableUpdatedAddImage;\n }\n get useNewAltTextWhenAddingImage() {\n return this.#enableNewAltTextWhenAddingImage;\n }\n get hcmFilter() {\n return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n }\n get direction() {\n return shadow(this, \"direction\", getComputedStyle(this.#container).direction);\n }\n get highlightColors() {\n return shadow(this, \"highlightColors\", this.#highlightColors ? new Map(this.#highlightColors.split(\",\").map(pair => pair.split(\"=\").map(x => x.trim()))) : null);\n }\n get highlightColorNames() {\n return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n }\n setCurrentDrawingSession(layer) {\n if (layer) {\n this.unselectAll();\n this.disableUserSelect(true);\n } else {\n this.disableUserSelect(false);\n }\n this.#currentDrawingSession = layer;\n }\n setMainHighlightColorPicker(colorPicker) {\n this.#mainHighlightColorPicker = colorPicker;\n }\n editAltText(editor, firstTime = false) {\n this.#altTextManager?.editAltText(this, editor, firstTime);\n }\n getSignature(editor) {\n this.#signatureManager?.getSignature({\n uiManager: this,\n editor\n });\n }\n get signatureManager() {\n return this.#signatureManager;\n }\n switchToMode(mode, callback) {\n this._eventBus.on(\"annotationeditormodechanged\", callback, {\n once: true,\n signal: this._signal\n });\n this._eventBus.dispatch(\"showannotationeditorui\", {\n source: this,\n mode\n });\n }\n setPreference(name, value) {\n this._eventBus.dispatch(\"setpreference\", {\n source: this,\n name,\n value\n });\n }\n onSetPreference({\n name,\n value\n }) {\n switch (name) {\n case \"enableNewAltTextWhenAddingImage\":\n this.#enableNewAltTextWhenAddingImage = value;\n break;\n }\n }\n onPageChanging({\n pageNumber\n }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n focusMainContainer() {\n this.#container.focus();\n }\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height\n } = layer.div.getBoundingClientRect();\n if (x >= layerX && x <= layerX + width && y >= layerY && y <= layerY + height) {\n return layer;\n }\n }\n return null;\n }\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n onScaleChanging({\n scale\n }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n this.#currentDrawingSession?.onScaleChanging();\n }\n onRotationChanging({\n pagesRotation\n }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n #getAnchorElementForSelection({\n anchorNode\n }) {\n return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n }\n #getLayerForTextLayer(textLayer) {\n const {\n currentLayer\n } = this;\n if (currentLayer.hasTextLayer(textLayer)) {\n return currentLayer;\n }\n for (const layer of this.#allLayers.values()) {\n if (layer.hasTextLayer(textLayer)) {\n return layer;\n }\n }\n return null;\n }\n highlightSelection(methodOfCreation = \"\") {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const {\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset\n } = selection;\n const text = selection.toString();\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n selection.empty();\n const layer = this.#getLayerForTextLayer(textLayer);\n const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n const callback = () => {\n layer?.createAndAddNewEditor({\n x: 0,\n y: 0\n }, false, {\n methodOfCreation,\n boxes,\n anchorNode,\n anchorOffset,\n focusNode,\n focusOffset,\n text\n });\n if (isNoneMode) {\n this.showAllEditors(\"highlight\", true, true);\n }\n };\n if (isNoneMode) {\n this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n return;\n }\n callback();\n }\n #displayHighlightToolbar() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n const boxes = this.getSelectionBoxes(textLayer);\n if (!boxes) {\n return;\n }\n this.#highlightToolbar ||= new HighlightToolbar(this);\n this.#highlightToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n }\n addToAnnotationStorage(editor) {\n if (!editor.isEmpty() && this.#annotationStorage && !this.#annotationStorage.has(editor.id)) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n #selectionChange() {\n const selection = document.getSelection();\n if (!selection || selection.isCollapsed) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n const {\n anchorNode\n } = selection;\n if (anchorNode === this.#selectedTextNode) {\n return;\n }\n const anchorElement = this.#getAnchorElementForSelection(selection);\n const textLayer = anchorElement.closest(\".textLayer\");\n if (!textLayer) {\n if (this.#selectedTextNode) {\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = null;\n this.#dispatchUpdateStates({\n hasSelectedText: false\n });\n }\n return;\n }\n this.#highlightToolbar?.hide();\n this.#selectedTextNode = anchorNode;\n this.#dispatchUpdateStates({\n hasSelectedText: true\n });\n if (this.#mode !== AnnotationEditorType.HIGHLIGHT && this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.showAllEditors(\"highlight\", true, true);\n }\n this.#highlightWhenShiftUp = this.isShiftKeyDown;\n if (!this.isShiftKeyDown) {\n const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n activeLayer?.toggleDrawing();\n const ac = new AbortController();\n const signal = this.combinedSignal(ac);\n const pointerup = e => {\n if (e.type === \"pointerup\" && e.button !== 0) {\n return;\n }\n ac.abort();\n activeLayer?.toggleDrawing(true);\n if (e.type === \"pointerup\") {\n this.#onSelectEnd(\"main_toolbar\");\n }\n };\n window.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n window.addEventListener(\"blur\", pointerup, {\n signal\n });\n }\n }\n #onSelectEnd(methodOfCreation = \"\") {\n if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n this.highlightSelection(methodOfCreation);\n } else if (this.#enableHighlightFloatingButton) {\n this.#displayHighlightToolbar();\n }\n }\n #addSelectionListener() {\n document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n signal: this._signal\n });\n }\n #addFocusManager() {\n if (this.#focusManagerAC) {\n return;\n }\n this.#focusManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#focusManagerAC);\n window.addEventListener(\"focus\", this.focus.bind(this), {\n signal\n });\n window.addEventListener(\"blur\", this.blur.bind(this), {\n signal\n });\n }\n #removeFocusManager() {\n this.#focusManagerAC?.abort();\n this.#focusManagerAC = null;\n }\n blur() {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n if (!this.hasSelection) {\n return;\n }\n const {\n activeElement\n } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\"focusin\", () => {\n lastEditor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this._signal\n });\n lastActiveElement.focus();\n }\n #addKeyboardManager() {\n if (this.#keyboardManagerAC) {\n return;\n }\n this.#keyboardManagerAC = new AbortController();\n const signal = this.combinedSignal(this.#keyboardManagerAC);\n window.addEventListener(\"keydown\", this.keydown.bind(this), {\n signal\n });\n window.addEventListener(\"keyup\", this.keyup.bind(this), {\n signal\n });\n }\n #removeKeyboardManager() {\n this.#keyboardManagerAC?.abort();\n this.#keyboardManagerAC = null;\n }\n #addCopyPasteListeners() {\n if (this.#copyPasteAC) {\n return;\n }\n this.#copyPasteAC = new AbortController();\n const signal = this.combinedSignal(this.#copyPasteAC);\n document.addEventListener(\"copy\", this.copy.bind(this), {\n signal\n });\n document.addEventListener(\"cut\", this.cut.bind(this), {\n signal\n });\n document.addEventListener(\"paste\", this.paste.bind(this), {\n signal\n });\n }\n #removeCopyPasteListeners() {\n this.#copyPasteAC?.abort();\n this.#copyPasteAC = null;\n }\n #addDragAndDropListeners() {\n const signal = this._signal;\n document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n signal\n });\n document.addEventListener(\"drop\", this.drop.bind(this), {\n signal\n });\n }\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n dragOver(event) {\n for (const {\n type\n } of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(type)) {\n event.dataTransfer.dropEffect = \"copy\";\n event.preventDefault();\n return;\n }\n }\n }\n }\n drop(event) {\n for (const item of event.dataTransfer.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n event.preventDefault();\n return;\n }\n }\n }\n }\n copy(event) {\n event.preventDefault();\n this.#activeEditor?.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n cut(event) {\n this.copy(event);\n this.delete();\n }\n async paste(event) {\n event.preventDefault();\n const {\n clipboardData\n } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n if (!Array.isArray(data)) {\n return;\n }\n this.unselectAll();\n const layer = this.currentLayer;\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = await layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n keydown(event) {\n if (!this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = true;\n }\n if (this.#mode !== AnnotationEditorType.NONE && !this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n keyup(event) {\n if (this.isShiftKeyDown && event.key === \"Shift\") {\n this.isShiftKeyDown = false;\n if (this.#highlightWhenShiftUp) {\n this.#highlightWhenShiftUp = false;\n this.#onSelectEnd(\"main_toolbar\");\n }\n }\n }\n onEditingAction({\n name\n }) {\n switch (name) {\n case \"undo\":\n case \"redo\":\n case \"delete\":\n case \"selectAll\":\n this[name]();\n break;\n case \"highlightSelection\":\n this.highlightSelection(\"context_menu\");\n break;\n }\n }\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(([key, value]) => this.#previousStates[key] !== value);\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details)\n });\n if (this.#mode === AnnotationEditorType.HIGHLIGHT && details.hasSelectedEditor === false) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_FREE, true]]);\n }\n }\n }\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details\n });\n }\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false\n });\n } else {\n this.#removeFocusManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false\n });\n this.disableUserSelect(false);\n }\n }\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n getId() {\n return this.#idManager.id;\n }\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n async updateMode(mode, editId = null, isFromKeyboard = false) {\n if (this.#mode === mode) {\n return;\n }\n if (this.#updateModeCapability) {\n await this.#updateModeCapability.promise;\n if (!this.#updateModeCapability) {\n return;\n }\n }\n this.#updateModeCapability = Promise.withResolvers();\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n this._editorUndoBar?.hide();\n this.#updateModeCapability.resolve();\n return;\n }\n if (mode === AnnotationEditorType.SIGNATURE) {\n await this.#signatureManager?.loadSignatures();\n }\n this.setEditingState(true);\n await this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId) {\n if (isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n }\n this.#updateModeCapability.resolve();\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n } else {\n editor.unselect();\n }\n }\n this.#updateModeCapability.resolve();\n }\n addNewEditorFromKeyboard() {\n if (this.currentLayer.canCreateNewEmptyEditor()) {\n this.currentLayer.addNewEditor();\n }\n }\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode\n });\n }\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n switch (type) {\n case AnnotationEditorParamsType.CREATE:\n this.currentLayer.addNewEditor(value);\n return;\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n this.#mainHighlightColorPicker?.updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n this._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data: {\n type: \"highlight\",\n action: \"toggle_visibility\"\n }\n }\n });\n (this.#showAllStates ||= new Map()).set(type, value);\n this.showAllEditors(\"highlight\", value);\n break;\n }\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n showAllEditors(type, visible, updateButton = false) {\n for (const editor of this.#allEditors.values()) {\n if (editor.editorType === type) {\n editor.show(visible);\n }\n }\n const state = this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ?? true;\n if (state !== visible) {\n this.#dispatchUpdateUI([[AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible]]);\n }\n }\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n async #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n const promises = [];\n for (const layer of this.#allLayers.values()) {\n promises.push(layer.enable());\n }\n await Promise.all(promises);\n for (const editor of this.#allEditors.values()) {\n editor.enable();\n }\n }\n }\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n for (const editor of this.#allEditors.values()) {\n editor.disable();\n }\n }\n }\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n if (editor.annotationElementId) {\n this.#missingCanvases?.delete(editor.annotationElementId);\n }\n this.unselect(editor);\n if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n this.addChangedExistingAnnotation(editor);\n editor.deleted = true;\n }\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n this.removeChangedExistingAnnotation(editor);\n editor.deleted = false;\n }\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n }\n }\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n get #lastSelectedEditor() {\n let ed = null;\n for (ed of this.#selectedEditors) {}\n return ed;\n }\n updateUI(editor) {\n if (this.#lastSelectedEditor === editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n updateUIForDefaultProperties(editorType) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n setSelected(editor) {\n this.#currentDrawingSession?.commitOrRemove();\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true\n });\n }\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n get isEnterHandled() {\n return this.#selectedEditors.size === 1 && this.firstSelectedEditor.isEnterHandled;\n }\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty()\n });\n this._editorUndoBar?.hide();\n }\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty()\n });\n }\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty()\n });\n }\n cleanUndoStack(type) {\n this.#commandManager.cleanType(type);\n }\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n return false;\n }\n delete() {\n this.commitOrRemove();\n const drawingEditor = this.currentLayer?.endDrawingSession(true);\n if (!this.hasSelection && !drawingEditor) {\n return;\n }\n const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n const cmd = () => {\n this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: true\n });\n }\n commitOrRemove() {\n this.#activeEditor?.commitOrRemove();\n }\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n #selectEditors(editors) {\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection\n });\n }\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n unselectAll() {\n if (this.#activeEditor) {\n this.#activeEditor.commitOrRemove();\n if (this.#mode !== AnnotationEditorType.NONE) {\n return;\n }\n }\n if (this.#currentDrawingSession?.commitOrRemove()) {\n return;\n }\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false\n });\n }\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n const TIME_TO_WAIT = 1000;\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n editor.translationDone();\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n editor.translationDone();\n }\n }\n },\n mustExec: false\n });\n }, TIME_TO_WAIT);\n for (const editor of editors) {\n editor.translateInPage(x, y);\n editor.translationDone();\n }\n }\n setUpDragSession() {\n if (!this.hasSelection) {\n return;\n }\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1\n });\n }\n }\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n for (const [{\n x,\n y,\n pageIndex\n }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||= x !== value.savedX || y !== value.savedY || pageIndex !== value.savedPageIndex;\n }\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n this.addCommands({\n cmd: () => {\n for (const [editor, {\n newX,\n newY,\n newPageIndex\n }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, {\n savedX,\n savedY,\n savedPageIndex\n }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true\n });\n return true;\n }\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n get isEditorHandlingKeyboard() {\n return this.getActive()?.shouldGetKeyboardEvents() || this.#selectedEditors.size === 1 && this.firstSelectedEditor.shouldGetKeyboardEvents();\n }\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n getActive() {\n return this.#activeEditor;\n }\n getMode() {\n return this.#mode;\n }\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n getSelectionBoxes(textLayer) {\n if (!textLayer) {\n return null;\n }\n const selection = document.getSelection();\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n if (!textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)) {\n return null;\n }\n }\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n let rotator;\n switch (textLayer.getAttribute(\"data-main-rotation\")) {\n case \"90\":\n rotator = (x, y, w, h) => ({\n x: (y - layerY) / parentHeight,\n y: 1 - (x + w - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n case \"180\":\n rotator = (x, y, w, h) => ({\n x: 1 - (x + w - layerX) / parentWidth,\n y: 1 - (y + h - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n case \"270\":\n rotator = (x, y, w, h) => ({\n x: 1 - (y + h - layerY) / parentHeight,\n y: (x - layerX) / parentWidth,\n width: h / parentHeight,\n height: w / parentWidth\n });\n break;\n default:\n rotator = (x, y, w, h) => ({\n x: (x - layerX) / parentWidth,\n y: (y - layerY) / parentHeight,\n width: w / parentWidth,\n height: h / parentHeight\n });\n break;\n }\n const boxes = [];\n for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n const range = selection.getRangeAt(i);\n if (range.collapsed) {\n continue;\n }\n for (const {\n x,\n y,\n width,\n height\n } of range.getClientRects()) {\n if (width === 0 || height === 0) {\n continue;\n }\n boxes.push(rotator(x, y, width, height));\n }\n }\n return boxes.length === 0 ? null : boxes;\n }\n addChangedExistingAnnotation({\n annotationElementId,\n id\n }) {\n (this.#changedExistingAnnotations ||= new Map()).set(annotationElementId, id);\n }\n removeChangedExistingAnnotation({\n annotationElementId\n }) {\n this.#changedExistingAnnotations?.delete(annotationElementId);\n }\n renderAnnotationElement(annotation) {\n const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n if (!editorId) {\n return;\n }\n const editor = this.#annotationStorage.getRawValue(editorId);\n if (!editor) {\n return;\n }\n if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n return;\n }\n editor.renderAnnotationElement(annotation);\n }\n setMissingCanvas(annotationId, annotationElementId, canvas) {\n const editor = this.#missingCanvases?.get(annotationId);\n if (!editor) {\n return;\n }\n editor.setCanvas(annotationElementId, canvas);\n this.#missingCanvases.delete(annotationId);\n }\n addMissingCanvas(annotationId, editor) {\n (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n }\n}\n\n;// ./src/display/editor/alt_text.js\n\nclass AltText {\n #altText = null;\n #altTextDecorative = false;\n #altTextButton = null;\n #altTextButtonLabel = null;\n #altTextTooltip = null;\n #altTextTooltipTimeout = null;\n #altTextWasFromKeyBoard = false;\n #badge = null;\n #editor = null;\n #guessedText = null;\n #textWithDisclaimer = null;\n #useNewAltTextFlow = false;\n static #l10nNewButton = null;\n static _l10n = null;\n constructor(editor) {\n this.#editor = editor;\n this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n AltText.#l10nNewButton ||= Object.freeze({\n added: \"pdfjs-editor-new-alt-text-added-button\",\n \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n missing: \"pdfjs-editor-new-alt-text-missing-button\",\n \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n review: \"pdfjs-editor-new-alt-text-to-review-button\",\n \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n });\n }\n static initialize(l10n) {\n AltText._l10n ??= l10n;\n }\n async render() {\n const altText = this.#altTextButton = document.createElement(\"button\");\n altText.className = \"altText\";\n altText.tabIndex = \"0\";\n const label = this.#altTextButtonLabel = document.createElement(\"span\");\n altText.append(label);\n if (this.#useNewAltTextFlow) {\n altText.classList.add(\"new\");\n altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n } else {\n altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n }\n const signal = this.#editor._uiManager._signal;\n altText.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n signal\n });\n const onClick = event => {\n event.preventDefault();\n this.#editor._uiManager.editAltText(this.#editor);\n if (this.#useNewAltTextFlow) {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n data: {\n label: this.#label\n }\n });\n }\n };\n altText.addEventListener(\"click\", onClick, {\n capture: true,\n signal\n });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n }, {\n signal\n });\n await this.#setState();\n return altText;\n }\n get #label() {\n return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n }\n finish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.focus({\n focusVisible: this.#altTextWasFromKeyBoard\n });\n this.#altTextWasFromKeyBoard = false;\n }\n isEmpty() {\n if (this.#useNewAltTextFlow) {\n return this.#altText === null;\n }\n return !this.#altText && !this.#altTextDecorative;\n }\n hasData() {\n if (this.#useNewAltTextFlow) {\n return this.#altText !== null || !!this.#guessedText;\n }\n return this.isEmpty();\n }\n get guessedText() {\n return this.#guessedText;\n }\n async setGuessedText(guessedText) {\n if (this.#altText !== null) {\n return;\n }\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n generatedAltText: guessedText\n });\n this.#setState();\n }\n toggleAltTextBadge(visibility = false) {\n if (!this.#useNewAltTextFlow || this.#altText) {\n this.#badge?.remove();\n this.#badge = null;\n return;\n }\n if (!this.#badge) {\n const badge = this.#badge = document.createElement(\"div\");\n badge.className = \"noAltTextBadge\";\n this.#editor.div.append(badge);\n }\n this.#badge.classList.toggle(\"hidden\", !visibility);\n }\n serialize(isForCopying) {\n let altText = this.#altText;\n if (!isForCopying && this.#guessedText === altText) {\n altText = this.#textWithDisclaimer;\n }\n return {\n altText,\n decorative: this.#altTextDecorative,\n guessedText: this.#guessedText,\n textWithDisclaimer: this.#textWithDisclaimer\n };\n }\n get data() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative\n };\n }\n set data({\n altText,\n decorative,\n guessedText,\n textWithDisclaimer,\n cancel = false\n }) {\n if (guessedText) {\n this.#guessedText = guessedText;\n this.#textWithDisclaimer = textWithDisclaimer;\n }\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n if (!cancel) {\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n }\n this.#setState();\n }\n toggle(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n shown() {\n this.#editor._reportTelemetry({\n action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n data: {\n label: this.#label\n }\n });\n }\n destroy() {\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextButtonLabel = null;\n this.#altTextTooltip = null;\n this.#badge?.remove();\n this.#badge = null;\n }\n async #setState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (this.#useNewAltTextFlow) {\n button.classList.toggle(\"done\", !!this.#altText);\n button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n if (!this.#altText) {\n this.#altTextTooltip?.remove();\n return;\n }\n } else {\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n }\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n const DELAY_TO_SHOW_TOOLTIP = 100;\n const signal = this.#editor._uiManager._signal;\n signal.addEventListener(\"abort\", () => {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }, {\n once: true\n });\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this.#editor._reportTelemetry({\n action: \"alt_text_tooltip\"\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n }, {\n signal\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n }, {\n signal\n });\n }\n if (this.#altTextDecorative) {\n tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n } else {\n tooltip.removeAttribute(\"data-l10n-id\");\n tooltip.textContent = this.#altText;\n }\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n const element = this.#editor.getElementForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n}\n\n;// ./src/display/touch_manager.js\n\nclass TouchManager {\n #container;\n #isPinching = false;\n #isPinchingStopped = null;\n #isPinchingDisabled;\n #onPinchStart;\n #onPinching;\n #onPinchEnd;\n #pointerDownAC = null;\n #signal;\n #touchInfo = null;\n #touchManagerAC;\n #touchMoveAC = null;\n constructor({\n container,\n isPinchingDisabled = null,\n isPinchingStopped = null,\n onPinchStart = null,\n onPinching = null,\n onPinchEnd = null,\n signal\n }) {\n this.#container = container;\n this.#isPinchingStopped = isPinchingStopped;\n this.#isPinchingDisabled = isPinchingDisabled;\n this.#onPinchStart = onPinchStart;\n this.#onPinching = onPinching;\n this.#onPinchEnd = onPinchEnd;\n this.#touchManagerAC = new AbortController();\n this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n passive: false,\n signal: this.#signal\n });\n }\n get MIN_TOUCH_DISTANCE_TO_PINCH() {\n return 35 / OutputScale.pixelRatio;\n }\n #onTouchStart(evt) {\n if (this.#isPinchingDisabled?.()) {\n return;\n }\n if (evt.touches.length === 1) {\n if (this.#pointerDownAC) {\n return;\n }\n const pointerDownAC = this.#pointerDownAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n const container = this.#container;\n const opts = {\n capture: true,\n signal,\n passive: false\n };\n const cancelPointerDown = e => {\n if (e.pointerType === \"touch\") {\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n };\n container.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === \"touch\") {\n stopEvent(e);\n cancelPointerDown(e);\n }\n }, opts);\n container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n return;\n }\n if (!this.#touchMoveAC) {\n this.#touchMoveAC = new AbortController();\n const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n const container = this.#container;\n const opt = {\n signal,\n capture: false,\n passive: false\n };\n container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n const onTouchEnd = this.#onTouchEnd.bind(this);\n container.addEventListener(\"touchend\", onTouchEnd, opt);\n container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n opt.capture = true;\n container.addEventListener(\"pointerdown\", stopEvent, opt);\n container.addEventListener(\"pointermove\", stopEvent, opt);\n container.addEventListener(\"pointercancel\", stopEvent, opt);\n container.addEventListener(\"pointerup\", stopEvent, opt);\n this.#onPinchStart?.();\n }\n stopEvent(evt);\n if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n this.#touchInfo = null;\n return;\n }\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n this.#touchInfo = {\n touch0X: touch0.screenX,\n touch0Y: touch0.screenY,\n touch1X: touch1.screenX,\n touch1Y: touch1.screenY\n };\n }\n #onTouchMove(evt) {\n if (!this.#touchInfo || evt.touches.length !== 2) {\n return;\n }\n stopEvent(evt);\n let [touch0, touch1] = evt.touches;\n if (touch0.identifier > touch1.identifier) {\n [touch0, touch1] = [touch1, touch0];\n }\n const {\n screenX: screen0X,\n screenY: screen0Y\n } = touch0;\n const {\n screenX: screen1X,\n screenY: screen1Y\n } = touch1;\n const touchInfo = this.#touchInfo;\n const {\n touch0X: pTouch0X,\n touch0Y: pTouch0Y,\n touch1X: pTouch1X,\n touch1Y: pTouch1Y\n } = touchInfo;\n const prevGapX = pTouch1X - pTouch0X;\n const prevGapY = pTouch1Y - pTouch0Y;\n const currGapX = screen1X - screen0X;\n const currGapY = screen1Y - screen0Y;\n const distance = Math.hypot(currGapX, currGapY) || 1;\n const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n if (!this.#isPinching && Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n return;\n }\n touchInfo.touch0X = screen0X;\n touchInfo.touch0Y = screen0Y;\n touchInfo.touch1X = screen1X;\n touchInfo.touch1Y = screen1Y;\n if (!this.#isPinching) {\n this.#isPinching = true;\n return;\n }\n const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n this.#onPinching?.(origin, pDistance, distance);\n }\n #onTouchEnd(evt) {\n if (evt.touches.length >= 2) {\n return;\n }\n this.#touchMoveAC.abort();\n this.#touchMoveAC = null;\n this.#onPinchEnd?.();\n if (!this.#touchInfo) {\n return;\n }\n stopEvent(evt);\n this.#touchInfo = null;\n this.#isPinching = false;\n }\n destroy() {\n this.#touchManagerAC?.abort();\n this.#touchManagerAC = null;\n this.#pointerDownAC?.abort();\n this.#pointerDownAC = null;\n }\n}\n\n;// ./src/display/editor/editor.js\n\n\n\n\n\n\nclass AnnotationEditor {\n #accessibilityData = null;\n #allResizerDivs = null;\n #altText = null;\n #disabled = false;\n #dragPointerId = null;\n #dragPointerType = \"\";\n #keepAspectRatio = false;\n #resizersDiv = null;\n #lastPointerCoords = null;\n #savedDimensions = null;\n #focusAC = null;\n #focusedResizerName = \"\";\n #hasBeenClicked = false;\n #initialRect = null;\n #isEditing = false;\n #isInEditMode = false;\n #isResizerEnabledForKeyboard = false;\n #moveInDOMTimeout = null;\n #prevDragX = 0;\n #prevDragY = 0;\n #telemetryTimeouts = null;\n #touchManager = null;\n _isCopy = false;\n _editToolbar = null;\n _initialOptions = Object.create(null);\n _initialData = null;\n _isVisible = true;\n _uiManager = null;\n _focusEventsAllowed = true;\n static _l10n = null;\n static _l10nResizer = null;\n #isDraggable = false;\n #zIndex = AnnotationEditor._zIndex++;\n static _borderLineWidth = -1;\n static _colorManager = new ColorManager();\n static _zIndex = 1;\n static _telemetryTimeout = 1000;\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_resizerKeyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, {\n args: [-small, 0]\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], resize, {\n args: [-big, 0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], resize, {\n args: [small, 0]\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], resize, {\n args: [big, 0]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], resize, {\n args: [0, -small]\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, {\n args: [0, -big]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], resize, {\n args: [0, small]\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, {\n args: [0, big]\n }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n }\n constructor(parameters) {\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n const {\n rotation,\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = this.parent.viewport;\n this.rotation = rotation;\n this.pageRotation = (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n static get isDrawer() {\n return false;\n }\n static get _defaultLineColor() {\n return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n }\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n static initialize(l10n, _uiManager) {\n AnnotationEditor._l10n ??= l10n;\n AnnotationEditor._l10nResizer ||= Object.freeze({\n topLeft: \"pdfjs-editor-resizer-top-left\",\n topMiddle: \"pdfjs-editor-resizer-top-middle\",\n topRight: \"pdfjs-editor-resizer-top-right\",\n middleRight: \"pdfjs-editor-resizer-middle-right\",\n bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n middleLeft: \"pdfjs-editor-resizer-middle-left\"\n });\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth = parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n static updateDefaultParams(_type, _value) {}\n static get defaultPropertiesToUpdate() {\n return [];\n }\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n get propertiesToUpdate() {\n return [];\n }\n get _isDraggable() {\n return this.#isDraggable;\n }\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n get isEnterHandled() {\n return true;\n }\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= this.height * pageHeight / (pageWidth * 2);\n this.y += this.width * pageWidth / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += this.height * pageHeight / (pageWidth * 2);\n this.y -= this.width * pageWidth / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n this.#stopResizing();\n }\n this.parent = parent;\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.isAttachedToDOM) {\n return;\n }\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n event.preventDefault();\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n commit() {\n this.addToAnnotationStorage();\n }\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n this.fixAndSetPosition();\n }\n _moveAfterPaste(baseX, baseY) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n this._onTranslated();\n }\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n this.x += x / width;\n this.y += y / height;\n this._onTranslating(this.x, this.y);\n this.fixAndSetPosition();\n }\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n translateInPage(x, y) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({\n block: \"nearest\"\n });\n }\n translationDone() {\n this._onTranslated(this.x, this.y);\n }\n drag(tx, ty) {\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n const {\n div,\n parentDimensions: [parentWidth, parentHeight]\n } = this;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n const {\n x,\n y\n } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n let {\n x,\n y\n } = this;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n const {\n style\n } = div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this._onTranslating(x, y);\n div.scrollIntoView({\n block: \"nearest\"\n });\n }\n _onTranslating(x, y) {}\n _onTranslated(x, y) {}\n get _hasBeenMoved() {\n return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n }\n get _hasBeenResized() {\n return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n }\n getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n _borderLineWidth\n } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n get _mustFixPosition() {\n return true;\n }\n fixAndSetPosition(rotation = this.rotation) {\n const {\n div: {\n style\n },\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n let {\n x,\n y,\n width,\n height\n } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n if (this._mustFixPosition) {\n switch (rotation) {\n case 0:\n x = MathClamp(x, 0, pageWidth - width);\n y = MathClamp(y, 0, pageHeight - height);\n break;\n case 90:\n x = MathClamp(x, 0, pageWidth - height);\n y = MathClamp(y, width, pageHeight);\n break;\n case 180:\n x = MathClamp(x, width, pageWidth);\n y = MathClamp(y, height, pageHeight);\n break;\n case 270:\n x = MathClamp(x, height, pageWidth);\n y = MathClamp(y, 0, pageHeight - width);\n break;\n }\n }\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n const [bx, by] = this.getBaseTranslation();\n x += bx;\n y += by;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n this.moveInDOM();\n }\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270:\n {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight]\n } = this;\n return [pageWidth * parentScale, pageHeight * parentScale];\n }\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n style\n } = this.div;\n style.width = `${(100 * width / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n style.height = `${(100 * height / parentHeight).toFixed(2)}%`;\n }\n }\n fixDims() {\n const {\n style\n } = this.div;\n const {\n height,\n width\n } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${(100 * parseFloat(width) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${(100 * parseFloat(height) / parentHeight).toFixed(2)}%`;\n }\n }\n getInitialTranslation() {\n return [0, 0];\n }\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n const signal = this._uiManager._signal;\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n signal\n });\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#altText?.toggle(false);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n this.#lastPointerCoords = [event.screenX, event.screenY];\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n this.parent.togglePointerEvents(false);\n window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n passive: true,\n capture: true,\n signal\n });\n window.addEventListener(\"touchmove\", stopEvent, {\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n const pointerUpCallback = () => {\n ac.abort();\n this.parent.togglePointerEvents(true);\n this.#altText?.toggle(true);\n this._isDraggable = savedDraggable;\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n this.#addResizeToUndoStack();\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n #resize(x, y, width, height) {\n this.width = width;\n this.height = height;\n this.x = x;\n this.y = y;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * width, parentHeight * height);\n this.fixAndSetPosition();\n this._onResized();\n }\n _onResized() {}\n #addResizeToUndoStack() {\n if (!this.#savedDimensions) {\n return;\n }\n const {\n savedX,\n savedY,\n savedWidth,\n savedHeight\n } = this.#savedDimensions;\n this.#savedDimensions = null;\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (newX === savedX && newY === savedY && newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.addCommands({\n cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n mustExec: true\n });\n }\n static _round(x) {\n return Math.round(x * 10000) / 10000;\n }\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [invRotationMatrix[0] * x + invRotationMatrix[2] * y, invRotationMatrix[1] * x + invRotationMatrix[3] * y];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n let deltaX, deltaY;\n if (!event.fromKeyboard) {\n const {\n screenX,\n screenY\n } = event;\n const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n this.#lastPointerCoords[0] = screenX;\n this.#lastPointerCoords[1] = screenY;\n } else {\n ({\n deltaX,\n deltaY\n } = event);\n }\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) / oldDiag, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n } else if (isHorizontal) {\n ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) / savedWidth;\n } else {\n ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) / savedHeight;\n }\n const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n this.#initialRect ||= [this.x, this.y, this.width, this.height];\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n this._onResizing();\n }\n _onResizing() {}\n altTextFinish() {\n this.#altText?.finish();\n }\n async addEditToolbar() {\n if (this._editToolbar || this.#isInEditMode) {\n return this._editToolbar;\n }\n this._editToolbar = new EditorToolbar(this);\n this.div.append(this._editToolbar.render());\n if (this.#altText) {\n await this._editToolbar.addAltText(this.#altText);\n }\n return this._editToolbar;\n }\n removeEditToolbar() {\n if (!this._editToolbar) {\n return;\n }\n this._editToolbar.remove();\n this._editToolbar = null;\n this.#altText?.destroy();\n }\n addContainer(container) {\n const editToolbarDiv = this._editToolbar?.div;\n if (editToolbarDiv) {\n editToolbarDiv.before(container);\n } else {\n this.div.append(container);\n }\n }\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n async addAltTextButton() {\n if (this.#altText) {\n return;\n }\n AltText.initialize(AnnotationEditor._l10n);\n this.#altText = new AltText(this);\n if (this.#accessibilityData) {\n this.#altText.data = this.#accessibilityData;\n this.#accessibilityData = null;\n }\n await this.addEditToolbar();\n }\n get altTextData() {\n return this.#altText?.data;\n }\n set altTextData(data) {\n if (!this.#altText) {\n return;\n }\n this.#altText.data = data;\n }\n get guessedAltText() {\n return this.#altText?.guessedText;\n }\n async setGuessedAltText(text) {\n await this.#altText?.setGuessedText(text);\n }\n serializeAltText(isForCopying) {\n return this.#altText?.serialize(isForCopying);\n }\n hasAltText() {\n return !!this.#altText && !this.#altText.isEmpty();\n }\n hasAltTextData() {\n return this.#altText?.hasData() ?? false;\n }\n render() {\n const div = this.div = document.createElement(\"div\");\n div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n div.className = this.name;\n div.setAttribute(\"id\", this.id);\n div.tabIndex = this.#disabled ? -1 : 0;\n div.setAttribute(\"role\", \"application\");\n if (this.defaultL10nId) {\n div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n }\n if (!this._isVisible) {\n div.classList.add(\"hidden\");\n }\n this.setInForeground();\n this.#addFocusListeners();\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n div.style.maxWidth = `${(100 * parentHeight / parentWidth).toFixed(2)}%`;\n div.style.maxHeight = `${(100 * parentWidth / parentHeight).toFixed(2)}%`;\n }\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n bindEvents(this, div, [\"keydown\", \"pointerdown\"]);\n if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n this.#touchManager ||= new TouchManager({\n container: div,\n isPinchingDisabled: () => !this.isSelected,\n onPinchStart: this.#touchPinchStartCallback.bind(this),\n onPinching: this.#touchPinchCallback.bind(this),\n onPinchEnd: this.#touchPinchEndCallback.bind(this),\n signal: this._uiManager._signal\n });\n }\n this._uiManager._editorUndoBar?.hide();\n return div;\n }\n #touchPinchStartCallback() {\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n this.#altText?.toggle(false);\n this.parent.togglePointerEvents(false);\n }\n #touchPinchCallback(_origin, prevDistance, distance) {\n const slowDownFactor = 0.7;\n let factor = slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n if (factor === 1) {\n return;\n }\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n factor = Math.max(Math.min(factor, 1 / savedWidth, 1 / savedHeight), minWidth / savedWidth, minHeight / savedHeight);\n const newWidth = AnnotationEditor._round(savedWidth * factor);\n const newHeight = AnnotationEditor._round(savedHeight * factor);\n if (newWidth === savedWidth && newHeight === savedHeight) {\n return;\n }\n this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n this.x = centerX - newTransfCenterPoint[0];\n this.y = centerY - newTransfCenterPoint[1];\n this.width = newWidth;\n this.height = newHeight;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n this._onResizing();\n }\n #touchPinchEndCallback() {\n this.#altText?.toggle(true);\n this.parent.togglePointerEvents(true);\n this.#addResizeToUndoStack();\n }\n pointerdown(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n event.preventDefault();\n return;\n }\n this.#hasBeenClicked = true;\n if (this._isDraggable) {\n this.#setUpDragSession(event);\n return;\n }\n this.#selectOnPointerEvent(event);\n }\n get isSelected() {\n return this._uiManager.isSelected(this);\n }\n #selectOnPointerEvent(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.ctrlKey && !isMac || event.shiftKey || event.metaKey && isMac) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n #setUpDragSession(event) {\n const {\n isSelected\n } = this;\n this._uiManager.setUpDragSession();\n let hasDraggingStarted = false;\n const ac = new AbortController();\n const signal = this._uiManager.combinedSignal(ac);\n const opts = {\n capture: true,\n passive: false,\n signal\n };\n const cancelDrag = e => {\n ac.abort();\n this.#dragPointerId = null;\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n this.#selectOnPointerEvent(e);\n }\n if (hasDraggingStarted) {\n this._onStopDragging();\n }\n };\n if (isSelected) {\n this.#prevDragX = event.clientX;\n this.#prevDragY = event.clientY;\n this.#dragPointerId = event.pointerId;\n this.#dragPointerType = event.pointerType;\n window.addEventListener(\"pointermove\", e => {\n if (!hasDraggingStarted) {\n hasDraggingStarted = true;\n this._onStartDragging();\n }\n const {\n clientX: x,\n clientY: y,\n pointerId\n } = e;\n if (pointerId !== this.#dragPointerId) {\n stopEvent(e);\n return;\n }\n const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n this.#prevDragX = x;\n this.#prevDragY = y;\n this._uiManager.dragSelectedEditors(tx, ty);\n }, opts);\n window.addEventListener(\"touchmove\", stopEvent, opts);\n window.addEventListener(\"pointerdown\", e => {\n if (e.pointerType === this.#dragPointerType) {\n if (this.#touchManager || e.isPrimary) {\n cancelDrag(e);\n }\n }\n stopEvent(e);\n }, opts);\n }\n const pointerUpCallback = e => {\n if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n cancelDrag(e);\n return;\n }\n stopEvent(e);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n }\n _onStartDragging() {}\n _onStopDragging() {}\n moveInDOM() {\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n this._onTranslated();\n }\n getRect(tx, ty, rotation = this.rotation) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n switch (rotation) {\n case 0:\n return [x + shiftX + pageX, pageHeight - y - shiftY - height + pageY, x + shiftX + width + pageX, pageHeight - y - shiftY + pageY];\n case 90:\n return [x + shiftY + pageX, pageHeight - y + shiftX + pageY, x + shiftY + height + pageX, pageHeight - y + shiftX + width + pageY];\n case 180:\n return [x - shiftX - width + pageX, pageHeight - y + shiftY + pageY, x - shiftX + pageX, pageHeight - y + shiftY + height + pageY];\n case 270:\n return [x - shiftY - height + pageX, pageHeight - y - shiftX - width + pageY, x - shiftY + pageX, pageHeight - y - shiftX + pageY];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n const width = x2 - x1;\n const height = y2 - y1;\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n onceAdded(focus) {}\n isEmpty() {\n return false;\n }\n enableEditMode() {\n this.#isInEditMode = true;\n }\n disableEditMode() {\n this.#isInEditMode = false;\n }\n isInEditMode() {\n return this.#isInEditMode;\n }\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n get isOnScreen() {\n const {\n top,\n left,\n bottom,\n right\n } = this.getClientDimensions();\n const {\n innerHeight,\n innerWidth\n } = window;\n return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n }\n #addFocusListeners() {\n if (this.#focusAC || !this.div) {\n return;\n }\n this.#focusAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#focusAC);\n this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n signal\n });\n this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n signal\n });\n }\n rebuild() {\n this.#addFocusListeners();\n }\n rotate(_angle) {}\n resize() {}\n serializeDeleted() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n popupRef: this._initialData?.popupRef || \"\"\n };\n }\n serialize(isForCopying = false, context = null) {\n unreachable(\"An editor must be serializable\");\n }\n static async deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager\n });\n editor.rotation = data.rotation;\n editor.#accessibilityData = data.accessibilityData;\n editor._isCopy = data.isCopy || false;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n return editor;\n }\n get hasBeenModified() {\n return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n }\n remove() {\n this.#focusAC?.abort();\n this.#focusAC = null;\n if (!this.isEmpty()) {\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n if (this.#telemetryTimeouts) {\n for (const timeout of this.#telemetryTimeouts.values()) {\n clearTimeout(timeout);\n }\n this.#telemetryTimeouts = null;\n }\n this.parent = null;\n this.#touchManager?.destroy();\n this.#touchManager = null;\n }\n get isResizable() {\n return false;\n }\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n }\n }\n get toolbarPosition() {\n return null;\n }\n keydown(event) {\n if (!this.isResizable || event.target !== this.div || event.key !== \"Enter\") {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n const signal = this._uiManager._signal;\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown, {\n signal\n });\n div.addEventListener(\"blur\", boundResizerBlur, {\n signal\n });\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n signal\n });\n div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition = (360 - this.rotation + this.parentRotation) % 360 / 90 * (this.#allResizerDivs.length / 4);\n if (nextFirstPosition !== firstPosition) {\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n }\n }\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({\n focusVisible: true\n });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n #resizerBlur(event) {\n if (this.#isResizerEnabledForKeyboard && event.relatedTarget?.parentNode !== this.#resizersDiv) {\n this.#stopResizing();\n }\n }\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n deltaX: x,\n deltaY: y,\n fromKeyboard: true\n });\n }\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n this.#addResizeToUndoStack();\n }\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n select() {\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n if (!this._editToolbar) {\n this.addEditToolbar().then(() => {\n if (this.div?.classList.contains(\"selectedEditor\")) {\n this._editToolbar?.show();\n }\n });\n return;\n }\n this._editToolbar?.show();\n this.#altText?.toggleAltTextBadge(false);\n }\n unselect() {\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n this._uiManager.currentLayer.div.focus({\n preventScroll: true\n });\n }\n this._editToolbar?.hide();\n this.#altText?.toggleAltTextBadge(true);\n }\n updateParams(type, value) {}\n disableEditing() {}\n enableEditing() {}\n enterInEditMode() {}\n getElementForAltText() {\n return this.div;\n }\n get contentDiv() {\n return this.div;\n }\n get isEditing() {\n return this.#isEditing;\n }\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const {\n style\n } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n static get MIN_SIZE() {\n return 16;\n }\n static canCreateNewEmptyEditor() {\n return true;\n }\n get telemetryInitialData() {\n return {\n action: \"added\"\n };\n }\n get telemetryFinalData() {\n return null;\n }\n _reportTelemetry(data, mustWait = false) {\n if (mustWait) {\n this.#telemetryTimeouts ||= new Map();\n const {\n action\n } = data;\n let timeout = this.#telemetryTimeouts.get(action);\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n this._reportTelemetry(data);\n this.#telemetryTimeouts.delete(action);\n if (this.#telemetryTimeouts.size === 0) {\n this.#telemetryTimeouts = null;\n }\n }, AnnotationEditor._telemetryTimeout);\n this.#telemetryTimeouts.set(action, timeout);\n return;\n }\n data.type ||= this.editorType;\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n data\n }\n });\n }\n show(visible = this._isVisible) {\n this.div.classList.toggle(\"hidden\", !visible);\n this._isVisible = visible;\n }\n enable() {\n if (this.div) {\n this.div.tabIndex = 0;\n }\n this.#disabled = false;\n }\n disable() {\n if (this.div) {\n this.div.tabIndex = -1;\n }\n this.#disabled = true;\n }\n renderAnnotationElement(annotation) {\n let content = annotation.container.querySelector(\".annotationContent\");\n if (!content) {\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n annotation.container.prepend(content);\n } else if (content.nodeName === \"CANVAS\") {\n const canvas = content;\n content = document.createElement(\"div\");\n content.classList.add(\"annotationContent\", this.editorType);\n canvas.before(content);\n }\n return content;\n }\n resetAnnotationElement(annotation) {\n const {\n firstChild\n } = annotation.container;\n if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n firstChild.remove();\n }\n }\n}\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n serialize() {\n return this.serializeDeleted();\n }\n}\n\n;// ./src/shared/murmurhash3.js\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (ArrayBuffer.isView(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n }\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n k2 = k2 << 15 | k2 >>> 17;\n k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n k1 = 0;\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n case 1:\n k1 ^= data[blockCounts * 4];\n k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n k1 = k1 << 15 | k1 >>> 17;\n k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n this.h1 = h1;\n this.h2 = h2;\n }\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n h1 ^= h2 >>> 1;\n return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n }\n}\n\n;// ./src/display/annotation_storage.js\n\n\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined\n});\nclass AnnotationStorage {\n #modified = false;\n #modifiedIds = null;\n #storage = new Map();\n constructor() {\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n return Object.assign(defaultValue, value);\n }\n getRawValue(key) {\n return this.#storage.get(key);\n }\n remove(key) {\n this.#storage.delete(key);\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n if (value instanceof AnnotationEditor && typeof this.onAnnotationEditor === \"function\") {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n has(key) {\n return this.#storage.has(key);\n }\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n get size() {\n return this.#storage.size;\n }\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n get print() {\n return new PrintAnnotationStorage(this);\n }\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n for (const [key, val] of this.#storage) {\n const serialized = val instanceof AnnotationEditor ? val.serialize(false, context) : val;\n if (serialized) {\n map.set(key, serialized);\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n if (hasBitmap) {\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n return map.size > 0 ? {\n map,\n hash: hash.hexdigest(),\n transfer\n } : SerializableEmpty;\n }\n get editorStats() {\n let stats = null;\n const typeToEditor = new Map();\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor)) {\n continue;\n }\n const editorStats = value.telemetryFinalData;\n if (!editorStats) {\n continue;\n }\n const {\n type\n } = editorStats;\n if (!typeToEditor.has(type)) {\n typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n }\n stats ||= Object.create(null);\n const map = stats[type] ||= new Map();\n for (const [key, val] of Object.entries(editorStats)) {\n if (key === \"type\") {\n continue;\n }\n let counters = map.get(key);\n if (!counters) {\n counters = new Map();\n map.set(key, counters);\n }\n const count = counters.get(val) ?? 0;\n counters.set(val, count + 1);\n }\n }\n for (const [type, editor] of typeToEditor) {\n stats[type] = editor.computeTelemetryFinalData(stats[type]);\n }\n return stats;\n }\n resetModifiedIds() {\n this.#modifiedIds = null;\n }\n get modifiedIds() {\n if (this.#modifiedIds) {\n return this.#modifiedIds;\n }\n const ids = [];\n for (const value of this.#storage.values()) {\n if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n continue;\n }\n ids.push(value.annotationElementId);\n }\n return this.#modifiedIds = {\n ids: new Set(ids),\n hash: ids.join(\",\")\n };\n }\n}\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n constructor(parent) {\n super();\n const {\n map,\n hash,\n transfer\n } = parent.serializable;\n const clone = structuredClone(map, transfer ? {\n transfer\n } : null);\n this.#serializable = {\n map: clone,\n hash,\n transfer\n };\n }\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n get serializable() {\n return this.#serializable;\n }\n get modifiedIds() {\n return shadow(this, \"modifiedIds\", {\n ids: new Set(),\n hash: \"\"\n });\n }\n}\n\n;// ./src/display/font_loader.js\n\nclass FontLoader {\n #systemFonts = new Set();\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null\n }) {\n this._document = ownerDocument;\n this.nativeFontFaces = new Set();\n this.styleElement = null;\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement.getElementsByTagName(\"head\")[0].append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n if (this.styleElement) {\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n async loadSystemFont({\n systemFontInfo: info,\n disableFontFace,\n _inspectFont\n }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(!disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n if (this.isFontLoadingAPISupported) {\n const {\n loadedName,\n src,\n style\n } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(`Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`);\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n unreachable(\"Not implemented: loadSystemFont without the Font Loading API.\");\n }\n async bind(font) {\n if (font.attached || font.missingFile && !font.systemFontInfo) {\n return;\n }\n font.attached = true;\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n font.disableFontFace = true;\n throw ex;\n }\n }\n return;\n }\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n if (this.isSyncFontLoadingSupported) {\n return;\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n }\n }\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || util_FeatureTest.platform.isFirefox);\n }\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n const {\n loadingRequests\n } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback\n };\n loadingRequests.push(request);\n return request;\n }\n get _loadTestFont() {\n const testFont = atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n return shadow(this, \"_loadTestFont\", testFont);\n }\n _prepareFontLoadEvent(font, request) {\n function int32(data, offset) {\n return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n let called = 0;\n function isFontReady(name, callback) {\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976;\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858;\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n }\n if (i < loadTestFontId.length) {\n checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n }\n}\nclass FontFaceObject {\n constructor(translatedData, inspectFont = null) {\n this.compiledGlyphs = Object.create(null);\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this._inspectFont = inspectFont;\n }\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n }\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n this._inspectFont?.(this, url);\n return rule;\n }\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n const objId = this.loadedName + \"_path_\" + character;\n let cmds;\n try {\n cmds = objs.get(objId);\n } catch (ex) {\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n }\n const path = new Path2D(cmds || \"\");\n if (!this.fontExtraProperties) {\n objs.delete(objId);\n }\n return this.compiledGlyphs[character] = path;\n }\n}\n\n;// ./src/shared/message_handler.js\n\nconst CallbackKind = {\n DATA: 1,\n ERROR: 2\n};\nconst StreamKind = {\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8\n};\nfunction onFn() {}\nfunction wrapReason(ex) {\n if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n return ex;\n }\n if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n }\n switch (ex.name) {\n case \"AbortException\":\n return new AbortException(ex.message);\n case \"InvalidPDFException\":\n return new InvalidPDFException(ex.message);\n case \"PasswordException\":\n return new PasswordException(ex.message, ex.code);\n case \"ResponseException\":\n return new ResponseException(ex.message, ex.status, ex.missing);\n case \"UnknownErrorException\":\n return new UnknownErrorException(ex.message, ex.details);\n }\n return new UnknownErrorException(ex.message, ex.toString());\n}\nclass MessageHandler {\n #messageAC = new AbortController();\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n signal: this.#messageAC.signal\n });\n }\n #onMessage({\n data\n }) {\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n Promise.try(action, data.data).then(function (result) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason)\n });\n });\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n }\n on(actionName, handler) {\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n send(actionName, data, transfers) {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data\n }, transfers);\n }\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = Promise.withResolvers();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage({\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data\n }, transfers);\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n return new ReadableStream({\n start: controller => {\n const startCapability = Promise.withResolvers();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false\n };\n comObj.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize\n }, transfers);\n return startCapability.promise;\n },\n pull: controller => {\n const pullCapability = Promise.withResolvers();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize\n });\n return pullCapability.promise;\n },\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = Promise.withResolvers();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason)\n });\n return cancelCapability.promise;\n }\n }, queueingStrategy);\n }\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = Promise.withResolvers();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk\n }, transfers);\n },\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId\n });\n delete self.streamSinks[streamId];\n },\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason)\n });\n },\n sinkCapability: Promise.withResolvers(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null\n };\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n Promise.try(action, data.data, streamSink).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n }\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n break;\n }\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n streamSink.desiredSize = data.desiredSize;\n Promise.try(streamSink.onPull || onFn).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n const dataReason = wrapReason(data.reason);\n Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true\n });\n }, function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason)\n });\n });\n streamSink.sinkCapability.reject(dataReason);\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n async #deleteStreamController(streamController, streamId) {\n await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n delete this.streamControllers[streamId];\n }\n destroy() {\n this.#messageAC?.abort();\n this.#messageAC = null;\n }\n}\n\n;// ./src/display/canvas_factory.js\n\nclass BaseCanvasFactory {\n #enableHWA = false;\n constructor({\n enableHWA = false\n }) {\n this.#enableHWA = enableHWA;\n }\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\", {\n willReadFrequently: !this.#enableHWA\n })\n };\n }\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({\n ownerDocument = globalThis.document,\n enableHWA = false\n }) {\n super({\n enableHWA\n });\n this._document = ownerDocument;\n }\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\n;// ./src/display/cmap_reader_factory.js\n\n\nclass BaseCMapReaderFactory {\n constructor({\n baseUrl = null,\n isCompressed = true\n }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n async fetch({\n name\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n return this._fetch(url).then(cMapData => ({\n cMapData,\n isCompressed: this.isCompressed\n })).catch(reason => {\n throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n }\n}\n\n;// ./src/display/filter_factory.js\n\n\nclass BaseFilterFactory {\n addFilter(maps) {\n return \"none\";\n }\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n addAlphaFilter(map) {\n return \"none\";\n }\n addLuminosityFilter(map) {\n return \"none\";\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n destroy(keepHCM = false) {}\n}\nclass DOMFilterFactory extends BaseFilterFactory {\n #baseUrl;\n #_cache;\n #_defs;\n #docId;\n #document;\n #_hcmCache;\n #id = 0;\n constructor({\n docId,\n ownerDocument = globalThis.document\n }) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n get #cache() {\n return this.#_cache ||= new Map();\n }\n get #hcmCache() {\n return this.#_hcmCache ||= new Map();\n }\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const {\n style\n } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n #createTables(maps) {\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n const table = buffer.join(\",\");\n return [table, table, table];\n }\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n }\n #createUrl(id) {\n if (this.#baseUrl === undefined) {\n this.#baseUrl = \"\";\n const url = this.#document.URL;\n if (url !== this.#document.baseURI) {\n if (isDataScheme(url)) {\n warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n } else {\n this.#baseUrl = url.split(\"#\", 1)[0];\n }\n }\n }\n return `url(${this.#baseUrl}#${id})`;\n }\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n const [tableR, tableG, tableB] = this.#createTables(maps);\n const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n return url;\n }\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n const filterName = \"base\";\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n return info.url;\n }\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + i / n * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n addAlphaFilter(map) {\n let value = this.#cache.get(map);\n if (value) {\n return value;\n }\n const [tableA] = this.#createTables([map]);\n const key = `alpha_${tableA}`;\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addTransferMapAlphaConversion(tableA, filter);\n return url;\n }\n addLuminosityFilter(map) {\n let value = this.#cache.get(map || \"luminosity\");\n if (value) {\n return value;\n }\n let tableA, key;\n if (map) {\n [tableA] = this.#createTables([map]);\n key = `luminosity_${tableA}`;\n } else {\n key = \"luminosity\";\n }\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(map, value);\n return value;\n }\n const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n const url = this.#createUrl(id);\n this.#cache.set(map, url);\n this.#cache.set(key, url);\n const filter = this.#createFilter(id);\n this.#addLuminosityConversion(filter);\n if (map) {\n this.#addTransferMapAlphaConversion(tableA, filter);\n }\n return url;\n }\n addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n let info = this.#hcmCache.get(filterName);\n if (info?.key === key) {\n return info.url;\n }\n if (info) {\n info.filter?.remove();\n info.key = key;\n info.url = \"none\";\n info.filter = null;\n } else {\n info = {\n key,\n url: \"none\",\n filter: null\n };\n this.#hcmCache.set(filterName, info);\n }\n if (!fgColor || !bgColor) {\n return info.url;\n }\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n }\n this.#defs.style.color = \"\";\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n const filter = info.filter = this.#createFilter(id);\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n info.url = this.#createUrl(id);\n return info.url;\n }\n destroy(keepHCM = false) {\n if (keepHCM && this.#_hcmCache?.size) {\n return;\n }\n this.#_defs?.parentNode.parentNode.remove();\n this.#_defs = null;\n this.#_cache?.clear();\n this.#_cache = null;\n this.#_hcmCache?.clear();\n this.#_hcmCache = null;\n this.#id = 0;\n }\n #addLuminosityConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n filter.append(feColorMatrix);\n }\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n filter.append(feColorMatrix);\n }\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n return filter;\n }\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n #addTransferMapAlphaConversion(aTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n }\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\n;// ./src/display/standard_fontdata_factory.js\n\n\nclass BaseStandardFontDataFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/wasm_factory.js\n\n\nclass BaseWasmFactory {\n constructor({\n baseUrl = null\n }) {\n this.baseUrl = baseUrl;\n }\n async fetch({\n filename\n }) {\n if (!this.baseUrl) {\n throw new Error(\"Ensure that the `wasmUrl` API parameter is provided.\");\n }\n if (!filename) {\n throw new Error(\"Wasm filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n return this._fetch(url).catch(reason => {\n throw new Error(`Unable to load wasm data at: ${url}`);\n });\n }\n async _fetch(url) {\n unreachable(\"Abstract method `_fetch` called.\");\n }\n}\nclass DOMWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n const data = await fetchData(url, \"arraybuffer\");\n return new Uint8Array(data);\n }\n}\n\n;// ./src/display/node_utils.js\n\n\n\n\n\n\nif (isNodeJS) {\n warn(\"Please use the `legacy` build in Node.js environments.\");\n}\nasync function node_utils_fetchData(url) {\n const fs = process.getBuiltinModule(\"fs\");\n const data = await fs.promises.readFile(url);\n return new Uint8Array(data);\n}\nclass NodeFilterFactory extends BaseFilterFactory {}\nclass NodeCanvasFactory extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n const canvas = require(\"@napi-rs/canvas\");\n return canvas.createCanvas(width, height);\n }\n}\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\nclass NodeWasmFactory extends BaseWasmFactory {\n async _fetch(url) {\n return node_utils_fetchData(url);\n }\n}\n\n;// ./src/display/pattern_helper.js\n\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\"\n};\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\nclass BaseShadingPattern {\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n }\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = car - (car - cbr) * k | 0;\n bytes[j++] = cag - (cag - cbg) * k | 0;\n bytes[j++] = cab - (cab - cbb) * k | 0;\n bytes[j++] = 255;\n }\n }\n}\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[6];\n this._background = IR[7];\n this.matrix = null;\n }\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n const EXPECTED_SCALE = 1.1;\n const MAX_PATTERN_SIZE = 3000;\n const BORDER_SIZE = 2;\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY\n };\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n const tmpCtx = tmpCanvas.context;\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY\n };\n }\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n } else {\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2\n};\nclass TilingPattern {\n static MAX_PATTERN_SIZE = 3000;\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n createPatternCanvas(owner) {\n const {\n bbox,\n operatorList,\n paintType,\n tilingType,\n color,\n canvasGraphicsFactory\n } = this;\n let {\n xstep,\n ystep\n } = this;\n xstep = Math.abs(xstep);\n ystep = Math.abs(ystep);\n info(\"TilingType: \" + tilingType);\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n const width = x1 - x0;\n const height = y1 - y0;\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform);\n const combinedScaleX = matrixScale[0] * curMatrixScale[0];\n const combinedScaleY = matrixScale[1] * curMatrixScale[1];\n let canvasWidth = width,\n canvasHeight = height,\n redrawHorizontally = false,\n redrawVertically = false;\n const xScaledStep = Math.ceil(xstep * combinedScaleX);\n const yScaledStep = Math.ceil(ystep * combinedScaleY);\n const xScaledWidth = Math.ceil(width * combinedScaleX);\n const yScaledHeight = Math.ceil(height * combinedScaleY);\n if (xScaledStep >= xScaledWidth) {\n canvasWidth = xstep;\n } else {\n redrawHorizontally = true;\n }\n if (yScaledStep >= yScaledHeight) {\n canvasHeight = ystep;\n } else {\n redrawVertically = true;\n }\n const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n tmpCtx.save();\n this.clipBbox(graphics, x0, y0, x1, y1);\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n graphics.executeOperatorList(operatorList);\n graphics.endDrawing();\n tmpCtx.restore();\n if (redrawHorizontally || redrawVertically) {\n const image = tmpCanvas.canvas;\n if (redrawHorizontally) {\n canvasWidth = xstep;\n }\n if (redrawVertically) {\n canvasHeight = ystep;\n }\n const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n const xSize = dimx2.size;\n const ySize = dimy2.size;\n const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n const tmpCtx2 = tmpCanvas2.context;\n const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n for (let i = 0; i <= ii; i++) {\n for (let j = 0; j <= jj; j++) {\n tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n }\n }\n return {\n canvas: tmpCanvas2.canvas,\n scaleX: dimx2.scale,\n scaleY: dimy2.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: x0,\n offsetY: y0\n };\n }\n getSizeAndScale(step, realOutputSize, scale) {\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return {\n scale,\n size\n };\n }\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [x0, y0, x1, y1]);\n graphics.clip();\n graphics.endPath();\n }\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n getPattern(ctx, owner, inverse, pathType) {\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n let domMatrix = new DOMMatrix(matrix);\n domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n return pattern;\n }\n}\n\n;// ./src/shared/image_utils.js\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n return null;\n}\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false\n}) {\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;\n }\n }\n return {\n srcPos,\n destPos\n };\n}\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n if (FeatureTest.isLittleEndian) {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;\n dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;\n dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i];\n const s2 = src32[i + 1];\n const s3 = src32[i + 2];\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;\n dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;\n dest[destPos + 3] = s3 << 8 | 0xff;\n }\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;\n }\n }\n return {\n srcPos: srcPos + len,\n destPos\n };\n}\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x10101 | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = src[i] * 0x1010100 | 0x000000ff;\n }\n }\n}\n\n;// ./src/display/canvas.js\n\n\n\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n delete(id) {\n delete this.cache[id];\n }\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\nfunction drawImageAtIntegerCoords(ctx, srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rWidth, rHeight];\n }\n if (a === 0 && d === 0) {\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n return [rHeight, rWidth];\n }\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\nfunction compileType3Glyph(imgData) {\n const {\n width,\n height\n } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n const lineSize = width + 7 & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n type = pp;\n points[p] = 0;\n } else {\n type = pp & 0x33 * type >> 4;\n points[p] &= type >> 2 | type << 2;\n }\n path.lineTo(p % width1, p / width1 | 0);\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n data = null;\n points = null;\n const drawOutline = function (c) {\n c.save();\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n return drawOutline;\n}\nclass CanvasExtraState {\n constructor(width, height) {\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.x = 0;\n this.y = 0;\n this.lineX = 0;\n this.lineY = 0;\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n this.patternStroke = false;\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n }\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.minY = Math.min(this.minY, minMax[1]);\n this.maxX = Math.max(this.maxX, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\n if (minMax) {\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = scale[0] * this.lineWidth / 2;\n const yStrokePad = scale[1] * this.lineWidth / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n isEmptyClip() {\n return this.minX === Infinity;\n }\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n }\n}\nfunction putBinaryImageData(ctx, imgData) {\n if (imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n if (imgData.kind === util_ImageKind.GRAYSCALE_1BPP) {\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = width + 7 >> 3;\n const white = 0xffffffff;\n const black = util_FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === util_ImageKind.RGBA_32BPP) {\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === util_ImageKind.RGB_24BPP) {\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n ({\n srcPos\n } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0\n }));\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\", \"filter\"];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\nfunction getImageSmoothingEnabled(transform, interpolate) {\n if (interpolate) {\n return true;\n }\n const scale = Util.singularValueDecompose2dScale(transform);\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n return scale[0] <= actualScale && scale[1] <= actualScale;\n}\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\nclass CanvasGraphics {\n constructor(canvasCtx, commonObjs, objs, canvasFactory, filterFactory, {\n optionalContentConfig,\n markedContentStack = null\n }, annotationCanvasMap, pageColors) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.processingType3 = null;\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\") ? this.commonObjs.get(data) : this.objs.get(data);\n }\n return fallback;\n }\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null\n }) {\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n if (argsArrayLen === i) {\n return i;\n }\n const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n fnId = fnArray[i];\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n i++;\n if (i === argsArrayLen) {\n return i;\n }\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n }\n }\n #restoreInitialState() {\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n this.current.activeSMask = null;\n this.ctx.restore();\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n endDrawing() {\n this.#restoreInitialState();\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(this.pageColors.foreground, this.pageColors.background);\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n _scaleImage(img, inverseTransform) {\n const width = img.width ?? img.displayWidth;\n const height = img.height ?? img.displayHeight;\n let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = paintWidth >= 16384 ? Math.floor(paintWidth / 2) - 1 || 1 : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = paintHeight >= 16384 ? Math.floor(paintHeight / 2) - 1 || 1 : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight\n };\n }\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const {\n width,\n height\n } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n cacheKey = JSON.stringify(isPatternFill ? currentTransform : [currentTransform.slice(0, 4), fillColor]);\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(Math.min(currentTransform[0], currentTransform[2]) + currentTransform[4]);\n const offsetY = Math.round(Math.min(currentTransform[1], currentTransform[3]) + currentTransform[5]);\n return {\n canvas: cachedImage,\n offsetX,\n offsetY\n };\n }\n scaled = cachedImage;\n }\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n let maskToCanvas = Util.transform(currentTransform, [1 / width, 0, 0, -1 / height, 0, 0]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n const fillCtx = fillCanvas.context;\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n if (!scaled) {\n scaled = this._scaleImage(maskCanvas.canvas, getCurrentTransformInverse(fillCtx));\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(fillCtx), img.interpolate);\n drawImageAtIntegerCoords(fillCtx, scaled, 0, 0, scaled.width, scaled.height, 0, 0, width, height);\n fillCtx.globalCompositeOperation = \"source-in\";\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [1, 0, 0, 1, -offsetX, -offsetY]);\n fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, PathType.FILL) : fillColor;\n fillCtx.fillRect(0, 0, width, height);\n if (cache && !isPatternFill) {\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY)\n };\n }\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n setRenderingIntent(intent) {}\n setFlatness(flatness) {}\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps = this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n }\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n }\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n this.suspendedCtx = null;\n }\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n this.genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n }\n genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n let maskCanvas = maskCtx.canvas;\n let maskX = layerOffsetX - maskOffsetX;\n let maskY = layerOffsetY - maskOffsetY;\n if (backdrop) {\n const backdropRGB = Util.makeHexColor(...backdrop);\n if (maskX < 0 || maskY < 0 || maskX + width > maskCanvas.width || maskY + height > maskCanvas.height) {\n const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n const ctx = canvas.context;\n ctx.drawImage(maskCanvas, -maskX, -maskY);\n ctx.globalCompositeOperation = \"destination-atop\";\n ctx.fillStyle = backdropRGB;\n ctx.fillRect(0, 0, width, height);\n ctx.globalCompositeOperation = \"source-over\";\n maskCanvas = canvas.canvas;\n maskX = maskY = 0;\n } else {\n maskCtx.save();\n maskCtx.globalAlpha = 1;\n maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n const clip = new Path2D();\n clip.rect(maskX, maskY, width, height);\n maskCtx.clip(clip);\n maskCtx.globalCompositeOperation = \"destination-atop\";\n maskCtx.fillStyle = backdropRGB;\n maskCtx.fillRect(maskX, maskY, width, height);\n maskCtx.restore();\n }\n }\n layerCtx.save();\n layerCtx.globalAlpha = 1;\n layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n if (subtype === \"Alpha\" && transferMap) {\n layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n } else if (subtype === \"Luminosity\") {\n layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n }\n const clip = new Path2D();\n clip.rect(layerOffsetX, layerOffsetY, width, height);\n layerCtx.clip(clip);\n layerCtx.globalCompositeOperation = \"destination-in\";\n layerCtx.drawImage(maskCanvas, maskX, maskY, width, height, layerOffsetX, layerOffsetY, width, height);\n layerCtx.restore();\n }\n save() {\n if (this.inSMaskMode) {\n copyCtxState(this.ctx, this.suspendedCtx);\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n this.pendingClip = null;\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = getCurrentTransform(ctx);\n const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n current.setCurrentPoint(x, y);\n }\n closePath() {\n this.ctx.closePath();\n }\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n this.rescaleAndStroke(false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n ctx.globalAlpha = this.current.fillAlpha;\n }\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n fill(consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n needRestore = true;\n }\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n this.consumePath();\n }\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n endPath() {\n this.consumePath();\n }\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n const newPath = new Path2D();\n const invTransf = ctx.getTransform().invertSelf();\n for (const {\n transform,\n x,\n y,\n fontSize,\n path\n } of paths) {\n newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n }\n ctx.clip(newPath);\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n setLeading(leading) {\n this.current.leading = -leading;\n }\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n this.current.font = fontObj;\n this.current.fontSize = size;\n if (fontObj.isType3Font) {\n return;\n }\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface = fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n #getScaledPath(path, currentTransform, transform) {\n const newPath = new Path2D();\n newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n return newPath;\n }\n paintChar(character, x, y, patternFillTransform, patternStrokeTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n const patternFill = current.patternFill && !font.missingFile;\n const patternStroke = current.patternStroke && !font.missingFile;\n let path;\n if (font.disableFontFace || isAddToPathSet || patternFill || patternStroke) {\n path = font.getPathGenerator(this.commonObjs, character);\n }\n if (font.disableFontFace || patternFill || patternStroke) {\n ctx.save();\n ctx.translate(x, y);\n ctx.scale(fontSize, -fontSize);\n let currentTransform;\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternFillTransform) {\n currentTransform = ctx.getTransform();\n ctx.setTransform(...patternFillTransform);\n ctx.fill(this.#getScaledPath(path, currentTransform, patternFillTransform));\n } else {\n ctx.fill(path);\n }\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n if (patternStrokeTransform) {\n currentTransform ||= ctx.getTransform();\n ctx.setTransform(...patternStrokeTransform);\n const {\n a,\n b,\n c,\n d\n } = currentTransform;\n const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n const [sx, sy] = Util.singularValueDecompose2dScale(transf);\n ctx.lineWidth *= Math.max(sx, sy) / fontSize;\n ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n } else {\n ctx.lineWidth /= fontSize;\n ctx.stroke(path);\n }\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths ||= [];\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n path\n });\n }\n }\n get isFontSubpixelAAEnabled() {\n const {\n context: ctx\n } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n let patternFillTransform, patternStrokeTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n patternFillTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n if (current.patternStroke) {\n ctx.save();\n const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n patternStrokeTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.strokeStyle = pattern;\n }\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n ctx.lineWidth = lineWidth;\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n return undefined;\n }\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n if (font.remeasure && width > 0) {\n const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n }\n }\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n if (accent) {\n const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n }\n }\n }\n const charWidth = vertical ? width * widthAdvanceScale - spacing * fontDirection : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n showType3Text(glyphs) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n ctx.scale(textHScale, fontDirection);\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n setCharWidth(xWidth, yWidth) {}\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack\n })\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n this.current.patternStroke = true;\n }\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n setStrokeRGBColor(r, g, b) {\n this.ctx.strokeStyle = this.current.strokeColor = Util.makeHexColor(r, g, b);\n this.current.patternStroke = false;\n }\n setStrokeTransparent() {\n this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n this.current.patternStroke = false;\n }\n setFillRGBColor(r, g, b) {\n this.ctx.fillStyle = this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.patternFill = false;\n }\n setFillTransparent() {\n this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n this.current.patternFill = false;\n }\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.SHADING);\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const {\n width,\n height\n } = ctx.canvas;\n const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n if (matrix) {\n this.transform(...matrix);\n }\n this.baseTransform = getCurrentTransform(this.ctx);\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n const currentCtx = this.ctx;\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n let bounds = Util.getAxialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx));\n const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n const groupCtx = scratchCanvas.context;\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n if (group.smask) {\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null\n });\n } else {\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.save();\n }\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n this.ctx.imageSmoothingEnabled = false;\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n this.ctx.save();\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n if (rect) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx));\n const {\n viewportScale\n } = this;\n const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n const {\n canvas,\n context\n } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n this.endPath();\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.ctx.beginPath();\n }\n }\n this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n this.transform(...transform);\n this.transform(...matrix);\n }\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n const ctx = this.ctx;\n const glyph = this.processingType3;\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n ctx.save();\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectRepeat(img, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n img = this.getObject(img.data, img);\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (const image of images) {\n const {\n data,\n width,\n height,\n transform\n } = image;\n const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n maskCtx.globalCompositeOperation = \"source-in\";\n maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, getCurrentTransformInverse(ctx), PathType.FILL) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n maskCtx.restore();\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const {\n bitmap,\n width,\n height\n } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n return tmpCanvas.canvas;\n }\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n this.save();\n if (!isNodeJS) {\n const {\n filter\n } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n ctx.scale(1 / width, -1 / height);\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n const scaled = this._scaleImage(imgToPaint, getCurrentTransformInverse(ctx));\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(getCurrentTransform(ctx), imgData.interpolate);\n drawImageAtIntegerCoords(ctx, scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n this.compose();\n this.restore();\n }\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(ctx, imgToPaint, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n markPoint(tag) {}\n markPointProps(tag, properties) {}\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true\n });\n }\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties)\n });\n } else {\n this.markedContentStack.push({\n visible: true\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n beginCompat() {}\n endCompat() {}\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n getScaleForStroking() {\n if (this._cachedScaleForStroking[0] === -1) {\n const {\n lineWidth\n } = this.current;\n const {\n a,\n b,\n c,\n d\n } = this.ctx.getTransform();\n let scaleX, scaleY;\n if (b === 0 && c === 0) {\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n rescaleAndStroke(saveRestore) {\n const {\n ctx\n } = this;\n const {\n lineWidth\n } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n ctx.lineWidth = lineWidth || 1;\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n ctx.scale(scaleX, scaleY);\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n ctx.stroke();\n if (saveRestore) {\n ctx.restore();\n }\n }\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\n;// ./src/display/worker_options.js\nclass GlobalWorkerOptions {\n static #port = null;\n static #src = \"\";\n static get workerPort() {\n return this.#port;\n }\n static set workerPort(val) {\n if (!(typeof Worker !== \"undefined\" && val instanceof Worker) && val !== null) {\n throw new Error(\"Invalid `workerPort` type.\");\n }\n this.#port = val;\n }\n static get workerSrc() {\n return this.#src;\n }\n static set workerSrc(val) {\n if (typeof val !== \"string\") {\n throw new Error(\"Invalid `workerSrc` type.\");\n }\n this.#src = val;\n }\n}\n\n;// ./src/display/metadata.js\n\nclass Metadata {\n #metadataMap;\n #data;\n constructor({\n parsedData,\n rawData\n }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n getRaw() {\n return this.#data;\n }\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\n;// ./src/display/optional_content_config.js\n\n\nconst INTERNAL = Symbol(\"INTERNAL\");\nclass OptionalContentGroup {\n #isDisplay = false;\n #isPrint = false;\n #userSet = false;\n #visible = true;\n constructor(renderingIntent, {\n name,\n intent,\n usage,\n rbGroups\n }) {\n this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n this.name = name;\n this.intent = intent;\n this.usage = usage;\n this.rbGroups = rbGroups;\n }\n get visible() {\n if (this.#userSet) {\n return this.#visible;\n }\n if (!this.#visible) {\n return false;\n }\n const {\n print,\n view\n } = this.usage;\n if (this.#isDisplay) {\n return view?.viewState !== \"OFF\";\n } else if (this.#isPrint) {\n return print?.printState !== \"OFF\";\n }\n return true;\n }\n _setVisible(internal, visible, userSet = false) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#userSet = userSet;\n this.#visible = visible;\n }\n}\nclass OptionalContentConfig {\n #cachedGetHash = null;\n #groups = new Map();\n #initialHash = null;\n #order = null;\n constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n this.renderingIntent = renderingIntent;\n this.name = null;\n this.creator = null;\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(group.id, new OptionalContentGroup(renderingIntent, group));\n }\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n this.#initialHash = this.getHash();\n }\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n info(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n setVisibility(id, visible = true, preserveRB = true) {\n const group = this.#groups.get(id);\n if (!group) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n if (preserveRB && visible && group.rbGroups.length) {\n for (const rbGroup of group.rbGroups) {\n for (const otherId of rbGroup) {\n if (otherId !== id) {\n this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n }\n }\n }\n }\n group._setVisible(INTERNAL, !!visible, true);\n this.#cachedGetHash = null;\n }\n setOCGState({\n state,\n preserveRB\n }) {\n let operator;\n for (const elem of state) {\n switch (elem) {\n case \"ON\":\n case \"OFF\":\n case \"Toggle\":\n operator = elem;\n continue;\n }\n const group = this.#groups.get(elem);\n if (!group) {\n continue;\n }\n switch (operator) {\n case \"ON\":\n this.setVisibility(elem, true, preserveRB);\n break;\n case \"OFF\":\n this.setVisibility(elem, false, preserveRB);\n break;\n case \"Toggle\":\n this.setVisibility(elem, !group.visible, preserveRB);\n break;\n }\n }\n this.#cachedGetHash = null;\n }\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n getGroups() {\n return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n }\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return this.#cachedGetHash = hash.hexdigest();\n }\n}\n\n;// ./src/display/transport_stream.js\n\n\nclass PDFDataTransportStream {\n constructor(pdfDataRangeTransport, {\n disableRange = false,\n disableStream = false\n }) {\n assert(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n const {\n length,\n initialData,\n progressiveDone,\n contentDispositionFilename\n } = pdfDataRangeTransport;\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n if (initialData?.length > 0) {\n const buffer = initialData instanceof Uint8Array && initialData.byteLength === initialData.buffer.byteLength ? initialData.buffer : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n this._fullRequestReader = null;\n this._rangeReaders = [];\n pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({\n begin,\n chunk\n });\n });\n pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({\n loaded,\n total\n });\n });\n pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({\n chunk\n });\n });\n pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n pdfDataRangeTransport.transportReady();\n }\n _onReceiveData({\n begin,\n chunk\n }) {\n const buffer = chunk instanceof Uint8Array && chunk.byteLength === chunk.buffer.byteLength ? chunk.buffer : new Uint8Array(chunk).buffer;\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n }\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n _onProgress(evt) {\n if (evt.total === undefined) {\n this._rangeReaders[0]?.onProgress?.({\n loaded: evt.loaded\n });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n }\n }\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\nclass PDFDataTransportStreamReader {\n constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename) ? contentDispositionFilename : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n get headersReady() {\n return this._headersReady;\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n get contentLength() {\n return this._stream._contentLength;\n }\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n this.onProgress = null;\n }\n _enqueue(chunk) {\n if (this._done) {\n return;\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({\n value: chunk,\n done: false\n });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\n;// ./src/display/content_disposition.js\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, {\n fatal: true\n });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {}\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match;\n n = parseInt(n, 10);\n if (n in matches) {\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n break;\n }\n let [quot, part] = matches[n];\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1;\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n return value.replaceAll(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n }\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n });\n }\n return \"\";\n}\n\n;// ./src/display/network_utils.js\n\n\n\nfunction createHeaders(isHttp, httpHeaders) {\n const headers = new Headers();\n if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n return headers;\n }\n for (const key in httpHeaders) {\n const val = httpHeaders[key];\n if (val !== undefined) {\n headers.append(key, val);\n }\n }\n return headers;\n}\nfunction getResponseOrigin(url) {\n return URL.parse(url)?.origin ?? null;\n}\nfunction validateRangeRequestCapabilities({\n responseHeaders,\n isHttp,\n rangeChunkSize,\n disableRange\n}) {\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined\n };\n const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n returnValues.suggestedLength = length;\n if (length <= 2 * rangeChunkSize) {\n return returnValues;\n }\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\nfunction extractFilenameFromHeader(responseHeaders) {\n const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\nfunction createResponseError(status, url) {\n return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status, status === 404 || status === 0 && url.startsWith(\"file:\"));\n}\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\n;// ./src/display/fetch_stream.js\n\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\"\n };\n}\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\nclass PDFFetchStream {\n _responseOrigin = null;\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.headers = createHeaders(this.isHttp, source.httpHeaders);\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n const headers = new Headers(stream.headers);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n stream._responseOrigin = getResponseOrigin(response.url);\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n const responseHeaders = response.headers;\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n this._isRangeSupported = allowRangeRequests;\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n }).catch(this._headersCapability.reject);\n this.onProgress = null;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._headersCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = Promise.withResolvers();\n this._isStreamingSupported = !source.disableStream;\n this._abortController = new AbortController();\n const headers = new Headers(stream.headers);\n headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n const url = source.url;\n fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n const responseOrigin = getResponseOrigin(response.url);\n if (responseOrigin !== stream._responseOrigin) {\n throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n }\n if (!validateResponseStatus(response.status)) {\n throw createResponseError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n }).catch(this._readCapability.reject);\n this.onProgress = null;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n const {\n value,\n done\n } = await this._reader.read();\n if (done) {\n return {\n value,\n done\n };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded\n });\n return {\n value: getArrayBuffer(value),\n done: false\n };\n }\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n;// ./src/display/network.js\n\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\nfunction network_getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\nclass NetworkManager {\n _responseOrigin = null;\n constructor({\n url,\n httpHeaders,\n withCredentials\n }) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.headers = createHeaders(this.isHttp, httpHeaders);\n this.withCredentials = withCredentials || false;\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = this.pendingRequests[xhrId] = {\n xhr\n };\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const [key, val] of this.headers) {\n xhr.setRequestHeader(key, val);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n assert(args.onError, \"Expected `onError` callback to be provided.\");\n xhr.onerror = () => {\n args.onError(xhr.status);\n };\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n xhr.send(null);\n return xhrId;\n }\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n pendingRequest.onProgress?.(evt);\n }\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return;\n }\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n if (xhr.readyState !== 4) {\n return;\n }\n if (!(xhrId in this.pendingRequests)) {\n return;\n }\n delete this.pendingRequests[xhrId];\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n pendingRequest.onError(xhr.status);\n return;\n }\n const chunk = network_getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n if (matches) {\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk\n });\n } else {\n warn(`Missing or invalid \"Content-Range\" header.`);\n pendingRequest.onError(0);\n }\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk\n });\n } else {\n pendingRequest.onError(xhr.status);\n }\n }\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source);\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n return this._fullRequestReader;\n }\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n this._url = source.url;\n this._fullRequestId = manager.request({\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._headersCapability = Promise.withResolvers();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n this.onProgress = null;\n }\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(/[^\\S ]+$/, \"\").split(/[\\r\\n]+/).map(x => {\n const [key, ...val] = x.split(\": \");\n return [key, val.join(\": \")];\n }) : []);\n const {\n allowRangeRequests,\n suggestedLength\n } = validateRangeRequestCapabilities({\n responseHeaders,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange\n });\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n this._contentLength = suggestedLength || this._contentLength;\n this._filename = extractFilenameFromHeader(responseHeaders);\n if (this._isRangeSupported) {\n this._manager.abortRequest(fullRequestXhrId);\n }\n this._headersCapability.resolve();\n }\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: data.chunk,\n done: false\n });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n }\n _onError(status) {\n this._storedError = createResponseError(status, this._url);\n this._headersCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength\n });\n }\n get filename() {\n return this._filename;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n get contentLength() {\n return this._contentLength;\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n async read() {\n await this._headersCapability.promise;\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n this._headersCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n this._url = manager.url;\n this._requestId = manager.request({\n begin,\n end,\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this)\n });\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n this.onProgress = null;\n this.onClosed = null;\n }\n _onHeadersReceived() {\n const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n if (responseOrigin !== this._manager._responseOrigin) {\n this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n this._onError(0);\n }\n }\n _close() {\n this.onClosed?.(this);\n }\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({\n value: chunk,\n done: false\n });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n this._close();\n }\n _onError(status) {\n this._storedError ??= createResponseError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({\n loaded: evt.loaded\n });\n }\n }\n get isStreamingSupported() {\n return false;\n }\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return {\n value: chunk,\n done: false\n };\n }\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n const requestCapability = Promise.withResolvers();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({\n value: undefined,\n done: true\n });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\n;// ./src/display/node_stream.js\n\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\nfunction parseUrlOrPath(sourceUrl) {\n if (urlRegex.test(sourceUrl)) {\n return new URL(sourceUrl);\n }\n const url = process.getBuiltinModule(\"url\");\n return new URL(url.pathToFileURL(sourceUrl));\n}\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrlOrPath(source.url);\n assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:// URLs.\");\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n getFullReader() {\n assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n return this._fullRequestReader;\n }\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\nclass PDFNodeStreamFsFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length;\n this._loaded = 0;\n this._filename = null;\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n this._headersCapability = Promise.withResolvers();\n const fs = process.getBuiltinModule(\"fs\");\n fs.promises.lstat(this._url).then(stat => {\n this._contentLength = stat.size;\n this._setReadableStream(fs.createReadStream(this._url));\n this._headersCapability.resolve();\n }, error => {\n if (error.code === \"ENOENT\") {\n error = createResponseError(0, this._url.href);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n });\n }\n get headersReady() {\n return this._headersCapability.promise;\n }\n get filename() {\n return this._filename;\n }\n get contentLength() {\n return this._contentLength;\n }\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\nclass PDFNodeStreamFsRangeReader {\n constructor(stream, start, end) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = Promise.withResolvers();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n const fs = process.getBuiltinModule(\"fs\");\n this._setReadableStream(fs.createReadStream(this._url, {\n start,\n end: end - 1\n }));\n }\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return {\n value: undefined,\n done: true\n };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = Promise.withResolvers();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded\n });\n const buffer = new Uint8Array(chunk).buffer;\n return {\n value: buffer,\n done: false\n };\n }\n cancel(reason) {\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n readableStream.on(\"end\", () => {\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\n;// ./src/display/text_layer.js\n\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nclass TextLayer {\n #capability = Promise.withResolvers();\n #container = null;\n #disableProcessItems = false;\n #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n #lang = null;\n #layoutTextParams = null;\n #pageHeight = 0;\n #pageWidth = 0;\n #reader = null;\n #rootContainer = null;\n #rotation = 0;\n #scale = 0;\n #styleCache = Object.create(null);\n #textContentItemsStr = [];\n #textContentSource = null;\n #textDivs = [];\n #textDivProperties = new WeakMap();\n #transform = null;\n static #ascentCache = new Map();\n static #canvasContexts = new Map();\n static #canvasCtxFonts = new WeakMap();\n static #minFontSize = null;\n static #pendingTextLayers = new Set();\n constructor({\n textContentSource,\n container,\n viewport\n }) {\n if (textContentSource instanceof ReadableStream) {\n this.#textContentSource = textContentSource;\n } else if (typeof textContentSource === \"object\") {\n this.#textContentSource = new ReadableStream({\n start(controller) {\n controller.enqueue(textContentSource);\n controller.close();\n }\n });\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n this.#container = this.#rootContainer = container;\n this.#scale = viewport.scale * OutputScale.pixelRatio;\n this.#rotation = viewport.rotation;\n this.#layoutTextParams = {\n div: null,\n properties: null,\n ctx: null\n };\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this.#pageWidth = pageWidth;\n this.#pageHeight = pageHeight;\n TextLayer.#ensureMinFontSizeComputed();\n setLayerDimensions(container, viewport);\n this.#capability.promise.finally(() => {\n TextLayer.#pendingTextLayers.delete(this);\n this.#layoutTextParams = null;\n this.#styleCache = null;\n }).catch(() => {});\n }\n static get fontFamilyMap() {\n const {\n isWindows,\n isFirefox\n } = util_FeatureTest.platform;\n return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n }\n render() {\n const pump = () => {\n this.#reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n this.#capability.resolve();\n return;\n }\n this.#lang ??= value.lang;\n Object.assign(this.#styleCache, value.styles);\n this.#processItems(value.items);\n pump();\n }, this.#capability.reject);\n };\n this.#reader = this.#textContentSource.getReader();\n TextLayer.#pendingTextLayers.add(this);\n pump();\n return this.#capability.promise;\n }\n update({\n viewport,\n onBefore = null\n }) {\n const scale = viewport.scale * OutputScale.pixelRatio;\n const rotation = viewport.rotation;\n if (rotation !== this.#rotation) {\n onBefore?.();\n this.#rotation = rotation;\n setLayerDimensions(this.#rootContainer, {\n rotation\n });\n }\n if (scale !== this.#scale) {\n onBefore?.();\n this.#scale = scale;\n const params = {\n div: null,\n properties: null,\n ctx: TextLayer.#getCtx(this.#lang)\n };\n for (const div of this.#textDivs) {\n params.properties = this.#textDivProperties.get(div);\n params.div = div;\n this.#layout(params);\n }\n }\n }\n cancel() {\n const abortEx = new AbortException(\"TextLayer task cancelled.\");\n this.#reader?.cancel(abortEx).catch(() => {});\n this.#reader = null;\n this.#capability.reject(abortEx);\n }\n get textDivs() {\n return this.#textDivs;\n }\n get textContentItemsStr() {\n return this.#textContentItemsStr;\n }\n #processItems(items) {\n if (this.#disableProcessItems) {\n return;\n }\n this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n const textDivs = this.#textDivs,\n textContentItemsStr = this.#textContentItemsStr;\n for (const item of items) {\n if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n warn(\"Ignoring additional textDivs for performance reasons.\");\n this.#disableProcessItems = true;\n return;\n }\n if (item.str === undefined) {\n if (item.type === \"beginMarkedContentProps\" || item.type === \"beginMarkedContent\") {\n const parent = this.#container;\n this.#container = document.createElement(\"span\");\n this.#container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this.#container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this.#container);\n } else if (item.type === \"endMarkedContent\") {\n this.#container = this.#container.parentNode;\n }\n continue;\n }\n textContentItemsStr.push(item.str);\n this.#appendText(item);\n }\n }\n #appendText(geom) {\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0\n };\n this.#textDivs.push(textDiv);\n const tx = Util.transform(this.#transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = this.#styleCache[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n const scaleFactorStr = \"calc(var(--total-scale-factor) *\";\n const divStyle = textDiv.style;\n if (this.#container === this.#rootContainer) {\n divStyle.left = `${(100 * left / this.#pageWidth).toFixed(2)}%`;\n divStyle.top = `${(100 * top / this.#pageHeight).toFixed(2)}%`;\n } else {\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n textDivProperties.fontSize = fontHeight;\n textDiv.setAttribute(\"role\", \"presentation\");\n textDiv.textContent = geom.str;\n textDiv.dir = geom.dir;\n if (this.#fontInspectorEnabled) {\n textDiv.dataset.fontName = style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n this.#textDivProperties.set(textDiv, textDivProperties);\n this.#layoutTextParams.div = textDiv;\n this.#layoutTextParams.properties = textDivProperties;\n this.#layout(this.#layoutTextParams);\n if (textDivProperties.hasText) {\n this.#container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this.#container.append(br);\n }\n }\n #layout(params) {\n const {\n div,\n properties,\n ctx\n } = params;\n const {\n style\n } = div;\n let transform = \"\";\n if (TextLayer.#minFontSize > 1) {\n transform = `scale(${1 / TextLayer.#minFontSize})`;\n }\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const {\n fontFamily\n } = style;\n const {\n canvasWidth,\n fontSize\n } = properties;\n TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n const {\n width\n } = ctx.measureText(div.textContent);\n if (width > 0) {\n transform = `scaleX(${canvasWidth * this.#scale / width}) ${transform}`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n }\n static cleanup() {\n if (this.#pendingTextLayers.size > 0) {\n return;\n }\n this.#ascentCache.clear();\n for (const {\n canvas\n } of this.#canvasContexts.values()) {\n canvas.remove();\n }\n this.#canvasContexts.clear();\n }\n static #getCtx(lang = null) {\n let ctx = this.#canvasContexts.get(lang ||= \"\");\n if (!ctx) {\n const canvas = document.createElement(\"canvas\");\n canvas.className = \"hiddenCanvasElement\";\n canvas.lang = lang;\n document.body.append(canvas);\n ctx = canvas.getContext(\"2d\", {\n alpha: false,\n willReadFrequently: true\n });\n this.#canvasContexts.set(lang, ctx);\n this.#canvasCtxFonts.set(ctx, {\n size: 0,\n family: \"\"\n });\n }\n return ctx;\n }\n static #ensureCtxFont(ctx, size, family) {\n const cached = this.#canvasCtxFonts.get(ctx);\n if (size === cached.size && family === cached.family) {\n return;\n }\n ctx.font = `${size}px ${family}`;\n cached.size = size;\n cached.family = family;\n }\n static #ensureMinFontSizeComputed() {\n if (this.#minFontSize !== null) {\n return;\n }\n const div = document.createElement(\"div\");\n div.style.opacity = 0;\n div.style.lineHeight = 1;\n div.style.fontSize = \"1px\";\n div.style.position = \"absolute\";\n div.textContent = \"X\";\n document.body.append(div);\n this.#minFontSize = div.getBoundingClientRect().height;\n div.remove();\n }\n static #getAscent(fontFamily, style, lang) {\n const cachedAscent = this.#ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n const ctx = this.#getCtx(lang);\n ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n const metrics = ctx.measureText(\"\");\n const ascent = metrics.fontBoundingBoxAscent;\n const descent = Math.abs(metrics.fontBoundingBoxDescent);\n ctx.canvas.width = ctx.canvas.height = 0;\n let ratio = 0.8;\n if (ascent) {\n ratio = ascent / (ascent + descent);\n } else {\n if (util_FeatureTest.platform.isFirefox) {\n warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n }\n if (style.ascent) {\n ratio = style.ascent;\n } else if (style.descent) {\n ratio = 1 + style.descent;\n }\n }\n this.#ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n}\n\n;// ./src/display/xfa_text.js\nclass XfaText {\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null)\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n static shouldBuildText(name) {\n return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n }\n}\n\n;// ./src/display/api.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nfunction getDocument(src = {}) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = {\n url: src\n };\n } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n src = {\n data: src\n };\n }\n const task = new PDFDocumentLoadingTask();\n const {\n docId\n } = task;\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || (isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory);\n const iccUrl = getFactoryUrlProp(src.iccUrl);\n const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n const StandardFontDataFactory = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);\n const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n const enableHWA = src.enableHWA === true;\n const useWasm = src.useWasm !== false;\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n const styleElement = null;\n setVerbosityLevel(verbosity);\n const transportFactory = {\n canvasFactory: new CanvasFactory({\n ownerDocument,\n enableHWA\n }),\n filterFactory: new FilterFactory({\n docId,\n ownerDocument\n }),\n cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked\n }),\n standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n baseUrl: standardFontDataUrl\n }),\n wasmFactory: useWorkerFetch ? null : new WasmFactory({\n baseUrl: wasmUrl\n })\n };\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort\n };\n worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docParams = {\n docId,\n apiVersion: \"5.0.375\",\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n isImageDecoderSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n useWasm,\n useWorkerFetch,\n cMapUrl,\n iccUrl,\n standardFontDataUrl,\n wasmUrl\n }\n };\n const transportParams = {\n ownerDocument,\n pdfBug,\n styleElement,\n loadingParams: {\n disableAutoFetch,\n enableXfa\n }\n };\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerIdPromise = worker.messageHandler.sendWithPromise(\"GetDocRequest\", docParams, data ? [data.buffer] : null);\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(rangeTransport, {\n disableRange,\n disableStream\n });\n } else if (!data) {\n if (!url) {\n throw new Error(\"getDocument - no `url` parameter provided.\");\n }\n let NetworkStream;\n if (isNodeJS) {\n if (isValidFetchUrl(url)) {\n if (typeof fetch === \"undefined\" || typeof Response === \"undefined\" || !(\"body\" in Response.prototype)) {\n throw new Error(\"getDocument - the Fetch API was disabled in Node.js, see `--no-experimental-fetch`.\");\n }\n NetworkStream = PDFFetchStream;\n } else {\n NetworkStream = PDFNodeStream;\n }\n } else {\n NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : PDFNetworkStream;\n }\n networkStream = new NetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream\n });\n }\n return workerIdPromise.then(workerId => {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const messageHandler = new MessageHandler(docId, workerId, worker.port);\n const transport = new WorkerTransport(messageHandler, task, networkStream, transportParams, transportFactory);\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n });\n }).catch(task._capability.reject);\n return task;\n}\nfunction getUrlProp(val) {\n if (val instanceof URL) {\n return val.href;\n }\n if (typeof val === \"string\") {\n if (isNodeJS) {\n return val;\n }\n const url = URL.parse(val, window.location);\n if (url) {\n return url.href;\n }\n }\n throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n}\nfunction getDataProp(val) {\n if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n return new Uint8Array(val);\n }\n throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n}\nfunction getFactoryUrlProp(val) {\n if (typeof val !== \"string\") {\n return null;\n }\n if (val.endsWith(\"/\")) {\n return val;\n }\n throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\nconst isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\nconst isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n constructor() {\n this._capability = Promise.withResolvers();\n this._transport = null;\n this._worker = null;\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n this.destroyed = false;\n this.onPassword = null;\n this.onProgress = null;\n }\n get promise() {\n return this._capability.promise;\n }\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n this._transport = null;\n this._worker?.destroy();\n this._worker = null;\n }\n}\nclass PDFDataRangeTransport {\n constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = Promise.withResolvers();\n }\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n transportReady() {\n this._readyCapability.resolve();\n }\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n abort() {}\n}\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n }\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n get canvasFactory() {\n return this._transport.canvasFactory;\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get numPages() {\n return this._pdfInfo.numPages;\n }\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n getDestinations() {\n return this._transport.getDestinations();\n }\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n getPageMode() {\n return this._transport.getPageMode();\n }\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n getAttachments() {\n return this._transport.getAttachments();\n }\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n getOutline() {\n return this._transport.getOutline();\n }\n getOptionalContentConfig({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getOptionalContentConfig(renderingIntent);\n }\n getPermissions() {\n return this._transport.getPermissions();\n }\n getMetadata() {\n return this._transport.getMetadata();\n }\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n getData() {\n return this._transport.getData();\n }\n saveDocument() {\n return this._transport.saveDocument();\n }\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n destroy() {\n return this.loadingTask.destroy();\n }\n cachedPageNumber(ref) {\n return this._transport.cachedPageNumber(ref);\n }\n get loadingParams() {\n return this._transport.loadingParams;\n }\n get loadingTask() {\n return this._transport.loadingTask;\n }\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\nclass PDFPageProxy {\n #pendingCleanup = false;\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this._intentStates = new Map();\n this.destroyed = false;\n }\n get pageNumber() {\n return this._pageIndex + 1;\n }\n get rotate() {\n return this._pageInfo.rotate;\n }\n get ref() {\n return this._pageInfo.ref;\n }\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n get view() {\n return this._pageInfo.view;\n }\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n userUnit: this.userUnit,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip\n });\n }\n getAnnotations({\n intent = \"display\"\n } = {}) {\n const {\n renderingIntent\n } = this._transport.getRenderingIntent(intent);\n return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n }\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n get filterFactory() {\n return this._transport.filterFactory;\n }\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n isEditing = false\n }) {\n this._stats?.time(\"Overall\");\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n const {\n renderingIntent,\n cacheKey\n } = intentArgs;\n this.#pendingCleanup = false;\n optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n let intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(cacheKey, intentState);\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = Promise.withResolvers();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n if (intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup();\n if (error) {\n internalRenderTask.capability.reject(error);\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error)\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n if (globalThis.Stats?.enabled) {\n globalThis.Stats.add(this.pageNumber, this._stats);\n }\n }\n };\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n params: {\n canvasContext,\n viewport,\n transform,\n background\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors\n });\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n throw new Error(\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" + \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig\n });\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n return renderTask;\n }\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isEditing = false\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n intentState.renderTasks.delete(opListTask);\n }\n }\n const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = Promise.withResolvers();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null\n };\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n }\n });\n }\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n return this.getXfa().then(xfa => XfaText.textContent(xfa));\n }\n const readableStream = this.streamTextContent(params);\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n resolve(textContent);\n return;\n }\n textContent.lang ??= value.lang;\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n lang: null\n };\n pump();\n });\n }\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n _destroy() {\n this.destroyed = true;\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true\n });\n if (intentState.opListReadCapability) {\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n return Promise.all(waitOn);\n }\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup();\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n #tryCleanup() {\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n for (const {\n renderTasks,\n operatorList\n } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return;\n }\n this._stats?.timeEnd(\"Page Request\");\n intentState.displayReadyCapability?.resolve(transparency);\n }\n _renderPageChunk(operatorListChunk, intentState) {\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup();\n }\n }\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n modifiedIds\n }) {\n const {\n map,\n transfer\n } = annotationStorageSerializable;\n const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n modifiedIds\n }, transfer);\n const reader = readableStream.getReader();\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n const pump = () => {\n reader.read().then(({\n value,\n done\n }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return;\n }\n this._renderPageChunk(value, intentState);\n pump();\n }, reason => {\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n if (intentState.operatorList) {\n intentState.operatorList.lastChunk = true;\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup();\n }\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n });\n };\n pump();\n }\n _abortOperatorList({\n intentState,\n reason,\n force = false\n }) {\n if (!intentState.streamReader) {\n return;\n }\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n if (!force) {\n if (intentState.renderTasks.size > 0) {\n return;\n }\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < 1000) {\n delay += reason.extraDelay;\n }\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({\n intentState,\n reason,\n force: true\n });\n }, delay);\n return;\n }\n }\n intentState.streamReader.cancel(new AbortException(reason.message)).catch(() => {});\n intentState.streamReader = null;\n if (this._transport.destroyed) {\n return;\n }\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n this.cleanup();\n }\n get stats() {\n return this._stats;\n }\n}\nclass LoopbackPort {\n #listeners = new Map();\n #deferred = Promise.resolve();\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? {\n transfer\n } : null)\n };\n this.#deferred.then(() => {\n for (const [listener] of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n addEventListener(name, listener, options = null) {\n let rmAbort = null;\n if (options?.signal instanceof AbortSignal) {\n const {\n signal\n } = options;\n if (signal.aborted) {\n warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n return;\n }\n const onAbort = () => this.removeEventListener(name, listener);\n rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n signal.addEventListener(\"abort\", onAbort);\n }\n this.#listeners.set(listener, rmAbort);\n }\n removeEventListener(name, listener) {\n const rmAbort = this.#listeners.get(listener);\n rmAbort?.();\n this.#listeners.delete(listener);\n }\n terminate() {\n for (const [, rmAbort] of this.#listeners) {\n rmAbort?.();\n }\n this.#listeners.clear();\n }\n}\nclass PDFWorker {\n static #fakeWorkerId = 0;\n static #isWorkerDisabled = false;\n static #workerPorts;\n static {\n if (isNodeJS) {\n this.#isWorkerDisabled = true;\n GlobalWorkerOptions.workerSrc ||= \"./pdf.worker.mjs\";\n }\n this._isSameOrigin = (baseUrl, otherUrl) => {\n const base = URL.parse(baseUrl);\n if (!base?.origin || base.origin === \"null\") {\n return false;\n }\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n this._createCDNWrapper = url => {\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper], {\n type: \"text/javascript\"\n }));\n };\n }\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel()\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n this._readyCapability = Promise.withResolvers();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n if (port) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n get promise() {\n return this._readyCapability.promise;\n }\n #resolve() {\n this._readyCapability.resolve();\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity\n });\n }\n get port() {\n return this._port;\n }\n get messageHandler() {\n return this._messageHandler;\n }\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {});\n this.#resolve();\n }\n _initialize() {\n if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n this._setupFakeWorker();\n return;\n }\n let {\n workerSrc\n } = PDFWorker;\n try {\n if (!PDFWorker._isSameOrigin(window.location, workerSrc)) {\n workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n }\n const worker = new Worker(workerSrc, {\n type: \"module\"\n });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n ac.abort();\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n this._setupFakeWorker();\n }\n };\n const ac = new AbortController();\n worker.addEventListener(\"error\", () => {\n if (!this._webWorker) {\n terminateEarly();\n }\n }, {\n signal: ac.signal\n });\n messageHandler.on(\"test\", data => {\n ac.abort();\n if (this.destroyed || !data) {\n terminateEarly();\n return;\n }\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n this.#resolve();\n });\n messageHandler.on(\"ready\", data => {\n ac.abort();\n if (this.destroyed) {\n terminateEarly();\n return;\n }\n try {\n sendTest();\n } catch {\n this._setupFakeWorker();\n }\n });\n const sendTest = () => {\n const testObj = new Uint8Array();\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n this._setupFakeWorker();\n }\n _setupFakeWorker() {\n if (!PDFWorker.#isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorker.#isWorkerDisabled = true;\n }\n PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n const id = `fake${PDFWorker.#fakeWorkerId++}`;\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n this._messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this.#resolve();\n }).catch(reason => {\n this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n });\n }\n destroy() {\n this.destroyed = true;\n this._webWorker?.terminate();\n this._webWorker = null;\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n this._messageHandler?.destroy();\n this._messageHandler = null;\n }\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker = await import(/*webpackIgnore: true*/this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nclass WorkerTransport {\n #methodPromises = new Map();\n #pageCache = new Map();\n #pagePromises = new Map();\n #pageRefCache = new Map();\n #passwordCapability = null;\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement\n });\n this.loadingParams = params.loadingParams;\n this._params = params;\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n this.wasmFactory = factory.wasmFactory;\n this.destroyed = false;\n this.destroyCapability = null;\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = Promise.withResolvers();\n this.setupMessageHandler();\n }\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n this.#methodPromises.set(name, promise);\n return promise;\n }\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n let renderingIntent = RenderingIntentFlag.DISPLAY;\n let annotationStorageSerializable = SerializableEmpty;\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n if (isEditing) {\n renderingIntent += RenderingIntentFlag.IS_EDITING;\n }\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n const {\n ids: modifiedIds,\n hash: modifiedIdsHash\n } = annotationStorage.modifiedIds;\n const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n return {\n renderingIntent,\n cacheKey: cacheKeyBuf.join(\"_\"),\n annotationStorageSerializable,\n modifiedIds\n };\n }\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n this.destroyed = true;\n this.destroyCapability = Promise.withResolvers();\n this.#passwordCapability?.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n const waitOn = [];\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n this.#pageRefCache.clear();\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n TextLayer.cleanup();\n this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n this.messageHandler?.destroy();\n this.messageHandler = null;\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n setupMessageHandler() {\n const {\n messageHandler,\n loadingTask\n } = this;\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"ReaderHeadersReady\", async data => {\n await this._fullReader.headersReady;\n const {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n } = this._fullReader;\n if (!isStreamingSupported || !isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n this._fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total\n });\n };\n }\n return {\n isStreamingSupported,\n isRangeSupported,\n contentLength\n };\n });\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n if (!rangeReader) {\n sink.close();\n return;\n }\n sink.onPull = () => {\n rangeReader.read().then(function ({\n value,\n done\n }) {\n if (done) {\n sink.close();\n return;\n }\n assert(value instanceof ArrayBuffer, \"GetRangeReader - expected an ArrayBuffer.\");\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch(reason => {\n sink.error(reason);\n });\n };\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return;\n }\n throw readyReason;\n });\n };\n });\n messageHandler.on(\"GetDoc\", ({\n pdfInfo\n }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n messageHandler.on(\"DocException\", ex => {\n loadingTask._capability.reject(wrapReason(ex));\n });\n messageHandler.on(\"PasswordRequest\", ex => {\n this.#passwordCapability = Promise.withResolvers();\n try {\n if (!loadingTask.onPassword) {\n throw wrapReason(ex);\n }\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({\n password\n });\n }\n };\n loadingTask.onPassword(updatePassword, ex.code);\n } catch (err) {\n this.#passwordCapability.reject(err);\n }\n return this.#passwordCapability.promise;\n });\n messageHandler.on(\"DataLoaded\", data => {\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length\n });\n this.downloadInfoCapability.resolve(data);\n });\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return;\n }\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return null;\n }\n if (this.commonObjs.has(id)) {\n return null;\n }\n switch (type) {\n case \"Font\":\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n const font = new FontFaceObject(exportedData, inspectFont);\n this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n id\n })).finally(() => {\n if (!font.fontExtraProperties && font.data) {\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"CopyLocalImage\":\n const {\n imageRef\n } = exportedData;\n assert(imageRef, \"The imageRef must be defined.\");\n for (const pageProxy of this.#pageCache.values()) {\n for (const [, data] of pageProxy.objs) {\n if (data?.ref !== imageRef) {\n continue;\n }\n if (!data.dataLen) {\n return null;\n }\n this.commonObjs.resolve(id, structuredClone(data));\n return data.dataLen;\n }\n }\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n return null;\n });\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n return;\n }\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close();\n return;\n }\n switch (type) {\n case \"Image\":\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return;\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total\n });\n });\n messageHandler.on(\"FetchBinaryData\", async data => {\n if (this.destroyed) {\n throw new Error(\"Worker was destroyed.\");\n }\n const factory = this[data.type];\n if (!factory) {\n throw new Error(`${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`);\n }\n return factory.fetch(data);\n });\n }\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n }\n const {\n map,\n transfer\n } = this.annotationStorage.serializable;\n return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null\n }, transfer).finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n getPage(pageNumber) {\n if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n pageIndex\n }).then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n if (pageInfo.refStr) {\n this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n }\n const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n getPageIndex(ref) {\n if (!isRefProxy(ref)) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen\n });\n }\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent\n });\n }\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id\n });\n }\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex\n });\n }\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex\n });\n }\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n getOptionalContentConfig(renderingIntent) {\n return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(data => new OptionalContentConfig(data, renderingIntent));\n }\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, null).then(results => ({\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null\n }));\n this.#methodPromises.set(name, promise);\n return promise;\n }\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return;\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n if (!cleanupSuccessful) {\n throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(true);\n TextLayer.cleanup();\n }\n cachedPageNumber(ref) {\n if (!isRefProxy(ref)) {\n return null;\n }\n const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n return this.#pageRefCache.get(refStr) ?? null;\n }\n}\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\nclass PDFObjects {\n #objs = Object.create(null);\n #ensureObj(objId) {\n return this.#objs[objId] ||= {\n ...Promise.withResolvers(),\n data: INITIAL_DATA\n };\n }\n get(objId, callback = null) {\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.promise.then(() => callback(obj.data));\n return null;\n }\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n has(objId) {\n const obj = this.#objs[objId];\n return !!obj && obj.data !== INITIAL_DATA;\n }\n delete(objId) {\n const obj = this.#objs[objId];\n if (!obj || obj.data === INITIAL_DATA) {\n return false;\n }\n delete this.#objs[objId];\n return true;\n }\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.resolve();\n }\n clear() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n data?.bitmap?.close();\n }\n this.#objs = Object.create(null);\n }\n *[Symbol.iterator]() {\n for (const objId in this.#objs) {\n const {\n data\n } = this.#objs[objId];\n if (data === INITIAL_DATA) {\n continue;\n }\n yield [objId, data];\n }\n }\n}\nclass RenderTask {\n #internalRenderTask = null;\n onContinue = null;\n onError = null;\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n }\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(null, extraDelay);\n }\n get separateAnnots() {\n const {\n separateAnnots\n } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const {\n annotationCanvasMap\n } = this.#internalRenderTask;\n return separateAnnots.form || separateAnnots.canvas && annotationCanvasMap?.size > 0;\n }\n}\nclass InternalRenderTask {\n #rAF = null;\n static #canvasInUse = new WeakSet();\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = Promise.withResolvers();\n this.task = new RenderTask(this);\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n get completed() {\n return this.capability.promise.catch(function () {});\n }\n initializeGraphics({\n transparency = false,\n optionalContentConfig\n }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const {\n canvasContext,\n viewport,\n transform,\n background\n } = this.params;\n this.gfx = new CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n optionalContentConfig\n }, this.annotationCanvasMap, this.pageColors);\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n if (this.#rAF) {\n window.cancelAnimationFrame(this.#rAF);\n this.#rAF = null;\n }\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n this.callback(error);\n this.task.onError?.(error);\n }\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n if (this.running) {\n return;\n }\n this._continue();\n }\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n this.#rAF = window.requestAnimationFrame(() => {\n this.#rAF = null;\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n this.callback();\n }\n }\n }\n}\nconst version = \"5.0.375\";\nconst build = \"23972e194\";\n\n;// ./src/shared/scripting_utils.js\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n static T_HTML() {\n return \"#00000000\";\n }\n static T_rgb() {\n return [null];\n }\n static CMYK_RGB([c, y, m, k]) {\n return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n }\n static CMYK_rgb([c, y, m, k]) {\n return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\n }\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\n;// ./src/display/svg_factory.js\n\n\nclass BaseSVGFactory {\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n return svg;\n }\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n;// ./src/display/xfa_layer.js\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, {\n value: null\n });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n break;\n case \"input\":\n if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n storage.setValue(id, {\n value\n });\n });\n break;\n }\n }\n static setAttributes({\n html,\n element,\n storage = null,\n intent,\n linkService\n }) {\n const {\n attributes\n } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n if (attributes.type === \"radio\") {\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || key !== \"href\" && key !== \"newWindow\") {\n html.setAttribute(key, value);\n }\n }\n }\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n }\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService\n });\n }\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n const textDivs = [];\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return {\n textDivs\n };\n }\n const stack = [[root, -1, rootHtml]];\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n const {\n name\n } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n const childHtml = child?.attributes?.xmlns ? document.createElementNS(child.attributes.xmlns, name) : document.createElement(name);\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService\n });\n }\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n el.setAttribute(\"readOnly\", true);\n }\n return {\n textDivs\n };\n }\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\n;// ./src/display/annotation_layer.js\n\n\n\n\n\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst annotation_layer_DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nclass AnnotationElementFactory {\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\nclass AnnotationElement {\n #updates = null;\n #hasBorder = false;\n #popupElement = null;\n constructor(parameters, {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false\n } = {}) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n static _hasPopupData({\n titleObj,\n contentsObj,\n richText\n }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n get _isEditable() {\n return this.data.isEditable;\n }\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n updateEdited(params) {\n if (!this.container) {\n return;\n }\n this.#updates ||= {\n rect: this.data.rect.slice(0)\n };\n const {\n rect\n } = params;\n if (rect) {\n this.#setRectEdited(rect);\n }\n this.#popupElement?.popup.updateEdited(params);\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n this.#setRectEdited(this.#updates.rect);\n this.#popupElement?.popup.resetEdited();\n this.#updates = null;\n }\n #setRectEdited(rect) {\n const {\n container: {\n style\n },\n data: {\n rect: currentRect,\n rotation\n },\n parent: {\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n }\n } = this;\n currentRect?.splice(0, 4, ...rect);\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (pageHeight - rect[3] + pageY) / pageHeight}%`;\n if (rotation === 0) {\n style.width = `${100 * (rect[2] - rect[0]) / pageWidth}%`;\n style.height = `${100 * (rect[3] - rect[1]) / pageHeight}%`;\n } else {\n this.setRotation(rotation);\n }\n }\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: {\n page,\n viewport\n }\n } = this;\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n const {\n style\n } = container;\n style.zIndex = this.parent.zIndex++;\n if (data.alternativeText) {\n container.title = data.alternativeText;\n }\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const {\n rotation\n } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n const {\n width,\n height\n } = this;\n if (!ignoreBorder && data.borderStyle.width > 0) {\n style.borderWidth = `${data.borderStyle.width}px`;\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-scale-factor))`;\n style.borderRadius = radius;\n }\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n style.borderStyle = \"solid\";\n break;\n case AnnotationBorderStyleType.DASHED:\n style.borderStyle = \"dashed\";\n break;\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n case AnnotationBorderStyleType.UNDERLINE:\n style.borderBottomStyle = \"solid\";\n break;\n default:\n break;\n }\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n style.borderColor = Util.makeHexColor(borderColor[0] | 0, borderColor[1] | 0, borderColor[2] | 0);\n } else {\n style.borderWidth = 0;\n }\n }\n const rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n const {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n } = viewport.rawDims;\n style.left = `${100 * (rect[0] - pageX) / pageWidth}%`;\n style.top = `${100 * (rect[1] - pageY) / pageHeight}%`;\n const {\n rotation\n } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n style.width = `${100 * width / pageWidth}%`;\n style.height = `${100 * height / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n return container;\n }\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const {\n pageWidth,\n pageHeight\n } = this.parent.viewport.rawDims;\n let {\n width,\n height\n } = this;\n if (angle % 180 !== 0) {\n [width, height] = [height, width];\n }\n container.style.width = `${100 * width / pageWidth}%`;\n container.style.height = `${100 * height / pageHeight}%`;\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] = ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray)\n });\n };\n return shadow(this, \"_commonActions\", {\n display: event => {\n const {\n display\n } = event.detail;\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print\n });\n },\n hidden: event => {\n const {\n hidden\n } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({\n preventScroll: false\n }), 0);\n },\n userName: event => {\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle\n });\n }\n });\n }\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail\n },\n target: element\n };\n action(eventProxy);\n delete storedData[actionName];\n }\n }\n }\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const {\n quadPoints\n } = this.data;\n if (!quadPoints) {\n return;\n }\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n if (quadPoints.length === 8) {\n const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n return;\n }\n }\n const {\n style\n } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const {\n borderColor,\n borderWidth\n } = style;\n style.borderWidth = 0;\n svgBuffer = [\"url('data:image/svg+xml;utf8,\", `<svg xmlns=\"http://www.w3.org/2000/svg\"`, ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`, `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`];\n this.container.classList.add(\"hasBorder\");\n }\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n const {\n svgFactory\n } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n const trX = quadPoints[i];\n const trY = quadPoints[i + 1];\n const blX = quadPoints[i + 2];\n const blY = quadPoints[i + 3];\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(`<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`);\n }\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n _createPopup() {\n const {\n data\n } = this;\n const popup = this.#popupElement = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation\n },\n parent: this.parent,\n elements: [this]\n });\n this.parent.div.append(popup.render());\n }\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n _getElementsByName(name, skipId = null) {\n const fields = [];\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const {\n page,\n id,\n exportValues\n } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n }\n return fields;\n }\n for (const domElement of document.getElementsByName(name)) {\n const {\n exportValue\n } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({\n id,\n exportValue,\n domElement\n });\n }\n return fields;\n }\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n getElementsToTriggerPopup() {\n return this.container;\n }\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: {\n id: editId\n }\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId\n });\n });\n }\n get width() {\n return this.data.rect[2] - this.data.rect[0];\n }\n get height() {\n return this.data.rect[3] - this.data.rect[1];\n }\n}\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n render() {\n const {\n data,\n linkService\n } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n return this.container;\n }\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === \"\") {\n this.#setInternalLink();\n }\n }\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n if (attachment.description) {\n link.title = attachment.description;\n }\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(attachment.content, attachment.filename, dest);\n return false;\n };\n this.#setInternalLink();\n }\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name\n }\n });\n return false;\n };\n }\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n if (!this._fieldObjects) {\n warn(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n link.onclick = () => {\n otherClickAction?.();\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include\n } = resetForm;\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const {\n id\n } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const {\n id\n } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\":\n {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, {\n value\n });\n break;\n }\n case \"combobox\":\n case \"listbox\":\n {\n const value = field.defaultValue || \"\";\n storage.setValue(id, {\n value\n });\n break;\n }\n default:\n continue;\n }\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n if (this.enableScripting) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\"\n }\n });\n }\n return false;\n };\n }\n}\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n }\n render() {\n this.container.classList.add(\"textAnnotation\");\n const image = document.createElement(\"img\");\n image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\"data-l10n-args\", JSON.stringify({\n type: this.data.name\n }));\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(image);\n return this.container;\n }\n}\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n return this.container;\n }\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n _getKeyModifier(event) {\n return util_FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event)\n }\n });\n });\n } else {\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n if (!valueGetter) {\n return;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event)\n }\n });\n });\n }\n }\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= {\n focused: false\n };\n }\n this._setEventListener(element, elementData, baseName, eventName, getter);\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor = color === null ? \"transparent\" : Util.makeHexColor(color[0], color[1], color[2]);\n }\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const {\n fontColor\n } = this.data.defaultAppearanceData;\n const fontSize = this.data.defaultAppearanceData.fontSize || annotation_layer_DEFAULT_FONT_SIZE;\n const style = element.style;\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(fontSize, roundToOneDecimal(lineHeight / LINE_FACTOR));\n } else {\n const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n computedFontSize = Math.min(fontSize, roundToOneDecimal(height / LINE_FACTOR));\n }\n style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable = parameters.renderForms || parameters.data.hasOwnCanvas || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n super(parameters, {\n isRenderable\n });\n }\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(base.name, base.id)) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, {\n [keyInStorage]: value\n });\n }\n }\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n this.container.classList.add(\"textWidgetAnnotation\");\n let element = null;\n if (this.renderForms) {\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n let fieldFormattedValues = storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false\n };\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = this.data.password ? \"password\" : \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n this._setRequired(element, this.data.required);\n if (maxLen) {\n element.maxLength = maxLen;\n }\n element.addEventListener(\"input\", event => {\n storage.setValue(id, {\n value: event.target.value\n });\n this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n elementData.formattedValue = null;\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n let blurListener = event => {\n const {\n formattedValue\n } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n event.target.scrollLeft = 0;\n };\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const {\n target\n } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, {\n value: elementData.userValue.toString()\n });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const {\n formattedValue\n } = event.detail;\n elementData.formattedValue = formattedValue;\n if (formattedValue !== null && formattedValue !== undefined && event.target !== document.activeElement) {\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const {\n charLimit\n } = event.detail;\n const {\n target\n } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, {\n value\n });\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd\n }\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const {\n value\n } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const {\n value\n } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd\n }\n });\n }\n _blurListener(event);\n });\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const {\n data,\n target\n } = event;\n const {\n value,\n selectionStart,\n selectionEnd\n } = target;\n let selStart = selectionStart,\n selEnd = selectionEnd;\n switch (event.inputType) {\n case \"deleteWordBackward\":\n {\n const match = value.substring(0, selectionStart).match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\":\n {\n const match = value.substring(selectionStart).match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd\n }\n });\n });\n }\n this._setEventListeners(element, elementData, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n }\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--total-scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: !!parameters.data.hasOwnCanvas\n });\n }\n}\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== \"Off\";\n storage.setValue(id, {\n value\n });\n }\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const checkbox of this._getElementsByName(name, id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, {\n value: curChecked\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, {\n value: event.target.checked\n });\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue\n }).value;\n if (typeof value === \"string\") {\n value = value !== data.buttonValue;\n storage.setValue(id, {\n value\n });\n }\n if (value) {\n for (const radio of this._getElementsByName(data.fieldName, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n }\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n element.addEventListener(\"change\", event => {\n const {\n name,\n checked\n } = event.target;\n for (const radio of this._getElementsByName(name, id)) {\n storage.setValue(radio.id, {\n value: false\n });\n }\n storage.setValue(id, {\n value: checked\n });\n });\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n });\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, {\n value: curChecked\n });\n }\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n this._setEventListeners(element, null, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n }\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n this.container.append(element);\n return this.container;\n }\n}\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n ignoreBorder: parameters.data.hasAppearance\n });\n }\n render() {\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n return container;\n }\n}\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: parameters.renderForms\n });\n }\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue\n });\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n if (!this.data.combo) {\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const {\n options,\n multiple\n } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n }\n return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n };\n let selectedValues = getValue(false);\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => ({\n displayValue: option.textContent,\n exportValue: option.value\n }));\n };\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(options, option => option.selected);\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, {\n value: null,\n items: []\n });\n selectedValues = getValue(false);\n },\n insert(event) {\n const {\n index,\n displayValue,\n exportValue\n } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n items(event) {\n const {\n items\n } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const {\n displayValue,\n exportValue\n } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(true),\n items: getItems(event)\n });\n selectedValues = getValue(false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(true)\n });\n selectedValues = getValue(false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n }\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(true);\n const change = getValue(false);\n storage.setValue(id, {\n value: exportValue\n });\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n change,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false\n }\n });\n });\n this._setEventListeners(selectElement, null, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"], [\"input\", \"Validate\"]], event => event.target.value);\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, {\n value: getValue(true)\n });\n });\n }\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {}\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n this.container.append(selectElement);\n return this.container;\n }\n}\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const {\n data,\n elements\n } = parameters;\n super(parameters, {\n isRenderable: AnnotationElement._hasPopupData(data)\n });\n this.elements = elements;\n this.popup = null;\n }\n render() {\n this.container.classList.add(\"popupAnnotation\");\n const popup = this.popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open\n });\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n element.container.ariaHasPopup = \"dialog\";\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n this.container.setAttribute(\"aria-controls\", elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\"));\n return this.container;\n }\n}\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n #boundHide = this.#hide.bind(this);\n #boundShow = this.#show.bind(this);\n #boundToggle = this.#toggle.bind(this);\n #color = null;\n #container = null;\n #contentsObj = null;\n #dateObj = null;\n #elements = null;\n #parent = null;\n #parentRect = null;\n #pinned = false;\n #popup = null;\n #position = null;\n #rect = null;\n #richText = null;\n #titleObj = null;\n #updates = null;\n #wasVisible = false;\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n }\n render() {\n if (this.#popup) {\n return;\n }\n const popup = this.#popup = document.createElement(\"div\");\n popup.className = \"popup\";\n if (this.#color) {\n const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n }\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({\n dir: title.dir,\n str: title.textContent\n } = this.#titleObj);\n popup.append(header);\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n dateObj: this.#dateObj.valueOf()\n }));\n header.append(modificationDate);\n }\n const html = this.#html;\n if (html) {\n XfaLayer.render({\n xfaHtml: html,\n intent: \"richText\",\n div: popup\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(this.#contentsObj);\n popup.append(contents);\n }\n this.#container.append(popup);\n }\n get #html() {\n const richText = this.#richText;\n const contentsObj = this.#contentsObj;\n if (richText?.str && (!contentsObj?.str || contentsObj.str === richText.str)) {\n return this.#richText.html || null;\n }\n return null;\n }\n get #fontSize() {\n return this.#html?.attributes?.style?.fontSize || 0;\n }\n get #fontColor() {\n return this.#html?.attributes?.style?.color || null;\n }\n #makePopupContent(text) {\n const popupLines = [];\n const popupContent = {\n str: text,\n html: {\n name: \"div\",\n attributes: {\n dir: \"auto\"\n },\n children: [{\n name: \"p\",\n children: popupLines\n }]\n }\n };\n const lineAttributes = {\n style: {\n color: this.#fontColor,\n fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : \"\"\n }\n };\n for (const line of text.split(\"\\n\")) {\n popupLines.push({\n name: \"span\",\n value: line,\n attributes: lineAttributes\n });\n }\n return popupContent;\n }\n _formatContents({\n str,\n dir\n }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n if (event.key === \"Enter\" || event.key === \"Escape\" && this.#pinned) {\n this.#toggle();\n }\n }\n updateEdited({\n rect,\n popupContent\n }) {\n this.#updates ||= {\n contentsObj: this.#contentsObj,\n richText: this.#richText\n };\n if (rect) {\n this.#position = null;\n }\n if (popupContent) {\n this.#richText = this.#makePopupContent(popupContent);\n this.#contentsObj = null;\n }\n this.#popup?.remove();\n this.#popup = null;\n }\n resetEdited() {\n if (!this.#updates) {\n return;\n }\n ({\n contentsObj: this.#contentsObj,\n richText: this.#richText\n } = this.#updates);\n this.#updates = null;\n this.#popup?.remove();\n this.#popup = null;\n this.#position = null;\n }\n #setPosition() {\n if (this.#position !== null) {\n return;\n }\n const {\n page: {\n view\n },\n viewport: {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n }\n } = this.#parent;\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n const normalizedRect = Util.normalizeRect([rect[0], view[3] - rect[1] + view[1], rect[2], view[3] - rect[3] + view[1]]);\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n this.#position = [100 * (popupLeft - pageX) / pageWidth, 100 * (popupTop - pageY) / pageHeight];\n const {\n style\n } = this.#container;\n style.left = `${this.#position[0]}%`;\n style.top = `${this.#position[1]}%`;\n }\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#setPosition();\n this.#container.hidden = false;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex = parseInt(this.#container.style.zIndex) - 1000;\n }\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n if (!this.#popup) {\n this.#show();\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"lineAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n svg.append(line);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#line;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"squareAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n svg.append(square);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#square;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"circleAnnotation\");\n const {\n data,\n width,\n height\n } = this;\n const svg = this.svgFactory.create(width, height, true);\n const borderWidth = data.borderStyle.width;\n const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n svg.append(circle);\n this.container.append(svg);\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n vertices,\n borderStyle,\n popupRef\n },\n width,\n height\n } = this;\n if (!vertices) {\n return this.container;\n }\n const svg = this.svgFactory.create(width, height, true);\n let points = [];\n for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n const x = vertices[i] - rect[0];\n const y = rect[3] - vertices[i + 1];\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n svg.append(polyline);\n this.container.append(svg);\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n super(parameters);\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n }\n render() {\n this.container.classList.add(\"caretAnnotation\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\nclass InkAnnotationElement extends AnnotationElement {\n #polylinesGroupElement = null;\n #polylines = [];\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.containerClassName = \"inkAnnotation\";\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n }\n #getTransform(rotation, rect) {\n switch (rotation) {\n case 90:\n return {\n transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n case 180:\n return {\n transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n case 270:\n return {\n transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n width: rect[3] - rect[1],\n height: rect[2] - rect[0]\n };\n default:\n return {\n transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n width: rect[2] - rect[0],\n height: rect[3] - rect[1]\n };\n }\n }\n render() {\n this.container.classList.add(this.containerClassName);\n const {\n data: {\n rect,\n rotation,\n inkLists,\n borderStyle,\n popupRef\n }\n } = this;\n const {\n transform,\n width,\n height\n } = this.#getTransform(rotation, rect);\n const svg = this.svgFactory.create(width, height, true);\n const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n svg.append(g);\n g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n g.setAttribute(\"stroke-linecap\", \"round\");\n g.setAttribute(\"stroke-linejoin\", \"round\");\n g.setAttribute(\"stroke-miterlimit\", 10);\n g.setAttribute(\"stroke\", \"transparent\");\n g.setAttribute(\"fill\", \"transparent\");\n g.setAttribute(\"transform\", transform);\n for (let i = 0, ii = inkLists.length; i < ii; i++) {\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n g.append(polyline);\n }\n if (!popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.append(svg);\n this._editOnDoubleClick();\n return this.container;\n }\n updateEdited(params) {\n super.updateEdited(params);\n const {\n thickness,\n points,\n rect\n } = params;\n const g = this.#polylinesGroupElement;\n if (thickness >= 0) {\n g.setAttribute(\"stroke-width\", thickness || 1);\n }\n if (points) {\n for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n }\n }\n if (rect) {\n const {\n transform,\n width,\n height\n } = this.#getTransform(this.data.rotation, rect);\n const root = g.parentElement;\n root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n g.setAttribute(\"transform\", transform);\n }\n }\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"highlightAnnotation\");\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true\n });\n }\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true\n });\n this.annotationEditorType = AnnotationEditorType.STAMP;\n }\n render() {\n this.container.classList.add(\"stampAnnotation\");\n this.container.setAttribute(\"role\", \"img\");\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n this._editOnDoubleClick();\n return this.container;\n }\n}\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n constructor(parameters) {\n super(parameters, {\n isRenderable: true\n });\n const {\n file\n } = this.data;\n this.filename = file.filename;\n this.content = file.content;\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n ...file\n });\n }\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n const {\n container,\n data\n } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${/paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"}.svg`;\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(data.fillAlpha * 100)}%);`;\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n const {\n isMac\n } = util_FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n container.append(trigger);\n return container;\n }\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\nclass AnnotationLayer {\n #accessibilityManager = null;\n #annotationCanvasMap = null;\n #editableAnnotations = new Map();\n #structTreeLayer = null;\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n annotationEditorUIManager,\n page,\n viewport,\n structTreeLayer\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.#structTreeLayer = structTreeLayer || null;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n this._annotationEditorUIManager = annotationEditorUIManager;\n }\n hasEditableAnnotations() {\n return this.#editableAnnotations.size > 0;\n }\n async #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n if (ariaAttributes) {\n for (const [key, value] of ariaAttributes) {\n contentElement.setAttribute(key, value);\n }\n }\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n }\n async render(params) {\n const {\n annotations\n } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null\n };\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n continue;\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n await this.#appendElement(rendered, data.id);\n if (element._isEditable) {\n this.#editableAnnotations.set(element.data.id, element);\n this._annotationEditorUIManager?.renderAnnotationElement(element);\n }\n }\n this.#setAnnotationCanvasMap();\n }\n async addLinkAnnotations(annotations, linkService) {\n const elementParams = {\n data: null,\n layer: this.div,\n linkService,\n svgFactory: new DOMSVGFactory(),\n parent: this\n };\n for (const data of annotations) {\n data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n if (!element.isRenderable) {\n continue;\n }\n const rendered = element.render();\n await this.#appendElement(rendered, data.id);\n }\n }\n update({\n viewport\n }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, {\n rotation: viewport.rotation\n });\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n canvas.className = \"annotationContent\";\n const {\n firstChild\n } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else if (!firstChild.classList.contains(\"annotationContent\")) {\n firstChild.before(canvas);\n } else {\n firstChild.after(canvas);\n }\n const editableAnnotation = this.#editableAnnotations.get(id);\n if (!editableAnnotation) {\n continue;\n }\n if (editableAnnotation._hasNoCanvas) {\n this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n editableAnnotation._hasNoCanvas = false;\n } else {\n editableAnnotation.canvas = canvas;\n }\n }\n this.#annotationCanvasMap.clear();\n }\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n static get _defaultBorderStyle() {\n return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n width: 1,\n rawWidth: 1,\n style: AnnotationBorderStyleType.SOLID,\n dashArray: [3],\n horizontalCornerRadius: 0,\n verticalCornerRadius: 0\n }));\n }\n}\n\n;// ./src/display/editor/freetext.js\n\n\n\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\nclass FreeTextEditor extends AnnotationEditor {\n #color;\n #content = \"\";\n #editorDivId = `${this.id}-editor`;\n #editModeAC = null;\n #fontSize;\n static _freeTextDefaultContent = \"\";\n static _internalPadding = 0;\n static _defaultColor = null;\n static _defaultFontSize = 10;\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n const arrowChecker = self => self.isEmpty();\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"], proto.commitOrRemove, {\n bubbles: true\n }], [[\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"], proto.commitOrRemove], [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._translateEmpty, {\n args: [-small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"], proto._translateEmpty, {\n args: [-big, 0],\n checker: arrowChecker\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._translateEmpty, {\n args: [small, 0],\n checker: arrowChecker\n }], [[\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"], proto._translateEmpty, {\n args: [big, 0],\n checker: arrowChecker\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._translateEmpty, {\n args: [0, -small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], proto._translateEmpty, {\n args: [0, -big],\n checker: arrowChecker\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._translateEmpty, {\n args: [0, small],\n checker: arrowChecker\n }], [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], proto._translateEmpty, {\n args: [0, big],\n checker: arrowChecker\n }]]));\n }\n static _type = \"freetext\";\n static _editorType = AnnotationEditorType.FREETEXT;\n constructor(params) {\n super({\n ...params,\n name: \"freeTextEditor\"\n });\n this.#color = params.color || FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n const style = getComputedStyle(document.documentElement);\n this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, FreeTextEditor._defaultFontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize], [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color]];\n }\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: setFontsize.bind(this, fontSize),\n undo: setFontsize.bind(this, savedFontsize),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n #updateColor(color) {\n const setColor = col => {\n this.#color = this.editorDiv.style.color = col;\n };\n const savedColor = this.#color;\n this.addCommands({\n cmd: setColor.bind(this, color),\n undo: setColor.bind(this, savedColor),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, true);\n }\n getInitialTranslation() {\n const scale = this.parentScale;\n return [-FreeTextEditor._internalPadding * scale, -(FreeTextEditor._internalPadding + this.#fontSize) * scale];\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(false);\n this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.#editModeAC = new AbortController();\n const signal = this._uiManager.combinedSignal(this.#editModeAC);\n this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n signal\n });\n this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n signal\n });\n }\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.#editModeAC?.abort();\n this.#editModeAC = null;\n this.div.focus({\n preventScroll: true\n });\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n }\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n onceAdded(focus) {\n if (this.width) {\n return;\n }\n this.enableEditMode();\n if (focus) {\n this.editorDiv.focus();\n }\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n #extractText() {\n const buffer = [];\n this.editorDiv.normalize();\n let prevChild = null;\n for (const child of this.editorDiv.childNodes) {\n if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n prevChild = child;\n }\n return buffer.join(\"\\n\");\n }\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n const {\n currentLayer,\n div\n } = this;\n const savedDisplay = div.style.display;\n const savedVisibility = div.classList.contains(\"hidden\");\n div.classList.remove(\"hidden\");\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n div.classList.toggle(\"hidden\", savedVisibility);\n }\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = this.#content = this.#extractText().trimEnd();\n if (savedText === newText) {\n return;\n }\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false\n });\n this.#setEditorDimensions();\n }\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n dblclick(event) {\n this.enterInEditMode();\n }\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n event.preventDefault();\n }\n }\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n editorDivFocus(event) {\n this.isEditing = true;\n }\n editorDivBlur(event) {\n this.isEditing = false;\n }\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy || this.annotationElementId) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n this.enableEditing();\n this.editorDiv.contentEditable = true;\n const {\n style\n } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.#color;\n this.div.append(this.editorDiv);\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n if (this._isCopy || this.annotationElementId) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n const {\n position\n } = this._initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX = baseX + (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY = baseY + (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this._moveAfterPaste(baseX, baseY);\n }\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n return this.div;\n }\n static #getNodeContent(node) {\n return (node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText).replaceAll(EOL_PATTERN, \"\");\n }\n editorDivPaste(event) {\n const clipboardData = event.clipboardData || window.clipboardData;\n const {\n types\n } = clipboardData;\n if (types.length === 1 && types[0] === \"text/plain\") {\n return;\n }\n event.preventDefault();\n const paste = FreeTextEditor.#deserializeContent(clipboardData.getData(\"text\") || \"\").replaceAll(EOL_PATTERN, \"\\n\");\n if (!paste) {\n return;\n }\n const selection = window.getSelection();\n if (!selection.rangeCount) {\n return;\n }\n this.editorDiv.normalize();\n selection.deleteFromDocument();\n const range = selection.getRangeAt(0);\n if (!paste.includes(\"\\n\")) {\n range.insertNode(document.createTextNode(paste));\n this.editorDiv.normalize();\n selection.collapseToStart();\n return;\n }\n const {\n startContainer,\n startOffset\n } = range;\n const bufferBefore = [];\n const bufferAfter = [];\n if (startContainer.nodeType === Node.TEXT_NODE) {\n const parent = startContainer.parentElement;\n bufferAfter.push(startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\"));\n if (parent !== this.editorDiv) {\n let buffer = bufferBefore;\n for (const child of this.editorDiv.childNodes) {\n if (child === parent) {\n buffer = bufferAfter;\n continue;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n bufferBefore.push(startContainer.nodeValue.slice(0, startOffset).replaceAll(EOL_PATTERN, \"\"));\n } else if (startContainer === this.editorDiv) {\n let buffer = bufferBefore;\n let i = 0;\n for (const child of this.editorDiv.childNodes) {\n if (i++ === startOffset) {\n buffer = bufferAfter;\n }\n buffer.push(FreeTextEditor.#getNodeContent(child));\n }\n }\n this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n this.#setContent();\n const newRange = new Range();\n let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n for (const {\n firstChild\n } of this.editorDiv.childNodes) {\n if (firstChild.nodeType === Node.TEXT_NODE) {\n const length = firstChild.nodeValue.length;\n if (beforeLength <= length) {\n newRange.setStart(firstChild, beforeLength);\n newRange.setEnd(firstChild, beforeLength);\n break;\n }\n beforeLength -= length;\n }\n }\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n this.editorDiv.append(div);\n }\n }\n #serializeContent() {\n return this.#content.replaceAll(\"\\xa0\", \" \");\n }\n static #deserializeContent(content) {\n return content.replaceAll(\" \", \"\\xa0\");\n }\n get contentDiv() {\n return this.editorDiv;\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: {\n fontSize,\n fontColor\n },\n rect,\n rotation,\n id,\n popupRef\n },\n textContent,\n textPosition,\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n if (!textContent || textContent.length === 0) {\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#fontSize = data.fontSize;\n editor.#color = Util.makeHexColor(...data.color);\n editor.#content = FreeTextEditor.#deserializeContent(data.value);\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.#color);\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#serializeContent(),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n value,\n fontSize,\n color,\n pageIndex\n } = this._initialData;\n return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const content = super.renderAnnotationElement(annotation);\n if (this.deleted) {\n return content;\n }\n const {\n style\n } = content;\n style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n style.color = this.#color;\n content.replaceChildren();\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(line ? document.createTextNode(line) : document.createElement(\"br\"));\n content.append(div);\n }\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n annotation.updateEdited({\n rect: this.getRect(padding, padding),\n popupContent: this.#content\n });\n return content;\n }\n resetAnnotationElement(annotation) {\n super.resetAnnotationElement(annotation);\n annotation.resetEdited();\n }\n}\n\n;// ./src/display/editor/drawers/outline.js\n\nclass Outline {\n static PRECISION = 1e-4;\n toSVGPath() {\n unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n }\n get box() {\n unreachable(\"Abstract getter `box` must be implemented.\");\n }\n serialize(_bbox, _rotation) {\n unreachable(\"Abstract method `serialize` must be implemented.\");\n }\n static _rescale(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i] * sx;\n dest[i + 1] = ty + src[i + 1] * sy;\n }\n return dest;\n }\n static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i + 1] * sx;\n dest[i + 1] = ty + src[i] * sy;\n }\n return dest;\n }\n static _translate(src, tx, ty, dest) {\n dest ||= new Float32Array(src.length);\n for (let i = 0, ii = src.length; i < ii; i += 2) {\n dest[i] = tx + src[i];\n dest[i + 1] = ty + src[i + 1];\n }\n return dest;\n }\n static svgRound(x) {\n return Math.round(x * 10000);\n }\n static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y / parentWidth, x / parentHeight];\n case 180:\n return [1 - x / parentWidth, 1 - y / parentHeight];\n case 270:\n return [y / parentWidth, 1 - x / parentHeight];\n default:\n return [x / parentWidth, y / parentHeight];\n }\n }\n static _normalizePagePoint(x, y, rotation) {\n switch (rotation) {\n case 90:\n return [1 - y, x];\n case 180:\n return [1 - x, 1 - y];\n case 270:\n return [y, 1 - x];\n default:\n return [x, y];\n }\n }\n static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n return [(x1 + 5 * x2) / 6, (y1 + 5 * y2) / 6, (5 * x2 + x3) / 6, (5 * y2 + y3) / 6, (x2 + x3) / 2, (y2 + y3) / 2];\n }\n}\n\n;// ./src/display/editor/drawers/freedraw.js\n\n\nclass FreeDrawOutliner {\n #box;\n #bottom = [];\n #innerMargin;\n #isLTR;\n #top = [];\n #last = new Float32Array(18);\n #lastX;\n #lastY;\n #min;\n #min_dist;\n #scaleFactor;\n #thickness;\n #points = [];\n static #MIN_DIST = 8;\n static #MIN_DIFF = 2;\n static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n constructor({\n x,\n y\n }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n this.#box = box;\n this.#thickness = thickness * scaleFactor;\n this.#isLTR = isLTR;\n this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n this.#innerMargin = innerMargin;\n this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n this.#scaleFactor = scaleFactor;\n this.#points.push(x, y);\n }\n isEmpty() {\n return isNaN(this.#last[8]);\n }\n #getLastCoords() {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [x, y, width, height] = this.#box;\n return [(this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width, (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height, (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width, (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height];\n }\n add({\n x,\n y\n }) {\n this.#lastX = x;\n this.#lastY = y;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(diffX, diffY);\n if (d < this.#min) {\n return false;\n }\n const diffD = d - this.#min_dist;\n const K = diffD / d;\n const shiftX = K * diffX;\n const shiftY = K * diffY;\n let x0 = x1;\n let y0 = y1;\n x1 = x2;\n y1 = y2;\n x2 += shiftX;\n y2 += shiftY;\n this.#points?.push(x, y);\n const nX = -shiftY / diffD;\n const nY = shiftX / diffD;\n const thX = nX * this.#thickness;\n const thY = nY * this.#thickness;\n this.#last.set(this.#last.subarray(2, 8), 0);\n this.#last.set([x2 + thX, y2 + thY], 4);\n this.#last.set(this.#last.subarray(14, 18), 12);\n this.#last.set([x2 - thX, y2 - thY], 16);\n if (isNaN(this.#last[6])) {\n if (this.#top.length === 0) {\n this.#last.set([x1 + thX, y1 + thY], 2);\n this.#top.push(NaN, NaN, NaN, NaN, (x1 + thX - layerX) / layerWidth, (y1 + thY - layerY) / layerHeight);\n this.#last.set([x1 - thX, y1 - thY], 14);\n this.#bottom.push(NaN, NaN, NaN, NaN, (x1 - thX - layerX) / layerWidth, (y1 - thY - layerY) / layerHeight);\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n return !this.isEmpty();\n }\n this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n const angle = Math.abs(Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX));\n if (angle < Math.PI / 2) {\n [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n this.#top.push(NaN, NaN, NaN, NaN, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n this.#bottom.push(NaN, NaN, NaN, NaN, ((x0 + x1) / 2 - layerX) / layerWidth, ((y0 + y1) / 2 - layerY) / layerHeight);\n return true;\n }\n [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n this.#top.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n this.#bottom.push(((x0 + 5 * x1) / 6 - layerX) / layerWidth, ((y0 + 5 * y1) / 6 - layerY) / layerHeight, ((5 * x1 + x2) / 6 - layerX) / layerWidth, ((5 * y1 + y2) / 6 - layerY) / layerHeight, ((x1 + x2) / 2 - layerX) / layerWidth, ((y1 + y2) / 2 - layerY) / layerHeight);\n return true;\n }\n toSVGPath() {\n if (this.isEmpty()) {\n return \"\";\n }\n const top = this.#top;\n const bottom = this.#bottom;\n if (isNaN(this.#last[6]) && !this.isEmpty()) {\n return this.#toSVGPathTwoPoints();\n }\n const buffer = [];\n buffer.push(`M${top[4]} ${top[5]}`);\n for (let i = 6; i < top.length; i += 6) {\n if (isNaN(top[i])) {\n buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n } else {\n buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n }\n }\n this.#toSVGPathEnd(buffer);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n if (isNaN(bottom[i])) {\n buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n } else {\n buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n }\n }\n this.#toSVGPathStart(buffer);\n return buffer.join(\" \");\n }\n #toSVGPathTwoPoints() {\n const [x, y, width, height] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n return `M${(this.#last[2] - x) / width} ${(this.#last[3] - y) / height} L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) / width} ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${(this.#last[15] - y) / height} Z`;\n }\n #toSVGPathStart(buffer) {\n const bottom = this.#bottom;\n buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n }\n #toSVGPathEnd(buffer) {\n const [x, y, width, height] = this.#box;\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n buffer.push(`L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) / width} ${(lastBottom[1] - y) / height}`);\n }\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n getOutlines() {\n const top = this.#top;\n const bottom = this.#bottom;\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const points = new Float32Array((this.#points?.length ?? 0) + 2);\n for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n points[i] = (this.#points[i] - layerX) / layerWidth;\n points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n }\n points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n if (isNaN(last[6]) && !this.isEmpty()) {\n return this.#getOutlineTwoPoints(points);\n }\n const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n let N = top.length;\n for (let i = 0; i < N; i += 2) {\n if (isNaN(top[i])) {\n outline[i] = outline[i + 1] = NaN;\n continue;\n }\n outline[i] = top[i];\n outline[i + 1] = top[i + 1];\n }\n N = this.#getOutlineEnd(outline, N);\n for (let i = bottom.length - 6; i >= 6; i -= 6) {\n for (let j = 0; j < 6; j += 2) {\n if (isNaN(bottom[i + j])) {\n outline[N] = outline[N + 1] = NaN;\n N += 2;\n continue;\n }\n outline[N] = bottom[i + j];\n outline[N + 1] = bottom[i + j + 1];\n N += 2;\n }\n }\n this.#getOutlineStart(outline, N);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineTwoPoints(points) {\n const last = this.#last;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n const outline = new Float32Array(36);\n outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) / layerWidth, (last[3] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) / layerWidth, (last[5] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) / layerWidth, (last[17] - layerY) / layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) / layerWidth, (last[15] - layerY) / layerHeight], 0);\n return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n }\n #getOutlineStart(outline, pos) {\n const bottom = this.#bottom;\n outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n return pos += 6;\n }\n #getOutlineEnd(outline, pos) {\n const lastTop = this.#last.subarray(4, 6);\n const lastBottom = this.#last.subarray(16, 18);\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) / layerWidth, (lastTop[1] - layerY) / layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) / layerWidth, (lastBottom[1] - layerY) / layerHeight], pos);\n return pos += 24;\n }\n}\nclass FreeDrawOutline extends Outline {\n #box;\n #bbox = new Float32Array(4);\n #innerMargin;\n #isLTR;\n #points;\n #scaleFactor;\n #outline;\n constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n super();\n this.#outline = outline;\n this.#points = points;\n this.#box = box;\n this.#scaleFactor = scaleFactor;\n this.#innerMargin = innerMargin;\n this.#isLTR = isLTR;\n this.lastPoint = [NaN, NaN];\n this.#computeMinMax(isLTR);\n const [x, y, width, height] = this.#bbox;\n for (let i = 0, ii = outline.length; i < ii; i += 2) {\n outline[i] = (outline[i] - x) / width;\n outline[i + 1] = (outline[i + 1] - y) / height;\n }\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = (points[i] - x) / width;\n points[i + 1] = (points[i + 1] - y) / height;\n }\n }\n toSVGPath() {\n const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n if (isNaN(this.#outline[i])) {\n buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n continue;\n }\n buffer.push(`C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${this.#outline[i + 3]} ${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n }\n buffer.push(\"Z\");\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], rotation) {\n const width = trX - blX;\n const height = trY - blY;\n let outline;\n let points;\n switch (rotation) {\n case 0:\n outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n points = Outline._rescale(this.#points, blX, trY, width, -height);\n break;\n case 90:\n outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n break;\n case 180:\n outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n points = Outline._rescale(this.#points, trX, blY, -width, height);\n break;\n case 270:\n outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n break;\n }\n return {\n outline: Array.from(outline),\n points: [Array.from(points)]\n };\n }\n #computeMinMax(isLTR) {\n const outline = this.#outline;\n let lastX = outline[4];\n let lastY = outline[5];\n let minX = lastX;\n let minY = lastY;\n let maxX = lastX;\n let maxY = lastY;\n let lastPointX = lastX;\n let lastPointY = lastY;\n const ltrCallback = isLTR ? Math.max : Math.min;\n for (let i = 6, ii = outline.length; i < ii; i += 6) {\n if (isNaN(outline[i])) {\n minX = Math.min(minX, outline[i + 4]);\n minY = Math.min(minY, outline[i + 5]);\n maxX = Math.max(maxX, outline[i + 4]);\n maxY = Math.max(maxY, outline[i + 5]);\n if (lastPointY < outline[i + 5]) {\n lastPointX = outline[i + 4];\n lastPointY = outline[i + 5];\n } else if (lastPointY === outline[i + 5]) {\n lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n }\n } else {\n const bbox = Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n minX = Math.min(minX, bbox[0]);\n minY = Math.min(minY, bbox[1]);\n maxX = Math.max(maxX, bbox[2]);\n maxY = Math.max(maxY, bbox[3]);\n if (lastPointY < bbox[3]) {\n lastPointX = bbox[2];\n lastPointY = bbox[3];\n } else if (lastPointY === bbox[3]) {\n lastPointX = ltrCallback(lastPointX, bbox[2]);\n }\n }\n lastX = outline[i + 4];\n lastY = outline[i + 5];\n }\n const bbox = this.#bbox;\n bbox[0] = minX - this.#innerMargin;\n bbox[1] = minY - this.#innerMargin;\n bbox[2] = maxX - minX + 2 * this.#innerMargin;\n bbox[3] = maxY - minY + 2 * this.#innerMargin;\n this.lastPoint = [lastPointX, lastPointY];\n }\n get box() {\n return this.#bbox;\n }\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n getNewOutline(thickness, innerMargin) {\n const [x, y, width, height] = this.#bbox;\n const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n const sx = width * layerWidth;\n const sy = height * layerHeight;\n const tx = x * layerWidth + layerX;\n const ty = y * layerHeight + layerY;\n const outliner = this.newOutliner({\n x: this.#points[0] * sx + tx,\n y: this.#points[1] * sy + ty\n }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n for (let i = 2; i < this.#points.length; i += 2) {\n outliner.add({\n x: this.#points[i] * sx + tx,\n y: this.#points[i + 1] * sy + ty\n });\n }\n return outliner.getOutlines();\n }\n}\n\n;// ./src/display/editor/drawers/highlight.js\n\n\nclass HighlightOutliner {\n #box;\n #lastPoint;\n #verticalEdges = [];\n #intervals = [];\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n minX = Math.min(minX, x1);\n maxX = Math.max(maxX, x2);\n minY = Math.min(minY, y1);\n maxY = Math.max(maxY, y2);\n }\n const bboxWidth = maxX - minX + 2 * innerMargin;\n const bboxHeight = maxY - minY + 2 * innerMargin;\n const shiftedMinX = minX - innerMargin;\n const shiftedMinY = minY - innerMargin;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2] = edge;\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n this.#lastPoint = lastPoint;\n }\n getOutlines() {\n this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n outline = [x, y2];\n outlines.push(outline);\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return new HighlightOutline(outlines, this.#box, this.#lastPoint);\n }\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n while (start <= end) {\n const middle = start + end >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\nclass HighlightOutline extends Outline {\n #box;\n #outlines;\n constructor(outlines, box, lastPoint) {\n super();\n this.#outlines = outlines;\n this.#box = box;\n this.lastPoint = lastPoint;\n }\n toSVGPath() {\n const buffer = [];\n for (const polygon of this.#outlines) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n serialize([blX, blY, trX, trY], _rotation) {\n const outlines = [];\n const width = trX - blX;\n const height = trY - blY;\n for (const outline of this.#outlines) {\n const points = new Array(outline.length);\n for (let i = 0; i < outline.length; i += 2) {\n points[i] = blX + outline[i] * width;\n points[i + 1] = trY - outline[i + 1] * height;\n }\n outlines.push(points);\n }\n return outlines;\n }\n get box() {\n return this.#box;\n }\n get classNamesForOutlining() {\n return [\"highlightOutline\"];\n }\n}\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n }\n}\nclass FreeHighlightOutline extends FreeDrawOutline {\n newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n }\n}\n\n;// ./src/display/editor/color_picker.js\n\n\n\nclass ColorPicker {\n #button = null;\n #buttonSwatch = null;\n #defaultColor;\n #dropdown = null;\n #dropdownWasFromKeyboard = false;\n #isMainColorPicker = false;\n #editor = null;\n #eventBus;\n #openDropdownAC = null;\n #uiManager = null;\n #type;\n static #l10nColor = null;\n static get _keyboardManager() {\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n }\n constructor({\n editor = null,\n uiManager = null\n }) {\n if (editor) {\n this.#isMainColorPicker = false;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\n this.#editor = editor;\n } else {\n this.#isMainColorPicker = true;\n this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\n }\n this.#uiManager = editor?._uiManager || uiManager;\n this.#eventBus = this.#uiManager._eventBus;\n this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n ColorPicker.#l10nColor ||= Object.freeze({\n blue: \"pdfjs-editor-colorpicker-blue\",\n green: \"pdfjs-editor-colorpicker-green\",\n pink: \"pdfjs-editor-colorpicker-pink\",\n red: \"pdfjs-editor-colorpicker-red\",\n yellow: \"pdfjs-editor-colorpicker-yellow\"\n });\n }\n renderButton() {\n const button = this.#button = document.createElement(\"button\");\n button.className = \"colorPicker\";\n button.tabIndex = \"0\";\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n button.setAttribute(\"aria-haspopup\", true);\n const signal = this.#uiManager._signal;\n button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n signal\n });\n button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n const swatch = this.#buttonSwatch = document.createElement(\"span\");\n swatch.className = \"swatch\";\n swatch.setAttribute(\"aria-hidden\", true);\n swatch.style.backgroundColor = this.#defaultColor;\n button.append(swatch);\n return button;\n }\n renderMainDropdown() {\n const dropdown = this.#dropdown = this.#getDropdownRoot();\n dropdown.setAttribute(\"aria-orientation\", \"horizontal\");\n dropdown.setAttribute(\"aria-labelledby\", \"highlightColorPickerLabel\");\n return dropdown;\n }\n #getDropdownRoot() {\n const div = document.createElement(\"div\");\n const signal = this.#uiManager._signal;\n div.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n div.className = \"dropdown\";\n div.role = \"listbox\";\n div.setAttribute(\"aria-multiselectable\", false);\n div.setAttribute(\"aria-orientation\", \"vertical\");\n div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n for (const [name, color] of this.#uiManager.highlightColors) {\n const button = document.createElement(\"button\");\n button.tabIndex = \"0\";\n button.role = \"option\";\n button.setAttribute(\"data-color\", color);\n button.title = name;\n button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n const swatch = document.createElement(\"span\");\n button.append(swatch);\n swatch.className = \"swatch\";\n swatch.style.backgroundColor = color;\n button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n signal\n });\n div.append(button);\n }\n div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n signal\n });\n return div;\n }\n #colorSelect(color, event) {\n event.stopPropagation();\n this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n source: this,\n type: this.#type,\n value: color\n });\n }\n _colorSelectFromKeyboard(event) {\n if (event.target === this.#button) {\n this.#openDropdown(event);\n return;\n }\n const color = event.target.getAttribute(\"data-color\");\n if (!color) {\n return;\n }\n this.#colorSelect(color, event);\n }\n _moveToNext(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n if (event.target === this.#button) {\n this.#dropdown.firstChild?.focus();\n return;\n }\n event.target.nextSibling?.focus();\n }\n _moveToPrevious(event) {\n if (event.target === this.#dropdown?.firstChild || event.target === this.#button) {\n if (this.#isDropdownVisible) {\n this._hideDropdownFromKeyboard();\n }\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n }\n event.target.previousSibling?.focus();\n }\n _moveToBeginning(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.firstChild?.focus();\n }\n _moveToEnd(event) {\n if (!this.#isDropdownVisible) {\n this.#openDropdown(event);\n return;\n }\n this.#dropdown.lastChild?.focus();\n }\n #keyDown(event) {\n ColorPicker._keyboardManager.exec(this, event);\n }\n #openDropdown(event) {\n if (this.#isDropdownVisible) {\n this.hideDropdown();\n return;\n }\n this.#dropdownWasFromKeyboard = event.detail === 0;\n if (!this.#openDropdownAC) {\n this.#openDropdownAC = new AbortController();\n window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n });\n }\n if (this.#dropdown) {\n this.#dropdown.classList.remove(\"hidden\");\n return;\n }\n const root = this.#dropdown = this.#getDropdownRoot();\n this.#button.append(root);\n }\n #pointerDown(event) {\n if (this.#dropdown?.contains(event.target)) {\n return;\n }\n this.hideDropdown();\n }\n hideDropdown() {\n this.#dropdown?.classList.add(\"hidden\");\n this.#openDropdownAC?.abort();\n this.#openDropdownAC = null;\n }\n get #isDropdownVisible() {\n return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n }\n _hideDropdownFromKeyboard() {\n if (this.#isMainColorPicker) {\n return;\n }\n if (!this.#isDropdownVisible) {\n this.#editor?.unselect();\n return;\n }\n this.hideDropdown();\n this.#button.focus({\n preventScroll: true,\n focusVisible: this.#dropdownWasFromKeyboard\n });\n }\n updateColor(color) {\n if (this.#buttonSwatch) {\n this.#buttonSwatch.style.backgroundColor = color;\n }\n if (!this.#dropdown) {\n return;\n }\n const i = this.#uiManager.highlightColors.values();\n for (const child of this.#dropdown.children) {\n child.setAttribute(\"aria-selected\", i.next().value === color);\n }\n }\n destroy() {\n this.#button?.remove();\n this.#button = null;\n this.#buttonSwatch = null;\n this.#dropdown?.remove();\n this.#dropdown = null;\n }\n}\n\n;// ./src/display/editor/highlight.js\n\n\n\n\n\n\n\nclass HighlightEditor extends AnnotationEditor {\n #anchorNode = null;\n #anchorOffset = 0;\n #boxes;\n #clipPathId = null;\n #colorPicker = null;\n #focusOutlines = null;\n #focusNode = null;\n #focusOffset = 0;\n #highlightDiv = null;\n #highlightOutlines = null;\n #id = null;\n #isFreeHighlight = false;\n #lastPoint = null;\n #opacity;\n #outlineId = null;\n #text = \"\";\n #thickness;\n #methodOfCreation = \"\";\n static _defaultColor = null;\n static _defaultOpacity = 1;\n static _defaultThickness = 12;\n static _type = \"highlight\";\n static _editorType = AnnotationEditorType.HIGHLIGHT;\n static _freeHighlightId = -1;\n static _freeHighlight = null;\n static _freeHighlightClipId = \"\";\n static get _keyboardManager() {\n const proto = HighlightEditor.prototype;\n return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, {\n args: [0]\n }], [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, {\n args: [1]\n }], [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, {\n args: [2]\n }], [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, {\n args: [3]\n }]]));\n }\n constructor(params) {\n super({\n ...params,\n name: \"highlightEditor\"\n });\n this.color = params.color || HighlightEditor._defaultColor;\n this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\n this.#boxes = params.boxes || null;\n this.#methodOfCreation = params.methodOfCreation || \"\";\n this.#text = params.text || \"\";\n this._isDraggable = false;\n this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n if (params.highlightId > -1) {\n this.#isFreeHighlight = true;\n this.#createFreeOutlines(params);\n this.#addToDrawLayer();\n } else if (this.#boxes) {\n this.#anchorNode = params.anchorNode;\n this.#anchorOffset = params.anchorOffset;\n this.#focusNode = params.focusNode;\n this.#focusOffset = params.focusOffset;\n this.#createOutlines();\n this.#addToDrawLayer();\n this.rotate(this.rotation);\n }\n }\n get telemetryInitialData() {\n return {\n action: \"added\",\n type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color),\n thickness: this.#thickness,\n methodOfCreation: this.#methodOfCreation\n };\n }\n get telemetryFinalData() {\n return {\n type: \"highlight\",\n color: this._uiManager.highlightColorNames.get(this.color)\n };\n }\n static computeTelemetryFinalData(data) {\n return {\n numberOfColors: data.get(\"color\").size\n };\n }\n #createOutlines() {\n const outliner = new HighlightOutliner(this.#boxes, 0.001);\n this.#highlightOutlines = outliner.getOutlines();\n [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n this.#focusOutlines = outlinerForOutline.getOutlines();\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - this.x) / this.width, (lastPoint[1] - this.y) / this.height];\n }\n #createFreeOutlines({\n highlightOutlines,\n highlightId,\n clipPathId\n }) {\n this.#highlightOutlines = highlightOutlines;\n const extraThickness = 1.5;\n this.#focusOutlines = highlightOutlines.getNewOutline(this.#thickness / 2 + extraThickness, 0.0025);\n if (highlightId >= 0) {\n this.#id = highlightId;\n this.#clipPathId = clipPathId;\n this.parent.drawLayer.finalizeDraw(highlightId, {\n bbox: highlightOutlines.box,\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.#outlineId = this.parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: true\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, true);\n } else if (this.parent) {\n const angle = this.parent.viewport.rotation;\n this.parent.drawLayer.updateProperties(this.#id, {\n bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n path: {\n d: highlightOutlines.toSVGPath()\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n });\n }\n const [x, y, width, height] = highlightOutlines.box;\n switch (this.rotation) {\n case 0:\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n break;\n case 90:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = y;\n this.y = 1 - x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n case 180:\n this.x = 1 - x;\n this.y = 1 - y;\n this.width = width;\n this.height = height;\n break;\n case 270:\n {\n const [pageWidth, pageHeight] = this.parentDimensions;\n this.x = 1 - y;\n this.y = x;\n this.width = width * pageHeight / pageWidth;\n this.height = height * pageWidth / pageHeight;\n break;\n }\n }\n const {\n lastPoint\n } = this.#focusOutlines;\n this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n HighlightEditor._defaultColor ||= uiManager.highlightColors?.values().next().value || \"#fff066\";\n }\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n HighlightEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n HighlightEditor._defaultThickness = value;\n break;\n }\n }\n translateInPage(x, y) {}\n get toolbarPosition() {\n return this.#lastPoint;\n }\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n this.#updateThickness(value);\n break;\n }\n }\n static get defaultPropertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR, HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, HighlightEditor._defaultThickness]];\n }\n get propertiesToUpdate() {\n return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n }\n #updateColor(color) {\n const setColorAndOpacity = (col, opa) => {\n this.color = col;\n this.#opacity = opa;\n this.parent?.drawLayer.updateProperties(this.#id, {\n root: {\n fill: col,\n \"fill-opacity\": opa\n }\n });\n this.#colorPicker?.updateColor(col);\n };\n const savedColor = this.color;\n const savedOpacity = this.#opacity;\n this.addCommands({\n cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"color_changed\",\n color: this._uiManager.highlightColorNames.get(color)\n }, true);\n }\n #updateThickness(thickness) {\n const savedThickness = this.#thickness;\n const setThickness = th => {\n this.#thickness = th;\n this.#changeThickness(th);\n };\n this.addCommands({\n cmd: setThickness.bind(this, thickness),\n undo: setThickness.bind(this, savedThickness),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true\n });\n this._reportTelemetry({\n action: \"thickness_changed\",\n thickness\n }, true);\n }\n async addEditToolbar() {\n const toolbar = await super.addEditToolbar();\n if (!toolbar) {\n return null;\n }\n if (this._uiManager.highlightColors) {\n this.#colorPicker = new ColorPicker({\n editor: this\n });\n toolbar.addColorPicker(this.#colorPicker);\n }\n return toolbar;\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n fixAndSetPosition() {\n return super.fixAndSetPosition(this.#getRotation());\n }\n getBaseTranslation() {\n return [0, 0];\n }\n getRect(tx, ty) {\n return super.getRect(tx, ty, this.#getRotation());\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n if (focus) {\n this.div.focus();\n }\n }\n remove() {\n this.#cleanDrawLayer();\n this._reportTelemetry({\n action: \"deleted\"\n });\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this.#cleanDrawLayer();\n } else if (parent) {\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n this.show(this._isVisible);\n if (mustBeSelected) {\n this.select();\n }\n }\n #changeThickness(thickness) {\n if (!this.#isFreeHighlight) {\n return;\n }\n this.#createFreeOutlines({\n highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2)\n });\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n #cleanDrawLayer() {\n if (this.#id === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this.#id);\n this.#id = null;\n this.parent.drawLayer.remove(this.#outlineId);\n this.#outlineId = null;\n }\n #addToDrawLayer(parent = this.parent) {\n if (this.#id !== null) {\n return;\n }\n ({\n id: this.#id,\n clipPathId: this.#clipPathId\n } = parent.drawLayer.draw({\n bbox: this.#highlightOutlines.box,\n root: {\n viewBox: \"0 0 1 1\",\n fill: this.color,\n \"fill-opacity\": this.#opacity\n },\n rootClass: {\n highlight: true,\n free: this.#isFreeHighlight\n },\n path: {\n d: this.#highlightOutlines.toSVGPath()\n }\n }, false, true));\n this.#outlineId = parent.drawLayer.drawOutline({\n rootClass: {\n highlightOutline: true,\n free: this.#isFreeHighlight\n },\n bbox: this.#focusOutlines.box,\n path: {\n d: this.#focusOutlines.toSVGPath()\n }\n }, this.#isFreeHighlight);\n if (this.#highlightDiv) {\n this.#highlightDiv.style.clipPath = this.#clipPathId;\n }\n }\n static #rotateBbox([x, y, width, height], angle) {\n switch (angle) {\n case 90:\n return [1 - y - height, x, height, width];\n case 180:\n return [1 - x - width, 1 - y - height, width, height];\n case 270:\n return [y, 1 - x - width, height, width];\n }\n return [x, y, width, height];\n }\n rotate(angle) {\n const {\n drawLayer\n } = this.parent;\n let box;\n if (this.#isFreeHighlight) {\n angle = (angle - this.rotation + 360) % 360;\n box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n } else {\n box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n }\n drawLayer.updateProperties(this.#id, {\n bbox: box,\n root: {\n \"data-main-rotation\": angle\n }\n });\n drawLayer.updateProperties(this.#outlineId, {\n bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n root: {\n \"data-main-rotation\": angle\n }\n });\n }\n render() {\n if (this.div) {\n return this.div;\n }\n const div = super.render();\n if (this.#text) {\n div.setAttribute(\"aria-label\", this.#text);\n div.setAttribute(\"role\", \"mark\");\n }\n if (this.#isFreeHighlight) {\n div.classList.add(\"free\");\n } else {\n this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n signal: this._uiManager._signal\n });\n }\n const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n div.append(highlightDiv);\n highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n highlightDiv.className = \"internal\";\n highlightDiv.style.clipPath = this.#clipPathId;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n this.enableEditing();\n return div;\n }\n pointerover() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: true\n }\n });\n }\n }\n pointerleave() {\n if (!this.isSelected) {\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false\n }\n });\n }\n }\n #keydown(event) {\n HighlightEditor._keyboardManager.exec(this, event);\n }\n _moveCaret(direction) {\n this.parent.unselect(this);\n switch (direction) {\n case 0:\n case 2:\n this.#setCaret(true);\n break;\n case 1:\n case 3:\n this.#setCaret(false);\n break;\n }\n }\n #setCaret(start) {\n if (!this.#anchorNode) {\n return;\n }\n const selection = window.getSelection();\n if (start) {\n selection.setPosition(this.#anchorNode, this.#anchorOffset);\n } else {\n selection.setPosition(this.#focusNode, this.#focusOffset);\n }\n }\n select() {\n super.select();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hovered: false,\n selected: true\n }\n });\n }\n unselect() {\n super.unselect();\n if (!this.#outlineId) {\n return;\n }\n this.parent?.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n selected: false\n }\n });\n if (!this.#isFreeHighlight) {\n this.#setCaret(false);\n }\n }\n get _mustFixPosition() {\n return !this.#isFreeHighlight;\n }\n show(visible = this._isVisible) {\n super.show(visible);\n if (this.parent) {\n this.parent.drawLayer.updateProperties(this.#id, {\n rootClass: {\n hidden: !visible\n }\n });\n this.parent.drawLayer.updateProperties(this.#outlineId, {\n rootClass: {\n hidden: !visible\n }\n });\n }\n }\n #getRotation() {\n return this.#isFreeHighlight ? this.rotation : 0;\n }\n #serializeBoxes() {\n if (this.#isFreeHighlight) {\n return null;\n }\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const boxes = this.#boxes;\n const quadPoints = new Float32Array(boxes.length * 8);\n let i = 0;\n for (const {\n x,\n y,\n width,\n height\n } of boxes) {\n const sx = x * pageWidth + pageX;\n const sy = (1 - y) * pageHeight + pageY;\n quadPoints[i] = quadPoints[i + 4] = sx;\n quadPoints[i + 1] = quadPoints[i + 3] = sy;\n quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n i += 8;\n }\n return quadPoints;\n }\n #serializeOutlines(rect) {\n return this.#highlightOutlines.serialize(rect, this.#getRotation());\n }\n static startHighlighting(parent, isLTR, {\n target: textLayer,\n x,\n y\n }) {\n const {\n x: layerX,\n y: layerY,\n width: parentWidth,\n height: parentHeight\n } = textLayer.getBoundingClientRect();\n const ac = new AbortController();\n const signal = parent.combinedSignal(ac);\n const pointerUpCallback = e => {\n ac.abort();\n this.#endHighlight(parent, e);\n };\n window.addEventListener(\"blur\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerup\", pointerUpCallback, {\n signal\n });\n window.addEventListener(\"pointerdown\", stopEvent, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n signal\n });\n this._freeHighlight = new FreeHighlightOutliner({\n x,\n y\n }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness / 2, isLTR, 0.001);\n ({\n id: this._freeHighlightId,\n clipPathId: this._freeHighlightClipId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: this._defaultColor,\n \"fill-opacity\": this._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n }, true, true));\n }\n static #highlightMove(parent, event) {\n if (this._freeHighlight.add(event)) {\n parent.drawLayer.updateProperties(this._freeHighlightId, {\n path: {\n d: this._freeHighlight.toSVGPath()\n }\n });\n }\n }\n static #endHighlight(parent, event) {\n if (!this._freeHighlight.isEmpty()) {\n parent.createAndAddNewEditor(event, false, {\n highlightId: this._freeHighlightId,\n highlightOutlines: this._freeHighlight.getOutlines(),\n clipPathId: this._freeHighlightClipId,\n methodOfCreation: \"main_toolbar\"\n });\n } else {\n parent.drawLayer.remove(this._freeHighlightId);\n }\n this._freeHighlightId = -1;\n this._freeHighlight = null;\n this._freeHighlightClipId = \"\";\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof HighlightAnnotationElement) {\n const {\n data: {\n quadPoints,\n rect,\n rotation,\n id,\n color,\n opacity,\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n opacity,\n quadPoints,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n } else if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color: Array.from(color),\n thickness,\n inkLists,\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const {\n color,\n quadPoints,\n inkLists,\n opacity\n } = data;\n const editor = await super.deserialize(data, parent, uiManager);\n editor.color = Util.makeHexColor(...color);\n editor.#opacity = opacity || 1;\n if (inkLists) {\n editor.#thickness = data.thickness;\n }\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [pageX, pageY] = editor.pageTranslation;\n if (quadPoints) {\n const boxes = editor.#boxes = [];\n for (let i = 0; i < quadPoints.length; i += 8) {\n boxes.push({\n x: (quadPoints[i] - pageX) / pageWidth,\n y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight\n });\n }\n editor.#createOutlines();\n editor.#addToDrawLayer();\n editor.rotate(editor.rotation);\n } else if (inkLists) {\n editor.#isFreeHighlight = true;\n const points = inkLists[0];\n const point = {\n x: points[0] - pageX,\n y: pageHeight - (points[1] - pageY)\n };\n const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness / 2, true, 0.001);\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n point.x = points[i] - pageX;\n point.y = pageHeight - (points[i + 1] - pageY);\n outliner.add(point);\n }\n const {\n id,\n clipPathId\n } = parent.drawLayer.draw({\n bbox: [0, 0, 1, 1],\n root: {\n viewBox: \"0 0 1 1\",\n fill: editor.color,\n \"fill-opacity\": editor._defaultOpacity\n },\n rootClass: {\n highlight: true,\n free: true\n },\n path: {\n d: outliner.toSVGPath()\n }\n }, true, true);\n editor.#createFreeOutlines({\n highlightOutlines: outliner.getOutlines(),\n highlightId: id,\n clipPathId\n });\n editor.#addToDrawLayer();\n }\n return editor;\n }\n serialize(isForCopying = false) {\n if (this.isEmpty() || isForCopying) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.color);\n const serialized = {\n annotationType: AnnotationEditorType.HIGHLIGHT,\n color,\n opacity: this.#opacity,\n thickness: this.#thickness,\n quadPoints: this.#serializeBoxes(),\n outlines: this.#serializeOutlines(rect),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.#getRotation(),\n structTreeParentId: this._structTreeParentId\n };\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color\n } = this._initialData;\n return serialized.color.some((c, i) => c !== color[i]);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/draw.js\n\n\n\nclass DrawingOptions {\n #svgProperties = Object.create(null);\n updateProperty(name, value) {\n this[name] = value;\n this.updateSVGProperty(name, value);\n }\n updateProperties(properties) {\n if (!properties) {\n return;\n }\n for (const [name, value] of Object.entries(properties)) {\n if (!name.startsWith(\"_\")) {\n this.updateProperty(name, value);\n }\n }\n }\n updateSVGProperty(name, value) {\n this.#svgProperties[name] = value;\n }\n toSVGProperties() {\n const root = this.#svgProperties;\n this.#svgProperties = Object.create(null);\n return {\n root\n };\n }\n reset() {\n this.#svgProperties = Object.create(null);\n }\n updateAll(options = this) {\n this.updateProperties(options);\n }\n clone() {\n unreachable(\"Not implemented\");\n }\n}\nclass DrawingEditor extends AnnotationEditor {\n #drawOutlines = null;\n #mustBeCommitted;\n _drawId = null;\n static _currentDrawId = -1;\n static _currentParent = null;\n static #currentDraw = null;\n static #currentDrawingAC = null;\n static #currentDrawingOptions = null;\n static #currentPointerId = NaN;\n static #currentPointerType = null;\n static #currentPointerIds = null;\n static #currentMoveTimestamp = NaN;\n static _INNER_MARGIN = 3;\n constructor(params) {\n super(params);\n this.#mustBeCommitted = params.mustBeCommitted || false;\n this._addOutlines(params);\n }\n _addOutlines(params) {\n if (params.drawOutlines) {\n this.#createDrawOutlines(params);\n this.#addToDrawLayer();\n }\n }\n #createDrawOutlines({\n drawOutlines,\n drawId,\n drawingOptions\n }) {\n this.#drawOutlines = drawOutlines;\n this._drawingOptions ||= drawingOptions;\n if (drawId >= 0) {\n this._drawId = drawId;\n this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n } else {\n this._drawId = this.#createDrawing(drawOutlines, this.parent);\n }\n this.#updateBbox(drawOutlines.box);\n }\n #createDrawing(drawOutlines, parent) {\n const {\n id\n } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n return id;\n }\n static _mergeSVGProperties(p1, p2) {\n const p1Keys = new Set(Object.keys(p1));\n for (const [key, value] of Object.entries(p2)) {\n if (p1Keys.has(key)) {\n Object.assign(p1[key], value);\n } else {\n p1[key] = value;\n }\n }\n return p1;\n }\n static getDefaultDrawingOptions(_options) {\n unreachable(\"Not implemented\");\n }\n static get typesMap() {\n unreachable(\"Not implemented\");\n }\n static get isDrawer() {\n return true;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static updateDefaultParams(type, value) {\n const propertyName = this.typesMap.get(type);\n if (propertyName) {\n this._defaultDrawingOptions.updateProperty(propertyName, value);\n }\n if (this._currentParent) {\n DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n }\n updateParams(type, value) {\n const propertyName = this.constructor.typesMap.get(type);\n if (propertyName) {\n this._updateProperty(type, propertyName, value);\n }\n }\n static get defaultPropertiesToUpdate() {\n const properties = [];\n const options = this._defaultDrawingOptions;\n for (const [type, name] of this.typesMap) {\n properties.push([type, options[name]]);\n }\n return properties;\n }\n get propertiesToUpdate() {\n const properties = [];\n const {\n _drawingOptions\n } = this;\n for (const [type, name] of this.constructor.typesMap) {\n properties.push([type, _drawingOptions[name]]);\n }\n return properties;\n }\n _updateProperty(type, name, value) {\n const options = this._drawingOptions;\n const savedValue = options[name];\n const setter = val => {\n options.updateProperty(name, val);\n const bbox = this.#drawOutlines.updateProperty(name, val);\n if (bbox) {\n this.#updateBbox(bbox);\n }\n this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n };\n this.addCommands({\n cmd: setter.bind(this, value),\n undo: setter.bind(this, savedValue),\n post: this._uiManager.updateUI.bind(this._uiManager, this),\n mustExec: true,\n type,\n overwriteIfSameType: true,\n keepUndo: true\n });\n }\n _onResizing() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onResized() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n bbox: this.#rotateBox()\n }));\n }\n _onTranslating(_x, _y) {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n bbox: this.#rotateBox()\n });\n }\n _onTranslated() {\n this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n bbox: this.#rotateBox()\n }));\n }\n _onStartDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: true\n }\n });\n }\n _onStopDragging() {\n this.parent?.drawLayer.updateProperties(this._drawId, {\n rootClass: {\n moving: false\n }\n });\n }\n commit() {\n super.commit();\n this.disableEditMode();\n this.disableEditing();\n }\n disableEditing() {\n super.disableEditing();\n this.div.classList.toggle(\"disabled\", true);\n }\n enableEditing() {\n super.enableEditing();\n this.div.classList.toggle(\"disabled\", false);\n }\n getBaseTranslation() {\n return [0, 0];\n }\n get isResizable() {\n return true;\n }\n onceAdded(focus) {\n if (!this.annotationElementId) {\n this.parent.addUndoableEditor(this);\n }\n this._isDraggable = true;\n if (this.#mustBeCommitted) {\n this.#mustBeCommitted = false;\n this.commit();\n this.parent.setSelected(this);\n if (focus && this.isOnScreen) {\n this.div.focus();\n }\n }\n }\n remove() {\n this.#cleanDrawLayer();\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n this.#addToDrawLayer();\n this.#updateBbox(this.#drawOutlines.box);\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n setParent(parent) {\n let mustBeSelected = false;\n if (this.parent && !parent) {\n this._uiManager.removeShouldRescale(this);\n this.#cleanDrawLayer();\n } else if (parent) {\n this._uiManager.addShouldRescale(this);\n this.#addToDrawLayer(parent);\n mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n }\n super.setParent(parent);\n if (mustBeSelected) {\n this.select();\n }\n }\n #cleanDrawLayer() {\n if (this._drawId === null || !this.parent) {\n return;\n }\n this.parent.drawLayer.remove(this._drawId);\n this._drawId = null;\n this._drawingOptions.reset();\n }\n #addToDrawLayer(parent = this.parent) {\n if (this._drawId !== null && this.parent === parent) {\n return;\n }\n if (this._drawId !== null) {\n this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n return;\n }\n this._drawingOptions.updateAll();\n this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n }\n #convertToParentSpace([x, y, width, height]) {\n const {\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n default:\n return [x, y, width, height];\n }\n }\n #convertToDrawSpace() {\n const {\n x,\n y,\n width,\n height,\n parentDimensions: [pW, pH],\n rotation\n } = this;\n switch (rotation) {\n case 90:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 180:\n return [1 - x, 1 - y, width, height];\n case 270:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n #updateBbox(bbox) {\n [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n if (this.div) {\n this.fixAndSetPosition();\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n }\n this._onResized();\n }\n #rotateBox() {\n const {\n x,\n y,\n width,\n height,\n rotation,\n parentRotation,\n parentDimensions: [pW, pH]\n } = this;\n switch ((rotation * 4 + parentRotation) / 90) {\n case 1:\n return [1 - y - height, x, height, width];\n case 2:\n return [1 - x - width, 1 - y - height, width, height];\n case 3:\n return [y, 1 - x - width, height, width];\n case 4:\n return [x, y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 5:\n return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n case 6:\n return [1 - x - height * (pH / pW), 1 - y, height * (pH / pW), width * (pW / pH)];\n case 7:\n return [y - width * (pW / pH), 1 - x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 8:\n return [x - width, y - height, width, height];\n case 9:\n return [1 - y, x - width, height, width];\n case 10:\n return [1 - x, 1 - y, width, height];\n case 11:\n return [y - height, 1 - x, height, width];\n case 12:\n return [x - height * (pH / pW), y, height * (pH / pW), width * (pW / pH)];\n case 13:\n return [1 - y - width * (pW / pH), x - height * (pH / pW), width * (pW / pH), height * (pH / pW)];\n case 14:\n return [1 - x, 1 - y - width * (pW / pH), height * (pH / pW), width * (pW / pH)];\n case 15:\n return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n default:\n return [x, y, width, height];\n }\n }\n rotate() {\n if (!this.parent) {\n return;\n }\n this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n bbox: this.#rotateBox()\n }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n }\n static onScaleChangingWhenDrawing() {}\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n const div = super.render();\n div.classList.add(\"draw\");\n const drawDiv = document.createElement(\"div\");\n div.append(drawDiv);\n drawDiv.setAttribute(\"aria-hidden\", \"true\");\n drawDiv.className = \"internal\";\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this._uiManager.addShouldRescale(this);\n this.disableEditing();\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n return div;\n }\n static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n unreachable(\"Not implemented\");\n }\n static startDrawing(parent, uiManager, _isLTR, event) {\n const {\n target,\n offsetX: x,\n offsetY: y,\n pointerId,\n pointerType\n } = event;\n if (DrawingEditor.#currentPointerType && DrawingEditor.#currentPointerType !== pointerType) {\n return;\n }\n const {\n viewport: {\n rotation\n }\n } = parent;\n const {\n width: parentWidth,\n height: parentHeight\n } = target.getBoundingClientRect();\n const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n const signal = parent.combinedSignal(ac);\n DrawingEditor.#currentPointerId ||= pointerId;\n DrawingEditor.#currentPointerType ??= pointerType;\n window.addEventListener(\"pointerup\", e => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._endDraw(e);\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointercancel\", e => {\n if (DrawingEditor.#currentPointerId === e.pointerId) {\n this._currentParent.endDrawingSession();\n } else {\n DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n }\n }, {\n signal\n });\n window.addEventListener(\"pointerdown\", e => {\n if (DrawingEditor.#currentPointerType !== e.pointerType) {\n return;\n }\n (DrawingEditor.#currentPointerIds ||= new Set()).add(e.pointerId);\n if (DrawingEditor.#currentDraw.isCancellable()) {\n DrawingEditor.#currentDraw.removeLastElement();\n if (DrawingEditor.#currentDraw.isEmpty()) {\n this._currentParent.endDrawingSession(true);\n } else {\n this._endDraw(null);\n }\n }\n }, {\n capture: true,\n passive: false,\n signal\n });\n window.addEventListener(\"contextmenu\", noContextMenu, {\n signal\n });\n target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n signal\n });\n target.addEventListener(\"touchmove\", e => {\n if (e.timeStamp === DrawingEditor.#currentMoveTimestamp) {\n stopEvent(e);\n }\n }, {\n signal\n });\n parent.toggleDrawing();\n uiManager._editorUndoBar?.hide();\n if (DrawingEditor.#currentDraw) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n return;\n }\n uiManager.updateUIForDefaultProperties(this);\n DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n this._currentParent = parent;\n ({\n id: this._currentDrawId\n } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n }\n static _drawMove(event) {\n DrawingEditor.#currentMoveTimestamp = -1;\n if (!DrawingEditor.#currentDraw) {\n return;\n }\n const {\n offsetX,\n offsetY,\n pointerId\n } = event;\n if (DrawingEditor.#currentPointerId !== pointerId) {\n return;\n }\n if (DrawingEditor.#currentPointerIds?.size >= 1) {\n this._endDraw(event);\n return;\n }\n this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n DrawingEditor.#currentMoveTimestamp = event.timeStamp;\n stopEvent(event);\n }\n static _cleanup(all) {\n if (all) {\n this._currentDrawId = -1;\n this._currentParent = null;\n DrawingEditor.#currentDraw = null;\n DrawingEditor.#currentDrawingOptions = null;\n DrawingEditor.#currentPointerType = null;\n DrawingEditor.#currentMoveTimestamp = NaN;\n }\n if (DrawingEditor.#currentDrawingAC) {\n DrawingEditor.#currentDrawingAC.abort();\n DrawingEditor.#currentDrawingAC = null;\n DrawingEditor.#currentPointerId = NaN;\n DrawingEditor.#currentPointerIds = null;\n }\n }\n static _endDraw(event) {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n parent.toggleDrawing(true);\n this._cleanup(false);\n if (event?.target === parent.div) {\n parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n }\n if (this.supportMultipleDrawings) {\n const draw = DrawingEditor.#currentDraw;\n const drawId = this._currentDrawId;\n const lastElement = draw.getLastElement();\n parent.addCommands({\n cmd: () => {\n parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n },\n undo: () => {\n parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n },\n mustExec: false,\n type: AnnotationEditorParamsType.DRAW_STEP\n });\n return;\n }\n this.endDrawing(false);\n }\n static endDrawing(isAborted) {\n const parent = this._currentParent;\n if (!parent) {\n return null;\n }\n parent.toggleDrawing(true);\n parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n if (!DrawingEditor.#currentDraw.isEmpty()) {\n const {\n pageDimensions: [pageWidth, pageHeight],\n scale\n } = parent;\n const editor = parent.createAndAddNewEditor({\n offsetX: 0,\n offsetY: 0\n }, false, {\n drawId: this._currentDrawId,\n drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n drawingOptions: DrawingEditor.#currentDrawingOptions,\n mustBeCommitted: !isAborted\n });\n this._cleanup(true);\n return editor;\n }\n parent.drawLayer.remove(this._currentDrawId);\n this._cleanup(true);\n return null;\n }\n createDrawingOptions(_data) {}\n static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n unreachable(\"Not implemented\");\n }\n static async deserialize(data, parent, uiManager) {\n const {\n rawDims: {\n pageWidth,\n pageHeight,\n pageX,\n pageY\n }\n } = parent.viewport;\n const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n const editor = await super.deserialize(data, parent, uiManager);\n editor.createDrawingOptions(data);\n editor.#createDrawOutlines({\n drawOutlines\n });\n editor.#addToDrawLayer();\n editor.onScaleChanging();\n editor.rotate();\n return editor;\n }\n serializeDraw(isForCopying) {\n const [pageX, pageY] = this.pageTranslation;\n const [pageWidth, pageHeight] = this.pageDimensions;\n return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n static canCreateNewEmptyEditor() {\n return false;\n }\n}\n\n;// ./src/display/editor/drawers/inkdraw.js\n\n\nclass InkDrawOutliner {\n #last = new Float64Array(6);\n #line;\n #lines;\n #rotation;\n #thickness;\n #points;\n #lastSVGPath = \"\";\n #lastIndex = 0;\n #outlines = new InkDrawOutline();\n #parentWidth;\n #parentHeight;\n constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n this.#thickness = thickness;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n this.#lines = [{\n line,\n points: this.#points\n }];\n this.#last.set(line, 0);\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n this.#thickness = value;\n }\n }\n #normalizePoint(x, y) {\n return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n }\n isEmpty() {\n return !this.#lines || this.#lines.length === 0;\n }\n isCancellable() {\n return this.#points.length <= 10;\n }\n add(x, y) {\n [x, y] = this.#normalizePoint(x, y);\n const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n const diffX = x - x2;\n const diffY = y - y2;\n const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n if (d <= 2) {\n return null;\n }\n this.#points.push(x, y);\n if (isNaN(x1)) {\n this.#last.set([x2, y2, x, y], 2);\n this.#line.push(NaN, NaN, NaN, NaN, x, y);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n if (isNaN(this.#last[0])) {\n this.#line.splice(6, 6);\n }\n this.#last.set([x1, y1, x2, y2, x, y], 0);\n this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n end(x, y) {\n const change = this.add(x, y);\n if (change) {\n return change;\n }\n if (this.#points.length === 2) {\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n return null;\n }\n startNew(x, y, parentWidth, parentHeight, rotation) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#rotation = rotation;\n [x, y] = this.#normalizePoint(x, y);\n const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n this.#points = [x, y];\n const last = this.#lines.at(-1);\n if (last) {\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n }\n this.#lines.push({\n line,\n points: this.#points\n });\n this.#last.set(line, 0);\n this.#lastIndex = 0;\n this.toSVGPath();\n return null;\n }\n getLastElement() {\n return this.#lines.at(-1);\n }\n setLastElement(element) {\n if (!this.#lines) {\n return this.#outlines.setLastElement(element);\n }\n this.#lines.push(element);\n this.#line = element.line;\n this.#points = element.points;\n this.#lastIndex = 0;\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n if (!this.#lines) {\n return this.#outlines.removeLastElement();\n }\n this.#lines.pop();\n this.#lastSVGPath = \"\";\n for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n const {\n line,\n points\n } = this.#lines[i];\n this.#line = line;\n this.#points = points;\n this.#lastIndex = 0;\n this.toSVGPath();\n }\n return {\n path: {\n d: this.#lastSVGPath\n }\n };\n }\n toSVGPath() {\n const firstX = Outline.svgRound(this.#line[4]);\n const firstY = Outline.svgRound(this.#line[5]);\n if (this.#points.length === 2) {\n this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n return this.#lastSVGPath;\n }\n if (this.#points.length <= 6) {\n const i = this.#lastSVGPath.lastIndexOf(\"M\");\n this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n this.#lastIndex = 6;\n }\n if (this.#points.length === 4) {\n const secondX = Outline.svgRound(this.#line[10]);\n const secondY = Outline.svgRound(this.#line[11]);\n this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n this.#lastIndex = 12;\n return this.#lastSVGPath;\n }\n const buffer = [];\n if (this.#lastIndex === 0) {\n buffer.push(`M ${firstX} ${firstY}`);\n this.#lastIndex = 6;\n }\n for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n this.#lastSVGPath += buffer.join(\" \");\n this.#lastIndex = this.#line.length;\n return this.#lastSVGPath;\n }\n getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n const last = this.#lines.at(-1);\n last.line = new Float32Array(last.line);\n last.points = new Float32Array(last.points);\n this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n this.#last = null;\n this.#line = null;\n this.#lines = null;\n this.#lastSVGPath = null;\n return this.#outlines;\n }\n get defaultSVGProperties() {\n return {\n root: {\n viewBox: \"0 0 10000 10000\"\n },\n rootClass: {\n draw: true\n },\n bbox: [0, 0, 1, 1]\n };\n }\n}\nclass InkDrawOutline extends Outline {\n #bbox;\n #currentRotation = 0;\n #innerMargin;\n #lines;\n #parentWidth;\n #parentHeight;\n #parentScale;\n #rotation;\n #thickness;\n build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n this.#parentWidth = parentWidth;\n this.#parentHeight = parentHeight;\n this.#parentScale = parentScale;\n this.#rotation = rotation;\n this.#thickness = thickness;\n this.#innerMargin = innerMargin ?? 0;\n this.#lines = lines;\n this.#computeBbox();\n }\n get thickness() {\n return this.#thickness;\n }\n setLastElement(element) {\n this.#lines.push(element);\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n removeLastElement() {\n this.#lines.pop();\n return {\n path: {\n d: this.toSVGPath()\n }\n };\n }\n toSVGPath() {\n const buffer = [];\n for (const {\n line\n } of this.#lines) {\n buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n if (line.length === 6) {\n buffer.push(\"Z\");\n continue;\n }\n if (line.length === 12 && isNaN(line[6])) {\n buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n continue;\n }\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n }\n }\n return buffer.join(\"\");\n }\n serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n const serializedLines = [];\n const serializedPoints = [];\n const [x, y, width, height] = this.#getBBoxWithNoMargin();\n let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n switch (this.#rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = pageX;\n ty = pageY + pageHeight;\n sx = pageWidth;\n sy = -pageHeight;\n x1 = pageX + x * pageWidth;\n y1 = pageY + (1 - y - height) * pageHeight;\n x2 = pageX + (x + width) * pageWidth;\n y2 = pageY + (1 - y) * pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX;\n ty = pageY;\n sx = pageWidth;\n sy = pageHeight;\n x1 = pageX + y * pageWidth;\n y1 = pageY + x * pageHeight;\n x2 = pageX + (y + height) * pageWidth;\n y2 = pageY + (x + width) * pageHeight;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX + pageWidth;\n ty = pageY;\n sx = -pageWidth;\n sy = pageHeight;\n x1 = pageX + (1 - x - width) * pageWidth;\n y1 = pageY + y * pageHeight;\n x2 = pageX + (1 - x) * pageWidth;\n y2 = pageY + (y + height) * pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageX + pageWidth;\n ty = pageY + pageHeight;\n sx = -pageWidth;\n sy = -pageHeight;\n x1 = pageX + (1 - y - height) * pageWidth;\n y1 = pageY + (1 - x - width) * pageHeight;\n x2 = pageX + (1 - y) * pageWidth;\n y2 = pageY + (1 - x) * pageHeight;\n break;\n }\n for (const {\n line,\n points\n } of this.#lines) {\n serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n }\n return {\n lines: serializedLines,\n points: serializedPoints,\n rect: [x1, y1, x2, y2]\n };\n }\n static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n paths: {\n lines,\n points\n },\n rotation,\n thickness\n }) {\n const newLines = [];\n let tx, ty, sx, sy, rescaleFn;\n switch (rotation) {\n case 0:\n rescaleFn = Outline._rescale;\n tx = -pageX / pageWidth;\n ty = pageY / pageHeight + 1;\n sx = 1 / pageWidth;\n sy = -1 / pageHeight;\n break;\n case 90:\n rescaleFn = Outline._rescaleAndSwap;\n tx = -pageY / pageHeight;\n ty = -pageX / pageWidth;\n sx = 1 / pageHeight;\n sy = 1 / pageWidth;\n break;\n case 180:\n rescaleFn = Outline._rescale;\n tx = pageX / pageWidth + 1;\n ty = -pageY / pageHeight;\n sx = -1 / pageWidth;\n sy = 1 / pageHeight;\n break;\n case 270:\n rescaleFn = Outline._rescaleAndSwap;\n tx = pageY / pageHeight + 1;\n ty = pageX / pageWidth + 1;\n sx = -1 / pageHeight;\n sy = -1 / pageWidth;\n break;\n }\n if (!lines) {\n lines = [];\n for (const point of points) {\n const len = point.length;\n if (len === 2) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n continue;\n }\n if (len === 4) {\n lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n continue;\n }\n const line = new Float32Array(3 * (len - 2));\n lines.push(line);\n let [x1, y1, x2, y2] = point.subarray(0, 4);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = point[i];\n const y = point[i + 1];\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n }\n for (let i = 0, ii = lines.length; i < ii; i++) {\n newLines.push({\n line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n });\n }\n const outlines = new this.prototype.constructor();\n outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n return outlines;\n }\n #getMarginComponents(thickness = this.#thickness) {\n const margin = this.#innerMargin + thickness / 2 * this.#parentScale;\n return this.#rotation % 180 === 0 ? [margin / this.#parentWidth, margin / this.#parentHeight] : [margin / this.#parentHeight, margin / this.#parentWidth];\n }\n #getBBoxWithNoMargin() {\n const [x, y, width, height] = this.#bbox;\n const [marginX, marginY] = this.#getMarginComponents(0);\n return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n }\n #computeBbox() {\n const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n for (const {\n line\n } of this.#lines) {\n if (line.length <= 12) {\n for (let i = 4, ii = line.length; i < ii; i += 6) {\n const [x, y] = line.subarray(i, i + 2);\n bbox[0] = Math.min(bbox[0], x);\n bbox[1] = Math.min(bbox[1], y);\n bbox[2] = Math.max(bbox[2], x);\n bbox[3] = Math.max(bbox[3], y);\n }\n continue;\n }\n let lastX = line[4],\n lastY = line[5];\n for (let i = 6, ii = line.length; i < ii; i += 6) {\n const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n lastX = x;\n lastY = y;\n }\n }\n const [marginX, marginY] = this.#getMarginComponents();\n bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n bbox[2] -= bbox[0];\n bbox[3] -= bbox[1];\n }\n get box() {\n return this.#bbox;\n }\n updateProperty(name, value) {\n if (name === \"stroke-width\") {\n return this.#updateThickness(value);\n }\n return null;\n }\n #updateThickness(thickness) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#thickness = thickness;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateParentDimensions([width, height], scale) {\n const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n this.#parentWidth = width;\n this.#parentHeight = height;\n this.#parentScale = scale;\n const [newMarginX, newMarginY] = this.#getMarginComponents();\n const diffMarginX = newMarginX - oldMarginX;\n const diffMarginY = newMarginY - oldMarginY;\n const bbox = this.#bbox;\n bbox[0] -= diffMarginX;\n bbox[1] -= diffMarginY;\n bbox[2] += 2 * diffMarginX;\n bbox[3] += 2 * diffMarginY;\n return bbox;\n }\n updateRotation(rotation) {\n this.#currentRotation = rotation;\n return {\n path: {\n transform: this.rotationTransform\n }\n };\n }\n get viewBox() {\n return this.#bbox.map(Outline.svgRound).join(\" \");\n }\n get defaultProperties() {\n const [x, y] = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n }\n };\n }\n get rotationTransform() {\n const [,, width, height] = this.#bbox;\n let a = 0,\n b = 0,\n c = 0,\n d = 0,\n e = 0,\n f = 0;\n switch (this.#currentRotation) {\n case 90:\n b = height / width;\n c = -width / height;\n e = width;\n break;\n case 180:\n a = -1;\n d = -1;\n e = width;\n f = height;\n break;\n case 270:\n b = -height / width;\n c = width / height;\n f = height;\n break;\n default:\n return \"\";\n }\n return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n }\n getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const [x, y, width, height] = this.#bbox;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: `${this.rotationTransform} translate(${tx} ${ty})`\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const s2x = width / newWidth;\n const s2y = height / newHeight;\n return {\n path: {\n \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n }\n };\n }\n getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n const [marginX, marginY] = this.#getMarginComponents();\n const bbox = this.#bbox;\n const [x, y, width, height] = bbox;\n bbox[0] = newX;\n bbox[1] = newY;\n bbox[2] = newWidth;\n bbox[3] = newHeight;\n if (Math.abs(width - marginX) <= Outline.PRECISION || Math.abs(height - marginY) <= Outline.PRECISION) {\n const tx = newX + newWidth / 2 - (x + width / 2);\n const ty = newY + newHeight / 2 - (y + height / 2);\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n const tx = -s1x * (x + marginX) + newX + marginX;\n const ty = -s1y * (y + marginY) + newY + marginY;\n if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, s1x, s1y, line);\n Outline._rescale(points, tx, ty, s1x, s1y, points);\n }\n }\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n transform: this.rotationTransform || null,\n d: this.toSVGPath()\n }\n };\n }\n getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n const [newParentWidth, newParentHeight] = parentDimensions;\n const bbox = this.#bbox;\n const tx = newX - bbox[0];\n const ty = newY - bbox[1];\n if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._translate(line, tx, ty, line);\n Outline._translate(points, tx, ty, points);\n }\n } else {\n const sx = this.#parentWidth / newParentWidth;\n const sy = this.#parentHeight / newParentHeight;\n this.#parentWidth = newParentWidth;\n this.#parentHeight = newParentHeight;\n for (const {\n line,\n points\n } of this.#lines) {\n Outline._rescale(line, tx, ty, sx, sy, line);\n Outline._rescale(points, tx, ty, sx, sy, points);\n }\n bbox[2] *= sx;\n bbox[3] *= sy;\n }\n bbox[0] = newX;\n bbox[1] = newY;\n return {\n root: {\n viewBox: this.viewBox\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n }\n };\n }\n get defaultSVGProperties() {\n const bbox = this.#bbox;\n return {\n root: {\n viewBox: this.viewBox\n },\n rootClass: {\n draw: true\n },\n path: {\n d: this.toSVGPath(),\n \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n transform: this.rotationTransform || null\n },\n bbox\n };\n }\n}\n\n;// ./src/display/editor/ink.js\n\n\n\n\n\nclass InkDrawingOptions extends DrawingOptions {\n constructor(viewerParameters) {\n super();\n this._viewParameters = viewerParameters;\n super.updateProperties({\n fill: \"none\",\n stroke: AnnotationEditor._defaultLineColor,\n \"stroke-opacity\": 1,\n \"stroke-width\": 1,\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n \"stroke-miterlimit\": 10\n });\n }\n updateSVGProperty(name, value) {\n if (name === \"stroke-width\") {\n value ??= this[\"stroke-width\"];\n value *= this._viewParameters.realScale;\n }\n super.updateSVGProperty(name, value);\n }\n clone() {\n const clone = new InkDrawingOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass InkEditor extends DrawingEditor {\n static _type = \"ink\";\n static _editorType = AnnotationEditorType.INK;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n name: \"inkEditor\"\n });\n this._willKeepAspectRatio = true;\n this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return true;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n }\n static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof InkAnnotationElement) {\n const {\n data: {\n inkLists,\n rect,\n rotation,\n id,\n color,\n opacity,\n borderStyle: {\n rawWidth: thickness\n },\n popupRef\n },\n parent: {\n page: {\n pageNumber\n }\n }\n } = data;\n initialData = data = {\n annotationType: AnnotationEditorType.INK,\n color: Array.from(color),\n thickness,\n opacity,\n paths: {\n points: inkLists\n },\n boxes: null,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n editor.annotationElementId = data.id || null;\n editor._initialData = initialData;\n return editor;\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n super.onScaleChanging();\n const {\n _drawId,\n _drawingOptions,\n parent\n } = this;\n _drawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n }\n static onScaleChangingWhenDrawing() {\n const parent = this._currentParent;\n if (!parent) {\n return;\n }\n super.onScaleChangingWhenDrawing();\n this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n }\n createDrawingOptions({\n color,\n thickness,\n opacity\n }) {\n this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n stroke: Util.makeHexColor(...color),\n \"stroke-width\": thickness,\n \"stroke-opacity\": opacity\n });\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const {\n lines,\n points,\n rect\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n stroke,\n \"stroke-opacity\": opacity,\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = {\n annotationType: AnnotationEditorType.INK,\n color: AnnotationEditor._colorManager.convert(stroke),\n opacity,\n thickness,\n paths: {\n lines,\n points\n },\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.isCopy = true;\n return serialized;\n }\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n serialized.id = this.annotationElementId;\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n color,\n thickness,\n opacity,\n pageIndex\n } = this._initialData;\n return this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n }\n renderAnnotationElement(annotation) {\n const {\n points,\n rect\n } = this.serializeDraw(false);\n annotation.updateEdited({\n rect,\n thickness: this._drawingOptions[\"stroke-width\"],\n points\n });\n return null;\n }\n}\n\n;// ./src/display/editor/drawers/contour.js\n\nclass ContourDrawOutline extends InkDrawOutline {\n toSVGPath() {\n let path = super.toSVGPath();\n if (!path.endsWith(\"Z\")) {\n path += \"Z\";\n }\n return path;\n }\n}\n\n;// ./src/display/editor/drawers/signaturedraw.js\n\n\n\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\nclass SignatureExtractor {\n static #PARAMETERS = {\n maxDim: 512,\n sigmaSFactor: 0.02,\n sigmaR: 25,\n kernelSize: 16\n };\n static #neighborIndexToId(i0, j0, i, j) {\n i -= i0;\n j -= j0;\n if (i === 0) {\n return j > 0 ? 0 : 4;\n }\n if (i === 1) {\n return j + 6;\n }\n return 2 - j;\n }\n static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (-k + id - offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n const id = this.#neighborIndexToId(i0, j0, i, j);\n for (let k = 0; k < 8; k++) {\n const kk = (k + id + offset + 16) % 8;\n const shiftI = this.#neighborIdToIndex[2 * kk];\n const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n return kk;\n }\n }\n return -1;\n }\n static #findContours(buf, width, height, threshold) {\n const N = buf.length;\n const types = new Int32Array(N);\n for (let i = 0; i < N; i++) {\n types[i] = buf[i] <= threshold ? 1 : 0;\n }\n for (let i = 1; i < height - 1; i++) {\n types[i * width] = types[i * width + width - 1] = 0;\n }\n for (let i = 0; i < width; i++) {\n types[i] = types[width * height - 1 - i] = 0;\n }\n let nbd = 1;\n let lnbd;\n const contours = [];\n for (let i = 1; i < height - 1; i++) {\n lnbd = 1;\n for (let j = 1; j < width - 1; j++) {\n const ij = i * width + j;\n const pix = types[ij];\n if (pix === 0) {\n continue;\n }\n let i2 = i;\n let j2 = j;\n if (pix === 1 && types[ij - 1] === 0) {\n nbd += 1;\n j2 -= 1;\n } else if (pix >= 1 && types[ij + 1] === 0) {\n nbd += 1;\n j2 += 1;\n if (pix > 1) {\n lnbd = pix;\n }\n } else {\n if (pix !== 1) {\n lnbd = Math.abs(pix);\n }\n continue;\n }\n const points = [j, i];\n const isHole = j2 === j + 1;\n const contour = {\n isHole,\n points,\n id: nbd,\n parent: 0\n };\n contours.push(contour);\n let contour0;\n for (const c of contours) {\n if (c.id === lnbd) {\n contour0 = c;\n break;\n }\n }\n if (!contour0) {\n contour.parent = isHole ? lnbd : 0;\n } else if (contour0.isHole) {\n contour.parent = isHole ? contour0.parent : lnbd;\n } else {\n contour.parent = isHole ? lnbd : contour0.parent;\n }\n const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n if (k === -1) {\n types[ij] = -nbd;\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n continue;\n }\n let shiftI = this.#neighborIdToIndex[2 * k];\n let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n const i1 = i + shiftI;\n const j1 = j + shiftJ;\n i2 = i1;\n j2 = j1;\n let i3 = i;\n let j3 = j;\n while (true) {\n const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n shiftI = this.#neighborIdToIndex[2 * kk];\n shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n const i4 = i3 + shiftI;\n const j4 = j3 + shiftJ;\n points.push(j4, i4);\n const ij3 = i3 * width + j3;\n if (types[ij3 + 1] === 0) {\n types[ij3] = -nbd;\n } else if (types[ij3] === 1) {\n types[ij3] = nbd;\n }\n if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n if (types[ij] !== 1) {\n lnbd = Math.abs(types[ij]);\n }\n break;\n } else {\n i2 = i3;\n j2 = j3;\n i3 = i4;\n j3 = j4;\n }\n }\n }\n }\n return contours;\n }\n static #douglasPeuckerHelper(points, start, end, output) {\n if (end - start <= 4) {\n for (let i = start; i < end - 2; i += 2) {\n output.push(points[i], points[i + 1]);\n }\n return;\n }\n const ax = points[start];\n const ay = points[start + 1];\n const abx = points[end - 4] - ax;\n const aby = points[end - 3] - ay;\n const dist = Math.hypot(abx, aby);\n const nabx = abx / dist;\n const naby = aby / dist;\n const aa = nabx * ay - naby * ax;\n const m = aby / abx;\n const invS = 1 / dist;\n const phi = Math.atan(m);\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n const poly = invS * (1 - tmax + tmax ** 2);\n const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n let dmax = 0;\n let index = start;\n for (let i = start + 2; i < end - 2; i += 2) {\n const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n if (d > dmax) {\n index = i;\n dmax = d;\n }\n }\n if (dmax > (dist * partialPhi) ** 2) {\n this.#douglasPeuckerHelper(points, start, index + 2, output);\n this.#douglasPeuckerHelper(points, index, end, output);\n } else {\n output.push(ax, ay);\n }\n }\n static #douglasPeucker(points) {\n const output = [];\n const len = points.length;\n this.#douglasPeuckerHelper(points, 0, len, output);\n output.push(points[len - 2], points[len - 1]);\n return output.length <= 4 ? null : output;\n }\n static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n const kernel = new Float32Array(kernelSize ** 2);\n const sigmaS2 = -2 * sigmaS ** 2;\n const halfSize = kernelSize >> 1;\n for (let i = 0; i < kernelSize; i++) {\n const x = (i - halfSize) ** 2;\n for (let j = 0; j < kernelSize; j++) {\n kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) / sigmaS2);\n }\n }\n const rangeValues = new Float32Array(256);\n const sigmaR2 = -2 * sigmaR ** 2;\n for (let i = 0; i < 256; i++) {\n rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n }\n const N = buf.length;\n const out = new Uint8Array(N);\n const histogram = new Uint32Array(256);\n for (let i = 0; i < height; i++) {\n for (let j = 0; j < width; j++) {\n const ij = i * width + j;\n const center = buf[ij];\n let sum = 0;\n let norm = 0;\n for (let k = 0; k < kernelSize; k++) {\n const y = i + k - halfSize;\n if (y < 0 || y >= height) {\n continue;\n }\n for (let l = 0; l < kernelSize; l++) {\n const x = j + l - halfSize;\n if (x < 0 || x >= width) {\n continue;\n }\n const neighbour = buf[y * width + x];\n const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n sum += neighbour * w;\n norm += w;\n }\n }\n const pix = out[ij] = Math.round(sum / norm);\n histogram[pix]++;\n }\n }\n return [out, histogram];\n }\n static #getHistogram(buf) {\n const histogram = new Uint32Array(256);\n for (const g of buf) {\n histogram[g]++;\n }\n return histogram;\n }\n static #toUint8(buf) {\n const N = buf.length;\n const out = new Uint8ClampedArray(N >> 2);\n let max = -Infinity;\n let min = Infinity;\n for (let i = 0, ii = out.length; i < ii; i++) {\n const A = buf[(i << 2) + 3];\n if (A === 0) {\n max = out[i] = 0xff;\n continue;\n }\n const pix = out[i] = buf[i << 2];\n if (pix > max) {\n max = pix;\n }\n if (pix < min) {\n min = pix;\n }\n }\n const ratio = 255 / (max - min);\n for (let i = 0; i < N; i++) {\n out[i] = (out[i] - min) * ratio;\n }\n return out;\n }\n static #guessThreshold(histogram) {\n let i;\n let M = -Infinity;\n let L = -Infinity;\n const min = histogram.findIndex(v => v !== 0);\n let pos = min;\n let spos = min;\n for (i = min; i < 256; i++) {\n const v = histogram[i];\n if (v > M) {\n if (i - pos > L) {\n L = i - pos;\n spos = i - 1;\n }\n M = v;\n pos = i;\n }\n }\n for (i = spos - 1; i >= 0; i--) {\n if (histogram[i] > histogram[i + 1]) {\n break;\n }\n }\n return i;\n }\n static #getGrayPixels(bitmap) {\n const originalBitmap = bitmap;\n const {\n width,\n height\n } = bitmap;\n const {\n maxDim\n } = this.#PARAMETERS;\n let newWidth = width;\n let newHeight = height;\n if (width > maxDim || height > maxDim) {\n let prevWidth = width;\n let prevHeight = height;\n let steps = Math.log2(Math.max(width, height) / maxDim);\n const isteps = Math.floor(steps);\n steps = steps === isteps ? isteps - 1 : isteps;\n for (let i = 0; i < steps; i++) {\n newWidth = prevWidth;\n newHeight = prevHeight;\n if (newWidth > maxDim) {\n newWidth = Math.ceil(newWidth / 2);\n }\n if (newHeight > maxDim) {\n newHeight = Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n prevWidth = newWidth;\n prevHeight = newHeight;\n if (bitmap !== originalBitmap) {\n bitmap.close();\n }\n bitmap = offscreen.transferToImageBitmap();\n }\n const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n newWidth = Math.round(newWidth * ratio);\n newHeight = Math.round(newHeight * ratio);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n ctx.filter = \"grayscale(1)\";\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n const uint8Buf = this.#toUint8(grayImage);\n return [uint8Buf, newWidth, newHeight];\n }\n static extractContoursFromText(text, {\n fontFamily,\n fontStyle,\n fontWeight\n }, pageWidth, pageHeight, rotation, innerMargin) {\n let canvas = new OffscreenCanvas(1, 1);\n let ctx = canvas.getContext(\"2d\", {\n alpha: false\n });\n const fontSize = 200;\n const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n const {\n actualBoundingBoxLeft,\n actualBoundingBoxRight,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n width\n } = ctx.measureText(text);\n const SCALE = 1.5;\n const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n ctx = canvas.getContext(\"2d\", {\n alpha: true,\n willReadFrequently: true\n });\n ctx.font = font;\n ctx.filter = \"grayscale(1)\";\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n ctx.fillStyle = \"black\";\n ctx.fillText(text, canvasWidth * (SCALE - 1) / 2, canvasHeight * (3 - SCALE) / 2);\n const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n const histogram = this.#getHistogram(uint8Buf);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width: canvasWidth,\n height: canvasHeight\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n const threshold = this.#guessThreshold(histogram);\n const contourList = this.#findContours(buffer, width, height, threshold);\n return this.processDrawnLines({\n lines: {\n curves: contourList,\n width,\n height\n },\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth: true,\n areContours: true\n });\n }\n static processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin,\n mustSmooth,\n areContours\n }) {\n if (rotation % 180 !== 0) {\n [pageWidth, pageHeight] = [pageHeight, pageWidth];\n }\n const {\n curves,\n width,\n height\n } = lines;\n const thickness = lines.thickness ?? 0;\n const linesAndPoints = [];\n const ratio = Math.min(pageWidth / width, pageHeight / height);\n const xScale = ratio / pageWidth;\n const yScale = ratio / pageHeight;\n const newCurves = [];\n for (const {\n points\n } of curves) {\n const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n if (!reducedPoints) {\n continue;\n }\n newCurves.push(reducedPoints);\n const len = reducedPoints.length;\n const newPoints = new Float32Array(len);\n const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n linesAndPoints.push({\n line,\n points: newPoints\n });\n if (len === 2) {\n newPoints[0] = reducedPoints[0] * xScale;\n newPoints[1] = reducedPoints[1] * yScale;\n line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n continue;\n }\n let [x1, y1, x2, y2] = reducedPoints;\n x1 *= xScale;\n y1 *= yScale;\n x2 *= xScale;\n y2 *= yScale;\n newPoints.set([x1, y1, x2, y2], 0);\n line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n for (let i = 4; i < len; i += 2) {\n const x = newPoints[i] = reducedPoints[i] * xScale;\n const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n [x1, y1, x2, y2] = [x2, y2, x, y];\n }\n }\n if (linesAndPoints.length === 0) {\n return null;\n }\n const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n return {\n outline,\n newCurves,\n areContours,\n thickness,\n width,\n height\n };\n }\n static async compressSignature({\n outlines,\n areContours,\n thickness,\n width,\n height\n }) {\n let minDiff = Infinity;\n let maxDiff = -Infinity;\n let outlinesLength = 0;\n for (const points of outlines) {\n outlinesLength += points.length;\n for (let i = 2, ii = points.length; i < ii; i++) {\n const dx = points[i] - points[i - 2];\n minDiff = Math.min(minDiff, dx);\n maxDiff = Math.max(maxDiff, dx);\n }\n }\n let bufferType;\n if (minDiff >= -128 && maxDiff <= 127) {\n bufferType = Int8Array;\n } else if (minDiff >= -32768 && maxDiff <= 32767) {\n bufferType = Int16Array;\n } else {\n bufferType = Int32Array;\n }\n const len = outlines.length;\n const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n const header = new Uint32Array(headerLength);\n let offset = 0;\n header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n header[offset++] = 0;\n header[offset++] = width;\n header[offset++] = height;\n header[offset++] = areContours ? 0 : 1;\n header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n header[offset++] = len;\n header[offset++] = bufferType.BYTES_PER_ELEMENT;\n for (const points of outlines) {\n header[offset++] = points.length - 2;\n header[offset++] = points[0];\n header[offset++] = points[1];\n }\n const cs = new CompressionStream(\"deflate-raw\");\n const writer = cs.writable.getWriter();\n await writer.ready;\n writer.write(header);\n const BufferCtor = bufferType.prototype.constructor;\n for (const points of outlines) {\n const diffs = new BufferCtor(points.length - 2);\n for (let i = 2, ii = points.length; i < ii; i++) {\n diffs[i - 2] = points[i] - points[i - 2];\n }\n writer.write(diffs);\n }\n writer.close();\n const buf = await new Response(cs.readable).arrayBuffer();\n const bytes = new Uint8Array(buf);\n return toBase64Util(bytes);\n }\n static async decompressSignature(signatureData) {\n try {\n const bytes = fromBase64Util(signatureData);\n const {\n readable,\n writable\n } = new DecompressionStream(\"deflate-raw\");\n const writer = writable.getWriter();\n await writer.ready;\n writer.write(bytes).then(async () => {\n await writer.ready;\n await writer.close();\n }).catch(() => {});\n let data = null;\n let offset = 0;\n for await (const chunk of readable) {\n data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n data.set(chunk, offset);\n offset += chunk.length;\n }\n const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n const version = header[1];\n if (version !== 0) {\n throw new Error(`Invalid version: ${version}`);\n }\n const width = header[2];\n const height = header[3];\n const areContours = header[4] === 0;\n const thickness = header[5];\n const numberOfDrawings = header[6];\n const bufferType = header[7];\n const outlines = [];\n const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n let diffs;\n switch (bufferType) {\n case Int8Array.BYTES_PER_ELEMENT:\n diffs = new Int8Array(data.buffer, diffsOffset);\n break;\n case Int16Array.BYTES_PER_ELEMENT:\n diffs = new Int16Array(data.buffer, diffsOffset);\n break;\n case Int32Array.BYTES_PER_ELEMENT:\n diffs = new Int32Array(data.buffer, diffsOffset);\n break;\n }\n offset = 0;\n for (let i = 0; i < numberOfDrawings; i++) {\n const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n const points = new Float32Array(len + 2);\n outlines.push(points);\n for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n }\n for (let j = 0; j < len; j++) {\n points[j + 2] = points[j] + diffs[offset++];\n }\n }\n return {\n areContours,\n thickness,\n outlines,\n width,\n height\n };\n } catch (e) {\n warn(`decompressSignature: ${e}`);\n return null;\n }\n }\n}\n\n;// ./src/display/editor/signature.js\n\n\n\n\n\n\n\nclass SignatureOptions extends DrawingOptions {\n constructor() {\n super();\n super.updateProperties({\n fill: \"CanvasText\",\n \"stroke-width\": 0\n });\n }\n clone() {\n const clone = new SignatureOptions();\n clone.updateAll(this);\n return clone;\n }\n}\nclass DrawnSignatureOptions extends InkDrawingOptions {\n constructor(viewerParameters) {\n super(viewerParameters);\n super.updateProperties({\n stroke: \"CanvasText\",\n \"stroke-width\": 1\n });\n }\n clone() {\n const clone = new DrawnSignatureOptions(this._viewParameters);\n clone.updateAll(this);\n return clone;\n }\n}\nclass SignatureEditor extends DrawingEditor {\n #isExtracted = false;\n #description = null;\n #signatureData = null;\n #signatureUUID = null;\n static _type = \"signature\";\n static _editorType = AnnotationEditorType.SIGNATURE;\n static _defaultDrawingOptions = null;\n constructor(params) {\n super({\n ...params,\n mustBeCommitted: true,\n name: \"signatureEditor\"\n });\n this._willKeepAspectRatio = true;\n this.#signatureData = params.signatureData || null;\n this.#description = null;\n this.defaultL10nId = \"pdfjs-editor-signature-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n this._defaultDrawingOptions = new SignatureOptions();\n this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n }\n static getDefaultDrawingOptions(options) {\n const clone = this._defaultDrawingOptions.clone();\n clone.updateProperties(options);\n return clone;\n }\n static get supportMultipleDrawings() {\n return false;\n }\n static get typesMap() {\n return shadow(this, \"typesMap\", new Map());\n }\n static get isDrawer() {\n return false;\n }\n get telemetryFinalData() {\n return {\n type: \"signature\",\n hasDescription: !!this.#description\n };\n }\n static computeTelemetryFinalData(data) {\n const hasDescriptionStats = data.get(\"hasDescription\");\n return {\n hasAltText: hasDescriptionStats.get(true) ?? 0,\n hasNoAltText: hasDescriptionStats.get(false) ?? 0\n };\n }\n get isResizable() {\n return true;\n }\n onScaleChanging() {\n if (this._drawId === null) {\n return;\n }\n super.onScaleChanging();\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n const {\n _isCopy\n } = this;\n if (_isCopy) {\n this._isCopy = false;\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n if (this._drawId === null) {\n if (this.#signatureData) {\n const {\n lines,\n mustSmooth,\n areContours,\n description,\n uuid,\n heightInPage\n } = this.#signatureData;\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n const outline = SignatureExtractor.processDrawnLines({\n lines,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth,\n areContours\n });\n this.addSignature(outline, heightInPage, description, uuid);\n } else {\n this.div.hidden = true;\n this._uiManager.getSignature(this);\n }\n }\n if (_isCopy) {\n this._isCopy = true;\n this._moveAfterPaste(baseX, baseY);\n }\n return this.div;\n }\n setUuid(uuid) {\n this.#signatureUUID = uuid;\n this.addEditToolbar();\n }\n getUuid() {\n return this.#signatureUUID;\n }\n get description() {\n return this.#description;\n }\n set description(description) {\n this.#description = description;\n super.addEditToolbar().then(toolbar => {\n toolbar?.updateEditSignatureButton(description);\n });\n }\n getSignaturePreview() {\n const {\n newCurves,\n areContours,\n thickness,\n width,\n height\n } = this.#signatureData;\n const maxDim = Math.max(width, height);\n const outlineData = SignatureExtractor.processDrawnLines({\n lines: {\n curves: newCurves.map(points => ({\n points\n })),\n thickness,\n width,\n height\n },\n pageWidth: maxDim,\n pageHeight: maxDim,\n rotation: 0,\n innerMargin: 0,\n mustSmooth: false,\n areContours\n });\n return {\n areContours,\n outline: outlineData.outline\n };\n }\n async addEditToolbar() {\n const toolbar = await super.addEditToolbar();\n if (!toolbar) {\n return null;\n }\n if (this._uiManager.signatureManager && this.#description !== null) {\n await toolbar.addEditSignatureButton(this._uiManager.signatureManager, this.#signatureUUID, this.#description);\n toolbar.show();\n }\n return toolbar;\n }\n addSignature(data, heightInPage, description, uuid) {\n const {\n x: savedX,\n y: savedY\n } = this;\n const {\n outline\n } = this.#signatureData = data;\n this.#isExtracted = outline instanceof ContourDrawOutline;\n this.#description = description;\n this.div.setAttribute(\"aria-description\", description);\n let drawingOptions;\n if (this.#isExtracted) {\n drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n drawingOptions.updateProperties({\n \"stroke-width\": outline.thickness\n });\n }\n this._addOutlines({\n drawOutlines: outline,\n drawingOptions\n });\n const [parentWidth, parentHeight] = this.parentDimensions;\n const [, pageHeight] = this.pageDimensions;\n let newHeight = heightInPage / pageHeight;\n newHeight = newHeight >= 1 ? 0.5 : newHeight;\n this.width *= newHeight / this.height;\n if (this.width >= 1) {\n newHeight *= 0.9 / this.width;\n this.width = 0.9;\n }\n this.height = newHeight;\n this.setDims(parentWidth * this.width, parentHeight * this.height);\n this.x = savedX;\n this.y = savedY;\n this.center();\n this._onResized();\n this.onScaleChanging();\n this.rotate();\n this._uiManager.addToAnnotationStorage(this);\n this.setUuid(uuid);\n this._reportTelemetry({\n action: \"pdfjs.signature.inserted\",\n data: {\n hasBeenSaved: !!uuid,\n hasDescription: !!description\n }\n });\n this.div.hidden = false;\n }\n getFromImage(bitmap) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getFromText(text, fontInfo) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n }\n getDrawnSignature(curves) {\n const {\n rawDims: {\n pageWidth,\n pageHeight\n },\n rotation\n } = this.parent.viewport;\n return SignatureExtractor.processDrawnLines({\n lines: curves,\n pageWidth,\n pageHeight,\n rotation,\n innerMargin: SignatureEditor._INNER_MARGIN,\n mustSmooth: false,\n areContours: false\n });\n }\n createDrawingOptions({\n areContours,\n thickness\n }) {\n if (areContours) {\n this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n } else {\n this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n this._drawingOptions.updateProperties({\n \"stroke-width\": thickness\n });\n }\n }\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n const {\n lines,\n points,\n rect\n } = this.serializeDraw(isForCopying);\n const {\n _drawingOptions: {\n \"stroke-width\": thickness\n }\n } = this;\n const serialized = {\n annotationType: AnnotationEditorType.SIGNATURE,\n isSignature: true,\n areContours: this.#isExtracted,\n color: [0, 0, 0],\n thickness: this.#isExtracted ? 0 : thickness,\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.paths = {\n lines,\n points\n };\n serialized.uuid = this.#signatureUUID;\n serialized.isCopy = true;\n } else {\n serialized.lines = lines;\n }\n if (this.#description) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: this.#description\n };\n }\n return serialized;\n }\n static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n if (data.areContours) {\n return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n }\n static async deserialize(data, parent, uiManager) {\n const editor = await super.deserialize(data, parent, uiManager);\n editor.#isExtracted = data.areContours;\n editor.#description = data.accessibilityData?.alt || \"\";\n editor.#signatureUUID = data.uuid;\n return editor;\n }\n}\n\n;// ./src/display/editor/stamp.js\n\n\n\n\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n #bitmapId = null;\n #bitmapPromise = null;\n #bitmapUrl = null;\n #bitmapFile = null;\n #bitmapFileName = \"\";\n #canvas = null;\n #missingCanvas = false;\n #resizeTimeoutId = null;\n #isSvg = false;\n #hasBeenAddedInUndoStack = false;\n static _type = \"stamp\";\n static _editorType = AnnotationEditorType.STAMP;\n constructor(params) {\n super({\n ...params,\n name: \"stampEditor\"\n });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n }\n static initialize(l10n, uiManager) {\n AnnotationEditor.initialize(l10n, uiManager);\n }\n static isHandlingMimeForPasting(mime) {\n return SupportedImageMimeTypes.includes(mime);\n }\n static paste(item, parent) {\n parent.pasteEditor(AnnotationEditorType.STAMP, {\n bitmapFile: item.getAsFile()\n });\n }\n altTextFinish() {\n if (this._uiManager.useNewAltTextFlow) {\n this.div.hidden = false;\n }\n super.altTextFinish();\n }\n get telemetryFinalData() {\n return {\n type: \"stamp\",\n hasAltText: !!this.altTextData?.altText\n };\n }\n static computeTelemetryFinalData(data) {\n const hasAltTextStats = data.get(\"hasAltText\");\n return {\n hasAltText: hasAltTextStats.get(true) ?? 0,\n hasNoAltText: hasAltTextStats.get(false) ?? 0\n };\n }\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (!this.#canvas) {\n return;\n }\n if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._editToolbar.hide();\n this._uiManager.editAltText(this, true);\n return;\n }\n if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n this._reportTelemetry({\n action: \"pdfjs.image.image_added\",\n data: {\n alt_text_modal: false,\n alt_text_type: \"empty\"\n }\n });\n try {\n this.mlGuessAltText();\n } catch {}\n }\n this.div.focus();\n }\n async mlGuessAltText(imageData = null, updateAltTextData = true) {\n if (this.hasAltTextData()) {\n return null;\n }\n const {\n mlManager\n } = this._uiManager;\n if (!mlManager) {\n throw new Error(\"No ML.\");\n }\n if (!(await mlManager.isEnabledFor(\"altText\"))) {\n throw new Error(\"ML isn't enabled for alt text.\");\n }\n const {\n data,\n width,\n height\n } = imageData || this.copyCanvas(null, null, true).imageData;\n const response = await mlManager.guess({\n name: \"altText\",\n request: {\n data,\n width,\n height,\n channels: data.length / (width * height)\n }\n });\n if (!response) {\n throw new Error(\"No response from the AI service.\");\n }\n if (response.error) {\n throw new Error(\"Error from the AI service.\");\n }\n if (response.cancel) {\n return null;\n }\n if (!response.output) {\n throw new Error(\"No valid response from the AI service.\");\n }\n const altText = response.output;\n await this.setGuessedAltText(altText);\n if (updateAltTextData && !this.hasAltTextData()) {\n this.altTextData = {\n alt: altText,\n decorative: false\n };\n }\n return altText;\n }\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager.getFromId(this.#bitmapId).then(data => this.#getBitmapFetched(data, true)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromUrl(url).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager.getFromFile(file).then(data => this.#getBitmapFetched(data)).finally(() => this.#getBitmapDone());\n return;\n }\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.accept = SupportedImageMimeTypes.join(\",\");\n const signal = this._uiManager._signal;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n this._reportTelemetry({\n action: \"pdfjs.image.image_selected\",\n data: {\n alt_text_modal: this._uiManager.useNewAltTextFlow\n }\n });\n this.#getBitmapFetched(data);\n }\n resolve();\n }, {\n signal\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n }, {\n signal\n });\n }).finally(() => this.#getBitmapDone());\n input.click();\n }\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n rebuild() {\n if (!this.parent) {\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n if (this.#bitmapId && this.#canvas === null) {\n this.#getBitmap();\n }\n if (!this.isAttachedToDOM) {\n this.parent.add(this);\n }\n }\n onceAdded(focus) {\n this._isDraggable = true;\n if (focus) {\n this.div.focus();\n }\n }\n isEmpty() {\n return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n }\n get isResizable() {\n return true;\n }\n render() {\n if (this.div) {\n return this.div;\n }\n let baseX, baseY;\n if (this._isCopy) {\n baseX = this.x;\n baseY = this.y;\n }\n super.render();\n this.div.hidden = true;\n this.addAltTextButton();\n if (!this.#missingCanvas) {\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n }\n if (this._isCopy) {\n this._moveAfterPaste(baseX, baseY);\n }\n this._uiManager.addShouldRescale(this);\n return this.div;\n }\n setCanvas(annotationElementId, canvas) {\n const {\n id: bitmapId,\n bitmap\n } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n canvas.remove();\n if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n this.#bitmapId = bitmapId;\n if (bitmap) {\n this.#bitmap = bitmap;\n }\n this.#missingCanvas = false;\n this.#createCanvas();\n }\n }\n _onResized() {\n this.onScaleChanging();\n }\n onScaleChanging() {\n if (!this.parent) {\n return;\n }\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap();\n }, TIME_TO_WAIT);\n }\n #createCanvas() {\n const {\n div\n } = this;\n let {\n width,\n height\n } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (width > MAX_RATIO * pageWidth || height > MAX_RATIO * pageHeight) {\n const factor = Math.min(MAX_RATIO * pageWidth / width, MAX_RATIO * pageHeight / height);\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(width * parentWidth / pageWidth, height * parentHeight / pageHeight);\n this._uiManager.enableWaiting(false);\n const canvas = this.#canvas = document.createElement(\"canvas\");\n canvas.setAttribute(\"role\", \"img\");\n this.addContainer(canvas);\n this.width = width / pageWidth;\n this.height = height / pageHeight;\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n div.hidden = false;\n }\n this.#drawBitmap();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n this._reportTelemetry({\n action: \"inserted_image\"\n });\n if (this.#bitmapFileName) {\n this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n }\n }\n copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n if (!maxDataDimension) {\n maxDataDimension = 224;\n }\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n const outputScale = new OutputScale();\n let bitmap = this.#bitmap;\n let width = bitmapWidth,\n height = bitmapHeight;\n let canvas = null;\n if (maxPreviewDimension) {\n if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n const ratio = Math.min(maxPreviewDimension / bitmapWidth, maxPreviewDimension / bitmapHeight);\n width = Math.floor(bitmapWidth * ratio);\n height = Math.floor(bitmapHeight * ratio);\n }\n canvas = document.createElement(\"canvas\");\n const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n }\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n let white = \"white\",\n black = \"#cfcfd8\";\n if (this._uiManager.hcmFilter !== \"none\") {\n black = \"black\";\n } else if (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\n white = \"#8f8f9d\";\n black = \"#42414d\";\n }\n const boxDim = 15;\n const boxDimWidth = boxDim * outputScale.sx;\n const boxDimHeight = boxDim * outputScale.sy;\n const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n const patternCtx = pattern.getContext(\"2d\");\n patternCtx.fillStyle = white;\n patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n patternCtx.fillStyle = black;\n patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n let imageData = null;\n if (createImageData) {\n let dataWidth, dataHeight;\n if (outputScale.symmetric && bitmap.width < maxDataDimension && bitmap.height < maxDataDimension) {\n dataWidth = bitmap.width;\n dataHeight = bitmap.height;\n } else {\n bitmap = this.#bitmap;\n if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n const ratio = Math.min(maxDataDimension / bitmapWidth, maxDataDimension / bitmapHeight);\n dataWidth = Math.floor(bitmapWidth * ratio);\n dataHeight = Math.floor(bitmapHeight * ratio);\n if (!this.#isSvg) {\n bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n }\n }\n }\n const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n const offscreenCtx = offscreen.getContext(\"2d\", {\n willReadFrequently: true\n });\n offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n imageData = {\n width: dataWidth,\n height: dataHeight,\n data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n };\n }\n return {\n canvas,\n width,\n height,\n imageData\n };\n }\n #scaleBitmap(width, height) {\n const {\n width: bitmapWidth,\n height: bitmapHeight\n } = this.#bitmap;\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n if (newWidth > 2 * width) {\n newWidth = newWidth >= 16384 ? Math.floor(newWidth / 2) - 1 : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight = newHeight >= 16384 ? Math.floor(newHeight / 2) - 1 : Math.ceil(newHeight / 2);\n }\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n bitmap = offscreen.transferToImageBitmap();\n }\n return bitmap;\n }\n #drawBitmap() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const {\n width,\n height\n } = this;\n const outputScale = new OutputScale();\n const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n const canvas = this.#canvas;\n if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n return;\n }\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n }\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n const canvas = document.createElement(\"canvas\");\n ({\n width: canvas.width,\n height: canvas.height\n } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n return canvas.toDataURL();\n }\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n const width = Math.round(this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS);\n const height = Math.round(this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS);\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0, this.#bitmap.width, this.#bitmap.height, 0, 0, width, height);\n return offscreen.transferToImageBitmap();\n }\n return structuredClone(this.#bitmap);\n }\n static async deserialize(data, parent, uiManager) {\n let initialData = null;\n let missingCanvas = false;\n if (data instanceof StampAnnotationElement) {\n const {\n data: {\n rect,\n rotation,\n id,\n structParent,\n popupRef\n },\n container,\n parent: {\n page: {\n pageNumber\n }\n },\n canvas\n } = data;\n let bitmapId, bitmap;\n if (canvas) {\n delete data.canvas;\n ({\n id: bitmapId,\n bitmap\n } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n canvas.remove();\n } else {\n missingCanvas = true;\n data._hasNoCanvas = true;\n }\n const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n initialData = data = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId,\n bitmap,\n pageIndex: pageNumber - 1,\n rect: rect.slice(0),\n rotation,\n id,\n deleted: false,\n accessibilityData: {\n decorative: false,\n altText\n },\n isSvg: false,\n structParent,\n popupRef\n };\n }\n const editor = await super.deserialize(data, parent, uiManager);\n const {\n rect,\n bitmap,\n bitmapUrl,\n bitmapId,\n isSvg,\n accessibilityData\n } = data;\n if (missingCanvas) {\n uiManager.addMissingCanvas(data.id, editor);\n editor.#missingCanvas = true;\n } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n if (bitmap) {\n editor.#bitmap = bitmap;\n }\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n editor.annotationElementId = data.id || null;\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n editor._initialData = initialData;\n editor.#hasBeenAddedInUndoStack = !!initialData;\n return editor;\n }\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n if (this.deleted) {\n return this.serializeDeleted();\n }\n const serialized = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId\n };\n if (isForCopying) {\n serialized.bitmapUrl = this.#serializeBitmap(true);\n serialized.accessibilityData = this.serializeAltText(true);\n serialized.isCopy = true;\n return serialized;\n }\n const {\n decorative,\n altText\n } = this.serializeAltText(false);\n if (!decorative && altText) {\n serialized.accessibilityData = {\n type: \"Figure\",\n alt: altText\n };\n }\n if (this.annotationElementId) {\n const changes = this.#hasElementChanged(serialized);\n if (changes.isSame) {\n return null;\n }\n if (changes.isSameAltText) {\n delete serialized.accessibilityData;\n } else {\n serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n }\n }\n serialized.id = this.annotationElementId;\n if (context === null) {\n return serialized;\n }\n context.stamps ||= new Map();\n const area = this.#isSvg ? (serialized.rect[2] - serialized.rect[0]) * (serialized.rect[3] - serialized.rect[1]) : null;\n if (!context.stamps.has(this.#bitmapId)) {\n context.stamps.set(this.#bitmapId, {\n area,\n serialized\n });\n serialized.bitmap = this.#serializeBitmap(false);\n } else if (this.#isSvg) {\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(false);\n }\n }\n return serialized;\n }\n #hasElementChanged(serialized) {\n const {\n pageIndex,\n accessibilityData: {\n altText\n }\n } = this._initialData;\n const isSamePageIndex = serialized.pageIndex === pageIndex;\n const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n return {\n isSame: !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n isSameAltText\n };\n }\n renderAnnotationElement(annotation) {\n annotation.updateEdited({\n rect: this.getRect(0, 0)\n });\n return null;\n }\n}\n\n;// ./src/display/editor/annotation_editor_layer.js\n\n\n\n\n\n\n\n\nclass AnnotationEditorLayer {\n #accessibilityManager;\n #allowClick = false;\n #annotationLayer = null;\n #clickAC = null;\n #editorFocusTimeoutId = null;\n #editors = new Map();\n #hadPointerDown = false;\n #isDisabling = false;\n #isEnabling = false;\n #drawingAC = null;\n #focusedElement = null;\n #textLayer = null;\n #textSelectionAC = null;\n #uiManager;\n static _initialized = false;\n static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].map(type => [type._editorType, type]));\n constructor({\n uiManager,\n pageIndex,\n div,\n structTreeLayer,\n accessibilityManager,\n annotationLayer,\n drawLayer,\n textLayer,\n viewport,\n l10n\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n, uiManager);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n this.#textLayer = textLayer;\n this.drawLayer = drawLayer;\n this._structTree = structTreeLayer;\n this.#uiManager.addLayer(this);\n }\n get isEmpty() {\n return this.#editors.size === 0;\n }\n get isInvisible() {\n return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n }\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n switch (mode) {\n case AnnotationEditorType.NONE:\n this.disableTextSelection();\n this.togglePointerEvents(false);\n this.toggleAnnotationLayerPointerEvents(true);\n this.disableClick();\n return;\n case AnnotationEditorType.INK:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n break;\n case AnnotationEditorType.HIGHLIGHT:\n this.enableTextSelection();\n this.togglePointerEvents(false);\n this.disableClick();\n break;\n default:\n this.disableTextSelection();\n this.togglePointerEvents(true);\n this.enableClick();\n }\n this.toggleAnnotationLayerPointerEvents(false);\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(`${editorType._type}Editing`, mode === editorType._editorType);\n }\n this.div.hidden = false;\n }\n hasTextLayer(textLayer) {\n return textLayer === this.#textLayer?.div;\n }\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n cleanUndoStack(type) {\n this.#uiManager.cleanUndoStack(type);\n }\n toggleDrawing(enabled = false) {\n this.div.classList.toggle(\"drawing\", !enabled);\n }\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n toggleAnnotationLayerPointerEvents(enabled = false) {\n this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n }\n async enable() {\n this.#isEnabling = true;\n this.div.tabIndex = 0;\n this.togglePointerEvents(true);\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n editor.show(true);\n if (editor.annotationElementId) {\n this.#uiManager.removeChangedExistingAnnotation(editor);\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n if (!this.#annotationLayer) {\n this.#isEnabling = false;\n return;\n }\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = await this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n this.#isEnabling = false;\n }\n disable() {\n this.#isDisabling = true;\n this.div.tabIndex = -1;\n this.togglePointerEvents(false);\n const changedAnnotations = new Map();\n const resetAnnotations = new Map();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId) {\n continue;\n }\n if (editor.serialize() !== null) {\n changedAnnotations.set(editor.annotationElementId, editor);\n continue;\n } else {\n resetAnnotations.set(editor.annotationElementId, editor);\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n if (this.#annotationLayer) {\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const {\n id\n } = editable.data;\n if (this.#uiManager.isDeletedAnnotationElement(id)) {\n continue;\n }\n let editor = resetAnnotations.get(id);\n if (editor) {\n editor.resetAnnotationElement(editable);\n editor.show(false);\n editable.show();\n continue;\n }\n editor = changedAnnotations.get(id);\n if (editor) {\n this.#uiManager.addChangedExistingAnnotation(editor);\n if (editor.renderAnnotationElement(editable)) {\n editor.show(false);\n }\n }\n editable.show();\n }\n }\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const {\n classList\n } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n this.disableTextSelection();\n this.toggleAnnotationLayerPointerEvents(true);\n this.#isDisabling = false;\n }\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n this.#uiManager.setActiveEditor(editor);\n }\n enableTextSelection() {\n this.div.tabIndex = -1;\n if (this.#textLayer?.div && !this.#textSelectionAC) {\n this.#textSelectionAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n signal\n });\n this.#textLayer.div.classList.add(\"highlighting\");\n }\n }\n disableTextSelection() {\n this.div.tabIndex = 0;\n if (this.#textLayer?.div && this.#textSelectionAC) {\n this.#textSelectionAC.abort();\n this.#textSelectionAC = null;\n this.#textLayer.div.classList.remove(\"highlighting\");\n }\n }\n #textLayerPointerDown(event) {\n this.#uiManager.unselectAll();\n const {\n target\n } = event;\n if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n this.#uiManager.showAllEditors(\"highlight\", true, true);\n this.#textLayer.div.classList.add(\"free\");\n this.toggleDrawing();\n HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n target: this.#textLayer.div,\n x: event.x,\n y: event.y\n });\n this.#textLayer.div.addEventListener(\"pointerup\", () => {\n this.#textLayer.div.classList.remove(\"free\");\n this.toggleDrawing(true);\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n event.preventDefault();\n }\n }\n enableClick() {\n if (this.#clickAC) {\n return;\n }\n this.#clickAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#clickAC);\n this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n signal\n });\n const pointerup = this.pointerup.bind(this);\n this.div.addEventListener(\"pointerup\", pointerup, {\n signal\n });\n this.div.addEventListener(\"pointercancel\", pointerup, {\n signal\n });\n }\n disableClick() {\n this.#clickAC?.abort();\n this.#clickAC = null;\n }\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const {\n annotationElementId\n } = editor;\n if (annotationElementId && this.#uiManager.isDeletedAnnotationElement(annotationElementId)) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n remove(editor) {\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n }\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n if (editor.parent && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n add(editor) {\n if (editor.parent === this && editor.isAttachedToDOM) {\n return;\n }\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n editor.fixAndSetPosition();\n editor.onceAdded(!this.#isEnabling);\n this.#uiManager.addToAnnotationStorage(editor);\n editor._reportTelemetry(editor.telemetryInitialData);\n }\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n const {\n activeElement\n } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\"focusin\", () => {\n editor._focusEventsAllowed = true;\n }, {\n once: true,\n signal: this.#uiManager._signal\n });\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(this.div, editor.div, editor.contentDiv, true);\n }\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n editor.show();\n } else {\n this.add(editor);\n }\n }\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n this.addCommands({\n cmd,\n undo,\n mustExec: false\n });\n }\n getNextId() {\n return this.#uiManager.getId();\n }\n get #currentEditorType() {\n return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n }\n combinedSignal(ac) {\n return this.#uiManager.combinedSignal(ac);\n }\n #createNewEditor(params) {\n const editorType = this.#currentEditorType;\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n canCreateNewEmptyEditor() {\n return this.#currentEditorType?.canCreateNewEmptyEditor();\n }\n async pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n await this.#uiManager.updateMode(mode);\n const {\n offsetX,\n offsetY\n } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params\n });\n if (editor) {\n this.add(editor);\n }\n }\n async deserialize(data) {\n return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n }\n createAndAddNewEditor(event, isCentered, data = {}) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n ...data\n });\n if (editor) {\n this.add(editor);\n }\n return editor;\n }\n #getCenterPoint() {\n const {\n x,\n y,\n width,\n height\n } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] = this.viewport.rotation % 180 === 0 ? [centerX, centerY] : [centerY, centerX];\n return {\n offsetX,\n offsetY\n };\n }\n addNewEditor(data = {}) {\n this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n }\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n pointerup(event) {\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n if (!this.#hadPointerDown) {\n return;\n }\n this.#hadPointerDown = false;\n if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n return;\n }\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n const currentMode = this.#uiManager.getMode();\n if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.SIGNATURE) {\n this.#uiManager.unselectAll();\n return;\n }\n this.createAndAddNewEditor(event, false);\n }\n pointerdown(event) {\n if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n this.enableTextSelection();\n }\n if (this.#hadPointerDown) {\n this.#hadPointerDown = false;\n return;\n }\n const {\n isMac\n } = util_FeatureTest.platform;\n if (event.button !== 0 || event.ctrlKey && isMac) {\n return;\n }\n if (event.target !== this.div) {\n return;\n }\n this.#hadPointerDown = true;\n if (this.#currentEditorType?.isDrawer) {\n this.startDrawingSession(event);\n return;\n }\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n startDrawingSession(event) {\n this.div.focus({\n preventScroll: true\n });\n if (this.#drawingAC) {\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n return;\n }\n this.#uiManager.setCurrentDrawingSession(this);\n this.#drawingAC = new AbortController();\n const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n this.div.addEventListener(\"blur\", ({\n relatedTarget\n }) => {\n if (relatedTarget && !this.div.contains(relatedTarget)) {\n this.#focusedElement = null;\n this.commitOrRemove();\n }\n }, {\n signal\n });\n this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n }\n pause(on) {\n if (on) {\n const {\n activeElement\n } = document;\n if (this.div.contains(activeElement)) {\n this.#focusedElement = activeElement;\n }\n return;\n }\n if (this.#focusedElement) {\n setTimeout(() => {\n this.#focusedElement?.focus();\n this.#focusedElement = null;\n }, 0);\n }\n }\n endDrawingSession(isAborted = false) {\n if (!this.#drawingAC) {\n return null;\n }\n this.#uiManager.setCurrentDrawingSession(null);\n this.#drawingAC.abort();\n this.#drawingAC = null;\n this.#focusedElement = null;\n return this.#currentEditorType.endDrawing(isAborted);\n }\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n commitOrRemove() {\n if (this.#drawingAC) {\n this.endDrawingSession();\n return true;\n }\n return false;\n }\n onScaleChanging() {\n if (!this.#drawingAC) {\n return;\n }\n this.#currentEditorType.onScaleChangingWhenDrawing(this);\n }\n destroy() {\n this.commitOrRemove();\n if (this.#uiManager.getActive()?.parent === this) {\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n #cleanup() {\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n }\n render({\n viewport\n }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n editor.rebuild();\n }\n this.updateMode();\n }\n update({\n viewport\n }) {\n this.#uiManager.commitOrRemove();\n this.#cleanup();\n const oldRotation = this.viewport.rotation;\n const rotation = viewport.rotation;\n this.viewport = viewport;\n setLayerDimensions(this.div, {\n rotation\n });\n if (oldRotation !== rotation) {\n for (const editor of this.#editors.values()) {\n editor.rotate(rotation);\n }\n }\n }\n get pageDimensions() {\n const {\n pageWidth,\n pageHeight\n } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n get scale() {\n return this.#uiManager.viewParameters.realScale;\n }\n}\n\n;// ./src/display/draw_layer.js\n\n\nclass DrawLayer {\n #parent = null;\n #mapping = new Map();\n #toUpdate = new Map();\n static #id = 0;\n constructor({\n pageIndex\n }) {\n this.pageIndex = pageIndex;\n }\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n static #setBox(element, [x, y, width, height]) {\n const {\n style\n } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n #createSVG() {\n const svg = DrawLayer._svgFactory.create(1, 1, true);\n this.#parent.append(svg);\n svg.setAttribute(\"aria-hidden\", true);\n return svg;\n }\n #createClipPath(defs, pathId) {\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n return clipPathId;\n }\n #updateProperties(element, properties) {\n for (const [key, value] of Object.entries(properties)) {\n if (value === null) {\n element.removeAttribute(key);\n } else {\n element.setAttribute(key, value);\n }\n }\n }\n draw(properties, isPathUpdatable = false, hasClip = false) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n if (isPathUpdatable) {\n this.#toUpdate.set(id, path);\n }\n const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return {\n id,\n clipPathId: `url(#${clipPathId})`\n };\n }\n drawOutline(properties, mustRemoveSelfIntersections) {\n const id = DrawLayer.#id++;\n const root = this.#createSVG();\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n let maskId;\n if (mustRemoveSelfIntersections) {\n const mask = DrawLayer._svgFactory.createElement(\"mask\");\n defs.append(mask);\n maskId = `mask_p${this.pageIndex}_${id}`;\n mask.setAttribute(\"id\", maskId);\n mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n const rect = DrawLayer._svgFactory.createElement(\"rect\");\n mask.append(rect);\n rect.setAttribute(\"width\", \"1\");\n rect.setAttribute(\"height\", \"1\");\n rect.setAttribute(\"fill\", \"white\");\n const use = DrawLayer._svgFactory.createElement(\"use\");\n mask.append(use);\n use.setAttribute(\"href\", `#${pathId}`);\n use.setAttribute(\"stroke\", \"none\");\n use.setAttribute(\"fill\", \"black\");\n use.setAttribute(\"fill-rule\", \"nonzero\");\n use.classList.add(\"mask\");\n }\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n if (maskId) {\n use1.setAttribute(\"mask\", `url(#${maskId})`);\n }\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n this.updateProperties(root, properties);\n this.#mapping.set(id, root);\n return id;\n }\n finalizeDraw(id, properties) {\n this.#toUpdate.delete(id);\n this.updateProperties(id, properties);\n }\n updateProperties(elementOrId, properties) {\n if (!properties) {\n return;\n }\n const {\n root,\n bbox,\n rootClass,\n path\n } = properties;\n const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n if (!element) {\n return;\n }\n if (root) {\n this.#updateProperties(element, root);\n }\n if (bbox) {\n DrawLayer.#setBox(element, bbox);\n }\n if (rootClass) {\n const {\n classList\n } = element;\n for (const [className, value] of Object.entries(rootClass)) {\n classList.toggle(className, value);\n }\n }\n if (path) {\n const defs = element.firstChild;\n const pathElement = defs.firstChild;\n this.#updateProperties(pathElement, path);\n }\n }\n updateParent(id, layer) {\n if (layer === this) {\n return;\n }\n const root = this.#mapping.get(id);\n if (!root) {\n return;\n }\n layer.#parent.append(root);\n this.#mapping.delete(id);\n layer.#mapping.set(id, root);\n }\n remove(id) {\n this.#toUpdate.delete(id);\n if (this.#parent === null) {\n return;\n }\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n this.#toUpdate.clear();\n }\n}\n\n;// ./src/pdf.js\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst pdfjsVersion = \"5.0.375\";\nconst pdfjsBuild = \"23972e194\";\n{\n globalThis.pdfjsTestingUtils = {\n HighlightOutliner: HighlightOutliner\n };\n}\n\nvar __webpack_exports__AbortException = __webpack_exports__.AbortException;\nvar __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\nvar __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\nvar __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\nvar __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\nvar __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\nvar __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\nvar __webpack_exports__AnnotationType = __webpack_exports__.AnnotationType;\nvar __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\nvar __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\nvar __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\nvar __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\nvar __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\nvar __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\nvar __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\nvar __webpack_exports__MathClamp = __webpack_exports__.MathClamp;\nvar __webpack_exports__OPS = __webpack_exports__.OPS;\nvar __webpack_exports__OutputScale = __webpack_exports__.OutputScale;\nvar __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\nvar __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\nvar __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\nvar __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\nvar __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\nvar __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\nvar __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\nvar __webpack_exports__ResponseException = __webpack_exports__.ResponseException;\nvar __webpack_exports__SignatureExtractor = __webpack_exports__.SignatureExtractor;\nvar __webpack_exports__SupportedImageMimeTypes = __webpack_exports__.SupportedImageMimeTypes;\nvar __webpack_exports__TextLayer = __webpack_exports__.TextLayer;\nvar __webpack_exports__TouchManager = __webpack_exports__.TouchManager;\nvar __webpack_exports__Util = __webpack_exports__.Util;\nvar __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\nvar __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\nvar __webpack_exports__build = __webpack_exports__.build;\nvar __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\nvar __webpack_exports__fetchData = __webpack_exports__.fetchData;\nvar __webpack_exports__getDocument = __webpack_exports__.getDocument;\nvar __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\nvar __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\nvar __webpack_exports__getUuid = __webpack_exports__.getUuid;\nvar __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\nvar __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\nvar __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\nvar __webpack_exports__isValidExplicitDest = __webpack_exports__.isValidExplicitDest;\nvar __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\nvar __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\nvar __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\nvar __webpack_exports__shadow = __webpack_exports__.shadow;\nvar __webpack_exports__stopEvent = __webpack_exports__.stopEvent;\nvar __webpack_exports__version = __webpack_exports__.version;\nexport { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__AnnotationType as AnnotationType, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MathClamp as MathClamp, __webpack_exports__OPS as OPS, __webpack_exports__OutputScale as OutputScale, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__ResponseException as ResponseException, __webpack_exports__SignatureExtractor as SignatureExtractor, __webpack_exports__SupportedImageMimeTypes as SupportedImageMimeTypes, __webpack_exports__TextLayer as TextLayer, __webpack_exports__TouchManager as TouchManager, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getUuid as getUuid, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__isValidExplicitDest as isValidExplicitDest, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__stopEvent as stopEvent, __webpack_exports__version as version };\n\n//# sourceMappingURL=pdf.mjs.map","async function readFileAsArrayBuffer(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result);\n };\n reader.onerror = reject;\n reader.readAsArrayBuffer(file);\n });\n}\nexport default readFileAsArrayBuffer;\n","import createReactClass from 'create-react-class';\n('use strict');\n\n// Import Libraries\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\n// Import JS Modules\nimport GenericPaginatedUploadMixin from './loader-mixins/generic-paginated-upload-mixin';\nimport UploadAnalytics from './upload-analytics';\nimport { builderDispatch, PrismUI, WebUI } from '../_utils/ui';\nimport FileClearingMixin from './loader-mixins/file-clearing-mixin';\nimport FileSelectorMixin from './loader-mixins/file-selector-mixin';\nimport UploadButton from './utils/upload-button';\nimport AlbumSelector from './album-selector';\nimport CustomText from './custom-text';\nimport ImageUploadFileValidator from '../_utils/image-upload-file-validator';\nimport AnalyticsHandler from '../_libs/analytics/checkout-google-analytics';\nimport sendToGoogleAnalytics from '../_prism-builder/desktop/slot-tools/send-to-google-analytics';\nimport { db } from '../_utils/db/db';\nimport { uploadUrl } from '../_prism-builder/desktop/lib/add-photos-interface';\nimport { compressImage } from '../_utils/db/image-manip-helpers';\nimport heic2any from 'heic2any';\nimport { usePrismItemStore } from 'stores/usePrismItemStore';\nimport * as pdfjsLib from \"pdfjs-dist\";\nimport readFileAsArrayBuffer from '../_utils/readFileAsArrayBuffer';\n\nconst LocalFileImportIndexedDB = createReactClass({\n mixins: [GenericPaginatedUploadMixin, FileSelectorMixin, FileClearingMixin],\n displayName: 'Local file import native',\n\n getInitialState() {\n const { App } = window;\n this.files = this.files || [];\n\n return {\n loggedIn: App && App.order.logged_in(),\n };\n },\n componentDidMount() {\n this.builderDispatchToken = builderDispatch.register(payload => {\n if (payload.type === WebUI.LOGIN) {\n this.setState({\n loggedIn: true,\n });\n }\n });\n const component = ReactDOM.findDOMNode(this);\n component.addEventListener('dragover', this.handleDragOver, false);\n component.addEventListener('dragenter', this.handleDragEnter, false);\n component.addEventListener('dragleave', this.handleDragLeave, false);\n component.addEventListener('drop', this.handleDrop, false);\n },\n componentWillUnmount() {\n const component = ReactDOM.findDOMNode(this);\n component.removeEventListener('dragover', this.handleDragOver, false);\n component.removeEventListener('dragenter', this.handleDragEnter, false);\n component.removeEventListener('dragleave', this.handleDragLeave, false);\n component.removeEventListener('drop', this.handleDrop, false);\n },\n sendAnalytics(eventCategory) {\n const eventLabel = UploadAnalytics.eventTypes(\n this.files.map(f => f.uploadAnalytics)\n );\n\n const payload = {\n type: WebUI.Analytics.SEND,\n eventCategory: eventCategory,\n eventAction: 'device',\n eventLabel: eventLabel,\n eventValue: this.files.length,\n };\n\n AnalyticsHandler.handleAnalyticsEvent(payload);\n },\n\n render() {\n return (\n <div\n id={'image-loader-service-' + this.props.service}\n style={{ height: this.props.height }}\n className={classNames(\n 'text-center image-loader-service',\n this.props.service,\n { 'd-none': !this.props.isActive }\n )}\n tabIndex=\"0\">\n <div className=\"d-flex d-md-none h-100 flex-column justify-content-center\">\n <i className=\"d-none d-lg-block large fas fa-laptop\" />\n <i className=\"mx-auto d-lg-none large fas fa-mobile-alt\" />\n <h3 className=\"title service-title font-weight-bold\">My Phone</h3>\n <small>Upload photos from your phone.</small>\n <div className=\"mobile-file-upload-btn\">\n <UploadButton\n label=\"Upload\"\n ariaLabel=\"Upload\"\n onChange={this.handleFileInputChange}\n fileValidator={this.props.fileValidator}\n />\n </div>\n <CustomText\n textKey=\"imageLoaderLocalFileImportBannerHtml\"\n className=\"local-file-import-banner local-file-import-banner-mweb d-none\"\n />\n </div>\n <div id=\"fileList\" />\n <div\n id=\"dropArea\"\n data-test-id=\"dropArea\" // For testing purposes\n className=\"d-none d-md-flex h-100 flex-column justify-content-center align-items-center\">\n <div className=\"album-selector-box d-none\">\n <div className=\"image-loader-form-elements\">\n {!!this.state.loggedIn && (\n <AlbumSelector\n targetAlbum={this.props.targetAlbum}\n onAlbumSelected={this.handleTargetAlbumSelected}\n />\n )}\n </div>\n </div>\n <div className=\"device\">\n <i className=\"large fas fa-cloud-upload-alt\" />\n <h3 className=\"title font-weight-bold\">Drag & Drop Here</h3>\n <small className=\"d-block\">\n * Upload jpeg, jpg, png, pdf, heic, heif or avif image formats.\n </small>\n <UploadButton\n label=\"Upload Photos\"\n ariaLabel=\"Upload\"\n onChange={this.handleFileInputChange}\n fileValidator={this.props.fileValidator}\n />\n </div>\n </div>\n </div>\n );\n },\n\n handleTargetAlbumSelected(album) {\n if (this.props.onTargetAlbumSelected)\n this.props.onTargetAlbumSelected(album);\n },\n\n draggable() {\n return (\n 'draggable' in document.createElement('span') && !this.props.isMobile\n );\n },\n\n handleDragOver(e) {\n e.stopPropagation();\n e.preventDefault();\n },\n\n dragCounter: 0,\n handleDragEnter(e) {\n e.preventDefault();\n\n if (this.dragCounter++ === 0) $('#dropArea').addClass('dragover');\n },\n\n handleDragLeave(e) {\n if (--this.dragCounter === 0) $('#dropArea').removeClass('dragover');\n },\n\n handleDrop(e) {\n e.preventDefault();\n\n this.dragCounter = 0;\n $('#dropArea').removeClass('dragover');\n\n const files = Array.prototype.slice.apply(e.dataTransfer.files);\n this.addFiles(files);\n return false;\n },\n\n triggerFeatureTracking() {\n sendToGoogleAnalytics('offline-local-import', '');\n },\n\n handleFileInputChange(e) {\n this.triggerFeatureTracking();\n const $fileInput = e.target;\n const files = Array.from($fileInput.files);\n\n if (!files.length) return;\n\n this.addFiles(files);\n $fileInput.value = '';\n },\n\n async addFiles(files) {\n const filteredFiles = files.filter(\n this.props.fileValidator.isAcceptedFileType\n );\n\n if (filteredFiles.length > 0) {\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_BEGUN,\n number_of_files: filteredFiles.length,\n });\n\n usePrismItemStore.setState(({ imagesUploadProgress }) => ({\n imagesUploadProgress: {\n current: 1,\n totalFiles: filteredFiles.length,\n },\n }));\n\n builderDispatch.dispatch({\n type: PrismUI.CLOSE_ADD_PHOTOS_MODAL,\n });\n\n for (let uncompressedImageFile of filteredFiles) {\n try {\n if (uncompressedImageFile.type === 'application/pdf') {\n await processPDF(uncompressedImageFile);\n } else {\n await processImage(uncompressedImageFile);\n }\n } catch (error) {\n dispatchAndDisplayFailedUpload(uncompressedImageFile.name);\n console.error('Error processing file:', error);\n }\n }\n }\n },\n _buildFormData() {\n return false;\n },\n});\n\nLocalFileImportIndexedDB.defaultProps = {\n fileValidator: new ImageUploadFileValidator(),\n};\n\nconst processFileAndUpload = async (uncompressedImageFile, processedFile) => {\n const compressedImageForThumbnails = await compressImage(\n processedFile || uncompressedImageFile,\n { maxWidthOrHeight: 512 }\n );\n\n const fileToUpload = processedFile || uncompressedImageFile;\n\n const fileData = {\n file: fileToUpload,\n compressedImage: compressedImageForThumbnails,\n status: 'pending',\n uploadUrl: uploadUrl(),\n prismItemID: prismItem.num,\n };\n\n await db.upload.add(fileData);\n return fileData;\n};\n\nconst convertHEICIfNeeded = async (uncompressedImageFile) => {\n if (uncompressedImageFile.type === 'image/heic' || uncompressedImageFile.type === 'image/heif') {\n const convertedBlob = await heic2any({\n blob: uncompressedImageFile,\n toType: 'image/jpeg',\n quality: 1,\n });\n return new File([convertedBlob], `${uncompressedImageFile.name}.jpg`, {\n type: 'image/jpeg',\n });\n }\n return uncompressedImageFile;\n};\n\nconst processPDF = async (uncompressedImageFile) => {\n const pdfData = await readFileAsArrayBuffer(uncompressedImageFile);\n\n try {\n pdfjsLib.GlobalWorkerOptions.workerSrc = `//cdn.jsdelivr.net/npm/pdfjs-dist@${pdfjsLib.version}/build/pdf.worker.min.mjs`;\n\n const pdfDoc = await pdfjsLib.getDocument({ data: pdfData }).promise;\n const numPages = pdfDoc.numPages;\n\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_BEGUN,\n number_of_files: numPages,\n });\n\n usePrismItemStore.setState(({ imagesUploadProgress }) => ({\n imagesUploadProgress: {\n current: 1,\n totalFiles: numPages,\n },\n }));\n\n sendToGoogleAnalytics('pdf-upload', numPages);\n\n const canvasPDF = document.createElement('canvas');\n canvasPDF.style.display = 'none';\n document.body.appendChild(canvasPDF);\n const ctx = canvasPDF.getContext('2d');\n\n for (let pageNum = 1; pageNum <= numPages; pageNum++) {\n const page = await pdfDoc.getPage(pageNum);\n const viewport = page.getViewport({ scale: 2 });\n\n canvasPDF.width = viewport.width;\n canvasPDF.height = viewport.height;\n\n await page.render({\n canvasContext: ctx,\n viewport: viewport,\n background: 'rgba(0,0,0,0)',\n }).promise;\n\n const blob = await new Promise((resolve) => canvasPDF.toBlob(resolve, 'image/png'));\n const fileName = `${uncompressedImageFile.name}-${pageNum}.png`;\n const newFile = new File([blob], fileName, { type: 'image/png' });\n\n await processFileAndUpload(uncompressedImageFile, newFile);\n }\n document.body.removeChild(canvasPDF);\n } catch (error) {\n dispatchAndDisplayFailedUpload(uncompressedImageFile.name);\n console.error('Error processing PDF:', error);\n }\n};\n\nconst dispatchAndDisplayFailedUpload = (fileName) => {\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_PROGRESS,\n });\n\n usePrismItemStore.getState().trackProgress();\n\n usePrismItemStore.setState(({ failedImagesUploaded }) => ({\n failedImagesUploaded: [...failedImagesUploaded, fileName],\n }));\n\n}\n\nconst processImage = async (uncompressedImageFile) => {\n const convertedFile = await convertHEICIfNeeded(uncompressedImageFile);\n await processFileAndUpload(uncompressedImageFile, convertedFile);\n};\n\nexport default LocalFileImportIndexedDB;\n","import MyPhotosImport from './album-import/my-photos-import';\nimport CloudImport from './cloud-import';\nimport LocalFileImport from './local-file-import';\nimport MyMobileImport from './mobile-import';\nimport LocalFileImportIndexedDB from './local-file-import-indexeddb';\nimport { useGenStore } from 'stores/useGenStore';\n\nconst computeSources = (isSafariPrivate) => {\n return [\n {\n title: 'My Mobile',\n component: MyMobileImport,\n service: 'mobile',\n },\n {\n title: 'My Computer',\n component: window.prismItem\n ? window.featureFlags.indexed_db_uploader && !isSafariPrivate\n ? LocalFileImportIndexedDB\n : LocalFileImport\n : LocalFileImport,\n service: 'upload',\n },\n {\n title: 'My Photos',\n component: MyPhotosImport,\n service: 'albums',\n },\n {\n title: 'Google',\n component: CloudImport,\n service: 'picasa',\n },\n {\n title: 'Facebook',\n component: CloudImport,\n service: 'facebook',\n },\n {\n title: 'Dropbox',\n component: CloudImport,\n service: 'dropbox',\n },\n {\n title: 'Instagram',\n component: CloudImport,\n service: 'instagram',\n },\n {\n title: 'Flickr',\n component: CloudImport,\n service: 'flickr',\n },\n ].filter(({ service }) =>\n service === 'mobile' ? MyMobileImport.isActive() : true,\n );\n};\n\nconst getImageSources = () => {\n const isSafariPrivate = useGenStore.getState().isSafariPrivate;\n\n const imageSources = computeSources(isSafariPrivate);\n\n return imageSources;\n};\n\nexport default getImageSources;\n","\nimport { builderDispatch, WebUI } from '../../_utils/ui';\n\nlet notifyTimeout;\n\nconst service = function (service) {\n if (typeof builderDispatch === 'undefined') {\n return;\n } // sanity check !\n\n builderDispatch.dispatch({\n type: WebUI.PHOTO_SERVICE_SELECTED,\n service\n });\n};\n\nconst clickEvent = function (event) {\n if (typeof builderDispatch === 'undefined') {\n return;\n } // sanity check !\n\n clearTimeout(notifyTimeout);\n\n notifyTimeout = setTimeout(() => {\n builderDispatch.dispatch({\n type: WebUI.PHOTO_EVENT_UPLOAD,\n uploadEvent: event\n });\n }, 100);\n};\n\nexport default {\n service,\n clickEvent,\n};\n","// Import Libraries\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\n\n// Import JS Modules\nimport { builderDispatch, WebUI, PrismUI } from '../../_utils/ui';\nimport getImageSources from '../image-sources';\nimport notifications from '../utils/notifications';\nimport LoaderAdditionalOptions from '../additional-options';\nimport ImageUploadFileValidator from '../../_utils/image-upload-file-validator';\n\nconst LoaderBase = {\n getChildContext() {\n const { additionalOptions = {} } = this.state;\n\n return {\n additionalOptions,\n };\n },\n\n componentDidMount() {\n window.addEventListener('orientationchange', this.handleOrientationChanged);\n window.addEventListener('keydown', this.handleKeyDown);\n\n this.builderDispatchToken = builderDispatch.register(payload => {\n window.requestAnimationFrame(() => {\n switch (payload.type) {\n case PrismUI.ADD_PHOTOS:\n this.begin(\n payload.upload_url,\n payload.excludeServices,\n payload.callToActionButtonText,\n payload.callToActionButtonEvent,\n payload.additionalOptions\n );\n break;\n\n case WebUI.UPLOAD_SHOW_FAILURES:\n this.errorMessage = payload.message;\n\n if (payload.number_of_errors) {\n this.number_of_errors =\n this.number_of_errors + payload.number_of_errors;\n }\n\n this.showFailures();\n break;\n\n case PrismUI.CLOSE_ADD_PHOTOS_MODAL:\n this.close();\n break;\n\n case PrismUI.CLOUD_SERVICE_HEADER:\n this.setState({ serviceHeaderMounted: payload.mounted });\n break;\n\n case WebUI.UPLOAD_ERROR:\n case WebUI.UPLOAD_BEGUN:\n case PrismUI.IMAGES_UPDATED:\n this.setState({ loading: false });\n break;\n }\n });\n });\n\n $(window)\n .on('offline', this.handleGoneOffline)\n .on('online', this.handleGoneOnline);\n\n $(ReactDOM.findDOMNode(this))\n .modal({\n show: false,\n })\n .on('hide.bs.modal', e => {\n const { showUploadErrorsModal, showFailures } = this.state;\n\n if (showUploadErrorsModal) {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.toggleUploadErrorsModal();\n\n return false;\n }\n\n this.setState({ focus: false, uploadErrors: [] });\n\n if (showFailures) {\n this.handleAbort();\n }\n })\n .on('hidden.bs.modal', () => {\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_CLOSED,\n });\n });\n\n $(ReactDOM.findDOMNode(this)).on('shown.bs.modal', () => {\n this.setState({ focus: true });\n });\n },\n\n componentWillUnmount() {\n builderDispatch.unregister(this.builderDispatchToken);\n\n $(window)\n .off('offline', this.handleGoneOffline)\n .off('online', this.handleGoneOnline);\n\n window.removeEventListener(\n 'orientationchange',\n this.handleOrientationChanged\n );\n },\n\n open() {\n $(ReactDOM.findDOMNode(this)).modal('show');\n },\n\n close() {\n this.setState(() => ({ uploadErrors: [] }));\n\n $(ReactDOM.findDOMNode(this)).modal('hide');\n },\n\n begin(\n url,\n excludeServices = [],\n callToActionButtonText,\n callToActionButtonEvent,\n additionalOptions = {}\n ) {\n const { loading } = this.state;\n if (!App.order.storage_provider_present) {\n excludeServices.push('albums');\n }\n\n if (loading) return this.close();\n\n this.clearAll();\n this.setState(\n ({ target_album: prevTargetAlbum }) => {\n const extraFileTypes =\n additionalOptions[LoaderAdditionalOptions.EXTRA_FILE_TYPES] || [];\n return {\n upload_url: url,\n excludeServices: [].concat(excludeServices),\n callToActionButtonText,\n callToActionButtonEvent,\n additionalOptions,\n hideMenu: this.state.serviceHeaderMounted,\n uploadSource: additionalOptions.uploadSource,\n target_album:\n additionalOptions[LoaderAdditionalOptions.TARGET_ALBUM] ||\n prevTargetAlbum,\n fileUploadValidator: new ImageUploadFileValidator({\n extraFileTypes: extraFileTypes,\n }),\n };\n },\n () => {\n this.open();\n }\n );\n },\n\n handleSourceSelect(source_index, service) {\n this.setState({ source: source_index });\n notifications.service(service);\n },\n\n previews() {\n const imageSources = getImageSources();\n return imageSources.reduce((memo, source) => {\n const implementation = this.refs[source.service];\n if (implementation) {\n memo = memo.concat(implementation.filesSelected());\n }\n return memo;\n }, []);\n },\n\n handleFilesSelected() {\n const {\n additionalOptions = {},\n source: sourceIdx,\n } = this.state;\n\n const imageSources = getImageSources();\n const source = imageSources[sourceIdx]?.component,\n sourceAutoUploads = source?.prototype?.[LoaderAdditionalOptions.CLOSE_ON_FILE_SELECTION],\n pageAutoUploads = additionalOptions[LoaderAdditionalOptions.CLOSE_ON_FILE_SELECTION];\n\n if (pageAutoUploads || sourceAutoUploads) {\n this.handleAddImages();\n }\n\n this.forceUpdate();\n },\n\n handleImagePreviewError(file) {\n if (!this.state.uploadErrors.includes(file)) {\n this.setState(prevState => ({\n uploadErrors: [...prevState.uploadErrors, file],\n }));\n }\n },\n\n toggleUploadErrorsModal() {\n this.setState(prevState => ({\n showUploadErrorsModal: !prevState.showUploadErrorsModal,\n }));\n },\n\n removeAllUploadErrorsClick() {\n this.filterBrokenImages();\n\n this.setState(() => ({ uploadErrors: [], showUploadErrorsModal: false }));\n },\n\n handleRemovePreview(file) {\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_PHOTO_REMOVED_FROM_TRAY,\n key: file.originalKey || file.url,\n service: file.service,\n });\n\n const implementation = this.refs[file.service];\n\n if (implementation) {\n implementation.removeFile(file);\n }\n\n if (this.state.uploadErrors) {\n this.setState(prevState => {\n const result = prevState.uploadErrors.filter(error => error !== file);\n return { uploadErrors: result };\n });\n }\n\n this.forceUpdate();\n },\n\n totalNumberOfFilesToUpload() {\n const imageSources = getImageSources();\n return imageSources.reduce((memo, source) => {\n const implementation = this.refs[source.service];\n if (!!implementation && implementation.files) {\n memo += implementation.totalNumberOfFilesSelected();\n }\n return memo;\n }, 0);\n },\n\n performUpload(upload_url = this.state.upload_url, additionalData) {\n this.close();\n\n // needs to change to CTABE when defined.\n notifications.clickEvent(this.state.callToActionButtonEvent);\n\n this.uploaded_index = 0;\n this.number_of_errors = 0;\n\n if (!this.totalNumberOfFilesToUpload()) {\n return;\n }\n\n builderDispatch.delayedDispatch({\n type: WebUI.UPLOAD_BEGUN,\n number_of_files: this.totalNumberOfFilesToUpload(),\n ...additionalData,\n });\n\n const imageSources = getImageSources();\n imageSources.forEach(source => {\n const implementation = this.refs[source.service];\n if (implementation) {\n implementation.performUpload(\n upload_url,\n additionalData,\n this.handleFileUploaded,\n this.handleFileUploadError\n );\n }\n });\n },\n\n handleFileUploaded(data, source) {\n const totalNumberOfFilesToUpload = this.totalNumberOfFilesToUpload();\n\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_PROGRESS,\n data,\n source,\n number_of_files: totalNumberOfFilesToUpload,\n });\n\n if (++this.uploaded_index === totalNumberOfFilesToUpload) {\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_DONE,\n number_of_files: totalNumberOfFilesToUpload,\n number_of_errors: this.number_of_errors,\n });\n\n const imageSources = getImageSources();\n imageSources.forEach(source => {\n const implementation = this.refs[source.service];\n if (\n implementation &&\n typeof implementation.sendAnalytics === 'function'\n ) {\n implementation.sendAnalytics('upload successful');\n }\n });\n }\n },\n\n handleFileUploadError(message) {\n const totalNumberOfFilesToUpload = this.totalNumberOfFilesToUpload();\n\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_ERROR,\n number_of_errors: ++this.number_of_errors,\n });\n\n if (++this.uploaded_index === totalNumberOfFilesToUpload) {\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_DONE,\n number_of_files: totalNumberOfFilesToUpload,\n number_of_errors: this.number_of_errors,\n message: message || '',\n });\n\n const imageSources = getImageSources();\n imageSources.forEach(source => {\n const implementation = this.refs[source.service];\n if (\n implementation &&\n typeof implementation.sendAnalytics === 'function'\n ) {\n implementation.sendAnalytics('upload failed');\n }\n });\n }\n },\n\n handleGoneOffline() {\n const imageSources = getImageSources();\n imageSources.forEach(source => {\n const implementation = this.refs[source.service];\n if (implementation) {\n implementation.pause();\n }\n });\n\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_PAUSED,\n });\n },\n\n handleGoneOnline() {\n const imageSources = getImageSources();\n imageSources.forEach(source => {\n const implementation = this.refs[source.service];\n if (implementation) {\n implementation.restart();\n }\n });\n\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_RESUMED,\n });\n },\n\n handleAbort() {\n this.setState(\n {\n uploadErrors: [],\n showFailures: false,\n },\n () => {\n this.close();\n\n window.requestAnimationFrame(() => {\n builderDispatch.dispatch({\n type: WebUI.UPLOAD_ABORTED,\n });\n });\n\n this.clearAll();\n }\n );\n },\n\n handleOrientationChanged() {\n setTimeout(this.setWindowSize, 100);\n },\n\n showFailures() {\n const imageSources = getImageSources();\n imageSources.forEach(source => {\n const implementation = this.refs[source.service];\n if (implementation) {\n implementation.clearUploaded();\n }\n });\n\n this.setState(\n {\n showFailures: true,\n },\n () => {\n this.open();\n }\n );\n },\n\n clearAll() {\n const imageSources = getImageSources();\n imageSources.forEach(source => {\n const implementation = this.refs[source.service];\n if (implementation) {\n implementation.clear();\n }\n });\n },\n\n handleTargetAlbumSelected(album) {\n this.setState({\n target_album: album,\n });\n },\n\n getWindowSize() {\n return {\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth,\n };\n },\n\n setWindowSize() {\n this.setState(this.getWindowSize);\n },\n\n filterBrokenImages() {\n const { uploadErrors } = this.state;\n\n const imageSources = getImageSources();\n imageSources.reduce((memo, source) => {\n const implementation = this.refs[source.service];\n if (\n implementation &&\n !!implementation.files &&\n implementation.files.length > 0\n ) {\n implementation.files = implementation.files.filter(\n file => !uploadErrors.includes(file)\n );\n }\n return memo;\n }, []);\n },\n};\n\nLoaderBase.childContextTypes = {\n additionalOptions: PropTypes.object,\n};\n\nexport default LoaderBase;\n","import React from 'react';\nimport { pluralizer } from './utils/utils';\nimport PrintSizeSelector from './print-size-selector';\n\nexport default function MobileLoaderFooter({\n files,\n brokenPreviews,\n addPhotosDisabled,\n handleAddPhotosClick,\n onCancelClick,\n onErrorIconClick,\n}) {\n return (\n <div className=\"w-100\">\n <PrintSizeSelector />\n <div className=\"d-flex justify-content-between align-items-center buttons\">\n <button\n aria-label=\"Cancel\"\n className=\"btn btn-link mb-0 px-2 cancel\"\n data-dismiss=\"modal\"\n type=\"button\"\n onClick={onCancelClick}>\n Cancel\n </button>\n <div className=\"d-flex flex-nowrap\">\n <p className=\"selected-images-number m-0\">\n {pluralizer(files.length, 'photo')} selected\n </p>\n {brokenPreviews.length > 0 && (\n <button\n className=\"btn btn-link m-0 h-auto errors-link\"\n onClick={onErrorIconClick}>\n {pluralizer(brokenPreviews.length, 'error')}\n <span className=\"fa-stack text-dark icon ml-1\">\n <i className=\"far fa-circle fa-stack-2x p-0\" />\n <i className=\"fas fa-exclamation fa-stack-1x p-0\" />\n </span>\n </button>\n )}\n </div>\n <button\n aria-label=\"Add photos\"\n className=\"btn btn-primary action mb-0 font-weight-bold\"\n disabled={addPhotosDisabled || !files.length}\n type=\"button\"\n onClick={handleAddPhotosClick}>\n Add\n </button>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { pluralizer } from './utils/utils';\nimport PrintSizeSelector from './print-size-selector';\n\nexport default function DesktopLoaderFooter({\n files,\n brokenPreviews,\n addPhotosDisabled,\n handleAddPhotosClick,\n onCancelClick,\n onErrorIconClick,\n}) {\n return (\n <div className=\"d-flex flex-nowrap justify-content-between buttons mx-sm-3 mx-md-3 mx-lg-0 mt-lg-2\">\n <div className=\"d-md-flex flex-shrink-1 mr-2 mr-md-0\">\n <p className=\"selected-images-number m-0\">\n {pluralizer(files.length, 'photo')} selected\n </p>\n {brokenPreviews.length > 0 && (\n <button\n className=\"btn btn-link ml-md-2 mb-0 h-auto errors-link\"\n onClick={onErrorIconClick}>\n {pluralizer(brokenPreviews.length, 'error')}\n <span className=\"fa-stack text-dark icon ml-1\">\n <i className=\"far fa-circle fa-stack-2x p-0\" />\n <i className=\"fas fa-exclamation fa-stack-1x p-0\" />\n </span>\n </button>\n )}\n </div>\n <PrintSizeSelector />\n <div className=\"d-flex flex-shrink-1\">\n <button\n aria-label=\"Cancel\"\n className=\"btn border-0 bg-white mb-0 py-0 cancel\"\n data-dismiss=\"modal\"\n type=\"button\"\n onClick={onCancelClick}>\n Cancel\n </button>\n <button\n aria-label=\"Add photos\"\n className=\"btn btn-primary btn-md-long action mb-0 font-weight-bold\"\n disabled={addPhotosDisabled || !files.length}\n type=\"button\"\n onClick={handleAddPhotosClick}>\n Add\n </button>\n </div>\n </div>\n );\n}\n","import React, { useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport ScreenAndStyle from '../_utils/screen-and-style';\nimport Thumbnails from './thumbnails/thumbnails';\nimport MobileLoaderFooter from './mobile-loader-footer';\nimport DesktopLoaderFooter from './desktop-loader-footer';\n\nfunction LoaderFooter({\n files,\n onAddImages,\n onErrorIconClick,\n onImagePreviewError,\n onRemoveThumbnail,\n brokenPreviews,\n onCancelClick,\n}) {\n const [addPhotosDisabled, setAddPhotosDisabled] = useState(false);\n const handleAddPhotosClick = useCallback(() => {\n setAddPhotosDisabled(true);\n onAddImages();\n setTimeout(() => setAddPhotosDisabled(false), 2000);\n }, [onAddImages]);\n const isMobile =\n ScreenAndStyle.isBootstrapXS() || ScreenAndStyle.isBootstrapSM();\n const footerProps = {\n files,\n brokenPreviews,\n addPhotosDisabled,\n handleAddPhotosClick,\n onCancelClick,\n onErrorIconClick,\n };\n\n return (\n <div className=\"modal-footer d-flex flex-wrap rounded-0 my-2\">\n <div className=\"w-100 thumbnails-mini\">\n {files.length > 0 && (\n <Thumbnails\n classes=\"d-md-none d-lg-flex\"\n files={files}\n withOrientation={true}\n onErrorIconClick={onErrorIconClick}\n onImagePreviewError={onImagePreviewError}\n onRemoveThumbnail={onRemoveThumbnail}\n displayCaption={true}\n />\n )}\n </div>\n {(isMobile && <MobileLoaderFooter {...footerProps} />) || (\n <DesktopLoaderFooter {...footerProps} />\n )}\n </div>\n );\n}\n\nLoaderFooter.propTypes = {\n files: PropTypes.array,\n onAddImages: PropTypes.func.isRequired,\n onErrorIconClick: PropTypes.func.isRequired,\n onImagePreviewError: PropTypes.func.isRequired,\n onRemoveThumbnail: PropTypes.func.isRequired,\n brokenPreviews: PropTypes.array,\n onCancelClick: PropTypes.func.isRequired,\n};\n\nexport default LoaderFooter;\n","import React from 'react';\n\nimport classNames from 'classnames';\nimport ButtonRibbon from '../_utils/button-ribbon';\nimport sendToGoogleAnalytics from '../_prism-builder/desktop/slot-tools/send-to-google-analytics';\n\nconst LoaderNav = props => {\n const serviceTitle = {\n upload: props.isMobile ? 'My Phone' : 'My Computer',\n mobile: 'My Phone',\n albums: `My ${window.store} Photos`,\n picasa: 'Google Photos',\n facebook: 'Facebook',\n dropbox: 'Dropbox',\n instagram: 'Instagram',\n flickr: 'Flickr',\n };\n\n const handleClick = service => {\n sendToGoogleAnalytics('loader-nav', `${serviceTitle[service]}`);\n };\n\n return (\n <ButtonRibbon className=\"loader-nav\" role=\"tablist\" loaderNav>\n {props.imgSources.map(({ service, title }, index) => {\n const selected = props.activeSource === index;\n return (\n <button\n aria-controls={'image-loader-service-' + service}\n aria-label={`${serviceTitle[service]}`}\n aria-selected={selected}\n className={classNames('service', service, { active: selected })}\n key={service}\n role=\"tab\"\n type=\"button\"\n onClick={() => {\n props.onSourceSelect(index, service);\n handleClick(service);\n }}>\n {serviceTitle[service]}\n </button>\n );\n })}\n </ButtonRibbon>\n );\n};\n\nexport default LoaderNav;\n","'use strict';\n\nimport React from 'react';\nimport classNames from 'classnames';\n\nimport FocusTrap from 'focus-trap-react';\n\nconst uploadErrors = props => (\n <FocusTrap active={props.isOpen}>\n <div className={classNames('backdrop', props.isOpen ? 'd-flex' : 'd-none')}>\n <div className=\"upload-errors bg-white flex-column\">\n <button\n type=\"button\"\n className=\"close p-0\"\n aria-label=\"Close\"\n onClick={() => props.onClose()}\n >\n <i className=\"fas fa-times\" />\n </button>\n <div className=\"p-4 pr-2 h-100 d-flex flex-column\">\n <h2 className=\"title ml-0 d-flex\">\n <span className=\"fa-stack text-dark\">\n <i className=\"far fa-circle fa-stack-2x\" />\n <i className=\"fas fa-exclamation fa-stack-1x\" />\n </span>\n Upload Error\n </h2>\n <p className=\"content py-2\">\n {props.errors.length} of your files cannot be uploaded and will not be added to your project:\n </p>\n <ul className=\"errors-list flex-grow-1 list-unstyled p-1\">\n {\n props.errors.map((error, i) => (\n <li key={i + error.name} className=\"content m-0\">\n {error.name}\n </li>\n ))\n }\n </ul>\n <button\n type=\"button\"\n aria-label=\"Remove all\"\n className=\"btn btn-primary mt-auto ml-auto font-weight-bold px-0\"\n onClick={props.onRemoveAllClick}\n >\n Remove all\n </button>\n </div>\n </div>\n </div>\n </FocusTrap>\n);\n\nexport default uploadErrors;\n","const LOADER_DIMENSIONS = {\n mobile: {\n margin: 0,\n modal: {\n width: '100%',\n height: '100%',\n },\n header: {\n height: 79,\n },\n footer: {\n height: 60,\n }\n },\n desktop: {\n margin: 0.13,\n modal: {\n width: '75%',\n height: '88%',\n },\n header: {\n height: 83,\n },\n footer: {\n height: 238,\n }\n }\n}\n\nconst LoaderSizeMixin = {\n handleResize() {\n const { viewport: { height } } = this.props;\n const dimensions = this.loaderDimensions();\n const fixedHeight = dimensions.header.height + dimensions.footer.height\n const modalWindowHeight = (height - (height * dimensions.margin) - fixedHeight);\n\n this.setState({\n windowHeight: modalWindowHeight\n });\n },\n\n loaderDimensions() {\n const { viewport: { isMobile } } = this.props;\n\n return isMobile ? LOADER_DIMENSIONS.mobile : LOADER_DIMENSIONS.desktop;\n }\n};\n\nexport default LoaderSizeMixin;\n"],"file":"assets/loader-size-mixin-7be952ef.js"}